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接口的实现类
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;
class User {
private String id;
private String name;
public String getId() {
return id;
void setId(String id) {
this.id = id;
public String getName() {
return name;
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-class org.codehaus.xfire.transport.http.XFireConfigurableServlet
- servlet-mappingurl-pattern>/servlet/XFireServlet/*>/services/*web-app>
4.在class目录下建立meta-inf目录,如(meta-inf>xifre->services.xml),
在services.xml文件中进行webservice服务的发布,可参照官网提供的sample。
beans xmlns="http://xfire.codehaus.org/config/1.0"servicename>HelloServiceserviceClass>com.test.service.IHelloServiceimplementationClass>com.test.service.HelloService>
beans 5.将xfire的jar包和相关依赖包拷到系统应用中,在Tomcat下部署应用。
启动tomcat后访问服务(需在应用后加上/services,webservice才会进行拦截):
例:http://localhost:8080/ws2/services。(IE下有时无法显示列表,可用其它浏览器显示或指定接口名称)
界面如下:
启动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;
class ClientTest {
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 = 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文件,配置如下:
project name="WebService" basedir="." default="gen-webservice"property file="build.properties">propertypath id="project-classpath" fileset dir="${lib.dir}" include name="**/*.jar" />
fileset pathtarget 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"/>
targetproject
import stub.test.client.HelloServiceClient;
import stub.test.client.HelloServicePortType;
import com.test.service.bean.ObjectFactory;
class HelloServiceTest {
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());
执行结果如下:
new:张三
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。