加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

XFire创建WebService实例

发布时间:2020-12-16 23:43:06 所属栏目:安全 来源:网络整理
导读:XFire创建WebService实例应用 ? ? XFire使得在JavaEE应用中发布Web服务变得轻而易举。和其他Web服务引擎相比, ??XFire的配置非常简单,可以非常容易地和Spring集成。 ??下载地址:http://xfire.codehaus.org/Download。 ? ?? 一.?使用XFire发布WebService
XFire创建WebService实例应用

?

? XFire使得在JavaEE应用中发布Web服务变得轻而易举。和其他Web服务引擎相比,
??XFire的配置非常简单,可以非常容易地和Spring集成。
??下载地址:http://xfire.codehaus.org/Download。

?

?? 一.?使用XFire发布WebService


?? 1.?创建service接口?

?

Java代码 ?

收藏代码

  1. ?package?com.test.service;??
  2. ?import?com.test.service.bean.User;??
  3. ???
  4. ?public?interface?IHelloService?{??
  5. ????public?String?sayHello(String?name);??
  6. ????public?User??getUser(User?user);??
  7. ????}??
  8. }??

? 2.创建Service接口的实现类

Java代码 ?

收藏代码

  1. package?com.test.service;??
  2. import?com.test.service.bean.User;??
  3. public?class?HelloService?implements?IHelloService{???
  4. ????public?String?sayHello(String?name){??
  5. ????????return?"Hello,?"+name;??
  6. ????}??
  7. ????public?User?getUser(User?user)?{??
  8. ????????User?userNew?=?new?User();??
  9. ????????userNew.setId("new:"+user.getId());??
  10. ????????userNew.setName("new:"+user.getName());??
  11. ????????return?userNew;??
  12. ????}??
  13. }??

??

Java代码 ?

收藏代码

  1. package?com.test.service.bean;??
  2. public?class?User?{???????
  3. ????private?String?id;??
  4. ????private?String?name;??????
  5. ????public?String?getId()?{??
  6. ????????return?id;??
  7. ????}??
  8. ????public?void?setId(String?id)?{??
  9. ????????this.id?=?id;??
  10. ????}??
  11. ????public?String?getName()?{??
  12. ????????return?name;??
  13. ????}??
  14. ????public?void?setName(String?name)?{??
  15. ????????this.name?=?name;??
  16. ????}??
  17. }??

?

3.在web.xml文件中进行XFire拦截配置,可参照官网提供的sample。

Xml代码 ?

收藏代码

  1. <?xml?version="1.0"?encoding="UTF-8"?>??
  2. <web-app?version="2.4"?xmlns="http://java.sun.com/xml/ns/j2ee"??
  3. ???xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
  4. ???xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee???
  5. ???http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">??
  6. ??
  7. <servlet>??
  8. ????<servlet-name>XFireServlet</servlet-name>??
  9. ????<servlet-class>??
  10. ????????org.codehaus.xfire.transport.http.XFireConfigurableServlet??
  11. ????</servlet-class>??
  12. </servlet>??
  13. <servlet-mapping>??
  14. ????<servlet-name>XFireServlet</servlet-name>??
  15. ????<url-pattern>/servlet/XFireServlet/*</url-pattern>??
  16. </servlet-mapping>??
  17. <servlet-mapping>??
  18. ????<servlet-name>XFireServlet</servlet-name>??
  19. ????<url-pattern>/services/*</url-pattern>??
  20. </servlet-mapping>??
  21. </web-app>??

?4.在class目录下建立META-INF目录,如(META-INF>xifre->services.xml),
??? 在services.xml文件中进行webservice服务的发布,可参照官网提供的sample。?

Xml代码 ?

收藏代码

  1. <?xml?version="1.0"?encoding="UTF-8"?>??
  2. <beans?xmlns="http://xfire.codehaus.org/config/1.0">??
  3. <service>??
  4. ????<name>HelloService</name>??
  5. ????<serviceClass>com.test.service.IHelloService</serviceClass>??
  6. ????<implementationClass>com.test.service.HelloService</implementationClass>??
  7. </service>??????
  8. </beans>??

?

5.将xfire的Jar包和相关依赖包拷到系统应用中,在Tomcat下部署应用。
?? 启动tomcat后访问服务(需在应用后加上/services,webservice才会进行拦截):
?? 例:http://localhost:8080/ws2/services。(IE下有时无法显示列表,可用其它浏览器显示或指定接口名称)
?? 界面如下:???

?

?点击后查看详细的wsdl文档,不同的浏览器下访问会有区别,展示效果不一致。

?

?

?? 二.建立XFire客户端进行调用

??

??? 1.本地客户端调用,与webservice服务在同一应用。

Java代码 ?

收藏代码

  1. package?com.test.client;??
  2. ??
  3. import?java.net.MalformedURLException;??
  4. import?org.codehaus.xfire.XFireFactory;??
  5. import?org.codehaus.xfire.client.XFireProxyFactory;??
  6. import?org.codehaus.xfire.service.Service;??
  7. import?org.codehaus.xfire.service.binding.ObjectServiceFactory;??
  8. import?com.test.service.IHelloService;??
  9. import?com.test.service.bean.User;??
  10. ??
  11. public?class?ClientTest?{??
  12. ????public?static?void?main(String?args[])?throws?MalformedURLException?{??
  13. ????????Service?service?=?new?ObjectServiceFactory().create(IHelloService.class);??
  14. ????????XFireProxyFactory?factory?=?new?XFireProxyFactory(XFireFactory??
  15. ????????????????.newInstance().getXFire());??
  16. ????????String?url?=?"http://localhost:8080/ws2/services/HelloService";??
  17. ????????IHelloService?helloService?=?(IHelloService)?factory.create(service,url);??
  18. ????????System.out.println(helloService.sayHello("张三"));??
  19. ????????User?user?=?new?User();??
  20. ????????user.setName("张三");??
  21. ????????System.out.println(helloService.getUser(user).getName());??
  22. ????}??
  23. }??

?
???? 执行结果如下:

Java代码 ?

收藏代码

  1. Hello,?张三??
  2. new:张三??

?

?? 2. 利用XFire创建build.xml文件生成客户端代码调用webservice服务

??

??? ?2.1在src目录下创建build.properties文件,配置如下:

Java代码 ?

收藏代码

  1. src.dir=${basedir}??
  2. lib.dir=D:/myspace/ws2/WebRoot/WEB-INF/lib??
  3. wsdl.dir=http://localhost:8080/ws2/services/HelloService?wsdl??

?

??? ?2.2在src目录下创建build.xml文件,配置如下:

Xml代码 ?

收藏代码

  1. <?xml?version="1.0"?encoding="UTF-8"?>??
  2. <project?name="WebService"?basedir="."?default="gen-webservice">??
  3. ????<property?file="build.properties"></property>??
  4. ????<path?id="project-classpath">??
  5. ????????<fileset?dir="${lib.dir}">??
  6. ????????????<include?name="**/*.jar"?/>???
  7. ????????</fileset>??
  8. ????</path>??
  9. ??
  10. ????<target?name="gen-webservice">??
  11. ????????<taskdef?name="wsgen"?classname="org.codehaus.xfire.gen.WsGenTask"???
  12. ?????????????????????????????????????????????classpathref="project-classpath"?/>??
  13. ????????<wsgen?outputDirectory="${src.dir}"??wsdl="${wsdl.dir}"???
  14. ????????????????????package="stub.test.client"?overwrite="true"/>??????????
  15. ????</target>??
  16. </project>??

????

?????用ant构建生成代码,生成后的目录如下:

?

?

?

???? 2.3编写客户端代码进行调用

Java代码 ?

收藏代码

  1. package?com.test.client;??
  2. import?stub.test.client.HelloServiceClient;??
  3. import?stub.test.client.HelloServicePortType;??
  4. import?com.test.service.bean.ObjectFactory;??
  5. import?com.test.service.bean.User;??
  6. ??
  7. public?class?HelloServiceTest?{??
  8. ??
  9. ????public?static?void?main(String?args[]){??
  10. ????????HelloServiceClient?service?=?new?HelloServiceClient();????????
  11. ????????HelloServicePortType?portType?=?service.getHelloServiceHttpPort();????????????
  12. ????????System.out.println(portType.sayHello("张三"));??
  13. ??????????
  14. ????????ObjectFactory?factory?=?new?ObjectFactory();??????????
  15. ????????User?user?=?factory.createUser();??
  16. ????????user.setName(factory.createUserName("张三"));??
  17. ????????System.out.println(portType.getUser(user).getName().getValue());??
  18. ????}??
  19. }??

?

??? 执行结果如下:

Java代码 ?

收藏代码

  1. Hello,?张三??
  2. new:张三?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读