首先打开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 xfire
*@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;
}
/**
*
* @param list
* @return
*/
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();
}
}
}
图解----
子书下载
http://download.csdn.net/detail/l_ji_l/4116804
源代码下载:http://download.csdn.net/detail/l_ji_l/4116788