【问题标题】:GlassFish can't find my datasourceGlassFish 找不到我的数据源
【发布时间】: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 文件中的 &lt;jta-data-source&gt; 部分(&lt;jta-data-source&gt;jdbc/pool&lt;/jta-data-source&gt; 或您选择的任何名称)下的值匹配。您需要创建一个与连接池相对应的 JDBC 资源,并在 persistenceContext.xml 中提及该名称,这对于 JSF 来说是题外话。它与上述问题无关。即使您没有使用 JSF,也会遇到完全相同的问题。
  • 它确实匹配,但我再次将其从 Glassfishserver 中删除。因为 Netbeans 向我展示了两次相同的 JDBC 资源,我真的很沮丧。我尝试做与教程视频中完全相同的事情,但我再也找不到了……我将重新开始,更准确地描述我的问题。

标签: jpa glassfish datasource derby


【解决方案1】:

您可以尝试直接在 Glassfish 服务器中创建一个数据源,然后在您的 persistence.xml 中更新您新创建的数据源的名称。此外,我建议创建没有“空格”的数据源名称(glassfish 有时会从空白处发疯)。

【讨论】:

  • 非常感谢,这对我帮助很大!!!我刚刚创建了一个 JDBC 连接池,然后创建了一个 JDBC 资源并将它们用于创建实体 Bean(“从数据库创建实体类 ---> 选择数据源)。我想评价你的答案,但我对你来说太新了堆栈溢出:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 2019-08-09
相关资源
最近更新 更多