首页 文章

将Jersey JAX-RS WAR部署到JBoss:ResourceConfig不可代理

提问于
浏览
0

我有一个基于Jersey的Web应用程序(基本上只是REST服务,没有演示文稿),我希望将其部署到JBoss EAP 6.2服务器 . 我首先遇到了here所描述的问题,我可以使用accepted answer解决问题 . 但是,我在部署WAR时遇到JBoss抛出的以下异常:

16:24:10,142 ERROR [org.jboss.msc.service.fail](MSC服务主题1-3)MSC000001:无法启动服务jboss.deployment.unit . “search-rest.war”.WeldStartService:org . jboss.msc.service.StartException服务jboss.deployment.unit “搜索rest.war” .WeldStartService:失败在org.jboss.msc.service.ServiceControllerImpl $ StartTask.run启动服务(ServiceControllerImpl.java:1767) [java -u . .0_111] java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)[rt.jar:1.8.0_111] at java.lang.Thread.run(Thread.java:745)[rt.jar :1.8.0_111]引起:org.jboss.weld.exceptions.UnproxyableResolutionException:WELD-001437正常范围的bean类org.glassfish.jersey.server.ResourceConfig不可代理,因为类型是final或者包含最终方法public final org.glassfish.jersey.server.ResourceConfig org.glassfish . jersey.server.ResourceConfig.setClassLoader(java.lang.ClassLoader) - 带有限定符[@Default @Any]的Managed Bean [类mjb44.searchapp.rest.Application] . 在org.jboss.weld.util.Proxies.getUnproxyableClassException(Proxies.java:229)在org.jboss.weld.util.Proxies.getUnproxyableTypeException(Proxies.java:180)在org.jboss.weld.util.Proxies.getUnproxyableTypesExceptionInt (Proxies.java:195)在org.jboss.weld.util.Proxies.getUnproxyableTypesException(Proxies.java:169)在org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:148)在org.jboss . weld.bootstrap.Validator.validateRIBean(Validator.java:164)在org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:383)在org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java: 368)在org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(在org.jboss.msc.service.ServiceControllerImpl WeldBootstrap.java:379)在org.jboss.as.weld.WeldStartService.start(WeldStartService.java:64) $ startCask.startService(ServiceControllerImpl.java:1811)[jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1] org.jboss.msc.service.ServiceControllerImpl $ StartTask .RUN(ServiceControllerImpl.java: 1746)[jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1] ... 3 more 16:24:10,350 ERROR [org.jboss.as.server]( DeploymentScanner-threads - 2)JBAS015870:部署部署“search-rest.war”,并返回以下失败消息:{“JBAS014671:Failed services”=> {“jboss.deployment.unit . ”search-rest . war \“ . WeldStartService”=>“org.jboss.msc.service.StartException in service jboss.deployment.unit . \”search-rest.war \“ . WeldStartService:无法启动服务引起:org.jboss.weld .exceptions.UnproxyableResolutionException:WELD-001437正常范围的bean类org.glassfish.jersey.server.ResourceConfig不proxyable因为类型是最终还是它包含了最终的方法public最终org.glassfish.jersey.server.ResourceConfig org.glassfish . jersey.server.ResourceConfig.setClassLoader(java.lang.ClassLoader) - 带有限定符[@Default @Any]的Managed Bean [class mjb44.searchapp.rest.Application] . “}}

我的应用程序简单定义为:

import org.glassfish.jersey.server.ResourceConfig;
public class Application extends ResourceConfig {
    public Application () {
        register(mjb44.searchapp.filters.CORSFilter.class);
    }
}

......所以它既不是最终的,也不包含任何最终的方法 . 因此,问题显然与 org.glassfish.jersey.server.ResourceConfig 有关,但是我无法控制 . 我还在JBoss论坛here开了一个讨论 .

1 回答

  • 0

    仅仅是为了记录,我迄今为止从JBoss论坛收到的唯一回复是:

    我担心EAP支持的唯一JAX-RS实现是RESTEasy .

    ...这似乎很奇怪,因为我想如果我在WAR的 WEB-INF/lib 中提供JAX-RS实现,那么任何Web容器应该没问题 .

相关问题