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();
}
}
}