4

このアプローチに従って、埋め込まれたグラスフィッシュのデータソースを作成しようとしています。チュートリアルと私のコードの唯一の大きな違いは、公式の 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> 

ローカルのグラスフィッシュ サーバーを使用して正常に動作します。しかし、埋め込まれたインスタンスではうまくいきません:

03/06/2011 19:26:31 com.sun.enterprise.v3.server.ApplicationLifecycle deploy GRAVE: 無効なリソース: jdbc/myDatasource_ pm java.lang.RuntimeException: 無効なリソース: jdbc/myDatasource _pm at com.sun.enterprise .connectors.ConnectorRuntime.lookupDataSourceInDAS(ConnectorRuntime.java:539) at com.sun.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) で

私は無知です...誰かがそれに光を当てることができますか?

4

2 に答える 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)。しかし、標準に移行することが最善のアプローチのように思えました。

このトピックはとても役に立ちました。

于 2011-06-05T03:37:28.233 に答える
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"
) 

パスワードが空の場合、いくつかの厄介な例外がスローされるため、別のユーザーを作成しました。(バグ?)

于 2011-06-03T23:35:40.273 に答える