我有一个简单的设置,war 文件只包含一个 web.xml,它指定要在 servlet 中使用的 javax.ws.rs.Application 类。
包含 javax.ws.rs.Application 实现的 jar 也完全是微不足道的。web.xml 和实现都基于jboss 文档中的示例
但是,当我在 jboss AS 7.1.1 Final 和 jboss 4.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 的范围从提供的更改为运行时 - 错误确实从 jboss 作为 7.1.1 消失了。
作为参考,我已将用于 war 和 jar 的代码上传到bitbucket(其中 provider = javax.ws.rs.Application 的实现,而 wrapper 是可部署的 war)