2014-03-13 37 views
1

我試圖部署在REST Web服務爲8.0CXF:拋出java.lang.ClassNotFoundException:org.apache.cxf.transport.servlet.CXFServlet

應用程序EAR是越來越成功安裝。

然而,無論是在發佈以及對打擊從網絡瀏覽器發佈後的服務,我收到以下錯誤:

[3/13/14 13:42:20:652 IST] 00000024 servlet  E com.ibm.ws.webcontainer.servlet.ServletWrapper run SRVE8052E: Logging ClassNotFoundException 
          java.lang.ClassNotFoundException: class java.lang.ClassNotFoundException: org.apache.cxf.transport.servlet.CXFServlet 
at java.beans.Beans.instantiate(Beans.java:190) 
at java.beans.Beans.instantiate(Beans.java:75) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper$1.run(ServletWrapper.java:1471) 
at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.loadServlet(ServletWrapper.java:1460) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.load(ServletWrapper.java:1358) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:982) 
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3751) 
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:452) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:276) 
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:1690) 

然而,包含類即罐子。 cxf-rt-transports-http-2.7.4.jar存在於安裝的EAR內部的WAR的lib目錄中。

問題的原因是什麼?

我該如何解決?

更新:我的web.xml中是如下:

<web-app> 
<display-name>MyService</display-name> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:applicationContext.xml</param-value> 
</context-param> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<servlet> 
    <servlet-name>CXFServlet</servlet-name> 
    <display-name>CXF Servlet</display-name> 
    <servlet-class> 
     org.apache.cxf.transport.servlet.CXFServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>CXFServlet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

</web-app> 
+0

您是否嘗試在應用程序服務器內部的位置使用該類,其中jar對於類加載器不可見? –

+0

如果你正在使用maven,你有什麼範圍?也許你需要將jar添加到服務器。 – ZaoTaoBao

+0

@ThorbjørnRavnAndersen:是的,但是我怎麼解決它? – Nik

回答

1

我看到你所提到的單詞 「發佈」,這暗示你可能會使用Eclipse,或者可能是IBM的RAD甚至MyEclipse Blue。

如果這是真的,閱讀...

當你的.ear,通過M2E/Maven的產生,可能存在於.war文件.jar文件,有一個機會,和的.ear由m2e-wtp生成的.war文件缺少.jar文件。 m2e-wtp生成的.ear文件是從Eclipse/RAD/MyEclipse Blue發佈/重新發布應用程序到WAS時使用的.ear文件。

嘗試從本地WAS中刪除應用程序,找到該m2e-wtp生成的.ear文件的位置,然後刪除它。從那裏,如果你清理你的項目(所有關聯的pom,耳朵,戰爭等),m2e-wtp應自動生成一個新的.ear文件。

當你發佈你的應用程序時,它應該找到這個類。過去我遇到過同樣的問題。我的建議已經解決了這個問題。

除此之外,您可能需要將Classloader Policy設置爲PARENT_LAST,並檢查您是否正在使用WAS管理員中的整個應用程序(Classloader Policy單選按鈕下方的第二組單選按鈕)安慰。但是,我懷疑類加載器策略是否是問題。

相關問題