XFire创建WebService实例

  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:张三

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值