10

我正在尝试运行一个非常简单的耳朵应用程序。我似乎恰好遇到了这个问题,但是这里的讨论对我不起作用 JDBC 资源名称被容器修改(__pm被附加到它上面)

在我的情况下,数据源名称也由__pm. 我不知道它来自哪里,但服务器日志指出这样一个事实,即不是搜索databasename它而是搜索databasename__pm并失败了部署。

持久性.xml:-

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="FCK-ejbPU" transaction-type="JTA">
    <jta-data-source>FCKDatabase</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties/>
  </persistence-unit>
</persistence>

Glassfish原木:

  Error occurred during deployment: Exception while preparing the app : Invalid resource : { ResourceInfo : (jndiName=java:app/jdbc/FCKDatabase__pm), (applicationName=FCK) }. Please see server.log for more details.
        Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method : java.lang.RuntimeException: Invalid resource : { ResourceInfo : (jndiName=java:app/jdbc/FCKDatabase__pm), (applicationName=FCK) }
        Invalid resource : { ResourceInfo : (jndiName=java:app/jdbc/FCKDatabase__pm), (applicationName=FCK) }

如您所见,我的资源的 JNDI 名称附加了__pm.

同样在 Glassfish 服务器控制台上,资源正确显示为 FCKDatabase 而不是 FCKDatabase_pm

知道这__pm是从哪里来的吗?

系统:

  • 网豆 7.3
  • Glassfish 服务器 3.1.2
4

4 回答 4

6

问题是 mysql 连接器 jar 文件未放入 glassfish 服务器。这引发了一系列问题。我在上面发布的只是服务器日志包含的错误消息之一。我建议浏览整个错误消息列表并尝试从那里进行调试。以下链接帮助我将 jar 文件放置在正确的位置:

于 2013-03-18T12:01:54.837 回答
2

由于 Netbeans 7.1 在 IDE 生成persistence.xml字段jta并且glassfish-resoucesJDNI 名称生成时带有前缀java:module/,因此必须在两个文件中删除它,它必须看起来像jdbc/[anyName]. 这是在 Netbeans 8.1 和 Glassfish 4.0 上测试的。

在图像中,第二个选项显示了生成的名称,该名称在 Glassfish 中无效,因为“:”

于 2016-10-07T12:32:55.637 回答
0

这是我找到的另一个解决方案,它对任何人都有帮助。

复制您面临问题的资源名称,然后按照以下步骤操作。

  1. 登录 Glassfish 控制台
  2. 转到资源
  3. JDBC --> JDBC 资源
  4. 点击新建按钮添加资源
  5. 在 JNDI 名称字段中输入复制的资源并选择池名称并输入描述。
  6. 点击确定按钮

重新部署应用程序并检查。

于 2017-11-03T07:15:37.437 回答
0

就我而言,我只是移动了我的glassfish-resources.xml文件,

从:

my_web_app / src / main / webapp / WEB-INF

到:

my_web_app / src / main / setup

GlassFish 开始识别创建资源的文件。

于 2018-04-03T12:09:20.633 回答