Glassfish:缺少数据源的驱动程序类的名称

时间:2014-10-08 05:07:59

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

(滚动到结尾以查找与此相关的可能错误。)

这个连接池看起来是正确的,至少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>

但是,从数据库中选择“新实体类”会导致:

name missing

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

查看控制台,数据源类名为com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource,而驱动程序类名不可编辑:

enter image description here

------------------------------------- bug报告----- -------------------------------------

  

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

     

很抱歉,当您从中创建DataSource时会产生混淆   像教程中提到的NetBean IDE就像你一样工作得很好   说过。但是在选择外部创建的DataSource时(使用   我们在IDE中显示的IDE的GlassFish Server管理控制台   看错了。

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

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

另见:

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

6 个答案:

答案 0 :(得分:5)

在PostgreSQL的情况下,我遇到了同样的问题,并执行了以下步骤,以便与Netbean成功建立数据库:

  1. 使用管理控制台
  2. 从GlassFish中删除您创建的所有连接池和数据源
  3. 在NetBeans中右键单击项目名称。
  4. 选择新建 - &gt;其他 - &gt; Glassfish-&gt; JDBC连接池
  5. 点击下一步
  6. 提供游泳池名称。
  7. 选择使用数据库进行新配置
  8. 从下拉列表中选择Postgres。
  9. 在下一步中输入以下六个参数及其值:
    • 用户 - postgres;
    • DatabaseName - (您的数据库名称);
    • ServerName - localhost;
    • PortNumber - 5432;
    • 密码 - (postgre的密码);
    • URL - jdbc:postgresql:// localhost:5432 / DBname
  10. 右键单击项目
  11. 选择新建 - &gt;其他 - &gt; Glassfish-&gt; JDBC资源
  12. 选择使用现有JDBC池
  13. 选择您在上一个项目符号中创建的池名称。
  14. 设置资源名称
  15. 点击完成
  16. 现在基于这个资源,你可以毫无问题地创建实体和整个EJB。

答案 1 :(得分:4)

嗯,这似乎是一个错误:

  

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

     

与GlassFish 4.0,NetBeans 8.0和Java陷入同样的​​问题   1.8使用驱动程序时。之前的评论是解决方案。 &#34;将值为com.mysql.jdbc.Driver的属性driverClass添加到其他   JDBC连接池的参数&#34;仔细使用DataSource时   查看一长串参数。有很多项目   填写。很快就会写博客。

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

add property

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

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

答案 2 :(得分:2)

这对我有用: 1-确保数据库服务器正在运行

2-通过停止GlassFish Server确保您的应用程序服务器不运行 http://netbeans-org.1045718.n5.nabble.com/The-name-of-the-driver-class-for-the-datasource-is-missing-td5725182.html

答案 3 :(得分:1)

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

答案 4 :(得分:1)

我在PostgreSQL中遇到了同样的错误。

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

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

答案 5 :(得分:0)

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

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

我使用NetBeans plugin按照instructions here.

从实体类生成Primefaces CRUD应用程序来解决此问题

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

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