- 浏览: 3471431 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
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,增加配置:
- < 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
- <%@
- 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
代码如下:
- //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; } }
- //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(); }
- //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 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 增加:
- < 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的内容如下:
- < 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
- 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
ws-sample.rar (8.1 KB)
发表评论
-
说明SOA监管(SOA Governance)实例(收录备查)
2012-12-19 11:35 1711SOA 已经不是单纯技术问 ... -
Injecting Spring Beans into Java Servlets
2012-11-01 10:21 1905If you are working in a Java ... -
用 HttpServletResponseWrapper 实现 Etag 过滤器
2012-07-09 16:58 3703原文出处:http://blog.chenlb.com/200 ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:17 3835When I try to install the And ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:13 1938When I try to install the And ... -
[转]mybatis下的分页,支持所有的数据库
2011-07-21 13:21 14787大 家都知道,mybatis的自带分页方法只是逻 ... -
Java framework for text- & console-based forms?
2011-07-21 01:06 1670charva jcurses JNA , ... -
JNA(Java Native Access)学习入门
2011-07-21 01:04 22523Java Native Access 项目 在 ... -
使用IntrospectorCleanupListener 解决quartz引起的内存泄漏
2011-04-20 11:59 13283"在服务器运行过程中,Spring不停的运行的计划任 ... -
DBCP代码研读以及就数据库连接失效的解决
2011-03-31 11:03 3727问题 网上很多评论说DBCP有很多BUG,但是都没有指明是什 ... -
ContextLoaderListener
2010-12-06 15:58 8421(1) org.springframework.web.c ... -
Servlet3.0新功能: 异步处理
2010-12-06 15:22 3122J2EE 6和Glassfish 3V正式发 ... -
Servlet3.0引入的新特性
2010-12-06 15:20 3026Servlet3.0规范的新特性主要是为了3个目的: ... -
100個節點上運行群集亞馬遜EC2上Hazelcast
2010-12-03 23:59 3292本文的目的,適是给妳湮示的細節集群的100個節點。此湮示記錄, ... -
Spring Properties Reloaded
2010-12-02 14:54 4342Spring Properties Reloaded Som ... -
为spring2.5中的jpetstore增加perf4j监控
2010-09-02 13:51 2608perf4j是一款类似于log4j的性能检测工具. 它 ... -
语义网的学习资源大汇集(备忘)
2010-06-23 22:48 1686网上资源 http:/ ... -
使用 JOLAP 实现复杂分析查询
2010-06-06 13:42 1922Shashank Tiwari 在本文中对 ... -
HTML5 Canvas for Internet Explorer
2010-06-04 21:16 1826Canvascape http://www.benjoff ... -
大型网站架构演变和知识体系
2010-06-01 23:47 1910架构演变第一步:物 ...
相关推荐
Spring+axis2开发webservice[整理].pdf
NULL 博文链接:https://laochake.iteye.com/blog/445833
简单例子:axis2整合spring发布webservice,以及session的管理
spring+axis集成webservice
一个spring+axis开发webservice的完整例子,还配有jdom解析xml
软件架构说明 服务端:WebService+axis+mybatis 服务端开发环境:jdk8,mysql8.0,tomcat9.0,IDEA2021 客户端:基于Springboot来整合axis客户端 客户端用springboot实现,服务端用webService+axis+mybatis实现 ...
Spring+Axis2实例、简单、单纯,干净的WebService附带jar包可以直接安装允许
axis2+Spring提供WebService服务,有调用方法类。
主流的spring4mvc+Mybatis,并整合了axis2实现webservice接口开发。利用quartz注解实现任务作业功能源码。利用spring RoutingDataSource实现动态数据源切换
Spring+Axis2+Maven搭建WebService服务端demo测试用例
首先,该工程实现了spring MVC、mybatis、axis webservice功能 其次,这个工程很简单,只做了最简单的功能实现 再次,数据库要自己准备 最后,该工程里的src目录下,有一个readme.txt,请下载者仔细阅读,里面有...
Spring集成axis2实现webservice所用到的Jar包,将所有的包放到项目的LIB目录下面
Web services是建立可互操作的分布式应用程序的新平台。Web service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何...在这里主要介绍两种实现方式:axis2和xfire框架。
java开源,鄙视收分 by zero
包含axis2对map\list和普通java类的处理方式,以axiom和对象数组为处理方式,还有简单的异步、同步处理; 含aixs2-1.4.1的jar包,对初学AXIS2的人学习有帮助。
lib包中包含所有axis2+spring所需要的jar包
axis2+spring2.5整合(webservice)
spring集成axis发布webservice源码 spring集成axis发布webservice源码 spring集成axis发布webservice源码 spring集成axis发布webservice源码
借鉴网上的资源,弄了一个SpringBoot开发WebService之Axis示例。
已经通过测试,运行稳定,需要注意的是axis版本为1