Maven Embedded Glassfish Plugin - источник данных и драйвер JDBC - PullRequest
4 голосов
/ 04 июня 2011

Я пытаюсь следовать этому подходу для создания источника данных для встраиваемой стеклянной рыбы. Единственное существенное различие между учебником и моим кодом состоит в том, что я запускаю сервер, используя официальный плагин 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 развернуть GRAVE: Неверный ресурс: JDBC / myDatasource_ ч java.lang.RuntimeException: неверный ресурс: jdbc / myDatasource _pm в com.sun.enterprise.connectors.ConnectorRuntime.lookupDataSourceInDAS (ConnectorRuntime.java:539) в com.sun.enterprise.connectors.ConnectorRuntime.lookupPMResource (ConnectorRuntime.java:468) в org.glassfish.persistence.common.PersistenceHelper.lookupPMResource (PersistenceHelper.java:63) в org.glassfish.persistence.jpa.ProviderContainerContractInfoBase.lookupDataSource (ProviderContainerContractInfoBase.java:71) при

Я не в курсе ... Кто-нибудь может пролить свет на это?

Ответы [ 2 ]

6 голосов
/ 05 июня 2011

Разобрался. В конце концов, это не имеет ничего общего с 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). Но стандартный подход казался лучшим подходом.

Эта тема была очень полезной.

0 голосов
/ 04 июня 2011

Я все еще не могу заставить 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"
) 

Я создал другого пользователя, потому что, если пароль пуст, выдаются некоторые неприятные исключения. (Ошибка?)

...