xFire发布Web Service,并调用远程服务

1.创建接口类

public interface IMoviePack {
	public List<MoviesPackageDTO> getMoviesPackageList();
}

2.创建数据传输的dto类且 对外传输一定要使用setter/getter,否则远程取到的数据为空

且要实现serializable(跨网络数据传输)

/**
 * 
 * @author sanch
 * 数据传输要使用getter/setter  
 * 跨网络(远程)数据传输,实现接口serializable
 */
public class MoviesPackageDTO implements Serializable{
	private String  packageName;       //节目包名称,在节目注入前定义(应保证唯一)
	private double  originalPrice;     //包的原价
	private boolean IsCanbuy;         //是否可定购
	private String  appServices;      //一个节目包对应的app的服务名,用逗号作为分割符
	private String  description;      //包描述
}

3.写接口实现类

public class MoviesPackImpl implements IMoviePack {

	public List<MoviesPackageDTO> getMoviesPackageList() {
		
		List<MoviesPackageDTO> packs = new ArrayList<MoviesPackageDTO>();
		/** 创建伪数据**/
		MoviesPackageDTO pack1 = new MoviesPackageDTO();
		pack1.setPackageName("da chang jing");
		pack1.setOriginalPrice(38.5);
		
		MoviesPackageDTO pack2 = new MoviesPackageDTO();
		pack2.setPackageName("jack chen");
		pack2.setOriginalPrice(68.5);
		
		packs.add(pack1);
		packs.add(pack2);
		
		return packs;
	}

}

4.引入xFire架构的包

 

5.进行xFire框架发布Web Service服务

 在WEB-INF 下创建WETA-INF/xfire-->services.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans>
	 <service xmlns="http://xfire.codehaus.org/config/1.0">
		<name>PackSerive</name>
		<serviceClass>com.icss.boss.service.IMoviePack</serviceClass>
		<implementationClass>
			com.icss.boss.service.impl.MoviesPackImpl
		</implementationClass>
		<style>wrapped</style>
		<use>literal</use>
		<scope>application</scope>
	</service>
</beans>

6.web.xml 调用xFireservlet

<servlet>
    <servlet-name>XFireServlet</servlet-name>
    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

完成后就可以进行发布WEB SERVICE

启动tomcat

访问:http://localhost:8080/BossxFireMovisService

 

可以查看到wsdl-->文件

-----------------------------------------------------------------------------------------------------------------------------------------

步骤描述:

//编写web服务相关代码

1.建普通web项目;

2创建对外接口

3.实现对外接口

4.数据传输对象需要实现serilaizable接口

//发布web 服务

1.导入lib -->xfire相关包

2.在web 项目下建META-INF/xfire/ 文件

3.建services.xml文件 编写相关信息

4.在web.xml 定义xFireservlet

//校验web service服务是否发布成功

http://localhost:8080/BossxFireMovisService

http://localhost:8080/BossxFireMovisService/PackService?wsdl

 

===================================================================

打开新的myeclipse-->在新的workspace中创建普通的java项目/普通的web 项目

在该系统中调用远程的web service服务。模拟的是同构系统的web 服务调用 

1.复制接口类和传输数据类--》包名/类名/里面的内容一致

 2.引入xfire框架所需jar包

3创建远程调用实现

package com.icss.vod.biz;

import java.util.List;

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.icss.boss.service.IMoviePack;
import com.icss.boss.service.dto.MoviesPackageDTO;

public class MoviesBiz {
	
	public List<MoviesPackageDTO> showMovies() throws Exception{
		List<MoviesPackageDTO> packs = null;
		//配置远程服务的地址
		String remoteUrl = "http://localhost:8080/BossxFireMovisService/PackService";
		//建立远程服务地址----建立代理
		Service srvcModel = new ObjectServiceFactory().create(IMoviePack.class);
		//创建xfire的工厂对象
		XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
		//创建远程服务的本地代理
		IMoviePack service = (IMoviePack)factory.create(srvcModel, remoteUrl);
		//远程服务调用
		packs = service.getMoviesPackageList();
		return packs;
	}
}

 4测试

package com.icss.vod.ui;

import java.util.List;

import com.icss.boss.service.dto.MoviesPackageDTO;
import com.icss.vod.biz.MoviesBiz;

public class Test {

	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args)  {
		MoviesBiz biz = new MoviesBiz();
		try {
			List<MoviesPackageDTO> packs = biz.showMovies();
			for(MoviesPackageDTO pack : packs){
				System.out.println(pack.getPackageName()+"--"+pack.getOriginalPrice());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值