【发布时间】:2015-06-01 19:00:59
【问题描述】:
我在 NetBeans 中创建了一个连接到 derby DB 的 Java EE Web 应用程序。
我通过“从数据库创建实体”生成了一个实体 bean。 有一个菜单,我必须填写我称之为“WWHY Source”的数据源。 之后,我为实体用户生成了会话 bean。
现在的问题是每次我尝试部署我的应用程序时都会出现异常。
最初在部署期间。
In-place deployment at C:\Users\Nam\Documents\Programming\NetBeansProjects\WWHY\build\web
GlassFish Server 4.1, deploy, null, false
C:\Users\Nam\Documents\Programming\NetBeansProjects\WWHY\nbproject\build-impl.xml:1045: The module has not been deployed.
在 Glassfish 日志中
Exception while preparing the app : Invalid resource : WWHY Source__pm
老实说,我不知道为什么它不起作用。
我可以给你其余的 glassfish 日志,但输出是一样的。
我已经尝试过清理和构建,重新启动 netbeans 但没有任何帮助。
我一尝试使用 JPA,它就停止工作了。
请帮帮我:)
编辑
当我通过“来自数据库的实体类”创建实体 Bean 时,它会自动创建一个 persistence.xml 。我将新的数据源称为“WWHY 源”:
<persistence-unit name="WWHYPU" transaction-type="JTA">
<jta-data-source>WWHY Source</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
但由于 Glassfish 搜索 "WWHY Source_pm"
当我通过 GlassFish 控制台查看 JDBC 资源时,没有名称为“WWHY Source”的 JDBC 资源。
这里也是 glassfish-resources.xml
<resources>
<jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="org.apache.derby.jdbc.ClientDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="derby_net_WWHY-DB_rootPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
<property name="serverName" value="localhost"/>
<property name="portNumber" value="1527"/>
<property name="databaseName" value="WWHY-DB"/>
<property name="User" value="root"/>
<property name="Password" value="root"/>
<property name="URL" value="jdbc:derby://localhost:1527/WWHY-DB"/>
<property name="driverClass" value="org.apache.derby.jdbc.ClientDriver"/>
</jdbc-connection-pool>
<jdbc-resource enabled="true" jndi-name="WWHY Source" object-type="user" pool-name="derby_net_WWHY-DB_rootPool"/>
我希望你能帮助我。谢谢!
【问题讨论】:
-
创建连接池后是否创建了JDBC资源? JDBC 资源名称(您使用 GlassFish 管理控制台创建的名称)必须与您的
persistenceContext.xml文件中的<jta-data-source>部分(<jta-data-source>jdbc/pool</jta-data-source>或您选择的任何名称)下的值匹配。您需要创建一个与连接池相对应的 JDBC 资源,并在persistenceContext.xml中提及该名称,这对于 JSF 来说是题外话。它与上述问题无关。即使您没有使用 JSF,也会遇到完全相同的问题。 -
它确实匹配,但我再次将其从 Glassfishserver 中删除。因为 Netbeans 向我展示了两次相同的 JDBC 资源,我真的很沮丧。我尝试做与教程视频中完全相同的事情,但我再也找不到了……我将重新开始,更准确地描述我的问题。
标签: jpa glassfish datasource derby