馬光軍--------BLOG

          BlogJava 聯系 聚合 管理
            1 Posts :: 25 Stories :: 5 Comments :: 0 Trackbacks
          首先,我們應當創建一個實體類一個接口和一個實現類(User.java、UserService.java、UserServiceImpl.java)

          package com.mgj.xfiretext.domain;

          import java.io.Serializable;
          import java.util.Date;

          /**
           *
           * User.java com.mgj.xfiretext.domain xfire
           *
           * @author magj mailto:m441748725@163.com 2008-10-17 下午04:18:26
           *
           */
          public class User implements Serializable {
           
           private static final long serialVersionUID = 6517808321041980976L;

           private Long userId;

           private String accountId;

           private String userName;

           private Date lastLogin;

           public String getAccountId() {
            return accountId;
           }

           public void setAccountId(String accountId) {
            this.accountId = accountId;
           }

           public Date getLastLogin() {
            return lastLogin;
           }

           public void setLastLogin(Date lastLogin) {
            this.lastLogin = lastLogin;
           }

           public Long getUserId() {
            return userId;
           }

           public void setUserId(Long userId) {
            this.userId = userId;
           }

           public String getUserName() {
            return userName;
           }

           public void setUserName(String userName) {
            this.userName = userName;
           }
          }


          package com.mgj.xfiretext.webserver;

          import com.mgj.xfiretext.domain.User;
          /**
           *
           * UserService.java
           * com.mgj.xfiretext.webserver
           * xfire
           * @author magj mailto:m441748725@163.com
           *  2008-10-17  下午04:16:09
           *
           */
               
          public interface UserService {     
              public User queryUserByAccoutId(String accountId);     
              
          }

          package com.mgj.xfiretext.webserver;

          import java.util.Date;

          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;

          import com.mgj.xfiretext.domain.User;

          /**
           *
           * UserServiceImpl.java
           * com.mgj.xfiretext.webserver
           * xfire
           * @author magj mailto:m441748725@163.com
           *  2008-10-17  下午04:17:26
           *
           */
          public class UserServiceImpl  implements UserService{     
              private static final Log log = LogFactory.getLog(UserServiceImpl.class);     
                   
              public User queryUserByAccoutId(String accountId){      
                  log.debug("accountId=" + accountId);      
                  User user = new User();      
                  user.setAccountId("testAccount");      
                  user.setLastLogin(new Date());      
                  user.setUserName("mgj");      
                  user.setUserId(new Long(123L));     
                  return user;      
                  }     
          }

          創建一個bulild.xml文件:
          <?xml version="1.0"?>
          <project name="xfire" default="genfiles" basedir=".">
              <property name="lib" value="${basedir}/../WebRoot/WEB-INF/lib" />
              <path id="myclasspath">
                  <fileset dir="${lib}">
                      <include name="*.jar" /> 
                  </fileset> 
                  <pathelement location="${genfiles}" />
              </path>
           <!--${basedir}/../src表示放在src下面 -->
           <!--${basedir}/../../ssh/src表示放在另外一個工程(ssh)下的src下面 -->
           <!--${basedir}表示當前目錄-->
              <!--通過XFire ant任務生成客戶端代碼的存放位置-->
              <property name="code_path" value="${basedir}/../src" /> 
              <!--需要生成客戶端代碼的wsdl文件-->
              <property name="wsdl_path" value="http://localhost:8090/xfire/services/UserService?wsdl" />
              <!--生成客戶端代碼的包名-->
              <property name="code_package" value="com.mgj.xfiretext.webserver.client" />
             
              <!-- Remove classes directory for clean build -->
              <target name="clean" description="Prepare for clean build"> 
                  <delete dir="${code_path}"/>
                  <mkdir dir="${code_path}"/>
              </target>
             
              <!--<target name="genfiles" depends="clean" description="Generate the files">  -->
              <target name="genfiles" description="Generate the files">
                  <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="myclasspath" />
                  <!--outputDirectory屬性定義創建的代碼所在的文件夾
                      wsdl是web服務的wsdl文件
                      package代表創建的代碼的package
                  -->
                  <wsgen outputDirectory="${code_path}" wsdl="${wsdl_path}" package="${code_package}" binding="xmlbeans" /> 
              </target>
          </project>
          Spring 的配置文件:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
          <beans>
           <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />

           <bean id="userService"
            class="com.mgj.xfiretext.webserver.UserServiceImpl" />
           <bean id="addressingHandler"
            class="org.codehaus.xfire.addressing.AddressingInHandler" />

           <bean name="UserService"
            class="org.codehaus.xfire.spring.ServiceBean">
            <property name="serviceBean" ref="userServiceBean" />
            <property name="serviceClass"
             value="com.mgj.xfiretext.webserver.UserService" />
            <property name="inHandlers">
             <list>
              <ref bean="addressingHandler" />
             </list>
            </property>
           </bean>
           
           <bean id="userServiceBean"
            class="com.mgj.xfiretext.webserver.UserServiceImpl" />
          </beans>

          測試類:

          package test;

          import java.net.MalformedURLException;
          import org.codehaus.xfire.client.XFireProxyFactory;
          import org.codehaus.xfire.service.Service;
          import org.codehaus.xfire.service.binding.ObjectServiceFactory;
          import com.mgj.xfiretext.domain.User;
          import com.mgj.xfiretext.webserver.UserService;

          package test;

          import java.net.MalformedURLException;

          import org.apache.xmlbeans.XmlObject;
          import org.codehaus.xfire.client.XFireProxyFactory;
          import org.codehaus.xfire.service.Service;
          import org.codehaus.xfire.service.binding.ObjectServiceFactory;
          import org.dom4j.Document;
          import org.dom4j.DocumentException;
          import org.dom4j.DocumentHelper;
          import org.dom4j.Element;

          import com.zx.xfiretext.domain.User;
          import com.zx.xfiretext.webserver.UserService;
          import com.zx.xfiretext.webserver.client.UserServiceClient;
          import com.zx.xfiretext.webserver.client.UserServicePortType;

          /**
           *
           * MyClient.java test xfire
           *
           * @author magj mailto:m441748725@163.com 2008-10-17 下午06:00:05
           *
           */
          public class MyClient {
           public static void main(String[] args) {
            try {
             Service serviceModel = new ObjectServiceFactory()
               .create(UserService.class);
             UserService service = (UserService) new XFireProxyFactory().create(
               serviceModel,
               "http://localhost:8090/xfire/services/UserService");
             User user = service.queryUserByAccoutId("123");
             System.out
               .println("userId=" + user.getUserId() + ", userName="
                 + user.getUserName() + ", lastLogin="
                 + user.getLastLogin());
            } catch (MalformedURLException e) {
             e.printStackTrace();
            }

            UserServiceClient userServiceClient = new UserServiceClient();
            UserServicePortType userServicePortType = userServiceClient
              .getUserServiceHttpPort();
            XmlObject userXml = userServicePortType.queryUserByAccoutId("123");
            System.out.println(userXml.toString());
            Document userdocument = null;
            try {
             userdocument = DocumentHelper.parseText(userXml.toString());
             Element rootElement = userdocument.getRootElement();
             Element accountIdElement = rootElement.element("accountId");
             Element userIdElement = rootElement.element("userId");
             System.out.println("accountId: " + accountIdElement.getTextTrim()
               + "  userId:" + userIdElement.getTextTrim());
            } catch (DocumentException e) {
             e.printStackTrace();
            }
           }
          }

           

          說明:WEB服務器為TOMCAT,端口:8090.
          接下來,我們按照一下步驟來。
          (1)啟動TOMCAT
          (2)我們應當執行build.xml文件,因為是在ECLIPSE中開發,所以只要點擊【右鍵】之后,找到【ANT BUILD】選項,然后點擊。就會生成UserServiceClient.java、UserServiceImpl、UserServicePortType這個三個類。
          (3)執行測試類。
          我們就會看到結果:
          userId=123, userName=mgj, lastLogin=Sat Nov 01 17:27:50 CST 2008
          <out xmlns="http://webserver.xfiretext.zx.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <accountId xmlns="http://domain.xfiretext.zx.com">testAccount</accountId>
            <lastLogin xmlns="http://domain.xfiretext.zx.com">2008-11-01T17:27:51.343+08:00</lastLogin>
            <userId xmlns="http://domain.xfiretext.zx.com">123</userId>
            <userName xmlns="http://domain.xfiretext.zx.com">mgj</userName>
          </out>
          accountId: testAccount  userId:123

          說明:以上我也是根據網上前輩做的例子,在結合自己的一些實踐做出來的。
          posted on 2008-11-01 16:29 馬光軍 閱讀(406) 評論(0)  編輯  收藏 所屬分類: XFIRE

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 长葛市| 平和县| 上饶县| 四平市| 锦屏县| 渝中区| 特克斯县| 东乌珠穆沁旗| 扶风县| 泽库县| 桓仁| 商洛市| 威信县| 琼海市| 博爱县| 东港市| 南丹县| 高邮市| 花莲市| 恩平市| 宜兴市| 邻水| 常州市| 连平县| 滦南县| 西乌| 长沙县| 太仆寺旗| 祁东县| 忻州市| 平潭县| 泸定县| 鄂托克旗| 阜新市| 章丘市| 奉贤区| 襄垣县| 措勤县| 岳池县| 华安县| 铁岭县|