今天整理了一下webservices xfire框架东东,下面当代码写出来,学习学习
1.项目用MYECLIPSE 建立,其中MYECLIPSE 中有自己的JAR xfire
activation-1.1.jar,commons-attributes-api-2.1.jar,commons-beanutils-1.7.0.jar,commons-codec-1.3.jar,commons-logging-1.0.4.jar,jaxen-1.1-beta-9.jar,jaxws-api-2.0.jar,jdom-1.0.jar,jsr173_api-1.0.jar,mail-1.4.jar,saaj-api-1.3.jar,saaj-impl-1.3.jar,spring-1.2.6.jar,stax-api-1.0.1.jar,wsdl4j-1.6.1.jar,wstx-asl-3.2.0.jar,xbean-2.2.0.jar,
xbean-spring-2.8.jar,xfire-aegis-1.2.6.jar,xfire-annotations-1.2.6.jar,xfire-core-1.2.6.jar,xfire-java5-1.2.6.jar,xfire-jaxws-1.2.6.jar,xfire-jsr181-api-1.0-M1.jar,xfire-spring-1.2.6.jar
2.服务端代码
服务端接口IBasic.java
package com.xfire;
import java.util.List;
import java.util.Map;
/***********************************************************************
*
* IBasic.java
* @copyright Copyright: 2009-2012
* @creator 周辉<br/>
* @create-time May 22, 2009 10:32:42 AM
* @revision $Id: *
***********************************************************************/
public interface IBasic {
/**
* 测试字符串
* @return
*/
public String hello();
/**
* 取一辆汽车 测试对象传递
* @return
*/
public Car getCar();
/**
* 取得list 数据
* @return
*/
public List<String> getList();
/**
* 取得map 数据
* @return
*/
public Map<String,String> getMap();
/**
* 保存数据
* @param map
*/
public void setMap(Map<String,Car> map);
/**
* 保存数据 javabean
* @param Car
*/
public void setCar(Car car);
/** 保存数据 list
*
* @param list
*/
public void setList(List<String> list);
/** 保存数据 map
*
* @param map
*/
public void setMap2(Map<String,String> map);
/** 保存数据 map
*
* @param map
*/
public void setList2(List<Car> list);
}
JAVA BEAN 代码 Car.java
package com.xfire;
import java.io.Serializable;
/***********************************************************************
*
* Car.java
* @copyright Copyright: 2009-2012
* @creator 周辉<br/>
* @create-time May 22, 2009 10:32:16 AM
* @revision $Id: *
***********************************************************************/
public class Car implements Serializable {
public Car(){
}
private String color;
private String length;
private String name;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getLength() {
return length;
}
public void setLength(String length) {
this.length = length;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
服务端实现类 BasicService.java
package com.xfire;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/***********************************************************************
*
* BasicService.java
* @copyright Copyright: 2009-2012
* @creator 周辉<br/>
* @create-time May 22, 2009 10:33:21 AM
* @revision $Id: *
***********************************************************************/
public class BasicService implements IBasic {
/**
* 取一辆汽车 测试对象传递
*
* @return
*/
public Car getCar() {
Car car = new Car();
car.setColor("RED红色");
car.setLength("2400");
car.setName("HAHACHE");
return car;
}
/**
* 测试字符串
*
* @return
*/
public String hello() {
return "hello zhouhui";
}
/**
* 取得list 数据
*
* @return
*/
public List<String> getList() {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
return list;
}
/**
* 取得map 数据
*
* @return
*/
public Map<String, String> getMap() {
Map<String, String> map = new HashMap<String, String>();
if (map.isEmpty()) {
map.put("1", "zhouhui1");
map.put("2", "zhouhui2");
map.put("3", "zhouhui3");
}
return map;
}
/**
* 保存数据
*
* @param map
*/
public void setMap(Map<String, Car> map) {
for (Map.Entry<String, Car> item : map.entrySet()) {
System.out.println("mapkey: " + item.getKey());
System.out.println("mapvalue: " + item.getValue().getColor());
System.out.println("mapvalue: " + item.getValue().getName());
}
}
/**
* 保存数据
* @param map
*/
public void setCar(Car car){
System.out.println("car: " + car.getColor());
System.out.println("car: " + car.getLength());
System.out.println("car: " + car.getName());
}
/** 保存数据 list
*
* @param list
*/
public void setList(List<String> list){
for (String s:list){
System.out.println("list: " + s);
}
}
/** 保存数据 map
*
* @param map
*/
public void setMap2(Map<String,String> map){
for (Map.Entry<String, String> item:map.entrySet()){
System.out.println("mapkey: " + item.getKey());
System.out.println("mapvalue: " + item.getValue());
}
}
/** 保存数据 map
*
* @param map
*/
public void setList2(List<Car> list){
for (Car c:list){
System.out.println("color: " + c.getColor());
System.out.println("name: " + c.getName());
System.out.println("length: " + c.getLength());
}
}
}
客户端测试代码
testClient.java
package com.xfire;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
/*******************************************************************************
*
* testClient.java
*
* @copyright Copyright: 2009-2012
* @creator 周辉<br/>
* @create-time May 22, 2009 10:34:14 AM
* @revision $Id: *
******************************************************************************/
public class testClient {
public static void main(String[] args) {
Service srvcModel = new ObjectServiceFactory()
.create(IBasic.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
String helloWorldURL = "http://localhost:8081/xfire/services/HelloService";
try {
IBasic basic = (IBasic) factory.create(srvcModel,
helloWorldURL);
// 客户端调用服务端list 数据
List<String> list =basic.getList();
for (String s :list){
System.out.println("list: " + s);
}
System.out.println("Hello: " + basic.hello());
System.out.println("car: " + basic.getCar().getName());
// 客户端调用服务端MAP 数据
Map<String,String> map =basic.getMap();
for(Map.Entry<String,String> item:map.entrySet()){
System.out.println("mapkey: " +item.getKey());
System.out.println("mapvalue: " +item.getValue());
}
// // 客户端向服务端发送数据
// Map<String,Car> map2 = new HashMap<String,Car>();
// if(map2.isEmpty()){
// Car c = new Car();
// c.setColor("red");
// c.setLength("111");
// c.setName("zhouhui");
// map2.put("1", c);
// map2.put("2", c);
// map2.put("3", c);
// }
// basic.setMap(map2);
//客户端向服务端发送数据 javabean
Car c = new Car();
c.setColor("red");
c.setLength("111");
c.setName("zhouhui");
basic.setCar(c);
//客户端向服务端发送数据 list
List<String> list4= new ArrayList<String>();
list4.add("zhouhui1");
list4.add("zhouhui4");
list4.add("zhouhui2");
list4.add("zhouhui5");
basic.setList(list);
//客户端向服务端发送数据 map
Map<String,String> map4= new HashMap<String,String>();
map4.put("1", "test1");
map4.put("2", "test2");
map4.put("3", "test3");
map4.put("4", "test4");
basic.setMap2(map4);
////客户端向服务端发送数据 list javabean
List<Car> list5= new ArrayList<Car>();
for (int i=0;i<4;i++){
Car c2= new Car();
c2.setColor("red");
c2.setLength(i+"");
c2.setName("zhouhui"+i);
list5.add(c2);
}
basic.setList2(list5);
// // 客户端向服务端发送数据
Map<String,Car> map2 = new HashMap<String,Car>();
for (int i=0;i<4;i++){
Car c24= new Car();
c24.setColor("red");
c24.setLength(i+"");
c24.setName("zhouhui"+i);
map2.put(i+"", c24);
}
basic.setMap(map2);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
其中用到MAP 传递JAVABEAN,所以要用到IBasic.aegis.xml
XXX.aegis.xml,其中IBasic 实现服务端接口名称
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<mapping>
<method name="setCar">
<parameter componentType="com.xfire.Car"/>
</method>
<method name="setMap">
<parameter index="0" keyType="java.lang.String" componentType="com.xfire.Car"/>
</method>
<method name="setList2">
<parameter index="0" componentType="com.xfire.Car"/>
</method>
</mapping>
</mappings>
需要传递服务端代码 <method name="setCar">setCar 对以接口方法名称
parameter 是借口中传递的参数 index 是参数的第几个位置 componentType 参数传递的类型
下面还有一个XML暴露接口和实现类的XML 文件
services.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>HelloService</name>
<serviceClass>com.xfire.IBasic</serviceClass>
<implementationClass>com.xfire.BasicService</implementationClass>
</service>
<!--
<service>
<name>FileService</name>
<serviceClass>test.IFileTransport</serviceClass>
<implementationClass>test.FileTransportimpl</implementationClass>
<scope>request</scope>
<properties>
<propertie key="mtom-enabled">true</propertie>
</properties>
</service>
-->
</beans>
其中name是发布该接口调用的名,serviceClass 是服务端暴露的接口
implementationClass是接口的实现类
web.xml 描述
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
好了可以发布程序了,用MYeclipse 发布TOMCAT 启动TOMCAT
客户端口运行testClient 调用服务端数据,同时发送客户端数据写入服务端,服务端控制台可以打印出记录。
一切OK了,详细代码可以参考附件
分享到:
相关推荐
webservices实现过程。这里采用的是XFire实现+tomcat
用MyEclipse+XFire开发Web Services实例,图文并茂,详细记录开发过程。
java使用xfire实现webServices接口调用(包括实现内部访问以及外部访问的方式)
这是一个完整的Xfire实现的java webservices 的demo,初学者可以很轻松的学会使用!
XFire开发Web Services 入门
XFire实现webServices源码,完整项目,直接可运行
该资源包括两个文件夹一个是webservices xfire框架的客户端,另一个是服务器端,该项目采用的是IDE环境自动生成的,使用的是myeclipse8.6,如果不想使用IDE环境生成就自己下载xfire相应的jar包然后导入,即可自己...
java xfire Webservices实例
J2me和WebServices相连过程使用xfire(一) 大部分的图形
J2me和WebServices相连过程使用xfire(二)
本文档主要描述xfire整合spring发布web services 绝对的真实可靠,按步骤操作一定成功
XFire与Spring组合发布webservices的几种方式实例,可以直接导入到环境运行
webservices使用
手动编写,利用xfire jar自动生成 wsdl,部署到tomcat等应用服务器,进而请求发布webservices
使用Myeclipse开发基于xfire的Web Services 入门,如何开发Web Services
xfire开发webservices相关jar包: xfire-aegis-1.2.6.jar xfire-annotations-1.2.6.jar xfire-core-1.2.6.jar xfire-java5-1.2.6.jar xfire-jsr181-api-1.0-M1.jar xfire-spring-1.2.6.jar xfire-xmlbeans-1.2.6.jar
Java中使用XFire开发简单的WebServices.pdf
一个用来演示webservices工作的代码工程,分为两部分,WebServices的服务端代码,部署在web服务器后,客户端代码可以用Client实例(设置好url参数)来调用部署在远程web服务器上的方法,也可以通过网页查看提供的...