[转自] http://clq9761.iteye.com/blog/1261963

XFire创建WebService实例应用

XFire使得在JavaEE应用中发布Web服务变得轻而易举。和其他Web服务引擎相比,

  XFire的配置非常简单,可以非常容易地和Spring集成。

  下载地址:http://xfire.codehaus.org/Download

一. 使用XFire发布WebService

   1. 创建service接口

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

2.创建Service接口的实现类

  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. }
  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。

  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. <servlet>
  7. <servlet-name>XFireServlet</servlet-name>
  8. <servlet-class>
  9. org.codehaus.xfire.transport.http.XFireConfigurableServlet
  10. </servlet-class>
  11. </servlet>
  12. <servlet-mapping>
  13. <servlet-name>XFireServlet</servlet-name>
  14. <url-pattern>/servlet/XFireServlet/*</url-pattern>
  15. </servlet-mapping>
  16. <servlet-mapping>
  17. <servlet-name>XFireServlet</servlet-name>
  18. <url-pattern>/services/*</url-pattern>
  19. </servlet-mapping>
  20. </web-app>

 4.在class目录下建立META-INF目录,如(META-INF>xifre->services.xml),

    在services.xml文件中进行webservice服务的发布,可参照官网提供的sample。 

  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服务在同一应用。

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

执行结果如下:

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

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

  

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

  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文件,配置如下:

  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. <target name="gen-webservice">
  10. <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask"
  11. classpathref="project-classpath" />
  12. <wsgen outputDirectory="${src.dir}"  wsdl="${wsdl.dir}"
  13. package="stub.test.client" overwrite="true"/>
  14. </target>
  15. </project>

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

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

  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. public class HelloServiceTest {
  7. public static void main(String args[]){
  8. HelloServiceClient service = new HelloServiceClient();
  9. HelloServicePortType portType = service.getHelloServiceHttpPort();
  10. System.out.println(portType.sayHello("张三"));
  11. ObjectFactory factory = new ObjectFactory();
  12. User user = factory.createUser();
  13. user.setName(factory.createUserName("张三"));
  14. System.out.println(portType.getUser(user).getName().getValue());
  15. }
  16. }

执行结果如下:

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

XFire创建WebService实例应用的更多相关文章

  1. MyEclipse下XFire开发Webservice实例

    XFire Java SOAP框架概述 (摘自:http://tech.it168.com/j/e/2006-10-28/200610281432707.shtml )     MyEclipse W ...

  2. [转]Axis2创建WebService实例

    以下文章来自http://clq9761.iteye.com/blog/976029,作者clq9761 一.Axis2的下载和安装 1.可从http://ws.apache.org/axis2/ 下 ...

  3. Axis2创建WebService实例

      一.Axis2的下载和安装 1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本:      可以下载如下两个zip包:      axis2-1.5.4-bi ...

  4. 使用C#创建WebService实例

    新增WebService专案 更改服务程式名称 重命名程式名称 Service1.asmx 修改为 TestService.asmx 此时下面的cs代表文件也会跟着修改,但可发现,代码中的类名并没有跟 ...

  5. 创建webservice实例

    http://blog.csdn.net/haiyanstudent/article/details/32148207

  6. 如何使用C#创建WebService

    使用C#创建WebService,服务端的webservice是必须,中间的soap,Xml我们不用去关心.下面是使用C#创建WebService的简单介绍. AD:51CTO技术沙龙 | 赋予APP ...

  7. 一个php创建webservice,并通过c#调用的真实实例

    最近需要用php创建webservice供C#和JAVA来调用,通过3天的搜索和尝试,终于成功在C#下调用,JAVA的调用还没开始,为防止忘记,在这里记录下来全过程. 本文参考了许多文章,文中也采用了 ...

  8. 一个php创建webservice,并通过c#调用的真实实例(转)

    https://www.cnblogs.com/sequh/archive/2015/09/18/4819832.html 最近需要用php创建webservice供C#和JAVA来调用,通过3天的搜 ...

  9. Java中WebService实例

    Web Services是由企业公布的完毕其特定商务需求的在线应用服务,其它公司或应用软件可以通过Internet来訪问并使用这项在线服务. Web Service的关键技术和规则: 1.XML:描写 ...

随机推荐

  1. 8.INSERT INTO 语句 UPDATE 语句

    1. INSERT INTO 语句 INSERT INTO 语句用于向表格中插入新的行. 语法 INSERT INTO 表名称 VALUES (值1, 值2,....) INSERT INTO Per ...

  2. 洛谷P2569 [SCOI2010]股票交易

    P2569 [SCOI2010]股票交易 题目描述 最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,lxhgww预测到了未来T天内某只股 ...

  3. ESP8266文档阅读ESP8266 SDK 入门指南

    ESP8266 SDK  入门指南 1.概述 1.2.ESP8266 HDK 1.3.ESP8266 SDK 1.4.ESP8266 FW 1.5.ESP8266 工具集 2.1.开发板方案 3.软件 ...

  4. Reading——The Non-Designer's Design Book

    看这本书的时候真的好恨没有CS7在手><,不然我百度几张图来模拟下,体验下设计的快感. 人们总是很容易注意到在他们潜意识里存在的东西,比如说这个图:    我们很容易联想到微信,但是3   ...

  5. New for ASP.NET Web Pages: Conditional attributes

    from:http://www.mikepope.com/blog/AddComment.aspx?blogid=2353 March 01, 2012 The beta release of ASP ...

  6. Linq to SQL Like Operator

    As a response for customer's question, I decided to write about using Like Operator in Linq to SQL q ...

  7. 代理(Proxy)模式

    代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的反问. * 抽象主题角色(Subject):声明了真实主题和代理主题的共同接口,这样一来在任何使用真实主题的地方都可以使用代理主题. * ...

  8. 完美解决bootstrap模态框允许拖动后拖出边界的问题

    使用bootstrap3版本 在网上看了很多方法,我觉得jquery-ui的实现方法是最简单有效的,具体实现方法 1.下载并引入jquery-ui插件 2.全局添加模态框允许拖动事件 $(docume ...

  9. RobotFramework添加自定义关键字实战

    背景: 此篇文章是上一篇博客python的requests库怎么发送带cookies的请求的后续,上一篇只是使用python脚本调试通过了,接下来要把我们的方法封装为关键字,在RF中调用. 实施: 一 ...

  10. linux 建议锁和强制锁

    作为APUE 14.3节的参考 linux是有强制锁的,但是默认不开启.想让linux支持强制性锁,不但在mount的时候需要加上-o mand,而且对要加锁的文件也需要设置相关权限. .       ...