在 Jboss AS 7 上部署 Jersey Web 应用程序
目前在 Jboss AS 4/5 上运行一些 Web 应用程序,我正在测试迁移到 jboss7。当我尝试在 JBoss AS 7 上部署基于球衣的 Web 应用程序(带有独立预览配置文件的完整配置文件)时,我得到:
org.jboss.as.server.deployment.DeploymentUnitProcessingException: Only one JAX-RS Application Class allowed.
我已经做了一些搜索,发现 RestEasy 是嵌入的默认 JAX-RS 实现进入应用程序服务器。诸如 http://community.jboss.org/message/579996 和 https://issues.jboss.org/browse/JBAS-8830)提到 RestEasy 部署程序接管。
在 AS 6 中,删除部署程序似乎更容易,而我还没有看到 AS 7 的任何解决方案。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
这篇文章已经提到过:https://community.jboss.org/message/744530# 744530 ,您可以要求 Resteasy 模块不要扫描您的 Web 应用程序中的其他 JAX RS 实现;只需将其添加到您的 web.xml 中即可:
对我来说效果很好
it has already been mentioned in this post : https://community.jboss.org/message/744530#744530 , you can just ask the resteasy module to not scan for other JAX RS implementations in your webapp; just add this to your web.xml :
worked fine for me
除了在其他帖子中提到的删除standalone.xml中的整个jaxrs子系统之外,排除jboss-deployment-struction.xml中的RESTEasy模块也可能有效。
另请查看
Besides removing the entire jaxrs subsystem in
standalone.xml
as mentioned in the other posts excluding the RESTEasy modules injboss-deployment-structure.xml
may also work.Also check out
我认为正确的方法是使用与应用程序服务器无关的 JAX-RS 应用程序部署。无需搞乱任何 JBoss 配置。您所需要的只是扩展 javax.ws JAX-RS Web 应用程序中的 .rs.core.Application 。您可以在此处找到示例。然后,您需要将其放入 web.xml 中。
包扫描机制在 JBoss 7.x 上无法正常工作。我已经在 JBoss 7.0.2.Final 和 JBoss 7.1.1.Final 中成功测试了这种方法。
I believe the correct approach is to use app server agnostic JAX-RS application deployment. No need to mess with any JBoss configuration. All you need is, extend javax.ws.rs.core.Application in your JAX-RS web application. You can find an example here. Then, you need to put this in your web.xml.
Package scanning mechanism does not work correctly on JBoss 7.x. I have tested this approach successfully in JBoss 7.0.2.Final and JBoss 7.1.1.Final.
会成功的,与 7.3AS 配合得很好。ctomc 只是在最后错过了一个小斜杠来终止该部分。:-)
Will do the trick, works great with 7.3AS.ctomc just missed a tiny slash in the end to terminate the section.:-)
我设法在我的 JBOSS AS7 上运行 Jersey WS。
我为 JBOSS 所做的只是删除standalone.xml 中与 jax-rs 相关的所有内容
我的球衣示例代码来自:
http://www.ibm.com/developerworks/web/library/ wa-aj-tomcat/
我对球衣所做的唯一一件事就是从 web.xml 中删除 init-param 并将球衣 lib 复制到 WebContent/WEB-INF/lib。
I managed to run Jersey WS on my JBOSS AS7.
What i do for JBOSS is just remove everything related to jax-rs in standalone.xml
My jersey sample code got from:
http://www.ibm.com/developerworks/web/library/wa-aj-tomcat/
The only thing i do for the jersey is remove the init-param from web.xml and copy jersey lib to WebContent/WEB-INF/lib.
另一个选项:
编辑 web.xml,添加配置到资源包的 init-param com.sun.jersey.config.property.packages,例如:
https://github.com/Atmosphere/atmosphere/wiki/Deploying-Atmosphere-Jersey-in-JBoss-7.1.x
Ahother option:
Edit web.xml, add an init-param com.sun.jersey.config.property.packages configured to your resource's package, like:
https://github.com/Atmosphere/atmosphere/wiki/Deploying-Atmosphere-Jersey-in-JBoss-7.1.x
您可以在独立配置中通过修改configuration/standalone.xml并删除扩展和配置文件部分中对jaxrs的引用来解决这个问题。请注意,即使我在standalone.xml 中注释掉了这些部分,JBoss 也会在下次启动时自动删除这些引用...
You can get past this in the standalone configuration by modifying configuration/standalone.xml and removing references to jaxrs in the extensions and profile section. Note, even though I commented those portions out in my standalone.xml, JBoss will automagically remove those references altogether on next startup...
这是对我来说适用于 JBoss 7.1.1 和 Jersey 1.17.1 的方法。无需修改
standalone.xml
或domain.xml
。除了在 web.xml 中过滤restEasy 之外,还指示 Jersey 使用 Jackson。您可以在此处了解此配置。为了节省配置猜测的时间,我发布了测试项目中的
web.xml
和pom.xml
。web.xml
pom.xml
Here is what worked for me for JBoss 7.1.1 and Jersey 1.17.1. No need to modify
standalone.xml
ordomain.xml
. Besides filtering restEasy in web.xml instruct Jersey to use Jackson. You can read about this configuration here.To save time in configuration guesses, I am posting
web.xml
andpom.xml
from test project.web.xml
pom.xml
您应该排除 jaxrs 子系统在您的部署中被激活
将其添加到 META-INF/jboss-deployment-struct.xml 中
,或者您可以转到standalone.xml 并在那里删除子系统。
为此,您需要删除
部分配置,顶部的扩展部分可以保留,无论如何都不会造成伤害。
或者您可以使用 CLI 连接到服务器并运行
请注意,排除子系统功能和部署结构:1.2 已在 7.1.2 中添加,因此不适用于 7.1.1。
You should exclude jaxrs subsystem from being activated for your deployment
add this into META-INF/jboss-deployment-structure.xml
or you can go to standalone.xml and remove subsystem there.
To do so, you need to remove
part of configuration, extension part of on top can stay it wont hurt either way.
or you can connect to server with CLI and run
Just a note, exclude-subsystems functionality and deployment-strucure:1.2 was added in 7.1.2 and as such will not work on on 7.1.1.