wsdd配置
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="Login" provider="java:RPC">
<parameter name="className" value="info.vzless.ws.Login" />
<parameter name="allowedMethods" value="*" />
<beanMapping languageSpecificType="java:info.vzless.ws.User"
qname="ns1:User" xmlns:ns1="urn:BeanService" />
</service></deployment>
我写的测试代码package info.vzless.ws;import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;import org.apache.axis.AxisFault;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
public class TestClient {
public static void main(String[] args) {
Service service = new Service();

try {
Call call = (Call)service.createCall();
call.setTargetEndpointAddress(new URL("http://localhost/ws-login/services/Login?wsdl"));
// 对象注册
QName qn = new QName("urn:BeanService","ns1:User");
call.registerTypeMapping(User.class, qn, new BeanSerializerFactory(User.class,qn), new BeanDeserializerFactory(User.class,qn));

call.setOperationName(new   QName("urn:BeanService",   "login"));

User user =(User)call.invoke(new Object[]{"Admin","admin"}) ; 
System.out.println("登录成功,欢迎"+user.getUserName()+"!");
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (AxisFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}
}
其中User有两个树形 username 和psw谢谢 找了好多方法,还没解决,第一天接触..

解决方案 »

  1.   

    Exception:
    org.xml.sax.SAXException: Deserializing parameter 'loginReturn':  could not find deserializer for type {urn:BeanService}User
    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 info.vzless.ws.TestClient.main(TestClient.java:30)
    AxisFault
     faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
     faultSubcode: 
     faultString: org.xml.sax.SAXException: Deserializing parameter 'loginReturn':  could not find deserializer for type {urn:BeanService}User
     faultActor: 
     faultNode: 
     faultDetail: 
    {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: Deserializing parameter 'loginReturn':  could not find deserializer for type {urn:BeanService}User
    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 info.vzless.ws.TestClient.main(TestClient.java:30) {http://xml.apache.org/axis/}hostname:china-3b60ccb40org.xml.sax.SAXException: Deserializing parameter 'loginReturn':  could not find deserializer for type {urn:BeanService}User
    at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
    at org.apache.axis.client.Call.invoke(Call.java:2470)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at info.vzless.ws.TestClient.main(TestClient.java:30)
    Caused by: org.xml.sax.SAXException: Deserializing parameter 'loginReturn':  could not find deserializer for type {urn:BeanService}User
    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)
    ... 3 more
      

  2.   

    Exception:
    org.xml.sax.SAXException: Deserializing parameter 'loginReturn':  could not find deserializer for type {urn:BeanService}User
    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 info.vzless.ws.TestClient.main(TestClient.java:30)
    AxisFault
     faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
     faultSubcode: 
     faultString: org.xml.sax.SAXException: Deserializing parameter 'loginReturn':  could not find deserializer for type {urn:BeanService}User
     faultActor: 
     faultNode: 
     faultDetail: 
    {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: Deserializing parameter 'loginReturn':  could not find deserializer for type {urn:BeanService}User
    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 info.vzless.ws.TestClient.main(TestClient.java:30) {http://xml.apache.org/axis/}hostname:china-3b60ccb40org.xml.sax.SAXException: Deserializing parameter 'loginReturn':  could not find deserializer for type {urn:BeanService}User
    at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
    at org.apache.axis.client.Call.invoke(Call.java:2470)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at info.vzless.ws.TestClient.main(TestClient.java:30)
    Caused by: org.xml.sax.SAXException: Deserializing parameter 'loginReturn':  could not find deserializer for type {urn:BeanService}User
    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)
    ... 3 more
      

  3.   


    可以了 加上下面的...结贴call.addParameter("userName", org.apache.axis.Constants.XSD_STRING,
    ParameterMode.IN);
    call.addParameter("password", org.apache.axis.Constants.XSD_STRING,
    ParameterMode.IN);
    call.setReturnType(qn, User.class);