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

          BlogJava 聯(lián)系 聚合 管理
            1 Posts :: 25 Stories :: 5 Comments :: 0 Trackbacks
          首先,我們應(yīng)當(dāng)創(chuàng)建一個(gè)實(shí)體類一個(gè)接口和一個(gè)實(shí)現(xiàn)類(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;      
                  }     
          }

          創(chuàng)建一個(gè)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表示放在另外一個(gè)工程(ssh)下的src下面 -->
           <!--${basedir}表示當(dāng)前目錄-->
              <!--通過(guò)XFire ant任務(wù)生成客戶端代碼的存放位置-->
              <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屬性定義創(chuàng)建的代碼所在的文件夾
                      wsdl是web服務(wù)的wsdl文件
                      package代表創(chuàng)建的代碼的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>

          測(cè)試類:

          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();
            }
           }
          }

           

          說(shuō)明:WEB服務(wù)器為TOMCAT,端口:8090.
          接下來(lái),我們按照一下步驟來(lái)。
          (1)啟動(dòng)TOMCAT
          (2)我們應(yīng)當(dāng)執(zhí)行build.xml文件,因?yàn)槭窃贓CLIPSE中開(kāi)發(fā),所以只要點(diǎn)擊【右鍵】之后,找到【ANT BUILD】選項(xiàng),然后點(diǎn)擊。就會(huì)生成UserServiceClient.java、UserServiceImpl、UserServicePortType這個(gè)三個(gè)類。
          (3)執(zhí)行測(cè)試類。
          我們就會(huì)看到結(jié)果:
          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

          說(shuō)明:以上我也是根據(jù)網(wǎng)上前輩做的例子,在結(jié)合自己的一些實(shí)踐做出來(lái)的。
          posted on 2008-11-01 16:29 馬光軍 閱讀(406) 評(píng)論(0)  編輯  收藏 所屬分類: XFIRE

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 洪泽县| 江口县| 甘德县| 建德市| 上杭县| 江口县| 沂南县| 临安市| 三门县| 乐昌市| 万山特区| 荥经县| 甘德县| 万宁市| 高雄市| 丰都县| 阿克陶县| 蒙山县| 临泉县| 宁安市| 交城县| 松桃| 合江县| 安泽县| 顺平县| 金秀| 灵山县| 临澧县| 江门市| 昌吉市| 淮北市| 恩施市| 保亭| 慈溪市| 苍南县| 罗山县| 屏山县| 铜川市| 和硕县| 和顺县| 卫辉市|