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

Thu*_*fir 3 netbeans connection-pooling jdbc glassfish java-ee

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

这个连接池似乎是正确的,至少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> 
Run Code Online (Sandbox Code Playgroud)

(我不知道如何用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>
Run Code Online (Sandbox Code Playgroud)

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

名字缺失

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

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

在此输入图像描述

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

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

很抱歉这个混乱,当您从NetBean IDE创建DataSource时,如教程中所提到的,它可以像您说的那样正常工作.但是当选择在IDE外部(使用GlassFish Server管理控制台)创建的DataSource时,我们会看到错误.

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/

Thu*_*fir 5

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

omn​​iprof@netbeans.org 2014-05-31 16:59:40 世界标准时间

使用驱动程序时,GlassFish 4.0、NetBeans 8.0 和 Java 1.8 也遇到了同样的问题。前面的评论就是解决方案。“将值为 com.mysql.jdbc.Driver 的属性 driverClass 添加到 JDBC 连接池的其他参数” 使用数据源时,请仔细检查一长串参数。有许多项目需要填写。很快就会在博客上介绍它们。

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

添加属性

这个配置文件在哪里?你怎么看?也可以看看:

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


小智 5

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

  1. 使用管理控制台从GlassFish中删除您创建的所有连接池和数据源
  2. 在NetBeans中右键单击项目名称.
  3. 选择New-> Other-> Glassfish-> JDBC Connection Pool.
  4. 单击下一步.
  5. 给池名称.
  6. 选择使用数据库的新配置.
  7. 从下拉列表中选择Postgres.
  8. 在下一步中输入以下六个参数及其值:
    • 用户 - postgres;
    • DatabaseName - (您的数据库名称);
    • ServerName - localhost;
    • PortNumber - 5432;
    • 密码 - (postgre的密码);
    • URL - jdbc:postgresql:// localhost:5432/DBname
  9. 右键单击该项目
  10. 选择New-> Other-> Glassfish-> JDBC Resource.
  11. 选择" 使用现有JDBC池".
  12. 选择您在上一个项目符号中创建的池名称.
  13. 设置资源的名称
  14. 单击完成.

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