axis

< 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
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-3b60ccb40

org.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 可以了 加上下面的...结贴http://bbs.csdn.net/topics/300185476

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值