首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

急请各位大侠帮忙:关于JAVA Web Service 有关问题

2012-01-19 
急~~~~请各位大侠帮忙:关于JAVA Web Service 问题错误:AxisFaultfaultCode: {http://schemas.xmlsoap.org/

急~~~~请各位大侠帮忙:关于JAVA Web Service 问题
错误:
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: org.xml.sax.SAXException: Deserializing parameter 'getSayWSReturn': could not find deserializer for type {http://schemas.xmlsoap.org/soap/encoding/}string
 faultActor: 
 faultNode: 
 faultDetail: 
{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: Deserializing parameter 'getSayWSReturn': could not find deserializer for type {http://schemas.xmlsoap.org/soap/encoding/}string
at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:277)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:345)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384)
at org.apache.axis.client.Call.invoke(Call.java:2467)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.UserService.getSay(UserService.java:16)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:74)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)


服务器端方法:
public String getSayWS(String name){
Document document = DocumentHelper.createDocument();
// 添加根元素
Element root = document.addElement("root");
Element author1 = root.addElement("book");
author1.addAttribute("id", "aaaaa");
 
return root.asXML();
}

service-config.wsdd:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> 
<handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/>  
  <service name="UserWS" provider="java:RPC"> 
  <parameter name="className" value="com.ws.UserWS"/> 
  <parameter name="allowedMethods" value="getSayWS"/>
  </service>
<transport name="http"> 
 <requestFlow> 
  <handler type="URLMapper"/> 
 </requestFlow> 
</transport> 
</deployment> 

调用:
public String getSay(String name) {
String say = "";
Service service = new Service();
try {
Call call = (Call) service.createCall();
String url = "http://192.168.1.111:8090/Test1WS/services/UserWS";
call.setTargetEndpointAddress(new java.net.URL(url));
call.setOperation("getSayWS");

Object o = call.invoke(new Object[] {});
System.out.println(o);
} catch (Exception e) {
e.printStackTrace();
}
return say;
}


[解决办法]
UP
[解决办法]
up

[解决办法]
貌似你定义返回类型的时候将String 写成了string
[解决办法]
参数类型必须是标准类型
[解决办法]
server-config.wsdd里没有对getSayWSReturn指定反序列化器呀,类似于下面这种的:
 <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="" qname="ns5:getProcessInstanceResponse" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" type="java:com.ttdev.ss.GetProcessInstanceResponse" xmlns:ns5="http://ss.ttdev.com"/>
[解决办法]
在<service> </service>之间加就可以。
[解决办法]
楼主试试这个

XML code
<deployment xmlns="http://xml.apache.org/axis/wsdd/"    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">    <service name="UserWS" provider="java:RPC" style="rpc" use="encoded">        <parameter name="wsdlTargetNamespace" value="http://ws.com" />        <parameter name="wsdlServiceElement" value="UserWSService" />        <parameter name="wsdlServicePort" value="UserWS" />        <parameter name="className" value="com.ws.UserWS" />        <parameter name="wsdlPortType" value="UserWS" />        <parameter name="typeMappingVersion" value="1.2" />        <operation xmlns:operNS="http://ws.com" xmlns:rtns="http://www.w3.org/2001/XMLSchema"            name="getSayWS" qname="operNS:getSayWS" returnQName="getSayWSReturn"            returnType="rtns:string" soapAction="">            <parameter xmlns:tns="http://www.w3.org/2001/XMLSchema"                qname="name" type="tns:string" />        </operation>        <parameter name="allowedMethods" value="getSayWS" />    </service></deployment> 

热点排行