persistence.xmlファイルの場所については、私は困惑しています。私はJPA 2.0の実装としてeclipselink 2.4を使用しており、src/main/resources/META-INF/persistence.xmlの下にpersistence.xmlを配置しています。JPA persistence.xml META-INFが正しく機能しない
最初の問題: eclipse内のサーバーに公開した後、私のpersistence.xmlが見つからないというエラーが表示されます。ここで
Exception: : java.lang.IllegalArgumentException: No persistence unit named 'X'
is available in scope Webapp. Available persistence units: [] at
私のpersistence.xmlのためのコードは、私がWebアプリケーション/ WEB-INF /クラス/ META-INFにMETA-INFを移動した場合、それは動作します
<?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="X" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>localJTA</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.target-server" value="WebLogic"/>
<property name="eclipselink.logging.level" value="FINEST"/>
</properties>
</persistence-unit>
</persistence>
です!私は問題が何であるか理解できません。
私はプロジェクトがパスを構築し、すべてがそこによさそうだがチェック。
第二の問題私が午前は私の注釈付きのエンティティクラスがEclipseLinkのことで自動的に拾われていないことです。私のJPA設定では、Discoverアノテートされたクラスが自動的に選択されています。
私もXMLで次のように使用
<exclude-unlisted-classes>false</exclude-unlisted-classes>
テクノロジーズています。WebLogic 12cのサーバ、EJB 3.1、JPA 2.0、M2E-WTP、およびJSF 2.1
更新1:パスsrc/main/resources/META-INF/persistence.xmlにMETA-INFを残し、warファイルをビルドするためにmaven installを実行すると、META-INFフォルダはWEB-INF/classes/META- INF /持続性。 xmlのように(戦争の中で)する必要があります。 webappがビルドされ、Eclipseでローカルに実行されたのは、それが問題であると思われます。誰もこれを説明できますか?
アップデート2: persistence.xmlのつまりのsrc /メイン/リソース/ META-INF/ のsrc /メイン/リソースにMETA-INFを残して、私のpersistence.xmlで、次のではなく、明示的にエンティティクラスを一覧表示します
<exclude-unlisted-classes>false</exclude-unlisted-classes>
私が戦争を構築し、インターネットエクスプローラを介してweblogicコンソールを通じて展開する場合は、なぜそれが日食の内部で動作しないのですか?
アップデート3:あなたは - はいを構築します何
検査しなかった、Eclipseの内部で私は自動的にセットを構築できます。私はjavaパッケージcom、persistence.xmlを含むMETA-INFフォルダ、Webapp/target/classesの下にあるresourcesフォルダを見ています。
戦争が同じ場合 - あなたはWebappを参照していますか?warフォルダはC:¥workspace.metadata.plugins¥org.eclipse.wst.server.core¥tmp0¥Weblogic12cDomain_auto_generated_ear_¥Webapp.warにありますか?もしそうなら、WEB-INF \ lib \ jsf-impl-2.1.7.jar
の中で唯一のものは、あなたのアプリケーションをEclipseでテストするために使われているクラスパスを検査したのですか? - このエントリは私のクラスパスにありますWebapp/.classpathの下で期待どおりに
リソースディレクトリのpersistence.xmlがクラスパスに最初にある場合、それは戦争のディレクトリまたは正しいディレクトリのディレクトリの代わりに選択されます - 私の理解はEclipseですプロジェクトを構築してから、warファイルを生成せずに内容をサーバーにコピーします。たwebapp.warを生成ここで
は達人のルートにあるものである:ここでは
はのWebappプロジェクトフォルダのルートにあるものである:
Webapp.war FOLDERのルートにあるC:\ workspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ Weblogic12cDomain_auto_generated_ear_ \ Webapp.warのルートは次のとおりです。
012リソースディレクトリ内にpersistence.xmlが最初のクラスパス上にある場合は、それはあなたの戦争や正しいディレクトリ内の1つの内の1つの代わりにピックアップされます。 - これが何を意味するのかわかりません。私のリソース/ META-INF内のpersistence.xmlは、私が拾いたいものです。どのような戦争ファイルがそれと関係しているか分かりませんか?どちらの方法でも、私は同じpersistence.xmlにする必要があります。
ご迷惑をおかけして申し訳ありません。
Thxをクリス!これは理にかなっていますが、それは日食の中では機能しません! = /私の更新を見てください。 – Padawan
Chrisさんは、他の人が質問に答えられたと思わないように、あなたの答えをコメントに変更していただけますか? – Padawan
あなたが探しているものではなく、より多くの露出を望むなら、それに賞金をあてるか、あなたがしたことをやり直してください。これは「Eclipseでビルドする」ときにのみ発生すると言われています。何が構築されるのか調べましたか?戦争が同じ場合、Eclipseであなたのアプリをテストするために使用されているクラスパスを調べましたか?リソースディレクトリ内のpersistence.xmlが最初にクラスパス上にある場合、それは戦争中のものか正しいディレクトリ内のものの代わりに選択されます。 – Chris