您的位置:首页 > 编程语言 > Java开发

使用xfire+spring编写webservice例子

2011-09-22 16:25 471 查看
利用xfire编写webservice的例子,内容如下

1. xfire + spring 发布webservice

2. 利用 javascript 调用发布的webservice

使用xfire+spring发布webservice其实很简单,遵循一下几个步骤即可

1. 想要发布成文webservice的类,必须实现接口

2. 3个配置文件(后面详细说)

下面针对以上步骤详细说明

关于1中的要求,给个例子就明白了

Itest.java 代码

package test;

import org.json.JSONException;

public interface IHello

{
public String hello();

public String helloTo(String name);

public String getJsonData(String pageIndex,String pageSize);

}

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;

}
}

就这样写就可以了

关于三个配置文件

web.xml修改如下

xml 代码

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- 配置文件路径 开始 -->

<context-param>

<param-name>log4jConfigLocation</param-name>

<param-value>/WEB-INF/classes/log4j.properties</param-value>

</context-param>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>

/WEB-INF/classes/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.Log4jConfigListener</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>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

</welcome-file-list>

</web-app>

这里注意 classpath:org/codehaus/xfire/spring/xfire.xml 必须要写进去

xfire-servlet.xml 新建这个文件,并且和web.xml放在同一个文件夹

注意: 名称和位置都不能变(也许可以改,我不知道)

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 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>

spring 的配置文件 applicationContext-webService.xml
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>

查看wsdl http://localhost:8080/mootools/testService.ws?wsdl
运行 进入 index.html 页面,点击 即可执行调用,正常显示表示发布成功,调用失败会返回error(运行前请修改index.html文件的源码,将url修改成真正的url)

例子很简单,不过多解释,源码查看附件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: