(滚动到结尾以查找与此相关的可能错误。)
这个连接池看起来是正确的,至少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控制台,数据源的驱动程序类名称是什么?
查看控制台,数据源类名为com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
,而驱动程序类名不可编辑:
------------------------------------- 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/
答案 0 :(得分:5)
在PostgreSQL的情况下,我遇到了同样的问题,并执行了以下步骤,以便与Netbean成功建立数据库:
现在基于这个资源,你可以毫无问题地创建实体和整个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
这个配置文件在哪里?你怎么看待它?另见:
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中看到了一个旧版本的驱动程序,我删除了,一切正常。