Linux で eclipse を使用して JBOSS AS 5.1.0 GA に製品をデプロイしようとしています。
以前は tomcat 6 で正常に実行されていました。デプロイ中に多くのエラーが発生しました。一つ一つ解いていました。
しかし、PersistenceProvider が原因で ClassNotFoundException が発生するようになりました。
私の製品環境は JPA 1.0 です。私はtoplink-essentials.jar、toplink-essentials-agent.jarを使用しています。(私のトップリンクのバージョンは 2.0 です)
バグの説明を参照してください...
11:46:08,276 ERROR [AbstractKernelController] Error installing to Start: name=persistence.unit:unitName=#Entity state=Create
java.lang.ClassNotFoundException:
oracle.toplink.essentials.PersistenceProvider
from BaseClassLoader@12bb617{VFSClassLoaderPolicy@bfa9d6{name=vfsfile:/opt/jboss-5.1.0.GA/server/default/deploy/iportman_gpl.war/ domain=ClassLoaderDomain@16877f8{name=DefaultDomain parentPolicy=BEFORE parent=org.jboss.bootstrap.NoAnnotationURLClassLoader@1837697} roots=[MemoryContextHandler@19344978[path= context=vfsmemory://3j011-idx41v-hfxjen4j-1-hfxjf9qd-2a real=vfsmemory://3j011-idx41v-hfxjen4j-1-hfxjf9qd-2a], FileHandler@22157425[path=iportman_gpl.war/WEB-INF/classes context=file:/opt/jboss-5.1.0.GA/server/default/deploy/ real=file:/opt/jboss-5.1.0.GA/server/default/deploy/iportman_gpl.war/WEB-INF/classes/]
これは、WAR ファイルであるプロジェクトを展開しようとしているときに表示される唯一のバグです。
実行時に jboss は両方の jar をロードしています。(toplink-essentials.jar、toplink-essentials-agent.jar)。(これはエラーコンソールにも表示されます)
DelegatingHandler@13596360[path=iportman_gpl.war/WEB-INF/lib/toplink-essentials.jar context=file:/opt/jboss-5.1.0.GA/server/default/deploy/ real=file:/opt/jboss-5.1.0.GA/server/default/deploy/iportman_gpl.war/WEB-INF/lib/toplink-essentials.jar]
DelegatingHandler@32401617[path=iportman_gpl.war/WEB-INF/lib/toplink-essentials-agent.jar context=file:/opt/jboss-5.1.0.GA/server/default/deploy/ real=file:/opt/jboss-5.1.0.GA/server/default/deploy/iportman_gpl.war/WEB-INF/lib/toplink-essentials-agent.jar]
それでもエラーが表示されます。
この問題についてGoogleに問い合わせたとき、「2つのPersistenceProviderクラスをロードしているか、jbossがJPAクラスもロードしている可能性があります」などの説明を見ました。
しかし、私はjboss-classloading.xmlで parent-first="false" を設定しました
以下のコードは /WEB-INF/jboss-classloading.xml にあります
<?xml version="1.0" encoding="UTF-8"?>
<classloading xmlns="urn:jboss:classloading:1.0"
export-all="NON_EMPTY"
import-all="true"
parent-first="false">
</classloading>
/WEB-INF/classes/META-INF/persistence.xml で以下のコードも宣言しました
<persistence-unit name="Entity" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
問題を解決するのを手伝ってください。助けを求めて JBOSS コミュニティに同じ問題を投稿しましたが、応答がありませんでした。
(persistence.xml の詳細な説明とすべての jar のリストについては、Jboss コミュニティ リンクを参照してください)
だから、誰でも私が問題を見つけるのを手伝ってください。どんな提案も私にとって非常に役に立ちます...事前に感謝します..
(下手な英語でごめんなさい)