有没有人成功使用JBoss 7.x部署Jersey 2.x?我尝试使用JBoss 7.1.1部署Jersey 2.5,但遇到了如下错误:
"java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;"
Run Code Online (Sandbox Code Playgroud)
我相信这个问题是因为JBoss捆绑了RestEasy,这是一个JAX-RS 1.0实现,而Jersey是一个JAX-RS 2.0实现.所以我采取了以下步骤来禁用RestEasy:
1)在我的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)
2)在这里讨论之后,我修改了JBoss的standalone.xml,module.xml和domain.xml以删除对JAXRS1.1/RestEasy的所有引用.
3)这导致了另一个错误:"java.lang.NoClassDefFoundError:org/objectweb/asm/ClassVisitor",我通过将以下内容添加到我的pom.xml来解决:
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.3.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
所以最后我的应用程序部署没有错误,但现在我似乎无法访问我的任何泽西资源.但Jetty 8工作正常.我也能够运行Jersey 1.x,而不必采取步骤#2和#3,但如果可能的话,我更愿意使用Jersey 2.x.
另外我还尝试创建一个jboss-deployment-structure.xml文件,但后来我仍然遇到之前的错误,如"java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava/util /地图;"
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.jboss.resteasy.resteasy-atom-provider"/>
<module name="org.jboss.resteasy.resteasy-cdi"/>
<module name="org.jboss.resteasy.resteasy-jackson-provider"/>
<module name="org.jboss.resteasy.resteasy-jaxb-provider"/>
<module name="org.jboss.resteasy.resteasy-jaxrs"/>
<module name="org.jboss.resteasy.resteasy-jettison-provider"/>
<module name="org.jboss.resteasy.resteasy-jsapi"/>
<module name="org.jboss.resteasy.resteasy-multipart-provider"/>
<module name="org.jboss.resteasy.resteasy-yaml-provider"/>
<module name="org.apache.log4j"/>
<module name="org.apache.commons.pool"/>
<module name="javax.ws.rs.api"/>
</exclusions>
</deployment>
</jboss-deployment-structure>
Run Code Online (Sandbox Code Playgroud)
Jboss和Jersey 2.x有没有运气好吗?任何帮助,将不胜感激.
我试图在Wildfly 8.2中部署我的war文件.我的应用程序使用org.apache.cxf进行Web服务.但Wildfly(Jboss)默认使用自己的cxf jar,它可以提供完整的Java EE支持.我可以消除jboss cxf并利用我自己的cxf jar进行Web服务
JBoss的部署,structure.xml
<jboss-deployment-structure>
<deployment>
<exclude-subsystems>
<subsystem name="webservices" />
</exclude-subsystems>
</deployment>
</jboss-deployment-structure>
Run Code Online (Sandbox Code Playgroud)
但它会禁用jboss的ws支持,这意味着我甚至无法在Jboss管理控制台中找到ws端点.但我的客户需要利用jboss的ws功能构建,以便他可以随时禁用或启用任何ws调用.有没有人知道如何配置我的应用程序以利用jboss的cxf jar,以便我可以随时在Jboss管理控制台中调整我的ws.以下链接解释了我到目前为止所提到的完全相同的内容.我成功使用了第一个选项,但我需要它才能使用第二个选项.
http://cxf.apache.org/docs/application-server-specific-configuration-guide.html
注意:请参阅第一个主题(JBoss Application Server)
我似乎无法弄清楚如何配置我的应用程序来利用jboss的cxf jar ..!
如果我从build.gradle文件中删除所有org.apache.cxf依赖项,它会给出ClassNotFoundException错误,这实际上告诉我它可以找到cxf-transport jar.
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: java.lang.ClassNotFoundException: org.apache.cxf.transport.servlet.CXFServlet
Run Code Online (Sandbox Code Playgroud)
如果我在build.gradle文件中包含org.apache.cxf依赖项,则表明它与jboss中也存在的cxf jar冲突.整个问题是我需要通过消除用户定义的cxf jar来利用jboss中存在的cxf来获得完整的Java EE支持.
jboss ×2
cxf ×1
deployment ×1
java ×1
jboss7.x ×1
jersey ×1
jersey-2.0 ×1
web-services ×1
wildfly-8 ×1