用户操作
[即时聊天] [发私信] [加为好友]
曹翔ID:java_xiang
16213次访问,排名7304(1)好友1人,关注者2
阿翔编程学
java_xiang的文章
原创 43 篇
翻译 0 篇
转载 7 篇
评论 8 篇
曹翔的公告
WebService,Java,J2EE 任何个人和单位均可免费复制,拷贝,复制时请注明出处。但如需商业用途或者使用,修改其中的全部或者部分代码,图片。请先和作者联系.
最近评论
asdf:很好,谢谢分享
xiang:恩,好吧,那句话怎么说的,反正就是帮人帮到底的意思吧。
丫头:这个多代码,别人找都难找,想想起他改良的办法啦,帮人帮到底么。。。。
xunmenglin:义愤填庸了~~~~
xunmenglin:我顶阿
楼主说得好啊
文章分类
收藏
    相册
    阿翔的相册
    Blog链接
    傻丫头的Blog
    冰冻小子的Blog
    大中华办公软件在线
    我的CSDN博客
    我的新浪Blog
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 阿翔编程学-Axis传递Pojo对象收藏

    新一篇: 阿翔编程学-Axis日志服务类 | 旧一篇: 阿翔编程学-Web Service 服务安全性

    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

    发表于 @ 2007年06月12日 11:38:00|评论(loading...)|编辑

    新一篇: 阿翔编程学-Axis日志服务类 | 旧一篇: 阿翔编程学-Web Service 服务安全性

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 曹翔