GlassFish 找不到我的数据源

GlassFish can't find my datasource

我在 NetBeans 中创建了一个 Java EE Web 应用程序,它连接到一个 derby 数据库。

我通过 "create entity from database" 生成了一个实体 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,它就停止工作了。

请帮助我:)


编辑
当我通过 "Entity Class from Databases" 创建实体 Bean 时,它会自动创建一个 persistence.xml 。我调用了新的数据源 "WWHY source":

<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 资源时,没有 JDBC 名称为 "WWHY Source" 的资源。
这里还有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"/>

希望你能帮助我。谢谢!

您可以尝试直接在 Glassfish 服务器中创建数据源,然后在 persistence.xml 中更新新创建的数据源的名称。我还建议创建没有 "space" 的数据源名称(glassfish 有时会因空白而发疯)。