2014-03-13 40 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单选按钮下方的第二组单选按钮)安慰。但是,我怀疑类加载器策略是否是问题。

相关问题