Axis2与spring结合创建webService

因项目需要,与其他的系统做对接,我方需提供webService接口,在老大的指点下,采用了Axis+spring的方式来创建webService,全程参考了点击打开链接一文,本文的目的仅为巩固自己今天所做的工作,为以后类似的工作提供参考依据。

1.在网站发布的根目录下的web-inf/web.xml加上如下配置。本项目网站的路径为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>

但是要注意,首先必须引入axis2的jar包,且不要与本项目的jar包发生冲突。axis2-adb-1.6.2.jar   ,  axis2-kernel-1.6.2.jar    ,axis2-spring-1.6.2.jar  ,axis2-transport-http-1.6.2.jar  ,axis2-transport-local-1.6.2.jar ,  axiom-impl-1.2.13.jar ,axiom-api-1.2.13.jar,  neethi-3.0.2.jar,XmlSchema-1.4.7.jar, wsdl4j-1.5.1.jar  ,woden-api-1.0M9.jar。但是这些jar包可能还不是很全,可以根据项目所报的错误引入相应的jar包。

2.在网站的根目录下新建一个axis-web目录,里面新建一个listServices.jsp文件,具体的目录结构如下:webroot/axis-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>

重新启动tomacat,访问localhost:8080/mm/services/listServices/即可看到Available services is Empty的提示信息。

3.在web-inf目录下新建一个services文件夹,在services文件夹下新建一个meta-inf文件夹,在文件夹中新建services.xml文件。具体的目录结构为:webroot/web-inf/services/meta-inf/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>

4.新建service.java、serviceImpl.java文件,如下所示:

//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;
}
}

//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;
}
}

5.新建webService.xml文件,里面用来描述注入所写的service及bean。并将此文件import到spring.xml文件中。

6.重新访问localhost:8080/mm/services/listServices,即可看到名为WeatherService的服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值