Jak*_*oly 5 deployment jboss jax-rs
我有一个带有REST服务的WAR文件。它可以在独立模式下在JBoss EAP 6.2(对应于AS 7.something)上很好地部署,但是有时 -但经常-在域模式下会失败,对于我的JAX-RS Application类的子类来说是ClassNotFoundException。处于战争中(嗯,它是独立运行的)。由于它有时可以工作,因此我怀疑存在一些并发问题,导致JBoss尝试在看到类之前加载该类。
这是错误:
错误[org.jboss.msc.service.fail](MSC服务线程1-1)MSC000001:无法启动
服务jboss.deployment.unit.myapp.POST_MODULE:中的org.jboss.msc.service.StartException
服务jboss.deployment.unit.myapp.POST_MODULE:JBAS018733:无法处理部署“ myapp”的阶段POST_MODULE
在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:127)
...
引起原因:org.jboss.as.server.deployment.DeploymentUnitProcessingException:JBAS011230:无法加载JAX-RS应用程序类
在org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.scan(JaxrsScanningProcessor.java:218)
在org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.deploy(JaxrsScanningProcessor.java:100)
在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:120)
[jboss-as-server-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
...另外5个
由以下原因引起:java.lang.ClassNotFoundException:来自[来自服务模块加载程序的模块“ deployment.myapp:main”中的myapp.rs.RestApplication
在org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197)
[jboss-modules.jar:1.3.0.Final-redhat-2]
...
在org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:118)[jboss-modules.jar:1.3.0.Final-redhat-2]
在org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.scan(JaxrsScanningProcessor.java:214)
...另外7个
该类在那里:
[jboss / domain] $解压缩-l data / content / 6c / 0ffc675ff1c2254540b6e8caffc0d2605ed549 / content | grep RestApp
2262 02-13-14 09:05 WEB-INF / classes / myapp / rs / RestApplication.class
这就是我的部署方式(我的用户!=运行jboss的用户,如果有区别的话):
me$ /opt/jboss/bin/jboss-cli.sh -c --controller=0.0.0.0:49999 --user=admin --password=***
[domain@0.0.0.0:49999 /] deploy /vagrant/myapp.war --all-server-groups
Run Code Online (Sandbox Code Playgroud)
通过Web管理控制台执行时,部署以相同的方式失败。通过将.war复制到standalone/deployments/目录中,可以完成独立部署。
有小费吗?
web.xml除了resteasy.servlet.mapping.prefix上下文参数外,我们没有JAX-RS内容。我们使用resteasy-servlet-initializer库而不是在那里手动配置servlet或类似的东西似乎我已经通过从 WAR 文件的WEB-INF/lib/.
我注意到战争包含许多它不应该包含的库,例如 resteasy-jaxrs-3.0.6.Final.jar、jboss-jaxr-api_1.0_spec-1.0.0.Final.jar(顺便说一句,与 Rest Easy 冲突3.0.6)、javax.servlet-api-3.1.0.jar 等。
所以我猜类加载器没有看到/找到类,因为类路径地狱,服务器和 web 应用程序使用相同库的不同“实例”。(不知道为什么它在 JBoss Standalone 下工作;但 Standalone 具有开箱即用的配置,而 domain 已进行了大量调整)。
我有时也包括--runtime-name=myapp在部署命令中,这似乎是错误的,我应该使用--runtime-name=myapp.war(包括结尾)。
| 归档时间: |
|
| 查看次数: |
25845 次 |
| 最近记录: |