1

ここで、stackoverflow の質問に記載されている手順に従って、JBoss 7.1 モジュールの jar ファイルを参照します。この jar を JBoss 5.x、6.x で問題なく使用しました。ただし、上記の jar を参照する JBoss 7.1 で war ファイルをデプロイしようとすると、次のエラーが表示されます。

15:59:19,220 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].  [/Max_client]] (MSC service thread 1-2) StandardWrapper.Throwable: java.lang
NoClassDefFoundError: org/xml/sax/SAXException
    at com.systinet.wasp.webservice.ServiceClientImpl.lookup(ServiceClientImpl.java:556) [wasp.jar:]
    at com.systinet.wasp.webservice.ServiceClientImpl.createProxy(ServiceClientImpl.java:437) [wasp.jar:]
    at org.systinet.wasp.webservice.Registry.lookup(Registry.java:168) [wasp.jar:]
    at MyServlet.init(MyServlet.java:103)   at javax.servlet.GenericServlet.init(GenericServlet.java:242) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Fi
al]
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1202) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1102) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3655) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:3873) [jbossweb-7.0.13.Final.jar:]
    at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
    at  org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
    at  java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_35]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_35]
    at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_35]
Caused by: java.lang.ClassNotFoundException: org.xml.sax.SAXException from [Module "commons.wasp:main" from local module loader @2adb1d4 (roots: c:\jboss-as-7.1.1
Final\modules)]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
    ... 15 more 

私はJBoss 7のこの新しいモジュールの概念に非常に慣れていません.ここで何が問題なのか分かりますか?

ありがとうございました!

私がやろうとしたことの詳細:

この依存関係の jar をグローバルに利用できるようにしたいと考えています。そこで、フォルダー構造 modules/common_libs/test/main を作成し、必要な jar をその中に配置しました。次に、モジュール記述子 module.xml を作成しました。

<module xmlns="urn:jboss:module:1.1" name="common_libs.test">
    <resources>
        <resource-root path="test.jar"/>
    </resources>
</module>

次に、この jar にアクセスする必要があるアプリケーションで、MANIFEST.MF を追加しました。

Dependencies: common_libs.test

アプリケーションは war ファイルであり、展開フォルダーの下に展開し、.war.dodeploy ファイルを作成しました。JBoss サーバーを起動すると、この例外が発生します。

アイデアはありますか?

ありがとう!

4

2 に答える 2

1

module.xml に javax.api への依存関係を追加すると、動作するはずです。

あなたが言ったように、あなたはこのモジュールの概念に不慣れです。私たちが何をしているのかについての説明はほとんどありません。JBoss AS7x アーキテクチャーでは、モジュールを使用してアプリケーションに jar/クラスを提供します。これの 1 つの +ve は、それが戦争を軽減することです。

jar 用のモジュールを作成します。module.xml は、モジュールの ID/バイオとして機能する記述子であり、<resources>タグの内容をサーバーに伝えます。

<dependencies>このモジュールがタグに依存しているもの

ほとんどすべてのモジュールについて、javax.api への依存関係を追加して、モジュールをコンパイルできるようにします。なんで?それを覚えているカント。そして、あなたがそれを知っているときにコメントとして追加してください。

お役に立てれば:-)

于 2012-09-25T20:26:37.550 に答える