乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      四、CXF WebService中傳遞復(fù)雜類型對象

       posondlq 2013-04-17

      CXF WebService中傳遞復(fù)雜類型對象

      前面介紹的都是傳遞簡單的字符串,現(xiàn)在開始介紹傳遞復(fù)雜類型的對象。如JavaBean、Array、List、Map等。

      1、 首先看看服務(wù)器端的代碼所需要的JavaBean對象

      package com.hoo.entity;
       
      import java.io.Serializable;
       
      /**
       * <b>function:</b>User Entity
       * @author hoojo
       * @createDate Dec 16, 2010 10:20:02 PM
       * @file User.java
       * @package com.hoo.entity
       * @project AxisWebService
       * @blog http://blog.csdn.net/IBM_hoojo
       * @email hoojo_@126.com
       * @version 1.0
       */
      public class User implements Serializable {
          private static final long serialVersionUID = 677484458789332877L;
          private int id;
          private String name;
          private String email;
          private String address;
          
          //getter、setter
          
          @Override
          public String toString() {
              return this.id + "#" + this.name + "#" + this.email + "#" + this.address;
          }
      }

      下面的是集合傳遞Users,CXF直接傳遞集合對象會出現(xiàn)異常,用一個對象包裝下就Ok了,不知道是什么原因。異常信息如下:

      DefaultValidationEventHandler: [ERROR]: unexpected element(uri:"", local:"item")
      org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element (uri:"", local:"item")
      package com.hoo.entity;
       
      import java.util.HashMap;
      import java.util.List;
       
      /**
       * <b>function:</b> Users Entity
       * @author hoojo
       * @createDate 2011-3-18 上午09:27:31
       * @file Users.java
       * @package com.hoo.entity
       * @project CXFWebService
       * @blog http://blog.csdn.net/IBM_hoojo
       * @email hoojo_@126.com
       * @version 1.0
       */
      public class Users {
          private List<User> users;
          private User[] userArr;
          private HashMap<String, User> maps;
              
          //getter、setter方法
      }

      2、 下面看看復(fù)雜對象傳遞的服務(wù)器端代碼

      package com.hoo.service;
       
      import java.util.ArrayList;
      import java.util.Date;
      import java.util.HashMap;
      import java.util.List;
      import javax.jws.WebParam;
      import javax.jws.WebService;
      import javax.jws.soap.SOAPBinding;
      import javax.jws.soap.SOAPBinding.Style;
      import com.hoo.entity.User;
      import com.hoo.entity.Users;
       
      /**
       * <b>function:</b> WebService傳遞復(fù)雜對象,如JavaBean、Array、List、Map等
       * @author hoojo
       * @createDate 2011-3-18 上午08:22:55
       * @file ComplexUserService.java
       * @package com.hoo.service
       * @project CXFWebService
       * @blog http://blog.csdn.net/IBM_hoojo
       * @email hoojo_@126.com
       * @version 1.0
       */
      @WebService
      @SOAPBinding(style = Style.RPC)
      @SuppressWarnings("deprecation")
      public class ComplexUserService {
          
          public User getUserByName(@WebParam(name = "name") String name) {
              User user = new User();
              user.setId(new Date().getSeconds());
              user.setName(name);
              user.setAddress("china");
              user.setEmail(name + "@hoo.com");
              return user;
          }
          
          public void setUser(User user) {
              System.out.println("############Server setUser###########");
              System.out.println("setUser:" + user);
          }
          
          public Users getUsers(int i) {
              List<User> users = new ArrayList<User>();
              for (int j = 0; j <= i; j++) {
                  User user = new User();
                  user.setId(new Date().getSeconds());
                  user.setName("jack#" + j);
                  user.setAddress("china");
                  user.setEmail("jack" + j + "@hoo.com");
                  users.add(user);
              }
              Users u = new Users();
              u.setUsers(users);
              return u;
          }
          
          public void setUsers(Users users) {
              System.out.println("############Server setUsers###########");
              for (User u : users.getUsers()) {
                  System.out.println("setUsers:" + u);
              }
          }
          
          public Users getUserArray(int i) {
              User[] users = new User[i];
              for (int j = 0; j < i; j++) {
                  User user = new User();
                  user.setId(new Date().getSeconds());
                  user.setName("jack#" + j);
                  user.setAddress("china");
                  user.setEmail("jack" + j + "@hoo.com");
                  users[j] = user;
              }
              Users u = new Users();
              u.setUserArr(users);
              return u;
          }
          
          public void setUserArray(Users users) {
              System.out.println("############Server setUserArray###########");
              for (User u : users.getUserArr()) {
                  System.out.println("setUserArray:" + u);
              }
          }
          
          public void setUserMap(Users maps) {
              System.out.println("############Server setUserMap###########");
              System.out.println("setUserMap:" + maps.getMaps());
          }
          
          public Users getUserMap() {
              HashMap<String, User> users = new HashMap<String, User>();
              User user = new User();
              user.setId(new Date().getSeconds());
              user.setName("jack#");
              user.setAddress("china#");
              user.setEmail("jack@hoo.com");
              users.put("A", user);
              
              user = new User();
              user.setId(new Date().getSeconds());
              user.setName("tom");
              user.setAddress("china$$");
              user.setEmail("tom@hoo.com");
              users.put("B", user);
              Users u = new Users();
              u.setMaps(users);
              
              return u;
          }
      }

      3、 發(fā)布WebService的代碼

      package com.hoo.service.deploy;
       
      import com.hoo.service.ComplexUserService;
       
      /**
       * <b>function:</b> 發(fā)布ComplexUserService服務(wù)
       * @author hoojo
       * @createDate 2011-3-18 上午08:28:57
       * @file DeployComplexUserService.java
       * @package com.hoo.service.deploy
       * @project CXFWebService
       * @blog http://blog.csdn.net/IBM_hoojo
       * @email hoojo_@126.com
       * @version 1.0
       */
      public class DeployComplexUserService {
       
          public static void main(String[] args) throws InterruptedException {
              String address = "http://localhost:9000/complexUser";
              DeployUtils.deployService(address, new ComplexUserService());
              Thread.sleep(1000 * 60 * 20);
              System.exit(0);
              System.out.println("Server exit ");
          }
      }

      DeployUtils.java

      package com.hoo.service.deploy;
       
      import javax.xml.ws.Endpoint;
       
      /**
       * <b>function:</b> 發(fā)布WebService工具類
       * @author hoojo
       * @createDate Mar 17, 2011 8:14:05 PM
       * @file DeployUtils.java
       * @package com.hoo.service.deploy
       * @project CXFWebService
       * @blog http://blog.csdn.net/IBM_hoojo
       * @email hoojo_@126.com
       * @version 1.0
       */
      public final class DeployUtils {
          /**
           * <b>function:</b>發(fā)布WebService
           * @author hoojo
           */
          public static void deployService(String address, Object service) {
              System.out.println("Server start ……");
              Endpoint.publish(address, service);
          }
      }

      4、 通過發(fā)布后的地址的http://localhost:9000/complexUser?wsdl; wsdl中的內(nèi)容定制你的客戶端調(diào)用WebService的接口,當(dāng)然你也可以讓服務(wù)器端實現(xiàn)一個接口。

      package com.hoo.service;
       
      import javax.jws.WebParam;
      import javax.jws.WebService;
      import com.hoo.entity.User;
      import com.hoo.entity.Users;
       
      /**
       * <b>function:</b>定制客戶端請求WebService所需要的接口
       * @author hoojo
       * @createDate 2011-3-18 上午08:22:55
       * @file ComplexUserService.java
       * @package com.hoo.service
       * @project CXFWebService
       * @blog http://blog.csdn.net/IBM_hoojo
       * @email hoojo_@126.com
       * @version 1.0
       */
      @WebService
      public interface IComplexUserService {
          
          public User getUserByName(@WebParam(name = "name") String name);
          
          public void setUser(User user);
          
          public Users getUsers(int i);
          
          public void setUsers(Users users);
          
          public Users getUserArray(int i);
          
          public void setUserArray(Users users);
          
          public void setUserMap(Users maps);
          
          public Users getUserMap();
      }

      5、 客戶端調(diào)用代碼

      package com.hoo.client;
       
      import java.util.ArrayList;
      import java.util.List;
      import java.util.Random;
      import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
      import com.hoo.entity.User;
      import com.hoo.entity.Users;
      import com.hoo.service.IComplexUserService;
       
      /**
       * <b>function:</b>調(diào)用ComplexUserService客戶端
       * @author hoojo
       * @createDate 2011-3-18 上午08:37:11
       * @file ComplexUserServiceClient.java
       * @package com.hoo.client
       * @project CXFWebService
       * @blog http://blog.csdn.net/IBM_hoojo
       * @email hoojo_@126.com
       * @version 1.0
       */
      public class ComplexUserServiceClient {
       
          public static void main(String[] args) {
              //調(diào)用WebService
              JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
              factory.setServiceClass(IComplexUserService.class);
              factory.setAddress("http://localhost:9000/complexUser");
              
              IComplexUserService service = (IComplexUserService) factory.create();
              
              System.out.println("#############Client getUserByName##############");
              User user = service.getUserByName("hoojo");
              System.out.println(user);
              
              user.setAddress("China-Guangzhou");
              service.setUser(user);
              
              System.out.println("#############Client getUsers##############");
              Users users = service.getUsers(4);
              System.out.println(users);
              List<User> tempUsers = new ArrayList<User>();
              for (User u : users.getUsers()) {
                  System.out.println(u);
                  u.setName("hoojo" + new Random().nextInt(100));
                  u.setAddress("Chian-GuangZhou#" + new Random().nextInt(100));
                  tempUsers.add(u);
              }
              users.getUsers().clear();
              users.getUsers().addAll(tempUsers);
              service.setUsers(users);
              
              System.out.println("#############Client getUserArray##############");
              users = service.getUserArray(4);
              User[] userArr = new User[4];
              int i = 0;
              for (User u : users.getUserArr()) {
                  System.out.println(u);
                  u.setName("hoojo" + new Random().nextInt(100));
                  u.setAddress("Chian-ShenZhen#" + new Random().nextInt(100));
                  userArr[i] = u;
                  i ++;
              }
              
              users.setUserArr(userArr);
              service.setUserArray(users);
              
              System.out.println("##################Client getUserMap###############");
              users = service.getUserMap();
              System.out.println(users.getMaps());
              users.getMaps().put("ABA", userArr[0]);
              service.setUserMap(users);
          }
      }

      6、 運行后結(jié)果如下

      控制臺客戶端結(jié)果:

      2011-3-18 10:31:11 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
      信息: Creating Service {http://service.hoo.com/}IComplexUserServiceService from class com.hoo.service.IComplexUserService
      #############Client getUserByName##############
      12#hoojo#hoojo@hoo.com#china
      #############Client getUsers##############
      com.hoo.entity.Users@1148603
      12#jack#0#jack0@hoo.com#china
      12#jack#1#jack1@hoo.com#china
      12#jack#2#jack2@hoo.com#china
      12#jack#3#jack3@hoo.com#china
      12#jack#4#jack4@hoo.com#china
      #############Client getUserArray##############
      12#jack#0#jack0@hoo.com#china
      12#jack#1#jack1@hoo.com#china
      12#jack#2#jack2@hoo.com#china
      12#jack#3#jack3@hoo.com#china
      ##################Client getUserMap###############
      {A=12#jack##jack@hoo.com#china#, B=12#tom#tom@hoo.com#china$$}

      服務(wù)器端結(jié)果:

      Server start ……
      2011-3-18 10:31:03 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
      信息: Creating Service {http://service.hoo.com/}ComplexUserServiceService from class com.hoo.service.ComplexUserService
      2011-3-18 10:31:03 org.apache.cxf.endpoint.ServerImpl initDestination
      信息: Setting the server's publish address to be http://localhost:9000/complexUser
      2011-03-18 10:31:03.906:INFO::jetty-7.2.2.v20101205
      2011-03-18 10:31:04.046:INFO::Started SelectChannelConnector@localhost:9000
      ############Server setUser###########
      setUser:12#hoojo#hoojo@hoo.com#China-Guangzhou
      ############Server setUsers###########
      setUsers:12#hoojo67#jack0@hoo.com#Chian-GuangZhou#94
      setUsers:12#hoojo95#jack1@hoo.com#Chian-GuangZhou#27
      setUsers:12#hoojo29#jack2@hoo.com#Chian-GuangZhou#0
      setUsers:12#hoojo94#jack3@hoo.com#Chian-GuangZhou#70
      setUsers:12#hoojo49#jack4@hoo.com#Chian-GuangZhou#92
      ############Server setUserArray###########
      setUserArray:12#hoojo24#jack0@hoo.com#Chian-ShenZhen#30
      setUserArray:12#hoojo57#jack1@hoo.com#Chian-ShenZhen#81
      setUserArray:12#hoojo84#jack2@hoo.com#Chian-ShenZhen#41
      setUserArray:12#hoojo88#jack3@hoo.com#Chian-ShenZhen#79
      ############Server setUserMap###########
      setUserMap:{ABA=12#hoojo24#jack0@hoo.com#Chian-ShenZhen#30, A=12#jack##jack@hoo.com#china#, B=12#tom#tom@hoo.com#china$$}

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多