阿翔编程学-Axis传递Pojo对象

来源:互联网 发布:esp8266 wifi网络干扰 编辑:程序博客网 时间:2024/06/03 22:56

Axis传递Pojo对象

(1)编写服务器端Java程序

 //===========================================================
//传递Java对象的服务类程序 author:曹翔
//===========================================================

package com.ruix.service;

/**
 * 传递Java对象的服务类程序
 * @author caoxiang
 * @version 1.0
 */
public class PojoService {
 
 //用户对象
 static User user = new User();
 
 /**
  * 传递对象的方法
  * @param user
  *        用户对象
  * @return
  *       返回0传递成功,返回1传递失败
  */
 public synchronized int sendBo(User user) {
  //默认为1,传递失败
  int result = 1;
  //判断传递的对象是否为空
  if (user.getUsername().length() > 0 && user.getPassword().length() > 0) {
   this.user = user; //如果发送成功了,设置User对象
   result = 0;//成功
  } else {
   result = 1;//失败
  }
  //返回
  return result;
 }
 
 /**
  * 清空对象
  *
  */
 public void clearBo() {
  this.user = null;
  //调用垃圾收集,收集清理过的对象空间
  System.gc();
 }
 
 /**
  * 返回对象
  * @return
  */
 public User getBo() {
  //返回对象
  return this.user;
 }
 
}
(2)修改wsdd文件,加入如下代码:

<!-- 对象传递服务 add by caoxiang -->
<service name="PojoService" provider="java:RPC">
  <parameter name="allowedMethods" value="*"/>
  <parameter name="className" value="com.ruix.service.PojoService"/>
  <parameter name="allowedRoles" value="caoxiang,caoxiang"/>
  <requestFlow>
<handler name="logging" type="java:com.ruix.service.LogHandler">
  <parameter name="filename" value="c://MyService.log"/>
 </handler>
 <handler name="authen" type="java:com.ruix.service.AuthenticationHandler"/>
 
</requestFlow>
  <beanMapping languageSpecificType="java:com.ruix.service.User" qname="ns:User" xmlns:ns="urn:BeanService"/>
 </service>

(3)客户端访问代码如下:

/**
    * 测试程序 java po 对象传递
    *
    */
   public  void send(User user_bo) {
    try{
    
    
        String helloWorldURL="http://localhost:5200/xfire_sample/services/HelloWorldService";
           String endpoint = "http://localhost:5200/testServer/services/PojoService";
        //String endpoint = "http://localhost:9080/axis/services/HelloWorldService";
           Integer i1 = new Integer(1);
           Integer i2 = new Integer(2);
           String user= new String("1");
           String password=new String("2");
          
           Service service = new Service();
           Call call = (Call) service.createCall();
          
           call.setTargetEndpointAddress(new java.net.URL(endpoint));
           QName qn = new QName("urn:BeanService", "User");
           call.registerTypeMapping(User.class, qn,
             new BeanSerializerFactory(User.class, qn),
             new BeanDeserializerFactory(User.class, qn));
           //set data
           call.setOperationName(new QName("urn:PojoService", "sendBo"));
           Object[] params = new Object[] { user_bo };

           //设置用户名和密码
           //call.setUsername("caoxiang");
           call.getMessageContext().setUsername("caoxiang");
           call.getMessageContext().setPassword("caoxiang");         
           //call.addParameter("o", XMLType.xsd, ParameterMode.IN);
           call.addParameter("users", XMLType.XSD_ENTITY, ParameterMode.IN);
           call.setReturnType(XMLType.XSD_INT);
          
           Integer bv = null;
           List list = new ArrayList();
           list.add(user_bo);
           if(call!=null) {
   
   bv = (Integer) call.invoke(params);
           }
           if(bv.toString().equals("0")) {
            System.out.println("传递成功了" );
           } else {
            System.out.println("传递失败了" );
           }
           call.removeAllParameters();
           call.setOperationName(new QName("urn:PojoService", "getBo"));
           call.setReturnType(qn, User.class);
           User resultData = (User)call.invoke(new Object[] {});
           System.out.println();
           System.out.println();
           System.out.println("用户名:  " + resultData.getUsername());
       }
       catch(Exception e){
           e.printStackTrace();
       }
   }

程序代码如上,有问题可以和我多多联系,需要完整代码的,留下Email

原创粉丝点击