Websphere 8.5中的CXF Rest服务

问题描述 投票:0回答:1
>  webapp        E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[CXFServlet]: org.apache.cxf.bus.extension.ExtensionException`
        `at org.apache.cxf.bus.extension.Extension.load(Extension.java:114)
        at org.apache.cxf.bus.extension.ExtensionManagerImpl.loadAndRegister(ExtensionManagerImpl.java:183)
        at org.apache.cxf.bus.extension.ExtensionManagerImpl.processExtension(ExtensionManagerImpl.java:158)
        at org.apache.cxf.bus.extension.ExtensionManagerImpl.loadFragment(ExtensionManagerImpl.java:151)
        at org.apache.cxf.bus.extension.ExtensionManagerImpl.load(ExtensionManagerImpl.java:143)
        at org.apache.cxf.bus.extension.ExtensionManagerImpl.load(ExtensionManagerImpl.java:96)
        at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:129)
        at org.apache.cxf.bus.CXFBusFactory.createBus(CXFBusFactory.java:41)
        at org.apache.cxf.bus.CXFBusFactory.createBus(CXFBusFactory.java:37)
        at org.apache.cxf.bus.CXFBusFactory.createBus(CXFBusFactory.java:33)
        at org.apache.cxf.transport.servlet.CXFNonSpringServlet.loadBusNoConfig(CXFNonSpringServlet.java:45)
        at org.apache.cxf.transport.servlet.CXFNonSpringServlet.loadBus(CXFNonSpringServlet.java:38)
        at org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet.loadBus(CXFNonSpringJaxrsServlet.java:69)
        at org.apache.cxf.transport.servlet.AbstractCXFServlet.init(AbstractCXFServlet.java:84)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:344)
        at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.init(ServletWrapperImpl.java:168)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:636)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:480)
        at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)
        at com.ibm.controller.InterceptFilter.doFilter(InterceptFilter.java:28)
        at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:967)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1107)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3951)
        at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1014)
        at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:287)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
        at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
        at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
        at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
        at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
        at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
        at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
        at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)
Caused by: java.lang.InstantiationException: org.apache.cxf.wstx_msv_validation.WoodstoxValidationImpl
        at java.lang.J9VMInternals.newInstanceImpl(Native Method)
        at java.lang.Class.newInstance(Class.java:1781)
        at org.apache.cxf.bus.extension.Extension.load(Extension.java:110)
        ... 44 more>

我使用过的JARS以下

cxf-core-3.1.6.jar

cxf-rt-frontend-jaxrs-3.1.6.jar

cxf-rt-transports-http-3.1.6.jar

javax.ws.rs-api-2.0.1.jar

 <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.ibm.services.rest.Echo</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

谁能帮我解决这个问题。我正在使用CXF 3.16,WAS 8.5,JDK 1.7。 WoodstoxValidationImpl在cxf核心jar中可用,但不要为什么我会收到此错误

rest websphere cxf cxfrs
1个回答
0
投票

您可能想要与CXF users mailing list进行核对,以查看社区之前是否已看到此内容,或打开JIRA issue。简而言之,我看不到WoodstoxValidationImpl类如何无法初始化-它的构造函数包括处理所有Throwable的try / catch块。希望CXF社区能够提供更多帮助。

我建议您升级到WebSphere v9或WebSphere Liberty,然后再深入研究。 WebSphere v8.5随JAX-RS 1.1 API一起提供,并且没有“关闭它们”的方法,因此,能够从应用程序的jar中加载JAX-RS 2.0 API的唯一方法是使用父类-last classloading(或其他此类classhacks)。 WAS v9和Liberty都提供2.0(并且Liberty也提供2.1)API,但是更重要的是,它们都允许您根据需要禁用API。同样,FWIW,WAS v9和Liberty都使用CXF作为底层JAX-RS实现,因此您可以使用更薄的WAR并仍然获得所需的JAX-RS实现。

HTH,安迪

© www.soinside.com 2019 - 2024. All rights reserved.