XFire创建WebService实例应用
[转自] http://clq9761.iteye.com/blog/1261963
XFire创建WebService实例应用
XFire使得在JavaEE应用中发布Web服务变得轻而易举。和其他Web服务引擎相比,
XFire的配置非常简单,可以非常容易地和Spring集成。
下载地址:http://xfire.codehaus.org/Download。
一. 使用XFire发布WebService
1. 创建service接口
- 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接口的实现类
- 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;
- }
- }
- 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 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 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服务在同一应用。
- 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());
- }
- }
执行结果如下:
- Hello, 张三
- new:张三
2. 利用XFire创建build.xml文件生成客户端代码调用webservice服务
2.1在src目录下创建build.properties文件,配置如下:
- src.dir=${basedir}
- lib.dir=D:/myspace/ws2/WebRoot/WEB-INF/lib
- wsdl.dir=http\://localhost\:8080/ws2/services/HelloService?wsdl
2.2在src目录下创建build.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编写客户端代码进行调用
- 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());
- }
- }
执行结果如下:
- Hello, 张三
- new:张三
XFire创建WebService实例应用的更多相关文章
- MyEclipse下XFire开发Webservice实例
XFire Java SOAP框架概述 (摘自:http://tech.it168.com/j/e/2006-10-28/200610281432707.shtml ) MyEclipse W ...
- [转]Axis2创建WebService实例
以下文章来自http://clq9761.iteye.com/blog/976029,作者clq9761 一.Axis2的下载和安装 1.可从http://ws.apache.org/axis2/ 下 ...
- Axis2创建WebService实例
一.Axis2的下载和安装 1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本: 可以下载如下两个zip包: axis2-1.5.4-bi ...
- 使用C#创建WebService实例
新增WebService专案 更改服务程式名称 重命名程式名称 Service1.asmx 修改为 TestService.asmx 此时下面的cs代表文件也会跟着修改,但可发现,代码中的类名并没有跟 ...
- 创建webservice实例
http://blog.csdn.net/haiyanstudent/article/details/32148207
- 如何使用C#创建WebService
使用C#创建WebService,服务端的webservice是必须,中间的soap,Xml我们不用去关心.下面是使用C#创建WebService的简单介绍. AD:51CTO技术沙龙 | 赋予APP ...
- 一个php创建webservice,并通过c#调用的真实实例
最近需要用php创建webservice供C#和JAVA来调用,通过3天的搜索和尝试,终于成功在C#下调用,JAVA的调用还没开始,为防止忘记,在这里记录下来全过程. 本文参考了许多文章,文中也采用了 ...
- 一个php创建webservice,并通过c#调用的真实实例(转)
https://www.cnblogs.com/sequh/archive/2015/09/18/4819832.html 最近需要用php创建webservice供C#和JAVA来调用,通过3天的搜 ...
- Java中WebService实例
Web Services是由企业公布的完毕其特定商务需求的在线应用服务,其它公司或应用软件可以通过Internet来訪问并使用这项在线服务. Web Service的关键技术和规则: 1.XML:描写 ...
随机推荐
- Apr编程
一.简介 http://www.xuebuyuan.com/2195578.html 二.教程 http://dev.ariel-networks.com/apr/
- 10、差异基因topGO富集
参考:http://www.biotrainee.com/thread-558-1-1.html http://bioconductor.org/packages/3.7/bioc/ http://w ...
- 618F Double Knapsack
传送门 题目大意 分析 代码 #include<iostream> #include<cstdio> #include<cstring> #include<s ...
- CSS3 grayscale滤镜图片变黑白
1. 使整个页面的图片都变成灰色的,代码如下. html{ font-size: 100%; -webkit-text-size-adjust: none; -ms-text-s ...
- 《Wonderland: A Novel Abstraction-Based Out-Of-Core Graph Processing System》章明星
在2018年3月28日于美国弗吉尼亚州威廉斯堡结束的ACM ASPLOS 2018会议上,计算机系高性能所师生发表了两篇长文.一篇是我系博士生章明星为第一作者,导师武永卫为通讯作者的“Wonderla ...
- .net Stream篇(六)
BufferedStream 目录: 简单介绍一下BufferedStream 如何理解缓冲区? BufferedStream的优势 从BufferedStream 中学习装饰模式 如何理解装饰模式 ...
- WebApi跨域问题解决
因为第一次用webapi,并且还是前后台分离,所以设置到了跨域,在百度上找了很多解决办法,但是基本都存在缺陷,我这里分享一下我自己的经验 1.首先配置Web.config 这样配置发布到服务器就可以跨 ...
- 做ETL的时候用到的数据同步更新代码
这里是用的从一个库同步到另一个库,代码如下 private void IncrementalSyncUpdate(string fromConn, string toConn, Dictionary& ...
- 多态实现的原理------新标准c++程序设计
“多态”的关键在于通过基类指针或引用调用一个虚函数时,编译时不确定到底调用的是基类还是派生类的函数,运行时才确定.例子: #include<iostream> using namespac ...
- Glib之GObject宏介绍
G_DEFINE_TYPE定义一个静态类型 /** * G_DEFINE_TYPE(`G_DEFINE_TYPE_WITH_CODE`比`G_DEFINE_TYPE`就是多了一个自定义代码参数_C_) ...