我正在尝试编写使用JPA访问数据库的Java EE应用程序。到目前为止,我只是使用了@Entity批注并将其他所有内容都置于默认状态(例如,persistence.xml文件使用_TimerPool作为jta-data-source,而我没有创建任何db)。在Glassfish中创建Derby数据库并连接到Java EE应用程序
所以我想尝试使用一个实际的数据库。我进入了服务屏幕,JavaBD>创建新数据库,使用名称和密码进行设置。
数据库的网址为:jdbc:德比://本地主机:1527/PROVA
然后,我通过GlassFish的向导创建我的应用程序的persistence.xml文件:
<persistence-unit name="JobsPU" transaction-type="JTA">
<jta-data-source>java:app/Prova</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.schema-generation.database.action" value="create"/>
<property name="javax.persistence.schema-generation.database.target" value="database-and-scripts"/>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/Prova"/>
<property name="javax.persistence.jdbc.user" value="paolo"/>
<property name="javax.persistence.jdbc.password" value="paolo"/>
</properties>
</persistence-unit>
当我尝试部署我得到这个异常:
Grave: Exception while preparing the app : Invalid resource : { ResourceInfo : (jndiName=java:app/Prova__pm), (applicationName=Jobs) }
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Invalid resource : { ResourceInfo : (jndiName=java:app/Prova__pm), (applicationName=Jobs) }
似乎与JNDI命名有关。我真的不知道,我仍然在努力学习。如果我转到Glassfish的控制台,在JNDI列表中,我看不到任何似乎与我的数据库相关的东西(不在JDBC连接池或JDBC资源中)。我该怎么办?
非常感谢您的帮助。
这样做有帮助吗? http://stackoverflow.com/questions/13407505/java-jpa-glassfish-invalid-resource-jdbc-default-pm –
最新版本的Glassfish被破解,当你尝试点击新的“jdbc资源”时,你会得到一个很好的例外。那很棒。 – Paul
你有没有考虑使用payara或wildfly? –