读书人

xfire 编撰webservice例子

发布时间: 2012-07-25 09:43:05 作者: rapoo

xfire 编写webservice例子
来自 :
http://www.blogjava.net/jiujiubuzui/articles/293616.html


利用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 parent="webService" 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)

读书人网 >Web前端

热点推荐