<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://m.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

    主站蜘蛛池模板: 亚洲AV综合永久无码精品天堂| 久久国产乱子伦精品免费一| 中文日韩亚洲欧美制服| 亚洲最大无码中文字幕| 免费看内射乌克兰女| 日韩电影免费在线观看网站| 中文字幕在线观看免费视频 | 亚洲精品美女久久久久99| 最新免费jlzzjlzz在线播放| 国产精品免费电影| 亚洲性猛交XXXX| 亚洲宅男精品一区在线观看| 无遮挡免费一区二区三区| 9277手机在线视频观看免费| 性做久久久久免费看| 亚洲AV无码欧洲AV无码网站| 亚洲综合无码无在线观看| 国产免费牲交视频免费播放 | 在线a级毛片免费视频| 亚洲日本中文字幕天堂网| 亚洲国产精品午夜电影| 日韩成人毛片高清视频免费看| 99热这里只有精品免费播放| 俄罗斯极品美女毛片免费播放| 久久亚洲精品无码AV红樱桃| 黄色免费在线观看网址| 久久国内免费视频| 人人狠狠综合久久亚洲88| 最新亚洲人成无码网www电影| 99热在线精品免费播放6| 久久综合亚洲色HEZYO国产| 最新国产精品亚洲| 在线观看永久免费| 国产亚洲AV无码AV男人的天堂| 久久精品国产亚洲AV| 国产在线观看片a免费观看| 色噜噜综合亚洲av中文无码| 一区二区免费国产在线观看| 永久免费视频v片www| 亚洲娇小性xxxx| 99久久99久久精品免费看蜜桃|