Glassfish:缺少数据源的驱动程序类的名称
Posted
技术标签:
【中文标题】Glassfish:缺少数据源的驱动程序类的名称【英文标题】:Glassfish: the name of the driver class for the datasource is missing 【发布时间】: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/
【问题讨论】:
见***.com/a/14304632/262852 【参考方案1】:我在使用 PostgreSQL 时遇到了同样的问题,并执行了以下步骤以成功与 Netbean 建立数据库连接:
-
使用管理控制台从 GlassFish 中删除您创建的所有连接池和数据源
在 NetBeans 中右键单击项目名称。
选择新建->其他->Glassfish->JDBC 连接池。
点击下一步。
提供池名称。
选择使用数据库的新配置。
从下拉列表中选择 Postgres。
在下一步中输入这六个参数及其值:
用户-postgres;
DatabaseName -(您的数据库名称);
服务器名称 - 本地主机;
端口号 - 5432;
密码-(postgre的密码);
URL - jdbc:postgresql://localhost:5432/DBname
右键单击项目
选择新建->其他->Glassfish->JDBC 资源。
选择使用现有的 JDBC 池。
选择您在上一个项目符号中创建的池名称。
设置资源名称
点击完成。
现在基于此资源,您可以毫无问题地创建实体和整个 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 中看到了我删除的旧版本驱动程序,一切正常。
【讨论】:
以上是关于Glassfish:缺少数据源的驱动程序类的名称的主要内容,如果未能解决你的问题,请参考以下文章
Glassfish - 尝试连接数据源时没有适合 mysql 的驱动程序
带有 Eclipse 和 Glassfish 的简单数据库 Web 应用程序
清单的应用程序标记中缺少名称为“com.google.android.gms.appstate.APP_ID”的元数据标记