生活随笔
收集整理的這篇文章主要介紹了
XFire WebService demo
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
XFire創建WebService實例應用
?
? XFire使得在JavaEE應用中發布Web服務變得輕而易舉。和其他Web服務引擎相比,
??XFire的配置非常簡單,可以非常容易地和Spring集成。
??下載地址:http://xfire.codehaus.org/Download。
?
???一.?使用XFire發布WebService
?? 1.?創建service接口?
?
Java代碼??
?package?com.test.service;???import?com.test.service.bean.User;??????public?interface?IHelloService?{??????public?String?sayHello(String?name);??????public?User??getUser(User?user);??????}??}?? ??2.創建Service接口的實現類
Java代碼??
package?com.test.service;??import?com.test.service.bean.User;??public?class?HelloService?implements?IHelloService{???????public?String?sayHello(String?name){??????????return?"Hello,?"+name;??????}??????public?User?getUser(User?user)?{??????????User?userNew?=?new?User();??????????userNew.setId("new:"+user.getId());??????????userNew.setName("new:"+user.getName());??????????return?userNew;??????}??}?? ??
Java代碼??
package?com.test.service.bean;??public?class?User?{???????????private?String?id;??????private?String?name;??????????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;??????}??}?? ?
3.在web.xml文件中進行XFire攔截配置,可參照官網提供的sample。
Xml代碼??
<?xml?version="1.0"?encoding="UTF-8"?>??<web-app?version="2.4"?xmlns="http://java.sun.com/xml/ns/j2ee"?????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?????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>??</servlet>??<servlet-mapping>??????<servlet-name>XFireServlet</servlet-name>??????<url-pattern>/servlet/XFireServlet/*</url-pattern>??</servlet-mapping>??<servlet-mapping>??????<servlet-name>XFireServlet</servlet-name>??????<url-pattern>/services/*</url-pattern>??</servlet-mapping>??</web-app>?? ?4.在class目錄下建立META-INF目錄,如(META-INF>xifre->services.xml),
??? 在services.xml文件中進行webservice服務的發布,可參照官網提供的sample。?
Xml代碼??
<?xml?version="1.0"?encoding="UTF-8"?>??<beans?xmlns="http://xfire.codehaus.org/config/1.0">??<service>??????<name>HelloService</name>??????<serviceClass>com.test.service.IHelloService</serviceClass>??????<implementationClass>com.test.service.HelloService</implementationClass>??</service>??????</beans>?? ?
5.將xfire的Jar包和相關依賴包拷到系統應用中,在Tomcat下部署應用。
?? 啟動tomcat后訪問服務(需在應用后加上/services,webservice才會進行攔截):
?? 例:http://localhost:8080/ws2/services。(IE下有時無法顯示列表,可用其它瀏覽器顯示或指定接口名稱)
?? 界面如下:???
?
?點擊后查看詳細的wsdl文檔,不同的瀏覽器下訪問會有區別,展示效果不一致。
?
?
?? 二.建立XFire客戶端進行調用
??
????1.本地客戶端調用,與webservice服務在同一應用。
Java代碼??
package?com.test.client;????import?java.net.MalformedURLException;??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.test.service.IHelloService;??import?com.test.service.bean.User;????public?class?ClientTest?{??????public?static?void?main(String?args[])?throws?MalformedURLException?{??????????Service?service?=?new?ObjectServiceFactory().create(IHelloService.class);??????????XFireProxyFactory?factory?=?new?XFireProxyFactory(XFireFactory??????????????????.newInstance().getXFire());??????????String?url?=?"http://localhost:8080/ws2/services/HelloService";??????????IHelloService?helloService?=?(IHelloService)?factory.create(service,url);??????????System.out.println(helloService.sayHello("張三"));??????????User?user?=?new?User();??????????user.setName("張三");??????????System.out.println(helloService.getUser(user).getName());??????}??}?? ?
???? 執行結果如下:
Java代碼??
Hello,?張三??new:張三?? ?
???2. 利用XFire創建build.xml文件生成客戶端代碼調用webservice服務
??
??? ?2.1在src目錄下創建build.properties文件,配置如下:
Java代碼??
src.dir=${basedir}??lib.dir=D:/myspace/ws2/WebRoot/WEB-INF/lib??wsdl.dir=http\: ?
??? ?2.2在src目錄下創建build.xml文件,配置如下:
Xml代碼??
<?xml?version="1.0"?encoding="UTF-8"?>??<project?name="WebService"?basedir="."?default="gen-webservice">??????<property?file="build.properties"></property>??????<path?id="project-classpath">??????????<fileset?dir="${lib.dir}">??????????????<include?name="**/*.jar"?/>???????????</fileset>??????</path>????????<target?name="gen-webservice">??????????<taskdef?name="wsgen"?classname="org.codehaus.xfire.gen.WsGenTask"????????????????????????????????????????????????classpathref="project-classpath"?/>??????????<wsgen?outputDirectory="${src.dir}"??wsdl="${wsdl.dir}"???????????????????????package="stub.test.client"?overwrite="true"/>??????????????</target>??</project>?? ????
?????用ant構建生成代碼,生成后的目錄如下:
?
?
?
?????2.3編寫客戶端代碼進行調用
Java代碼??
package?com.test.client;??import?stub.test.client.HelloServiceClient;??import?stub.test.client.HelloServicePortType;??import?com.test.service.bean.ObjectFactory;??import?com.test.service.bean.User;????public?class?HelloServiceTest?{????????public?static?void?main(String?args[]){??????????HelloServiceClient?service?=?new?HelloServiceClient();????????????????HelloServicePortType?portType?=?service.getHelloServiceHttpPort();????????????????????System.out.println(portType.sayHello("張三"));????????????????????ObjectFactory?factory?=?new?ObjectFactory();??????????????????User?user?=?factory.createUser();??????????user.setName(factory.createUserName("張三"));??????????System.out.println(portType.getUser(user).getName().getValue());??????}??}?? ?
??? 執行結果如下:
Java代碼??
Hello,?張三??new:張三 ?原文:http://linshow26.iteye.com/blog/2004080
轉載于:https://www.cnblogs.com/sdream/p/5887913.html
總結
以上是生活随笔為你收集整理的XFire WebService demo的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。