2

私は Netbeans で作業しており、エンティティ Bean と Web サービスを別々のプロジェクトに持っています。Web サービス プロジェクトにエンティティ Bean を含めますが、ApplicaitonConfig.java ファイルが上書きされ続け、関連する jar ファイル内のエンティティ Bean に対して作成したエントリが削除されます。

私の質問は、EntityBeans と WebServices の両方が同じプロジェクト/jar ファイルを共有する必要があるかどうかです。そうでない場合、jar ファイルにあるエンティティ Bean を含める適切な方法は何ですか?


<?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="jdbc/emrPool" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/emrPool</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="eclipselink.ddl-generation" value="none"/>
      <property name="eclipselink.cache.shared.default" value="false"/>
    </properties>
  </persistence-unit>
</persistence>

Melc の入力に基づいて、トランザクション タイプが JTA に設定され、jta-data-source が Glassfish JDBC リソースの値に設定されていることを確認しました。残念ながら、問題はまだ解決していません。WAR ファイルを開き、EntityBean.jar ファイルが最新バージョンであり、War ファイルの WEB-INF/lib ディレクトリにあることを確認しました。エンティティがエンティティマネージャに「登録」されていないという事実に関係していると思います。しかし、なぜ彼らが登録されていないのかわかりません。

4

2 に答える 2

2

いいえ、同じ戦争に参加する必要はありません。jpaエンティティを含むプロジェクト(クラスライブラリプロジェクトと呼ばれると思います)を作成し、Webサービスを含むWebプロジェクトのライブラリからそのプロジェクトを追加できます。ApplicationConfig は Web サービスに関連しており、エンティティには影響しません。Web プロジェクトの単純なサーブレットから jpa プロジェクトの機能を確認することをお勧めします。それが機能する場合は、jax-rs コードでも機能します。ただし、persistence.xml を適切に変更して、resource-local を使用しないように注意してください。これは、非 Web プロジェクト用の netbeans によるデフォルトの生成ですが、適切なサーバー データ ソースとともに jta を使用します。

編集

netbeans の persistence.xml を編集して別のテストを行い、[Include All Entity Classes in ..] のチェックを外し、[Add Class...] オプションを選択してすべてのエンティティ クラスを選択します。エンティティ クラスに沿って、アクセスしようとしているクラスも見つける必要があります。

また、netbeans から実行する場合、戦争ではなく gf が作業している Web プロジェクトのビルド フォルダーの内容です。gf の管理コンソールに移動しない限り、アプリケーションをデプロイして war ファイルを選択します。そのため、そのフォルダーの内容も確認するか、単純に削除して nb に再作成させてください。

「不明なエンティティ Bean クラス」は、NetBeans と GlassFish でかなり頻繁に表示されます。たとえば、再デプロイ後にシステムが動作しているときに発生する場合もあります。その場合、サーバーを再起動することで修正されます。残念なことに、これは、彼らが言うことを必ずしも本当に意味するとは限らないエラーの 1 つです。

于 2013-11-10T18:24:02.950 に答える