2016-09-05 9 views
1

私はWildFly 10でアプリケーションを実行しています.EARにいくつかのEJBが含まれています。 JMSを介してトリガーされる1つのEJB "gt"があります。そのEJBは、エラーが生じ、他のEJB "PS" を、呼び出して、最終的に依存関係が設定されているにもかかわらず、Wildfly 10でClassNotFoundExceptionが発生しました

Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.filefilter.IOFileFilter from [Module "deployment.MyApplication.ear:main" from Service Module Loader]

私のjboss-展開するstructure.xmlはこの

<sub-deployment name="ps.jar"> 
    <dependencies> 
    <module name="org.apache.commons.io"/> 
    </dependencies> 
</sub-deployment> 

が含まれており、名前のモジュールがあり、「ORG .apache.commons.io "未満jboss\modules\system\layers\base\org\apache\commons\io\main

私は間違っていますか? ちょうどjboss\modulesの下ではなく、jboss\modules\system\layersの下にあるものの重要性は何ですか?

実行時にサブデプロイメントの設定された依存関係を調べる方法はありますか?たとえば、jboss-cli?

更新:
https://docs.jboss.org/author/display/WFLY10/Class+Loading+in+WildFlyによれば、エラーメッセージは[Module "deplyoment.MyApplication.ear.ps.jar:main" ...]と予想されますが、そうではありません。しかし、なぜ特定のサブ展開ではなく、グローバル展開であるのでしょうか?

論理コールスタックは、次のようになります。

general.GeneralSomeClass.getIOFileFilter() 
    <-- static method. return type is IOFileFilter from Commons IO. 
     general is just a POJO lib (MyApplication.ear/lib/general.jar) 
     the exception occurs on loading the GeneralSomeClass, before calling the method 
ps.PsSomeClass.run() 
ps.PsEJB.run() 
gt.GtEJB.run() 
+0

サブデプロイメントだけでなく、EARに依存性を追加しようとしましたか?モジュールディレクトリの質問に答えるだけです。 'modules \ system \ layers'はサーバが提供するモジュールを意味します。ユーザモジュールは 'modules'ディレクトリに入るだけです。 'modules/org/postgresql/main'にあります。 –

答えて

0

あなたが、その場合には、手動でクラスをロードする必要があり、私は、我々のアプリケーションのためにstandalone.xmlでこれを行っています。

<subsystem xmlns="urn:jboss:domain:ee:4.0"> 
      <global-modules> 
       <module name="com.tibco.tibjms"/> 
       <module name="org.apache.logging.log4j.api"/> 
       <module name="org.apache.logging.log4j.core"/> 
       <module name="org.apache.logging.log4j.web"/> 
      </global-modules> 
関連する問題