在struts中调用web service出现异常

sunnydancer 2008-04-22 08:08:18
用MyEclipse开发了个WebService,写个类在main方法中可以调用。但是在struts的action中以客户端调用。则出现下面的异常:
java.lang.NoClassDefFoundError: org/apache/commons/httpclient/Credentials
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.getConstructor(Unknown Source)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:108)
at org.codehaus.xfire.transport.http.XFireServletChannel.send(XFireServletChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
at $Proxy0.example(Unknown Source)
at com.liang.struts.action.CalcAction.execute(CalcAction.java:90)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liang.common.EncodingFilter.doFilter(EncodingFilter.java:44)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
附action中的调用代码:
org.codehaus.xfire.service.Service srvcModel = new ObjectServiceFactory().create(Iadd.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String wsURL = "http://localhost:8080/test/services/add?wsdl";
try {
Iadd srvc = (Iadd)factory.create(srvcModel, wsURL);
d = srvc.assess(username, project);
} catch (MalformedURLException e) {
e.printStackTrace();
}
在网上没有找到相关的解决方法,请各位指教,谢谢了!
...全文
595 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
legend_jhz 2009-04-29
  • 打赏
  • 举报
回复
你缺少commons-httpclient.jar这个包,看看要不把原先的删了重加上个。
songjiang2panli 2009-04-29
  • 打赏
  • 举报
回复
我也出现过这个问题,后来解决了,在MyEclipse里的Build Path里可以看到commons-httpclient.jar这个包,但是到服务器下面却看不到,我用的是tomcat,在webapp下的web-info/lib下没有这个包,我在MyEclipse的安装目录下找到这个包(C:\Program Files\MyEclipse 5.5 GA\myeclipse\eclipse\plugins\com.genuitec.eclipse.ws.xfire_5.5.0\data\1.2\lib),然后复制到web-info/lib下,然后就可以了
dadi5566 2009-04-27
  • 打赏
  • 举报
回复
重新构建一下路径
zmljava 2009-04-27
  • 打赏
  • 举报
回复
看看有没有添加到buildpath中了没有,我也遇到了这样的问题,我将这个jar文件重新的放置了下,然后就可以了。
allen1683 2009-02-02
  • 打赏
  • 举报
回复
怎么没有解决方案啊,知道的通知发个言撒!
wangmuwang 2008-07-08
  • 打赏
  • 举报
回复
commons-httpclient-3.0.jar是有的,而且在同一个工程下,我创建了一个测试类,测试类中调用WebServices中内容如下:
Service srvcModel = new ObjectServiceFactory().create(IPushKdmService.class);
XFireProxyFactory factory =
new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String KdmServiceURL = "http://127.0.0.1:8080/DCKeyServices/services/KdmService";
try{
IPushKdmService srvc = (IPushKdmService)factory.create(srvcModel, KdmServiceURL);
String sRtnFilms = srvc.getName("Test");
System.out.print(sRtnFilms);
}
catch (MalformedURLException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
在测试类中调用WebServices是成功的。


在Struts框架的Action中调用也一样的代码就报错:
错误内容如下:
2008-7-8 11:47:40 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.NoClassDefFoundError: org/apache/commons/httpclient/Credentials
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.getConstructor(Unknown Source)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:108)
at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
at $Proxy0.getName(Unknown Source)
at com.digitalcenter.struts.action.OrderAction.performList(OrderAction.java:138)
at com.digitalcenter.struts.action.OrderAction.execute(OrderAction.java:69)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)


请问有没有在Struts框架中调用过WebService的高人
lip8654 2008-07-08
  • 打赏
  • 举报
回复
你看的导入了这个包么:commons-httpclient-3.0.jar?提示是没找到的类在这个jar包中。
zero1111 2008-07-08
  • 打赏
  • 举报
回复
Credentials没有找到. 包导的有问题.
\WEB-INF\lib 也有commons-httpclient-3.0.jar么?
wangmuwang 2008-07-08
  • 打赏
  • 举报
回复
我也碰到了类似的问题,用Xfire创建的WebServices,用单独的java应用做测试都能正常调用,一到Struts框架的Action类中调用就出现和楼主一样的错误。郁闷了好几天了,请高人指点一二
浪哥不用桨 2008-04-25
  • 打赏
  • 举报
回复
相关包有没引入啊?
http://localhost:8080/test/services/add?wsdl可以在网页访问吗?
sunnydancer 2008-04-22
  • 打赏
  • 举报
回复
自己先顶个先!

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧