1、下载xFire:
包含了api 手册、例子、相关jar等。
下载地址 http://xfire.codehaus.org/Download
2、新建一个web项目,然后创建2个java文件:
注意,必须使用接口。
HelloImpl.java:
package test;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.codehaus.xfire.transport.http.XFireServletController;
import org.json.JSONException;
import org.json.JSONStringer;
public class HelloImpl implements IHello {
public String hello() {
return "hello";
}
public String helloTo(String name) {
return " hello " + name + "!";
}
private void example() {
// 使用session
HttpServletRequest request = XFireServletController.getRequest();
HttpSession session = request.getSession();
}
public String getJsonData(String pageIndex, String pageSize) {
String rtnValue = "";
rtnValue = "";
for (int i = 0; i < Integer.parseInt(pageSize); i++) {
rtnValue = rtnValue + "{'lastname': 'last" + pageIndex + "-" + i
+ "', 'firstname': 'first" + pageIndex + "-" + i + "' },";
}
rtnValue = rtnValue + "{'lastname': 'last', 'firstname': 'last' }";
rtnValue = "{'context':["
+ rtnValue
+ "],'pager':[{'totalRecord':'100','totalpage':'10','pageIndex':'"
+ pageIndex + "','pageSize':'10'}]}";
return rtnValue;
}
}
IHello.java:
package test;
public interface IHello {
public String hello();
public String helloTo(String name);
public String getJsonData(String pageIndex, String pageSize);
}
3、解压缩xfire-distribution-1.2.6.zip,把xfire-1.2.6\modules\*.jar 、xfire-1.2.6\lib\*.jar拷贝到项目的lib文件夹下;
4、创建配置文件:
新建WEB-INF/applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="testBean" class="test.HelloImpl"></bean>
</beans>
xfire使用spring1.2.6,注意此处xml定义。
修改WEB-INF/web.xml,增加如下内容:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
WEB-INF/applicationContext*.xml,
classpath:org/codehaus/xfire/spring/xfire.xml
</param-value>
</context-param>
<!-- 启动时加载SpringContextServlet -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.util.IntrospectorCleanupListener
</listener-class>
</listener>
<!-- XFire 配置 -->
<servlet>
<servlet-name>xfire</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xfire</servlet-name>
<url-pattern>*.ws</url-pattern>
</servlet-mapping>
注意红色部分,必须填写。
新建WEB-INF/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
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/testService.ws">
<ref bean="test" />
</entry>
</map>
</property>
</bean>
<bean id="test" parent="webService"
class="org.codehaus.xfire.spring.remoting.XFireExporter">
<property name="serviceBean">
<ref bean="testBean" />
</property>
<property name="serviceClass">
<value>test.IHello</value>
</property>
</bean>
<!-- webService base -->
<bean id="webService"
class="org.codehaus.xfire.spring.remoting.XFireExporter"
abstract="true">
<property name="serviceFactory">
<ref bean="xfire.serviceFactory" />
</property>
<property name="xfire">
<ref bean="xfire" />
</property>
</bean>
</beans>
5、
启动服务,访问:http://localhost:8080/xxx/testService.ws?wsdl
可以看到wsdl页面。
6、客户端调用:
package client;
import java.net.MalformedURLException;
import java.net.URL;
import org.codehaus.xfire.client.Client;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
new Test().say();
}
public void say() {
Client client;
try {
client = new Client(new URL(
"http://localhost:8080/xFire/testService.ws?wsdl"));
// 第一个参数是方法名,后面的参数是需要传入的参数
Object[] results = client.invoke("helloTo",
new Object[] { "xxxxxx" });
System.out.println((String) results[0]);
results = client.invoke("getJsonData",
new Object[] { "2","3" });
System.out.println((String) results[0]);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
总结:
实用xfire必须基于接口编成。
xfire使用spring1.2.6,注意bean配置文件声明,没有特殊要求最好不要升级spring版本。
问题:
1、如何使用spring2.0整合xfire;
2、xfire客户端依赖那些jar;
3、如何用ant、xfire插件声称客户端