<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    瘋狂

    STANDING ON THE SHOULDERS OF GIANTS
    posts - 481, comments - 486, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    JAX-WS weService實例2

    Posted on 2010-01-26 22:09 瘋狂 閱讀(5686) 評論(0)  編輯  收藏 所屬分類: webservice
    上一篇http://www.tkk7.com/freeman1984/archive/2010/01/13/309387.html主要說了個jax ws cs 結構的用法 在b/s結構中的使用:
    環境:myeclipse 8.0,tomcat6.0 jdk 1.5+
    1,首先new 一個web project
    2,添加必須的jar (bulid path):


    首先建立server端:
    如果客戶端使用是不是用myeclipse自動生成,我們在這建立一個接口:
    @WebService
    public interface ServerJaxI {
     public List<User> getUser(User user);
    }
    當然@webServer 是必須的
    接下來是實現:

    @javax.jws.WebService(targetNamespace = "http://server.com/", endpointInterface="com.server.ServerJaxI", serviceName = "ServerJaxService", portName = "ServerJaxPort")
    @SOAPBinding(style=Style.RPC)
    public class ServerJax implements ServerJaxI{

     public List<User> getUser(User user){
      System.out.println("get User:"+user.getName());
      return UserManager.getUsers();
     }
    }
    其中User:

    public class User implements Serializable{

     private static final long serialVersionUID = 1L;
     private String name;
     private String pwd;
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
     public String getPwd() {
      return pwd;
     }
     public void setPwd(String pwd) {
      this.pwd = pwd;
     }
     
    }
    UserManager:

    public class UserManager {

     private static List<User> users;
     static{
      users = new ArrayList<User>();
      for (int i = 0; i < 10; i++) {
       User user = new User();
       user.setName("name_"+i);
       user.setPwd("pwd_"+i);
       users.add(user);
      }
     }
     public static List<User> getUsers() {
      // TODO Auto-generated method stub
      return users;
     }

    }

    然后我們使用myeclipse的根據bean生成webserver方法來產生配置文件:
    點擊項目--》new webservice 選擇根據javaclass 生成:
    然后就會看見 在web-info下多了sun-jaxws.xml
    內容:
    <?xml version = "1.0"?>
    <endpoints version="2.0"
     xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
     <endpoint name="ServerJaxPort"
      implementation="com.server.ServerJax"
      url-pattern="/ServerJaxPort">
    </endpoint></endpoints>
    web.xml也發成了改變:被添加了相應的支持這些類都在前面添加的jar里面 如果不添加就會出現com.sun.xml.ws.transport.http.servlet.WSServletContextListener不能找到的錯誤。
    <servlet>
       <description>JAX-WS endpoint - ServerJaxService</description>
       <display-name>ServerJaxService</display-name>
       <servlet-name>ServerJaxService</servlet-name>
       <servlet-class>
        com.sun.xml.ws.transport.http.servlet.WSServlet
       </servlet-class>
       <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
       <servlet-name>ServerJaxService</servlet-name>
       <url-pattern>/ServerJaxPort</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <listener>
       <listener-class>
        com.sun.xml.ws.transport.http.servlet.WSServletContextListener
       </listener-class>
      </listener></web-app>
    ok。現在我們部署項目啟動 通過以下鏈接訪問:htttp://localhost:8080//pro/ServerJaxPort 其中ServerJaxPort 是在sun-jaxws.xml里面定義的url-pattern 這是我們就能看見
    我們發布的服務了:

    客戶端:
    當然客戶端可以通過myeclipse自動生成:我們采用不自動成的方式:也就是通過接口方式來獲取(這也就是前面定義接口的原因),當然采取自動生成的方式話就不用定義接口:
    當然采用接口的方式:就需要接口需要的類:
    上面我們定義的接口:
    @WebService
    public interface ServerJaxI {
     public List<User> getUser(User user);
    }
    要調用這個接口就需要User 和這個接口類
     
    1,首先我們new 一個java project 將ServerJaxI 和User代碼拷貝過來 包名相同:
    然后就是我們的客戶端代碼

    public class Clientj {
     public static void main(String[] args) {
      try {
      URL url = new URL("http://localhost:8080/jaxws/ServerJaxPort?wsdl");//wsdl 地址
      
      QName qname = new QName("http://server.com/","ServerJaxService");  //其中第一個參數為:namespaceURI 第二個為servername
      Service service = Service.create(url, qname); 
      ServerJaxI s = service.getPort(ServerJaxI.class); 
      User user = new User();
      user.setName("qiaobing");
      System.out.println(s.getUser(user).get(1).getName());
      } catch (MalformedURLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }

     }
    運行就可以看見結果了。
    示例代碼下載:
    //----------------------
    map講不能得到支持
    因此可以簡單的封裝下,(或者通過XmlAdapter<ValueType, BoundType>來封裝)
    例如UserMap.java:

    public class UserMap{

     private HashMap<String, User> users;

     public UserMap(){
      users = new HashMap<String, User>();
     }
     public HashMap<String, User> getUsers() {
      return users;
     }

     public void setUsers(HashMap<String, User> users) {
      this.users = users;
     }
     public void put(String key,User user){
      users.put(key, user);
     }
     public User get(String key){
      return users.get(key);
     }
    }

    這樣就可以通過UserMap來傳遞map數據。
    服務端:
    /Files/freeman1984/jaxws.rar
    客戶端:
    /Files/freeman1984/jaxwsclient.rar

    主站蜘蛛池模板: 无码人妻久久一区二区三区免费| 又色又污又黄无遮挡的免费视 | 曰批全过程免费视频网址| 免费国产黄网站在线看| 亚洲一区二区影视| 久久亚洲精品无码| 伊人久久大香线蕉亚洲五月天| 国产老女人精品免费视频| 国色精品卡一卡2卡3卡4卡免费| 亚洲免费观看视频| 国产免费福利体检区久久| 国内成人精品亚洲日本语音| 日本亚洲免费无线码| 亚洲精品白色在线发布| 亚洲国产二区三区久久| 亚洲精品无码AV人在线播放| 久久影视国产亚洲| 亚洲一区二区三区免费| 亚洲国产精品一区二区九九| 在线观看国产情趣免费视频| 黄瓜视频高清在线看免费下载| 亚洲无砖砖区免费| 免费专区丝袜脚调教视频| 99re在线精品视频免费| 桃子视频在线观看高清免费视频| 9久热精品免费观看视频| 国产精品小视频免费无限app| 人妻无码中文字幕免费视频蜜桃| 国产精品亚洲专区一区| 香蕉视频亚洲一级| 国产精品亚洲一区二区三区久久| 狠狠入ady亚洲精品| 美女视频黄a视频全免费网站色 | 4hu四虎最新免费地址| 在线看片v免费观看视频777| 国产精品成人免费福利| 成人无遮挡裸免费视频在线观看 | 在线免费观看亚洲| 亚洲小视频在线观看| 亚洲视频日韩视频| 久久精品亚洲AV久久久无码|