天天看点

xfire 与Spring完整集成实例(WebService)

//首先打开Myeclipse8.x以上版本..因为我这里共享那些xfire 项目所需要的jar都是Myeclipse自带添加的,所以要求大家伙准备好myeclipse8.x或者更高版本的..这里是spring2.0与xfire1.2整合..废话少说..转正正传..
 
1.打开Myeclipse--->new project-->项目名随便吧..最好是有意义的名称..看起来比较舒服..
 
2--配置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">
 
  <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContext.xml,classpath:org/codehaus/xfire/spring/xfire.xml</param-value>
  </context-param>
 
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
 
   <listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
  <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>/services/*</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
       
  3.配置applicationContext.xml
           
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
 http://www.springframework.org/schema/aop
 http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
 http://www.springframework.org/schema/tx
 http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
 http://www.springframework.org/schema/jee
 http://www.springframework.org/schema/jee/spring-jee-2.0.xsd"
 default-autowire="byName" default-lazy-init="true"
 >
 <import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>
 <import resource="xfire-servlet.xml"/>
</beans>
       
  4.配置xfire-servlet.xml //为了不给大家伙困扰.所以我这里用那个就打开那个配置..
           
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- 
<bean id="HellWorldSimple" class="org.codehaus.xfire.spring.ServiceBean">
<property name="name">
<value>HelloWorldSimple</value>
</property>
<property name="namespace">
<value>http://service.core.xfire.com</value>
</property>
<property name="serviceClass">
<value>com.xfire.core.service.IHelloWorld</value>
</property>
<property name="serviceBean">
<ref bean="HellWorldSimple"/>
</property>
</bean>
-->
 
<!-- 
 <bean id="MyHandle" class="org.codehaus.xfire.spring.ServiceBean">
<property name="name">
<value>MyHandle</value>
</property>
<property name="namespace">
<value>http://service.core.xfire.com</value>
</property>
<property name="serviceClass">
<value>com.xfire.core.handler.MyHandlerImpl</value>
</property>
<property name="serviceBean">
<ref bean="MyHandle"/>
</property>
</bean>
 -->
 
 
<bean id="UserInfoService" class="org.codehaus.xfire.spring.ServiceBean">
<property name="name">
<value>UserInfo</value>
</property>
<property name="namespace">
<value>http://service.core.xfire.com/UserInfoService</value>
</property>
<property name="serviceClass">
<value>com.xfire.core.service.IUserInfoService</value>
</property>
<property name="serviceBean">
<ref bean="UserInfoService"/>
</property>
</bean>
 
 
<!--  
   <bean id="ApplictionException" class="org.codehaus.xfire.spring.ServiceBean">
<property name="name">
<value>ApplictionException</value>
</property>
 
<property name="namespace">
<value>http://service.core.xfire.com/IMyExceptionSevice</value>
</property>
 
<property name="serviceClass">
<value>com.xfire.core.service.IMyExceptionSevice</value>
</property>
 
<property name="serviceBean">
<ref bean="ApplictionException"/>
</property>
</bean>
-->
 
 
 
 <!--  
   <bean id="IServiceMap" class="org.codehaus.xfire.spring.ServiceBean">
<property name="name">
<value>AddressService</value>
</property>
 
<property name="namespace">
<value>http://service.core.xfire.com/IServiceMap</value>
</property>
 
<property name="serviceClass">
<value>com.xfire.core.service.IServiceMap</value>
</property>
 
<property name="serviceBean">
<ref bean="IServiceMap"/>
</property>
</bean>
 
-->
 
 
</beans>
 
       
  5.xfire-servlet.xml配置
           
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<!--
   在没整合spring之前的xfire是这样的配置
 当要整合spring之后的这句代码复制到service 节点
 xmlns="http://xfire.codehaus.org/config/1.0"
 <beans xmlns="http://xfire.codehaus.org/config/1.0">
 -->
<service xmlns="http://xfire.codehaus.org/config/1.0">
 
 
 <name>UserInfo</name>
 <namespace>http://service.core.xfire.com</namespace>
 <serviceClass>com.xfire.core.service.IUserInfoService</serviceClass>
 <implementationClass>com.xfire.core.service.impl.UserInfoServiceImpl
 </implementationClass>
 <scope>request</scope>
 
 
<!-- 
<name>HelloWorldSimple</name>
<namespace>http://service.core.xfire.com</namespace>
<serviceClass>com.xfire.core.service.IHelloWorld</serviceClass>
<implementationClass>com.xfire.core.service.impl.HelloWorldImpl</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>request</scope>
-->
 
<!--  
<name>MyHandle</name>
<namespace>http://service.core.xfire.com</namespace>
<serviceClass>com.xfire.core.handler.IMyHandler</serviceClass>
<implementationClass>com.xfire.core.handler.MyHandlerImpl</implementationClass>
<scope>application</scope>
 -->
 <!-- 
<name>ServiceMap</name>
<namespace>http://service.core.xfire.com</namespace>
<serviceClass>com.xfire.core.service.IServiceMap</serviceClass>
<implementationClass>com.xfire.core.service.impl.ServiceMapImpl
</implementationClass>
<scope>request</scope>
 -->
 
 
 
<!-- 
<name>ApplictionException</name>
<namespace>http://service.core.xfire.com</namespace>
<serviceClass>com.xfire.core.service.IMyExceptionSevice</serviceClass>
<implementationClass>com.xfire.core.service.impl.MyExceptionSeviceImpl</implementationClass>
<scope>request</scope>
-->
 
 
 
</service>
</beans>
       
实现代码..首先新建一个实体类UseInfor package com.xfire.core.entity;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** *@author jilongliang *@Date 2012-2-29 */
 @ SuppressWarnings("all")public class UserInfo implements Serializable {
	private Integer identifier;
	private String address;
	private String city;
	private String proivice;
	public Integer getIdentifier() {
		return identifier;
	}
	public void setIdentifier(Integer identifier) {
		this.identifier = identifier;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getProivice() {
		return proivice;
	}
	public void setProivice(String proivice) {
		this.proivice = proivice;
	}
	public String getCountry() {
		return country;
	}
	public void setCountry(String country) {
		this.country = country;
	}
	public String getPostCode() {
		return postCode;
	}
	public void setPostCode(String postCode) {
		this.postCode = postCode;
	}
	public String[]getArrary() {
		return arrary;
	}
	public void setArrary(String[]arrary) {
		this.arrary = arrary;
	}
	public List < Integer > getList() {
		return list;
	}
	public void setList(List < Integer > list) {
		this.list = list;
	}
	public Map < Integer,
	InnerClass > getMap() {
		return map;
	}
	public void setMap(Map < Integer, InnerClass > map) {
		this.map = map;
	}
	public boolean isExist() {
		return isExist;
	}
	public void setExist(boolean isExist) {
		this.isExist = isExist;
	}
	public InnerClass getInner() {
		return inner;
	}
	public void setInner(InnerClass inner) {
		this.inner = inner;
	}
	private String country;
	private String postCode;
	private String[]arrary;
	private List < Integer > list;
	private Map < Integer,
	InnerClass > map;
	private boolean isExist;
	private InnerClass inner;
	public UserInfo() {
		list = new ArrayList < Integer > ();
		list.add(1);
		list.add(2);
		list.add(3);
		map = new HashMap < Integer,
		InnerClass > ();
		map.put(1, new InnerClass("a"));
		map.put(2, new InnerClass("b"));
		map.put(3, new InnerClass("c"));
		inner = new InnerClass();
		inner.setInnerName("服务器地址: Address InnerClass");
	}
	 @ Override public String toString() {
		return "Address [address=" + address + ", arrary=" + Arrays.toString(arrary) + ", city=" + city + ", country=" + country + ", identifier=" + identifier + ", inner=" + inner + ", isExist=" + isExist + ", list=" + list + ", map=" + map + ", postCode=" + postCode + ", proivice=" + proivice + "]";
	}
}
//----内置实体类 
package com.xfire.core.entity;
import java.io.Serializable;
/**
  *@Project 
  *@author jilongliang 
  *@Date 2012-2-29 
  *@Class InnerClass.java 
  */
 @ SuppressWarnings("all")public class InnerClass implements Serializable {
	private String innerName = "static InnerClass";
	public String getInnerName() {
		return innerName;
	}
	public void setInnerName(String innerName) {
		this.innerName = innerName;
	}
	public InnerClass() {}

	public InnerClass(String innerName) {
		super();
		this.innerName = innerName;
	}
}
//其次一个接口类 :

package com.xfire.core.service;
import java.util.List;
import com.xfire.core.entity.UserInfo;
/** 
 *@author jilongliang
 *@Date 2012-2-29
 */
public interface IUserInfoService {
	public List < UserInfo > getAddressList();
	public List < UserInfo > setAddresses(List < UserInfo > list);
}

//然后新建一个实现类去实现接口 

package com.xfire.core.service.impl;
import java.util.ArrayList;
import java.util.List;
import com.xfire.core.entity.UserInfo;
import com.xfire.core.service.IUserInfoService;
/** 
 *@author jilongliang
 *@Date 2012-2-29
 */
public class UserInfoServiceImpl implements IUserInfoService {
	private int requestCount = 0;
	public List < UserInfo > getAddressList() {
		requestCount++;
		System.out.println("requestCount" + requestCount);
		List < UserInfo > listAdd = new ArrayList < UserInfo > ();
		UserInfo address = new UserInfo();
		address.setIdentifier(1);
		address.setCountry("中國");
		address.setProivice("廣東省");
		address.setCity("陽江");
		address.setAddress("廣東陽春");
		address.setPostCode("1111111");
		address.setExist(false);
		address.setArrary(new String[]{
			"22",
			"23",
			"24"
		});
		listAdd.add(address);
		address.setIdentifier(2);
		address.setCountry("中國");
		address.setProivice("廣東省");
		address.setCity("陽江");
		address.setAddress("廣東陽春");
		address.setPostCode("1111111");
		address.setExist(false);
		address.setArrary(new String[]{
			"a",
			"b",
			"c"
		});
		listAdd.add(address);
		return listAdd;
	}
 
	public List < UserInfo > setAddresses(List < UserInfo > list) {
		requestCount++;
		System.out.println("requestCount" + requestCount);
		return list;
	}
}
//客户端 
package com.xfire.core.client;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import com.xfire.core.entity.UserInfo;
import com.xfire.core.service.IUserInfoService;
/** 
 *@author jilongliang *
 @Date 2012-3-5 * 
 */
public class UserInfoClient {
	public static void main(String[]args) {
		getServiceList();
		setServiceList();
	}
	static String url = "http://localhost:8081/xfire/services/UserInfo";
	public static void getServiceList() {
		Service service = new ObjectServiceFactory().create(IUserInfoService.class);
		try {
			IUserInfoService iAddressService = (IUserInfoService)new XFireProxyFactory().create(service, url);
			List < UserInfo > list = (ArrayList < UserInfo > )iAddressService.getAddressList();
			System.out.println("一共多少条数据:" + list.size());
			for (Iterator < UserInfo > iter = list.iterator(); iter.hasNext(); ) {
				UserInfo a = iter.next();
				System.out.println(a);
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
	}
	public static void setServiceList() {
		Service service = new ObjectServiceFactory().create(IUserInfoService.class);
		try {
			IUserInfoService iAddressService = (IUserInfoService)new XFireProxyFactory().create(service, url);
			List < UserInfo > listAdd = new ArrayList < UserInfo > ();
			UserInfo address = new UserInfo();
			address.setIdentifier(1);
			address.setCountry("中國");
			address.setProivice("廣東省");
			address.setCity("陽江");
			address.setAddress("廣東陽春");
			address.setPostCode("1111111");
			address.setExist(false);
			address.setArrary(new String[]{
				"22",
				"23",
				"24"
			});
			listAdd.add(address);
			address.setIdentifier(2);
			address.setCountry("中國");
			address.setProivice("廣東省");
			address.setCity("陽江");
			address.setAddress("廣東陽春");
			address.setPostCode("1111111");
			address.setExist(false);
			address.setArrary(new String[]{
				"a",
				"b",
				"c"
			});
			listAdd.add(address);
			List < UserInfo > returnAdd = iAddressService.setAddresses(listAdd);
			System.out.println("总数:" + returnAdd);
			for (Iterator < UserInfo > it = returnAdd.iterator(); it.hasNext(); ) {
				UserInfo address2 = it.next();
				System.out.println(address2);
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
	}
}
           

图解----

xfire 与Spring完整集成实例(WebService)
xfire 与Spring完整集成实例(WebService)
xfire 与Spring完整集成实例(WebService)
xfire 与Spring完整集成实例(WebService)
xfire 与Spring完整集成实例(WebService)
xfire 与Spring完整集成实例(WebService)
xfire 与Spring完整集成实例(WebService)
xfire 与Spring完整集成实例(WebService)
xfire 与Spring完整集成实例(WebService)
xfire 与Spring完整集成实例(WebService)
xfire 与Spring完整集成实例(WebService)

电子书下载http://download.csdn.net/detail/l_ji_l/4116804

源代码下载:http://download.csdn.net/detail/l_ji_l/4116788