2013-02-13 154 views
0

我寫simole RESTful Web服務和部署的WebSphere apllication服務器上的服務,的WebSphere Application Server/java.lang.ClassCastException

,但我收到以下異常:

Error 500: org.jboss.resteasy.spi.UnhandledException: 
    java.lang.ClassCastException: 
     org.apache.wink.common.internal.ResponseImpl incompatible with org.jboss.resteasy.core.ServerRespon 

我如何解決?

謝謝。

日誌的位置:

webapp  
E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[resteasy-servlet]: org.jboss.resteasy.spi.UnhandledException: java.lang.ClassCastException: org.apache.wink.common.internal.ResponseImpl incompatible with org.jboss.resteasy.core.ServerResponse 
    at org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:241) 
    at org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:190) 
    at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:534) 
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:496) 
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119) 
    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) 
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) 
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1214) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:774) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:456) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1027) 
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3703) 
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304) 
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:962) 
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662) 
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:522) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:311) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:282) 
    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:165) 
    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:1783) 
Caused by: java.lang.ClassCastException: org.apache.wink.common.internal.ResponseImpl incompatible with org.jboss.resteasy.core.ServerResponse 
    at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:283) 
    at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:220) 
    at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:209) 
    at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:519) 

和我的web.xml文件

<context-param> 
    <param-name>resteasy.resources</param-name> 
    <param-value>services.MapService</param-value> 
</context-param> 

<listener> 
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> 
</listener> 


<servlet> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

回答

3

要部署JBoss的JAX-RS實現它與衝突的(表情爲主)WebSphere中包含的JAX-RS實現。

要麼切換到內置的JAX-RS支持並將您的web.xml更改爲引用JAX-RS類而不是實現特定的類,或將WebSphere classloader更改爲PARENT_LAST以首先獲取Jboss實現類路徑。

如果你能做到,建議使用前者。也就是說,寫入JAX-RS規範,而不是寫入任何特定的實現。 (這也將允許您在WebSphere下獲得官方IBM對JAX-RS問題的支持。)

相關問題