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

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

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

    posts - 0, comments - 77, trackbacks - 0, articles - 356
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    myeclipse下用XFire開發webservice

    Posted on 2008-03-08 17:07 semovy 閱讀(5714) 評論(8)  編輯  收藏 所屬分類: WebService
    myeclipse下用XFire開發webservice

    1.new->other->MyEcplise->Web Services->Web Services


    自動在classpath:META-INF/xfire

    下建立services.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://xfire.codehaus.org/config/1.0">

     <service>
      <name>UserService</name>
      <serviceClass>com.semovy.service.IUserService</serviceClass>
      <implementationClass>
       com.semovy.service.impl.UserServiceImpl
      </implementationClass>
      <style>wrapped</style>
      <use>literal</use>
      <scope>application</scope>
     </service>
    </beans>

    2.在WEB-INF下的web.xml下添加servlet:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
      <servlet>
        <servlet-name>XFireServlet</servlet-name>
        <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
      </servlet-mapping>
    </web-app>

     3.com.semovy.beans下建立測試類User

    User.java

    package com.semovy.beans;

    public class User {

     private String id = "";

     private String name = "";

     private String remark = "";

     public User() {
     }

     public User(String id, String name, String remark) {
      this.id = id;
      this.name = name;
      this.remark = remark;
     }

     public String getId() {
      return id;
     }

     public void setId(String id) {
      this.id = id;
     }

     public String getName() {
      return name;
     }

     public void setName(String name) {
      this.name = name;
     }

     public String getRemark() {
      return remark;
     }

     public void setRemark(String remark) {
      this.remark = remark;
     }

     public String toString() {
      return "Id: " + id + " , name: " + name + " , remark: " + remark + "\n";
     }

     @Override
     public int hashCode() {
      final int PRIME = 31;
      int result = 1;
      result = PRIME * result + ((id == null) ? 0 : id.hashCode());
      result = PRIME * result + ((name == null) ? 0 : name.hashCode());
      result = PRIME * result + ((remark == null) ? 0 : remark.hashCode());
      return result;
     }

     @Override
     public boolean equals(Object obj) {
      if (this == obj)
       return true;
      if (obj == null)
       return false;
      if (getClass() != obj.getClass())
       return false;
      final User other = (User) obj;
      if (id == null) {
       if (other.id != null)
        return false;
      } else if (!id.equals(other.id))
       return false;
      if (name == null) {
       if (other.name != null)
        return false;
      } else if (!name.equals(other.name))
       return false;
      if (remark == null) {
       if (other.remark != null)
        return false;
      } else if (!remark.equals(other.remark))
       return false;
      return true;
     }
     
    }


    在com.semovy.service包下建立服務接口IUserService

    IUserService.java


    package com.semovy.service;

    import java.util.List;

    import com.semovy.beans.User;

    public interface IUserService {
     public abstract String getStringTest(String msg1,String msg2);
     public abstract List getStringList();
     public abstract List getUsersList();
     public abstract User[] getUsersArray();
     public abstract String[] getUsersStringArray();
     public abstract User getUserById(String id);
     public abstract void addUser(User user);
    }
    這在接口包下建立.與服務接口相同名稱的IUserService.aegis.xml


    <?xml version="1.0" encoding="UTF-8"?>
    <mappings>
      <mapping><!-- 返回類型是String ,String[]的,參數是String類型的方法不用定義 -->
        <method name="getStringList">
           <return-type  componentType="java.lang.String" /><!-- 返回類型對應集合Collection,數組中的元素的類型 -->
        </method>
        <method name="getUsersList">
         <return-type componentType="com.semovy.beans.User"/>
        </method>
        <method name="getUsersArray">
         <return-type componentType="com.semovy.beans.User"/>
        </method>
        <method name="getUserById">
         <return-type componentType="com.semovy.beans.User"/>
        </method> 
       </mapping>
    </mappings>

    在com.semovy.service.impl包下

    UserServiceImpl.java

    package com.semovy.service.impl;

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;

    import com.semovy.beans.User;
    import com.semovy.service.IUserService;

    /**
     *
     * @author semovy
     * @version 1.0
     * the user service class implemente the IUserService implementation for testing
     */
    public class UserServiceImpl implements IUserService {

     private List<User> users;
     public UserServiceImpl()
     {
      users = new ArrayList<User>();
      users.add(new User("1","semovy","semovy's remark"));
      users.add(new User("2","韋善茂","韋善茂的備注"));
      users.add(new User("3","superman_wshm","superman_wshm's remark"));
     }
     /**
      * @param msg1 the string msg1
      * @param msg2 the string msg2
      *
      */
     public String getStringTest(String msg1,String msg2) {

      return "Hello :" + msg1 + " : "  + msg2;
     }
     /**
      * @return list the list Collection with some String element
      */
     public List getStringList()
     {
      List<String> list = new ArrayList<String>();
      list.add("string1");
      list.add("字符串2");
      list.add("字符串3");
      list.add("string4");
      return list;
     }
     /**
      * @return all users
      */
     public List getUsersList() {
      return users;
     }
     /**
      * @param id the id of user
      * @return the user by specifical id
      */
     public User getUserById(String id) {
      Iterator it = users.iterator();
      while(it.hasNext())
      {
       User user = (User)it.next();
       if(user.getId().equals(id))
       {
        return user;
       }
      }
      return null;
     }
     /**
      * @return return all users of array form with type User.
      */
     public User[] getUsersArray() {
      
      return users.toArray(new User[]{new User()});
     }
     /**
      * @return return all users of array form with type String
      */
     public String[] getUsersStringArray() {
      
      User[] users_arr = (User[])users.toArray(new User[]{});
      String[] tempUser_arr = new String[users_arr.length];
      for(int i=0;i<users_arr.length;i++)
      {
       tempUser_arr[i] = users_arr[i].toString();
       System.out.println(tempUser_arr[i]);
      }
      return tempUser_arr;
     }
     public void addUser(User user) {
      users.add(user);
     }
     
    }


    4.在com.semovy.test包下
    建立客戶調用測試類.UserServiceWSTest .java

    package com.semovy.test;

    import java.net.MalformedURLException;
    import java.util.Iterator;
    import java.util.List;

    import org.codehaus.xfire.XFireFactory;
    import org.codehaus.xfire.client.XFireProxyFactory;
    import org.codehaus.xfire.service.Service;
    import org.codehaus.xfire.service.binding.ObjectServiceFactory;

    import com.semovy.beans.User;
    import com.semovy.service.IUserService;

    public class UserServiceWSTest {
     public static void main(String[] args) {
      // 創建服務實例
      Service srvcModel = new ObjectServiceFactory()
        .create(IUserService.class);
      XFireProxyFactory factory = // 創建代理工廠實例
      new XFireProxyFactory(XFireFactory.newInstance().getXFire());
      String helloWorldURL = "http://localhost:8000/webServiceTest/services/UserService";
      IUserService srvc = null;
      try { // 獲取指定位置的web服務對象
       srvc = (IUserService) factory.create(srvcModel, helloWorldURL);
      } catch (MalformedURLException e) {
       e.printStackTrace();
      }
      
      //調用只返回String的方法.在接口名.aegis.xml中不用設置方法名
      String result = srvc.getStringTest("msg1", "msg2");
      System.out.println(result);
      //調用返回String[]數組的方法,在接口名.aegis.xml中不用設置方法名.
      String[] userInfo_str_arr = srvc.getUsersStringArray();
      for(String aUserInfo:userInfo_str_arr)
       System.out.println(aUserInfo);
      //調用返回List類型值的方法,需要定義,List容器中的元素類型為String
      List strList = srvc.getStringList();
      Iterator str_it = strList.iterator();
      while (str_it.hasNext()) {
       String str = (String) str_it.next();
       System.out.println(str);
      }
      //調用返回User[]數組
      User[] user_arr = srvc.getUsersArray();
      for (User a_user : user_arr)
       System.out.print(a_user.toString());
      
      //調用返回User類型值的方法.方法參數是字符串.
      User a_user = srvc.getUserById("2");
      System.out.print(a_user.toString());
      
      //調用參數為User的方法,沒有返回值,不用配置方法
      srvc.addUser(new User("4","添加的名稱","添加的備注"));
      
      //調用返回List類型值的方法,需要定義,List容器中的元素類型為User
      List userList = srvc.getUsersList();
      Iterator userList_it = userList.iterator();
      while (userList_it.hasNext()) {
       User user = (User) userList_it.next();
       System.out.print(user.toString());
      }
     }

    }
    5.結果:
    Hello :msg1 : msg2
    Id: 1 , name: semovy , remark: semovy's remark
    Id: 2 , name: 韋善茂 , remark: 韋善茂的備注
    Id: 3 , name: superman_wshm , remark: superman_wshm's remark
    string1
    字符串2
    字符串3
    string4
    Id: 1 , name: semovy , remark: semovy's remark
    Id: 2 , name: 韋善茂 , remark: 韋善茂的備注
    Id: 3 , name: superman_wshm , remark: superman_wshm's remark
    Id: 2 , name: 韋善茂 , remark: 韋善茂的備注
    Id: 1 , name: semovy , remark: semovy's remark
    Id: 2 , name: 韋善茂 , remark: 韋善茂的備注
    Id: 3 , name: superman_wshm , remark: superman_wshm's remark
    Id: 4 , name: 添加的名稱 , remark: 添加的備注


    評論

    # re: myeclipse下用XFire開發webservice[未登錄]  回復  更多評論   

    2008-04-07 13:20 by dd
    測試不是遠程調,如果是遠程的怎么Service srvcModel = new ObjectServiceFactory()
    .create(IUserService.class);
    如果調用的工程沒有IUserService.class怎么辦?

    # re: myeclipse下用XFire開發webservice  回復  更多評論   

    2008-06-04 14:58 by zhouyu
    我先建User類,然后用myeclipse自動生成客戶端時,就會把User類里我自已寫
    的代碼全給換了,參數全是JAXBElement<String>類型的,于是我在客戶端傳入
    JAXBElement<String>類型的參數,結果在服務器那邊用user.getName()取值為空,user.getName().getValue()也沒值,但user這個對像是不為空的,這是為什么呢????
    我郵箱maosha8@163.com
    謝謝了幫我解決下吧

    # re: myeclipse下用XFire開發webservice[未登錄]  回復  更多評論   

    2010-01-27 21:10 by ccc
    非常感謝!!終于可以調用Webservice返回List,不為空了,IUserService.aegis.xml這個文件至關重要

    # re: myeclipse下用XFire開發webservice  回復  更多評論   

    2010-05-13 01:37 by xc
    您好,我也碰到和樓上一樣的問題,myeclipse自動生成客戶端時把自定義類里的類型都變成JAXBElement類型,我客戶端傳入JAXBElement類型,可在服務器上user.getName()為空,user.getName().getValue()就報錯,2010-5-12 19:16:52 org.codehaus.xfire.handler.DefaultFaultHandler invoke
    嚴重: Fault occurred!
    能不能再幫忙回答一下!非常感謝!
    zephyr.xu@gmail.com

    # re: myeclipse下用XFire開發webservice  回復  更多評論   

    2011-07-29 10:24 by 劍天
    @dd
    如果在別的地方掉,那么需要創建一個與這個借口一樣的接口,才能調用,明白么?

    # re: myeclipse下用XFire開發webservice  回復  更多評論   

    2011-12-19 07:16 by 游客
    @ccc
    怎么弄的啊?我的一直為空

    # re: myeclipse下用XFire開發webservice  回復  更多評論   

    2011-12-19 07:32 by 游客
    @zhouyu
    你好,這個問題你解決了嗎?已經困擾我一晚上了
    如果解決請幫忙回答一下
    makeboluo000@163.com
    謝謝

    # re: myeclipse下用XFire開發webservice  回復  更多評論   

    2011-12-19 15:57 by 游客
    你是用遠程還是在本地同一個工程文件中?@ccc
    主站蜘蛛池模板: 亚洲国产第一站精品蜜芽| 自拍偷自拍亚洲精品第1页| 18以下岁毛片在免费播放| 91在线老王精品免费播放| 日韩精品无码区免费专区| 免费国产高清视频| 亚洲男人的天堂www| 国产精品亚洲专区在线观看| 亚洲乱码av中文一区二区| 精品国产免费人成网站| 免费在线视频你懂的| 亚洲精品国产高清不卡在线| 亚洲另类激情综合偷自拍| 亚洲欧美日韩一区二区三区 | 久久精品国产亚洲av麻豆蜜芽| 亚洲人成人伊人成综合网无码| 欧洲精品成人免费视频在线观看 | 日韩精品内射视频免费观看| 免费观看的av毛片的网站| 亚洲精品无码久久久久sm| 亚洲a无码综合a国产av中文| 日本免费污片中国特一级| 国产jizzjizz免费视频| 亚洲妇女水蜜桃av网网站| xxxx日本在线播放免费不卡| 性一交一乱一视频免费看| 亚洲美女中文字幕| 中文字幕一区二区免费| 国产在线ts人妖免费视频| 天堂亚洲国产中文在线| 日韩精品无码一区二区三区免费| 亚洲综合色区中文字幕| 亚洲Av无码乱码在线znlu| 亚洲AV日韩AV永久无码色欲| 手机在线看永久av片免费| 亚洲一区二区在线视频| 花蝴蝶免费视频在线观看高清版 | 亚洲国产精品18久久久久久| 国产在线国偷精品产拍免费| 日韩大片在线永久免费观看网站| 久久久久国色AV免费观看性色|