DOS*_*DOS 33 migration jboss jersey jboss7.x
目前在Jboss AS 4/5上运行一些webapps,我正在测试迁移到jboss7.当我尝试在JBoss AS 7上部署基于jersey的webapp(带有独立预览配置文件的完整配置文件)时,我得到:
org.jboss.as.server.deployment.DeploymentUnitProcessingException: Only one JAX-RS Application Class allowed.
Run Code Online (Sandbox Code Playgroud)
我已经做了一些搜索,发现RestEasy是嵌入到Application Server中的默认JAX-RS实现.像http://community.jboss.org/message/579996和https://issues.jboss.org/browse/JBAS-8830这样的帖子提到RestEasy部署者接管了.
在AS 6中,删除部署者似乎更容易,而我没有看到AS 7的任何解决方案.
Ant*_*nne 69
在这篇文章中已经提到过:https://community.jboss.org/message/744530#744530,你可以要求resteasy模块不要在你的webapp中扫描其他JAX RS实现; 只需将此添加到您的web.xml:
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
对我来说很好
除了删除整个jaxrs子系统,standalone.xml
如其他帖子中提到的不包括RESTEasy模块jboss-deployment-structure.xml
也可以工作.
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<exclusions>
<module name="org.jboss.resteasy.resteasy-atom-provider" />
<module name="org.jboss.resteasy.resteasy-cdi" />
<module name="org.jboss.resteasy.resteasy-jaxrs" />
<module name="org.jboss.resteasy.resteasy-jaxb-provider" />
<module name="org.jboss.resteasy.resteasy-jackson-provider" />
<module name="org.jboss.resteasy.resteasy-jsapi" />
<module name="org.jboss.resteasy.resteasy-multipart-provider" />
<module name="org.jboss.resteasy.async-http-servlet-30" />
</exclusions>
</deployment>
</jboss-deployment-structure>
Run Code Online (Sandbox Code Playgroud)
还可以看看
我认为正确的方法是使用与app server无关的JAX-RS应用程序部署.无需乱搞任何JBoss配置.您只需在JAX-RS Web应用程序中扩展javax.ws.rs.core.Application即可.你可以在这里找到一个例子.然后,您需要将其放在web.xml中.
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>jersey.MyApplication</param-value>
</init-param>
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>
<load-on-startup>1</load-on-startup>
</servlet>
Run Code Online (Sandbox Code Playgroud)
程序包扫描机制在JBoss 7.x上无法正常运行.我已经在JBoss 7.0.2.Final和JBoss 7.1.1.Final中成功测试了这种方法.
归档时间: |
|
查看次数: |
53806 次 |
最近记录: |