Spring + axis2 开发 webservice
来源:互联网 发布:mac系统word怎么求和 编辑:程序博客网 时间:2024/05/17 12:20
1.下载 spring-framework-2.0.8.zip 和 axis2-1.5-war.zip 备用:
http://nchc.dl.sourceforge.net/project/springframework/springframework-2/2.0.8/spring-framework-2.0.8.zip
http://apache.etoak.com/ws/axis2/1_5/axis2-1.5-war.zip
2.新建一个web工程:ws-sample
解压pring-framework-2.0.8.zip 和 axis2-1.5-war.zip
将 spring.jar 和 axis2/WEB-INF/lib 里的jar包拷贝到 ws-sample/WebRoot/WEB-INF/lib/
打开ws-sample/WebRoot/WEB-INF/web.xml,增加配置:
Xml代码
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>新建一个JSP:/ws-sample/WebRoot/axis2-web/listServices.jsp
Jsp代码
<%@
page contentType="text/html;charset=UTF-8" language="java"
%><%@
page import="org.apache.axis2.Constants,
org.apache.axis2.description.AxisOperation,
org.apache.axis2.description.AxisService,
java.util.Collection,
java.util.HashMap,
java.util.Iterator"
%><html>
<head><title>List Services</title>
<style>
h2{margin:20 0 5 0;}
ul{margin-top:5;}
</style>
</head>
<body>
<h1>Available services</h1>
<%
HashMap serviceMap = (HashMap) request.getSession().getAttribute(Constants.SERVICE_MAP);
Collection servicecol = serviceMap.values();
if(servicecol.size()==0){%>Available services is Empty.<%}
for (Iterator iterator = servicecol.iterator(); iterator.hasNext();) {
AxisService axisService = (AxisService) iterator.next();
Iterator opItr = axisService.getOperations();
String serviceName = axisService.getName();
%>
<h2><font color="blue"><a href="<%=serviceName %>?wsdl" target="_blank"><%=serviceName%></a></font></h2>
<i>Available Operations</i>
<ul>
<%
while (opItr.hasNext()) {
AxisOperation axisOperation = (AxisOperation) opItr.next();
%><li><%=axisOperation.getName().getLocalPart()%></li><%
}
%>
</ul>
<%
}
%>
</body>
</html>
<%@
page contentType="text/html;charset=UTF-8" language="java"
%><%@
page import="org.apache.axis2.Constants,
org.apache.axis2.description.AxisOperation,
org.apache.axis2.description.AxisService,
java.util.Collection,
java.util.HashMap,
java.util.Iterator"
%><html>
<head><title>List Services</title>
<style>
h2{margin:20 0 5 0;}
ul{margin-top:5;}
</style>
</head>
<body>
<h1>Available services</h1>
<%
HashMap serviceMap = (HashMap) request.getSession().getAttribute(Constants.SERVICE_MAP);
Collection servicecol = serviceMap.values();
if(servicecol.size()==0){%>Available services is Empty.<%}
for (Iterator iterator = servicecol.iterator(); iterator.hasNext();) {
AxisService axisService = (AxisService) iterator.next();
Iterator opItr = axisService.getOperations();
String serviceName = axisService.getName();
%>
<h2><font color="blue"><a href="<%=serviceName %>?wsdl" target="_blank"><%=serviceName%></a></font></h2>
<i>Available Operations</i>
<ul>
<%
while (opItr.hasNext()) {
AxisOperation axisOperation = (AxisOperation) opItr.next();
%><li><%=axisOperation.getName().getLocalPart()%></li><%
}
%>
</ul>
<%
}
%>
</body>
</html>
部署至tomcat,然后访问:
http://localhost:8080/ws-sample/services/listServices
如果不出差错的话,可以看到 Available services is Empty
3.部署pojo服务
新建目录:ws-sample/WebRoot/WEB-INF/services/
将 axis2/WEB-INF/services/version.aar 拷贝至 ws-sample/WebRoot/WEB-INF/services/
刷新 http://localhost:8080/ws-sample/services/listServices
见到一个叫Version的服务,说明 version.aar 已成功部署
4.开发并部署基于 Spring ApplicationContex 的服务
创建接口:sample.weatherservice.service.IWeatherService
和类:
sample.weatherservice.bean.Weather
sample.weatherservice.service.impl.WeatherService
代码如下:
Java代码
//Weather.java
package sample.weatherservice.bean;
public class Weather {
float temperature;
String forecast;
boolean rain;
float howMuchRain;
public void setTemperature(float temp) {
temperature = temp;
}
public float getTemperature() {
return temperature;
}
public void setForecast(String fore) {
forecast = fore;
}
public String getForecast() {
return forecast;
}
public void setRain(boolean r) {
rain = r;
}
public boolean getRain() {
return rain;
}
public void setHowMuchRain(float howMuch) {
howMuchRain = howMuch;
}
public float getHowMuchRain() {
return howMuchRain;
}
}
//Weather.java
package sample.weatherservice.bean;
public class Weather {
float temperature;
String forecast;
boolean rain;
float howMuchRain;
public void setTemperature(float temp) {
temperature = temp;
}
public float getTemperature() {
return temperature;
}
public void setForecast(String fore) {
forecast = fore;
}
public String getForecast() {
return forecast;
}
public void setRain(boolean r) {
rain = r;
}
public boolean getRain() {
return rain;
}
public void setHowMuchRain(float howMuch) {
howMuchRain = howMuch;
}
public float getHowMuchRain() {
return howMuchRain;
}
}
Java代码
//IWeatherService.java
package sample.weatherservice.service;
import sample.weatherservice.bean.Weather;
public interface IWeatherService {
void setWeather(Weather w);
Weather getWeather();
}
//IWeatherService.java
package sample.weatherservice.service;
import sample.weatherservice.bean.Weather;
public interface IWeatherService {
void setWeather(Weather w);
Weather getWeather();
}Java代码
//WeatherService.java
package sample.weatherservice.service.impl;
import sample.weatherservice.bean.Weather;
import sample.weatherservice.service.IWeatherService;
public class WeatherService implements IWeatherService {
Weather weather;
public void setWeather(Weather w) {
weather = w;
}
public Weather getWeather() {
return weather;
}
}
//WeatherService.java
package sample.weatherservice.service.impl;
import sample.weatherservice.bean.Weather;
import sample.weatherservice.service.IWeatherService;
public class WeatherService implements IWeatherService {
Weather weather;
public void setWeather(Weather w) {
weather = w;
}
public Weather getWeather() {
return weather;
}
}
新建spring配置文件:
ws-sample/WebRoot/WEB-INF/applicationContext.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="weatherService" class="sample.weatherservice.service.impl.WeatherService">
<property name="weather">
<bean class="sample.weatherservice.bean.Weather">
<property name="temperature" value="89.9" />
<property name="forecast" value="Sunny" />
<property name="rain" value="false" />
<property name="howMuchRain" value="0.2" />
</bean>
</property>
</bean>
</beans>
<?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="weatherService" class="sample.weatherservice.service.impl.WeatherService">
<property name="weather">
<bean class="sample.weatherservice.bean.Weather">
<property name="temperature" value="89.9" />
<property name="forecast" value="Sunny" />
<property name="rain" value="false" />
<property name="howMuchRain" value="0.2" />
</bean>
</property>
</bean>
</beans>
修改 ws-sample/WebRoot/WEB-INF/web.xml 增加:
Xml代码
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
在 ws-sample/WebRoot/WEB-INF/services/ 目录下,新建文件夹和文件 weatherservice/META-INF/services.xml
services.xml的内容如下:
Xml代码
<serviceGroup>
<service name="WeatherService">
<description>WeatherService:Spring POJO Axis2 Service Sample</description>
<parameter name="ServiceClass">sample.weatherservice.service.IWeatherService</parameter>
<parameter name="ServiceObjectSupplier">
org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
</parameter>
<parameter name="SpringBeanName">weatherService</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
</service>
</serviceGroup>
<serviceGroup>
<service name="WeatherService">
<description>WeatherService:Spring POJO Axis2 Service Sample</description>
<parameter name="ServiceClass">sample.weatherservice.service.IWeatherService</parameter>
<parameter name="ServiceObjectSupplier">
org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
</parameter>
<parameter name="SpringBeanName">weatherService</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
</service>
</serviceGroup>
刷新 http://localhost:8080/ws-sample/services/listServices
见到新增了一个叫WeatherService的服务,说明 WeatherService 已成功部署
5.开发客户端调用
创建类:client.WeatherRPCClient
Java代码
package client;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
import sample.weatherservice.bean.Weather;
public class WeatherRPCClient {
public static void main(String[] args1) throws AxisFault {
EndpointReference targetEPR = new EndpointReference("http://localhost:8080/ws-sample/services/WeatherService");
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
options.setTo(targetEPR);
QName opGetWeather = new QName("http://service.weatherservice.sample", "getWeather");
Object[] opGetWeatherArgs = new Object[] { };
Class[] returnTypes = new Class[] { Weather.class };
Object[] response = serviceClient.invokeBlocking(opGetWeather,opGetWeatherArgs, returnTypes);
Weather result = (Weather) response[0];
if (result == null) {
System.out.println("Weather didn't initialize!");
}else{
System.out.println();
System.out.println("Temperature : " + result.getTemperature());
System.out.println("Forecast : " + result.getForecast());
System.out.println("Rain : " + result.getRain());
System.out.println("How much rain (in inches) : " + result.getHowMuchRain());
}
}
}
package client;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
import sample.weatherservice.bean.Weather;
public class WeatherRPCClient {
public static void main(String[] args1) throws AxisFault {
EndpointReference targetEPR = new EndpointReference("http://localhost:8080/ws-sample/services/WeatherService");
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
options.setTo(targetEPR);
QName opGetWeather = new QName("http://service.weatherservice.sample", "getWeather");
Object[] opGetWeatherArgs = new Object[] { };
Class[] returnTypes = new Class[] { Weather.class };
Object[] response = serviceClient.invokeBlocking(opGetWeather,opGetWeatherArgs, returnTypes);
Weather result = (Weather) response[0];
if (result == null) {
System.out.println("Weather didn't initialize!");
}else{
System.out.println();
System.out.println("Temperature : " + result.getTemperature());
System.out.println("Forecast : " + result.getForecast());
System.out.println("Rain : " + result.getRain());
System.out.println("How much rain (in inches) : " + result.getHowMuchRain());
}
}
}
运行 WeatherRPCClient,输出如下,说明调用成功:
Temperature : 89.9
Forecast : Sunny
Rain : false
How much rain (in inches) : 0.2
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xx_liuhui/archive/2010/03/11/5367667.aspx
- Spring + axis2 开发 webservice
- Spring + axis2 开发 webservice
- eclipse开发webservice-axis2/spring+maven
- eclipse开发webservice-axis2/spring+maven
- Spring axis2 webService 支持
- Spring axis2 webservice
- webservice axis2+spring整合
- Axis2+Spring构建WebService
- Axis2开发webservice总结
- axis2 webService开发
- Axis2.x WebService开发
- Axis2.x WebService开发
- Axis2开发webservice总结
- Axis2开发webservice详解
- myeclipse10+axis2开发webservice
- axis2 开发webservice详解
- axis2开发webservice
- axis2开发webservice教程
- Tomcat
- Java生成随机字母和数字
- jQuery中获取其他DOM 节点
- 文件系统开发--文件流操作
- asp常用知识集锦
- Spring + axis2 开发 webservice
- JDK环境变量的配置
- JS 引入 jquery
- dom4j 输出xml时乱码问题
- xp中的DOS出现乱码
- Mathematica的用法
- 开始··
- MFC图形输出的一些类
- 质量保证漫漫谈之SQA的工作职责和工作方式