前几天有个项目要用xfire客户端调用webservice,我就用myeclipse5.0自动生成的方法生成了很多类,然后单独写一个方法来调用相应的webservice服务,但问题出现了:
在一个测试类的main方法中调用写好的那个方法没有问题,而且能得到webservice的返回结果
但在jsp中调用那个方法总是报错,错误如下:
java 代码
message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Could not unmarshall type. org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372 ) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292 ) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236 ) javax.servlet.http.HttpServlet.service(HttpServlet.java:802 ) root cause org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Could not unmarshall type. org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:92 ) org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57 ) $Proxy12.addMediaTask(Unknown Source) test.Test.send(Test.java:56 ) org.apache.jsp.send_jsp._jspService(send_jsp.java:60 ) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94 ) javax.servlet.http.HttpServlet.service(HttpServlet.java:802 ) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324 ) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292 ) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236 ) javax.servlet.http.HttpServlet.service(HttpServlet.java:802 )
后来找了好几个朋友来帮忙也没有解决,所以只好自己研究了!
研究了一天多,终于找到问题所在了,当时差点晕过去,希望xfire新手不要和我犯一样的错误
错误原因:我原来的xfire客户端把myeclipse提供的xfire类库都导入到工程里了,其实客户端只要导入3个类包就可以了,这三个类包就是:core,http,jaxb2(如果用这个解析的话),其他没用到的包就不要导入到工程了!
但我还是没明白为什么在java中调用就没有问题,但用jsp调用就报错!都是同一个方法!!比较迷惑!!!
希望有高手能解开我的疑惑!!!
也希望这篇文章能给初学者或者遇到此类问题的程序员提供一些帮助!
谢谢大家!!!!