0

サーブレットで使用するjavax.ws.rs.Applicationクラスを指定するweb.xmlのみを含むwarファイルを使用した簡単なセットアップがあります。

javax.ws.rs.Applicationの実装を含むjarも完全に簡単です。web.xmlと実装はどちらもjbossドキュメントの例に基づいています

ただし、jboss AS7.1.1Finalとjboss4.0.4でwar+jarの組み合わせをデプロイすると、異なる動作が発生します。残りのAPIにアクセスすると、jbossログで次の例外が発生します(スニペットのみ)。

06:33:59,540 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/wrapper]] (MSC service thread 1-2) StandardWrapper.Throwable: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.projectgoth.provider.restapi.RestApiProvider from [Module "deployment.wrapper.war:main" from Service Module Loader]
at org.jboss.resteasy.spi.ResteasyDeployment.createFromInjectorFactory(ResteasyDeployment.java:271) [resteasy-jaxrs-2.3.2.Final.jar:]
at org.jboss.resteasy.spi.ResteasyDeployment.createApplication(ResteasyDeployment.java:259) [resteasy-jaxrs-2.3.2.Final.jar:]

ただし、戦争のpom.xmlでjarのスコープを提供されたものから実行時に変更した場合、エラーは実際に7.1.1としてjbossから消えます。

参考までに、warとjarの両方のコード使用をbitbucketにアップロードしました(ここで、provider = javax.ws.rs.Applicationの実装であり、ラッパーはwarのデプロイ可能です)

4

1 に答える 1

0

これは正常だと思います。Per class loader policy, a child class can always see the parent class not the vice verse。jarスコープをランタイムとして配置すると、JARはWARアプリケーションよりもストリームの上位のクラスパスにロードされるため、WARクラスに表示されます。

于 2012-10-27T23:01:17.410 に答える