10

非常に単純な耳のアプリケーションを実行しようとしています。私はまさにこの問題に遭遇しているようですが、ここでの議論は私にとってはうまくいきません .JDBCリソース名はコンテナによって変更されています(__pmそれに追加されています)

私の場合、データソース名も によって追加されてい__pmます。どこから来たのかはわかりませんが、サーバーログは、それを検索するのではなく、展開databasenameを検索しdatabasename__pmて失敗するという事実を示しています。

Persistence.xml :-

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="FCK-ejbPU" transaction-type="JTA">
    <jta-data-source>FCKDatabase</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties/>
  </persistence-unit>
</persistence>

Glassfish ログ:

  Error occurred during deployment: Exception while preparing the app : Invalid resource : { ResourceInfo : (jndiName=java:app/jdbc/FCKDatabase__pm), (applicationName=FCK) }. Please see server.log for more details.
        Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method : java.lang.RuntimeException: Invalid resource : { ResourceInfo : (jndiName=java:app/jdbc/FCKDatabase__pm), (applicationName=FCK) }
        Invalid resource : { ResourceInfo : (jndiName=java:app/jdbc/FCKDatabase__pm), (applicationName=FCK) }

ご覧のとおり、私のリソースの JNDI 名には__pm.

また、Glassfish サーバー コンソールでは、リソースは FCKDatabase_pm ではなく FCKDatabase として正しく表示されます。

これはどこ__pmから来たのですか?

システム:

  • ネットビーンズ7.3
  • グラスフィッシュ サーバー 3.1.2
4

4 に答える 4

6

問題は、mysqlコネクタのjarファイルがglassfishサーバーに配置されていないことでした。これは一連の問題を引き起こします。上に投稿したものは、サーバーログに含まれるエラーメッセージの1つにすぎません。エラーメッセージのリスト全体を調べて、そこからデバッグしてみることをお勧めします。次のリンクは、jarファイルを正しい場所に配置するのに役立ちました。

于 2013-03-18T12:01:54.837 に答える
2

Netbeans 7.1 以降、IDE がフィールドを生成し、JDNIpersistence.xmljtaglassfish-resoucesプレフィックス付きで生成されるためjava:module/、両方のファイルで削除する必要があり、jdbc/[anyName]. これは、Netbeans 8.1 および Glassfish 4.0 でテストされました。

画像では、2 番目のオプションは生成された名前を示しています。これは Glassfish では無効です。

于 2016-10-07T12:32:55.637 に答える