当前位置: 代码迷 >> Java Web开发 >> []XFire WebService启动有关问题
  详细解决方案

[]XFire WebService启动有关问题

热度:32   发布时间:2016-04-17 01:21:55.0
[求助]XFire WebService启动问题
框架:Struts2+Ibatis
服务器:tomcat5.5

加载XFire WebService报如下错误:
java.lang.NoClassDefFoundError: org/springframework/web/context/support/GenericWebApplicationContext
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1104)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

注:1、Tomcat本身启动没问题
  2、项目中没用到spring

------解决方案--------------------
应该是用到了,再查查配置文件看看
------解决方案--------------------
Xfire的NoClassDefFoundError 问题 - [JAVA]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://raybit.blogbus.com/logs/16849227.html



今天被一个问题搞的颇为郁闷...
大体半年前(07-9)在别人axis基础上改用struts+xfire搭建的一个Webservice,今天重新维护时,发现死活访问不了...

检查了Lib,含有xfire-all-1.25.jar,META-INF目录下的相关xml也做了配置,Web.XML里的原先写的东西也根本没变动过...而且印象中这个东西的其他可配置的地方少得可怜,外加也没人中途动过什么大手脚....
其中,主要的两条错误如下。非常抱歉的讲,我Java实际开发用的不深debug经验严重不足,单从这种错误报告我一开始无从判断到底哪里有问题(当然其后来想想问题还是很显著的)....

exception 

javax.servlet.ServletException: Error instantiating servlet class org.codehaus.xfire.transport.http.XFireConfigurableServletroot cause 

java.lang.NoClassDefFoundError: org/springframework/web/context/support/GenericWebApplicationContext
只想看答案的人可以读末尾去。 由于我侧重记录这个深刻的教训,所以啰唆下过程。我本来寄希望于这是个常见错误searche下就摆平,可是发现此类错误要么是过于常见了,要么是没人犯(随搜索词选用而变).. 接着,开始凭记忆核对所有当初的设计细节,并在网上看看先前的xfire配置相关的教程...1个多小时过去了 于是本着大胆的怀疑思路,我假设是自己tomcat有问题,去服务器上部署测了下,仍旧不行,假设失败... 既然自己tomcat没事,那我索性把去年9月的工程调了出来跑上了1遍。。。。en,居然webservice调用成功了 所以,说明是工程之间有差异。只是我不知道是什么地方,又拿totalcommander做了比对,不过由于文件日期原因,比对效果不好。 哎,不知不觉中2个小时过去了。我转念一想,既然之前是正常的,那我把现有的src\class等覆盖过去,应该也是好的。测试后说明这个想法的没错。。。 那么到底问题在哪里呢?只剩下这2种可能:1配置文件相关 2 Lib相关库...随后我把 单把config等东西做了覆盖发现解决不了问题,于是焦点落在了Lib上.... -------这个时候我忽然想起来,去年12月归并代码的时候我让另一个当时开发的人精简下文件把已经用不上的Lib从工程里剔除... 这一下踢掉了20M(这个小工程一共不到30M)...而20M的一堆lib(近50个)里找出那个对这次xfire的发病负有责任就不是那么快的事情了... 恩,是呀按理说讲到这,基础好点的人或者学过Spring的,应该已经想到答案了...可偶当时确实笨了一会,死活是用“二分法”找出了那个影响webservice服务的Lib.. 那就是spring.jar及xbean-spring.jar这两个lib,原来的Project的buildpath里并没有严格含有这两个东东... 于是呢,我以 xfire spring jar 3个为keyword Gg了下,发现其实这个问题是有人讲了的,而且呢还有位中国的同志总结的不错:地址附上: http://www.blogjava.net/josson/archive/2007/07/20/112292.html 其实,不难发现,错误的Log里已经讲的很明确了:NoClassDefFoundError: org/springframework/web 只是由于我觉得自己这个pro根本就没Spring什么事情,所以就没当回事... 这从很大某种程度上讲,是因为当初学xfire时,就很粗糙,只是拿来配上用根本就没仔细看... 官方的http://xfire.codehaus.org/Quick+Start 里已经很明确的讲了其部署时的Lib依赖关系参看http://xfire.codehaus.org/Dependency+Guide 而我却绕了一个大弯,而且很大非常大!!再一次的说明,分析时要以手中的依据为“引子”(log),资料上要优先考虑官方的教程和论坛,搜索时要先对问题定性,只是盲目的以看到什么搜什么的方式在debug方面是不可行的,以前的资料要收集好中途谁改了什么要有FixList,学习一样的东西,不管在怎么急,也应该报一个平常心及时看及时总结,而不是囫囵吞枣式的点到为止... 正是由于我同时犯了如上的一系列错误...才有了今天
  相关解决方案