【发布时间】:2017-02-18 01:33:26
【问题描述】:
我正在尝试编写一个使用 JPA 访问数据库的 Java EE 应用程序。到目前为止,我只使用了@Entity 注释,并将其他所有内容都保留为默认状态(例如,persistence.xml 文件使用 _TimerPool 作为 jta-data-source,并且我没有创建任何 db)。
所以我想尝试使用一个实际的数据库。我进入服务屏幕,JavaBD > 创建新数据库,设置名称和密码。
数据库的url:jdbc:derby://localhost: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 资源中)。我该怎么办?
非常感谢您的任何帮助。
【问题讨论】:
-
Glassfish 的最新版本已损坏,当您尝试在“jdbc 资源”中单击新建时,您会遇到一个很好的异常。太好了。
-
你考虑过使用payara还是wildfly?
-
如果您花这么多时间使用 GF,payara 不会有任何痛苦的过渡,但如果您是 GF 新手,我强烈建议您使用 WildFly。
-
我必须在课堂上使用 glassfish。之后我会调查 WildFly,无论如何,谢谢!
标签: java jpa jakarta-ee glassfish derby