这个事情去年做过一次,不过没有留下记录,今天又要做一次,记录下来,呵呵
环境:
Spring版本为1.2,Tomcat为5.5.26,JDK为Jdk1.5.0_11。
1、下载Axis1.4,解压后将其jar文件添加到web项目的lib目录中。
2、配置Axis Servlet,在web.xml文件中加入如下信息:
<
servlet
>
< servlet-name > AxisServlet </ servlet-name >
< servlet-class >
org.apache.axis.transport.http.AxisServlet
</ servlet-class >
</ servlet >
< servlet-mapping >
< servlet-name > AxisServlet </ servlet-name >
< url-pattern > /servlet/AxisServlet </ url-pattern >
</ servlet-mapping >
< servlet-mapping >
< servlet-name > AxisServlet </ servlet-name >
< url-pattern > *.jws </ url-pattern >
</ servlet-mapping >
< servlet-mapping >
< servlet-name > AxisServlet </ servlet-name >
< url-pattern > /services/* </ url-pattern >
</ servlet-mapping >
< servlet-name > AxisServlet </ servlet-name >
< servlet-class >
org.apache.axis.transport.http.AxisServlet
</ servlet-class >
</ servlet >
< servlet-mapping >
< servlet-name > AxisServlet </ servlet-name >
< url-pattern > /servlet/AxisServlet </ url-pattern >
</ servlet-mapping >
< servlet-mapping >
< servlet-name > AxisServlet </ servlet-name >
< url-pattern > *.jws </ url-pattern >
</ servlet-mapping >
< servlet-mapping >
< servlet-name > AxisServlet </ servlet-name >
< url-pattern > /services/* </ url-pattern >
</ servlet-mapping >
3、编写java类,样例如下。
接口:
public
interface
InterchangeDataService {
public String getMonthInterchange(String marketDate);
}
public String getMonthInterchange(String marketDate);
}
实现类:
public
class
InterchangeDataServiceImpl
extends
ServletEndpointSupport
implements
InterchangeDataService {
public InterchangeDataServiceImpl() {
}
public String getMonthInterchange(String marketDate) {
return " getMonthInterchange " ;
}
}
public InterchangeDataServiceImpl() {
}
public String getMonthInterchange(String marketDate) {
return " getMonthInterchange " ;
}
}
注意实现类需要继承ServletEndpointSupport类,该类是由Spring提供的。
4、配置service-config.wsdd。
<?
xml version="1.0" encoding="utf-8"
?>
< deployment xmlns ="http://xml.apache.org/axis/wsdd/"
xmlns:java ="http://xml.apache.org/axis/wsdd/providers/java" >
< handler name ="LocalResponder" type ="java:org.apache.axis.transport.local.LocalResponder" />
< handler name ="URLMapper" type ="java:org.apache.axis.handlers.http.URLMapper" />
<service name="interchangeDataService" provider="java:RPC" style="rpc" use="literal">
<parameter name="wsdlTargetNamespace" value="urn:soap.axisspring"/>
<parameter name="className" value="com.ecgit.eccm.webservice.InterchangeDataServiceImpl"/>
<parameter name="allowedMethods" value="*"/>
</service>
< transport name ="http" >
< requestFlow >
< handler type ="URLMapper" />
< handler type ="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
</ requestFlow >
< parameter name ="qs:list" value ="org.apache.axis.transport.http.QSListHandler" />
< parameter name ="qs:wsdl" value ="org.apache.axis.transport.http.QSWSDLHandler" />
< parameter name ="qs:method" value ="org.apache.axis.transport.http.QSMethodHandler" />
</ transport >
< transport name ="local" >
< responseFlow >
< handler type ="LocalResponder" />
</ responseFlow >
</ transport >
</ deployment >
< deployment xmlns ="http://xml.apache.org/axis/wsdd/"
xmlns:java ="http://xml.apache.org/axis/wsdd/providers/java" >
< handler name ="LocalResponder" type ="java:org.apache.axis.transport.local.LocalResponder" />
< handler name ="URLMapper" type ="java:org.apache.axis.handlers.http.URLMapper" />
<service name="interchangeDataService" provider="java:RPC" style="rpc" use="literal">
<parameter name="wsdlTargetNamespace" value="urn:soap.axisspring"/>
<parameter name="className" value="com.ecgit.eccm.webservice.InterchangeDataServiceImpl"/>
<parameter name="allowedMethods" value="*"/>
</service>
< transport name ="http" >
< requestFlow >
< handler type ="URLMapper" />
< handler type ="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
</ requestFlow >
< parameter name ="qs:list" value ="org.apache.axis.transport.http.QSListHandler" />
< parameter name ="qs:wsdl" value ="org.apache.axis.transport.http.QSWSDLHandler" />
< parameter name ="qs:method" value ="org.apache.axis.transport.http.QSMethodHandler" />
</ transport >
< transport name ="local" >
< responseFlow >
< handler type ="LocalResponder" />
</ responseFlow >
</ transport >
</ deployment >
5、测试web service服务,代码如下。
至项目的WEB-INF目录下,执行如下命令:
Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/services/interchangeDataService?WSDL
会在WEB-INF目录中生成四个JAVA文件,它们分别是:
- InterchangeDataServiceImpl.java 定义了Web服务接口,接口中的方法与InterchangeDataService中的方法一致。
- InterchangeDataServiceImplService.java 定义了用于获取Web服务接口的方法。
- InterchangeDataServiceImplServiceLocator.java 接口InterchangeDataServiceImplService的具体实现。
- InterchangeDataServiceImplSoapBindingStub.java Web服务客户端桩,通过该类与服务器交互。
最后编写一个Main方法,调用如下方法即可进行测试:
InterchangeDataServiceImplServiceLocator serviceLocator
=
new
InterchangeDataServiceImplServiceLocator();
InterchangeDataServiceImpl service = serviceLocator.getinterchangeDataService();
String monthSchedule = service.getMonthInterchange( " 2008-05-30 " );
InterchangeDataServiceImpl service = serviceLocator.getinterchangeDataService();
String monthSchedule = service.getMonthInterchange( " 2008-05-30 " );