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插件声称客户端