首页 文章

Maven Embedded Glassfish插件 - 数据源和JDBC驱动程序

提问于
浏览
4

我正在尝试遵循this方法为嵌入式glassfish创建数据源 . 教程和我的代码之间唯一的重要区别是我使用官方maven插件和 embedded-glassfish:run 目标运行服务器 .

pom文件中的JDBC驱动程序存在依赖关系:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.3.155</version>
</dependency>

我的 glassfish-resources.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
  <jdbc-resource enabled="true" jndi-name="jdbc/myDatasource" object-type="user" pool-name="connectionPool">
    <description/>
  </jdbc-resource>
  <jdbc-connection-pool datasource-classname="org.h2.jdbcx.JdbcDataSource"  name="connectionPool" res-type="javax.sql.DataSource">
    <property name="URL" value="jdbc:h2:~/Documents/Projetos/DBs/h2/glassfish/glassfish;AUTO_SERVER=TRUE;MVCC=TRUE"/>
    <property name="User" value="sa"/>
    <property name="Password" value=""/>
    <property name="driverClass" value="org.h2.Driver"/>
  </jdbc-connection-pool>
</resources>

使用本地glassfish服务器运行良好 . 但嵌入式实例并不幸运:

03/06/2011 19:26:31 com.sun.enterprise.v3.server.ApplicationLifecycle deploy GRAVE:无效资源:jdbc / myDatasource_pm java.lang.RuntimeException:无效资源:com.sun.enterprise中的jdbc / myDatasource_pm . connector.ConnectorRuntime.lookupDataSourceInDAS(ConnectorRuntime.java:539)at com.gun.enterprise.connectors.ConnectorRuntime.lookupPMResource(ConnectorRuntime.java:468)at org.glassfish.persistence.common.PersistenceHelper.lookupPMResource(PersistenceHelper.java:63)在org.glassfish.persistence.jpa.ProviderContainerContractInfoBase.lookupDataSource(ProviderContainerContractInfoBase.java:71)at

我很无能......任何人都可以对此有所了解吗?

2 回答

  • 6

    弄清楚了 . 毕竟它与 glassfish-resources.xml 无关 . jdbc资源已正确创建并绑定到 java:app/jdbc/myDatasource .

    我的持久性单元(由Netbeans生成)正在寻找 jdbc/myDatasource 而没有找到任何东西 . 我最终更改了持久性单元以指向应用程序命名空间:

    <jta-data-source>java:app/jdbc/myDatasource</jta-data-source>
    

    另一种选择是使用 embedded-glassfish:admin 目标来部署具有非标准名称的全局资源(以便我可以使用 jdbc/myDatasource ) . 但是标准似乎是最好的方法 .

    This主题非常有帮助 .

  • 0

    我仍然无法使用 glassfish-resources.xml . 但这里的宝石似乎可以解决这个问题:

    @DataSourceDefinition(name = "java:app/jdbc/myDatasource", 
     className = "org.h2.jdbcx.JdbcDataSource", 
     url = "jdbc:h2:~/Documents/Projetos/DBs/h2/glassfish/glassfish;AUTO_SERVER=TRUE;MVCC=TRUE", 
     user = "glassfish",
     password="emb"
    )
    

    我创建了另一个用户,因为如果密码为空,则抛出一些讨厌的异常 . (错误?)

相关问题