【问题标题】:Glassfish: the name of the driver class for the datasource is missingGlassfish:缺少数据源的驱动程序类的名称
【发布时间】:2014-10-08 05:07:59
【问题描述】:

(滚动到结尾可能涉及的错误。)

这个连接池看起来是对的,至少ping成功了,但是EJB模块到底是怎么引用的呢?

thufir@dur:~$ 
thufir@dur:~$ glassfish-4.1/glassfish/bin/asadmin
Use "exit" to exit and "help" for online help.
asadmin> 
asadmin> list-jdbc-connection-pools
CLI031: Warning: Option "target" is obsolete and will be ignored.
CLI031: Warning: Option "target" is obsolete and will be ignored.
__TimerPool
DerbyPool
SamplePool
connectionPool
legacy_on_glassfish
Command list-jdbc-connection-pools executed successfully.
asadmin> 
asadmin> ping-connection-pool legacy_on_glassfish
Command ping-connection-pool executed successfully.
asadmin> 
asadmin> list-jdbc-resources
jdbc/sample
jdbc/__TimerPool
jdbc/__default
jdbc/local
jdbc/legacy_resource
Command list-jdbc-resources executed successfully.
asadmin> 

(我不确定如何使用 asadmin 输出 jdbc 连接属性)

使用 Netbeans 向导,这是生成的 persistence.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="EnterpriseLegacyJDBC-ejbPU" transaction-type="JTA">
    <jta-data-source>jdbc/legacy_resource</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="javax.persistence.schema-generation.database.action" value="create"/>
    </properties>
  </persistence-unit>
</persistence>

但是,选择“来自数据库的新实体类”会导致:

在 Glassfish 控制台中,数据源的驱动程序类的名称是什么?

查看控制台,Datasource Classname 是 com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource,而 Driver Classname 不可编辑:

-------------------------错误报告-- -------------------------------------

strayan@netbeans.org 2013-11-25 09:13:49 UTC

抱歉,当您从 NetBean IDE 就像教程中提到的一样,它像你一样工作得很好 说过。但是选择外面创建的数据源(使用 GlassFish Server Admin console) 的 IDE 我们在 IDE 中显示 查看错误。

https://netbeans.org/bugzilla/show_bug.cgi?id=238667#c19

但是,我不确定使用 GlassFish Server 管理控制台创建的 DataSource 是什么意思——只是找不到该选项。

另见:

http://computingat40s.wordpress.com/how-to-setup-a-jdbc-connection-in-glassfish/

【问题讨论】:

标签: jakarta-ee netbeans jdbc glassfish connection-pooling


【解决方案1】:

我在使用 PostgreSQL 时遇到了同样的问题,并执行了以下步骤以成功与 Netbean 建立数据库连接:

  1. 使用管理控制台从 GlassFish 中删除您创建的所有连接池和数据源
  2. 在 NetBeans 中右键单击项目名称。
  3. 选择新建->其他->Glassfish->JDBC 连接池
  4. 点击下一步
  5. 提供池名称。
  6. 选择使用数据库的新配置
  7. 从下拉列表中选择 Postgres。
  8. 在下一步中输入这六个参数及其值:
    • 用户-postgres;
    • DatabaseName -(您的数据库名称);
    • 服务器名称 - 本地主机;
    • 端口号 - 5432;
    • 密码-(postgre的密码);
    • URL - jdbc:postgresql://localhost:5432/DBname
  9. 右键单击项目
  10. 选择新建->其他->Glassfish->JDBC 资源
  11. 选择使用现有的 JDBC 池
  12. 选择您在上一个项目符号中创建的池名称。
  13. 设置资源名称
  14. 点击完成

现在基于此资源,您可以毫无问题地创建实体和整个 EJB 内容。

【讨论】:

  • 我认为这可能是解决 NB 中错误的最佳解决方法。
【解决方案2】:

好吧,这似乎是一个错误:

omniprof@netbeans.org 2014-05-31 16:59:40 UTC

GlassFish 4.0、NetBeans 8.0 和 Java 遇到了同样的问题 1.8 使用驱动程序时。之前的评论是解决方案。 “将值为 com.mysql.jdbc.Driver 的属性 driverClass 添加到附加 JDBC 连接池的参数” 小心使用 DataSource 时 查看一长串参数。有很多项目要 已填写。将很快在博客中介绍它们。

https://netbeans.org/bugzilla/show_bug.cgi?id=238667#c19

这个配置文件在哪里?你怎么看?另见:

https://askubuntu.com/questions/534320/jdbc-connection-pool-details-on-glassfish

【讨论】:

  • 我将不得不回到这个 q/a,我认为这个答案没有用..或者,也许它是一个错误。
  • 天哪,我不记得了。我不想放弃它——至少有关于这个错误的活动,所以这可能会影响其他人。暂时我有点往其他方向去了。我会回到这个,但现在它对我来说处于休眠状态。
  • 找到解决方案 - 使用 GF 4.1 和 mysql jar 5.1.34 一切正常!
  • @DrorCohen 我希望这个问题对您有所帮助。当您有时间时,请发布您的解决方案作为答案,并可能对链接的错误发表评论:)
  • @Thufir 我通过将 Glassfish 中使用的驱动程序复制到 Netbeans 解决了这个问题。详情请参阅我的回答。
【解决方案3】:

这对我有用:

1- 确保您的数据库服务器正在运行

2- 通过停止 GlassFish Server 确保您的应用程序服务器没有运行

http://netbeans-org.1045718.n5.nabble.com/The-name-of-the-driver-class-for-the-datasource-is-missing-td5725182.html

【讨论】:

    【解决方案4】:

    我发现使用 GF 4.1 和 NB 8.0.1(在 64 位的 Ubuntu 14.04 和 Windows 2008 服务器上)并使用 mysql-connector-java-5.1.34-bin.jar 文件 -> 解决了我的所有问题。

    【讨论】:

      【解决方案5】:

      我在使用 PostgreSQL 时遇到了同样的错误。

      但是通过将 url 属性添加到 Glassfish 池来解决它。

      在 MySQL 中就像jdbc:mysql://[host1][:port1]/[database]]

      【讨论】:

        【解决方案6】:

        就我而言,问题是由 Glassfish 中的 PostgreSQL 驱动程序版本与 NetBeans 中的版本不匹配引起的。

        我将 postgresql-9.4-1203.jdbc41.jar 从我的 GLASSFISH_HOME/glassfish/domains/domain1/lib 复制到 NETBEANS_HOME/ide/modules/ext 并删除了已经存在的旧版本,从而解决了问题。

        我使用 NetBeans plugin 从实体类生成 Primefaces CRUD 应用程序遇到了这个问题,遵循 instructions here.

        我尝试了@Rehan 描述的解决方案,我能够生成实体 bean,但是插件无法检测到实体,大概是因为它使用了 Glassfish 中创建的数据源。

        其他一些评论员成功地将驱动程序类复制到 Netbeans,所以我删除了项目,在 Glassfish 中重新创建了数据源,当我将 Glassfish 中的 PostgreSQL 驱动程序复制到 Netbeans 时,我在 Netbeans 中看到了我删除的旧版本驱动程序,一切正常。

        【讨论】:

          猜你喜欢
          • 2014-06-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-05
          • 2021-05-17
          • 1970-01-01
          • 1970-01-01
          • 2011-09-16
          相关资源
          最近更新 更多