[转自] 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. 12.Alias(别名)

    通过使用 SQL,可以为列名称和表名称指定别名(Alias). SQL Alias 表的 SQL Alias 语法 SELECT column_name(s) FROM table_name AS a ...

  2. Maven——继承和聚合

    实际项目中,可能正要构建一个大型的系统,但又不想一遍又一遍的重复同样的依赖元素,这种情况是经常出现的.不过还好,maven提供了继承机制,项目可以通过parent元素使用继承,可以避免这种重复.当一个 ...

  3. Alpha冲刺(三)

    Information: 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Details: 组员1(组长)柯奇豪 过去两天完成了哪些任务 ssm框架的使用并实现简单的数据处理 ...

  4. C# - dynamic 特性

    dynamic是FrameWork4.0的新特性.dynamic的出现让C#具有了弱语言类型的特性.编译器在编译的时候不再对类型进行检查,编译期默认dynamic对象支持你想要的任何特性. 比如,即使 ...

  5. .net IAsyncResult 异步操作

    //定义一个委托 public delegate int DoSomething(int count); //BeginInvoke 的回调函数 private static void Execute ...

  6. SynchronizationContext应用

    这个类的应用,官方的说明并不是很多,主要原因是因为微软又出了一些基于SynchronizationContext的类.比如:BackgroundWorker 大家写程序时经常碰到子线程调用UI线程的方 ...

  7. ASP.Net UpdatePanel控件 局部刷新 && 弹出提示信息

    参考博客: https://blog.csdn.net/qq_35019337/article/details/69972552 https://blog.csdn.net/huangyezi/art ...

  8. javascript 文件的操作

    js 文件的操作(ActiveXObject仅支持IE) 一.参数解释: 1. filename: filename //文件路径 2.iomode: var forReading=1;只读var f ...

  9. Jmeter_实现Excel文件导出到本地

    一般而言,对于页面的“导出”操作,主要经历如下两个操作:①根据数据库的内容,将文件导出到应用服务器上:②将服务器上的文件下载到本地电脑: Jmeter同LoadRunner类似,只能记录服务端与客户端 ...

  10. [agc014d] Black and White Tree

    Description ​ 有一颗n个点的树,刚开始每个点都没有颜色. ​ Alice和Bob会轮流对这棵树的一个点涂色,Alice涂白,Bob涂黑,Alice先手. ​ 若最后存在一个白点,使得这个 ...