簡體   English   中英

將Jersey JAX-RS WAR部署到JBoss:ResourceConfig無法代理

[英]deploying a Jersey JAX-RS WAR to JBoss: ResourceConfig is not proxyable

我有一個基於Jersey的Web應用程序(基本上只是REST服務,沒有演示文稿),希望將其部署到JBoss EAP 6.2服務器上。 我首先遇到這里描述的問題,我可以使用問題的公認答案來解決。 但是,然后在部署WAR時遇到JBoss拋出的以下異常:

16:24:10,142錯誤[org.jboss.msc.service.fail](MSC服務線程1-3)MSC000001:無法啟動服務jboss.deployment.unit。“ search-rest.war”。WeldStartService:org.jboss服務jboss.deployment.unit。“ search-rest.war” .WeldStartService中的.msc.service.StartException:無法從org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1767)啟動服務jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1],位於java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[rt.jar:1.8。 0_111],位於java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)[rt.jar:1.8.0_111],位於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或它包含final方法public final org .glassfish.jersey.server.ResourceConfig org.glassfish.je rsey.server.ResourceConfig.setClassLoader(java.lang.ClassLoader)-帶有限定符[@Default @Any]的托管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。 org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:383)上的weld.bootstrap.Validator.validateRIBean(Validator.java:164)在org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java: 368),位於org.jboss.ms.weld.WeldStartService.start(WeldStartService.java:64),位於org.jboss.msc.service.ServiceControllerImpl org.jboss.msc.service.ServiceControllerImpl $ StartTask上的$$ StartTask.startService(ServiceControllerImpl.java:1811)[jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1] .run(ServiceControllerImpl.java: 1746)[jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1] ...還有3個

16:24:10,350錯誤[org.jboss.as.server](DeploymentScanner-threads-2)JBAS015870:回退了部署“ search-rest.war”的部署,並顯示以下失敗消息:{“ JBAS014671:失敗的服務” => {“ jboss.deployment.unit。\\” search-rest.war \\“。WeldStartService” =>“服務jboss.deployment.unit。\\” search-rest.war \\中的org.jboss.msc.service.StartException “ .WeldStartService:無法啟動服務。原因:org.jboss.weld.exceptions.UnproxyableResolutionException:WELD-001437正常作用域的Bean類org.glassfish.jersey.server.ResourceConfig是不可代理的,因為類型是final或包含final方法public final org.glassfish.jersey.server.ResourceConfig org.glassfish.jersey.server.ResourceConfig.setClassLoader(java.lang.ClassLoader)-帶有限定符[@Default @Any的托管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);
    }
}

……因此它既不是final方法,也不包含任何final方法。 因此,問題顯然與org.glassfish.jersey.server.ResourceConfig ,但是我無法控制。 我還在這里的 JBoss論壇中打開了討論。

僅作記錄,到目前為止,我從JBoss論壇收到的唯一答復是:

恐怕EAP支持的唯一JAX-RS實現是RESTEasy。

…這似乎很奇怪,因為我猜想如果我在WAR的WEB-INF/lib提供JAX-RS實現,那么任何Web容器都可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM