Axis1.4自学---创建Webservice服务
我的项目是ssm,为了使用Webservice服务开放接口,我使用了Axis1.4版本。使用Maven构建了jar包。
其中需要的jar包(spring的就不说了。不过需要强调的是axis1.4需要用到spring-aop 2.0.8jar包)
Maven构建:
<span style="white-space:pre"> </span><dependency>
<span style="white-space:pre"> </span><groupId>org.springframework</groupId>
<artifactId>spring-remoting</artifactId>
<version>2.0.8</version>
</dependency>
需要spring-remoting包(使用到ServletEndpointSupport类)
Axis1.4包及相关调用远程的wsdl包
<span style="white-space:pre"> </span><dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>${axis.version}</version>
</dependency>
<dependency>
<groupId>axis</groupId>
<artifactId>axis-jaxrpc</artifactId>
<version>${axis-jaxrpc.version}</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>${wsdl4j.version}</version>
</dependency>
axis.version、wsdl版本用的是
<axis.version>1.4</axis.version>
<axis-jaxrpc.version>1.2.1</axis-jaxrpc.version>
<wsdl4j.version>1.6.3</wsdl4j.version>
<axis-jaxrpc.version>1.2.1</axis-jaxrpc.version>
<wsdl4j.version>1.6.3</wsdl4j.version>
引用的包和spring兼容 ,还需要导入的一些公共包和spring框架用到的一般都够了。最重要的包已经导入完毕。
接下来就看下代码简单易懂:
首先创建一个接口:
例子:
IWebServiceTest.java
public interface IWebServiceTest {
public String getDate(String date);
}
然后创建一个类(这是重点)
WebServiceTest.java
public class WebServiceTest extends ServletEndpointSupport implements IWebServiceTest{
@Override
public String getDate(String date) {
return date+"----成功!";
}
}
其中ServletEndpoinSupport类是(Spring-rometing包中) 实现在自己的接口
ServletEndpoinSupport类中有两个方法----destory、onInit
初始化和销毁
在oninit方法中,可以获取Spring注解的类,这样与Spring就紧密结合起来了 不会脱离spring的操作。
列子:
<span style="white-space:pre"> </span>private IInitSummaryService initSummaryService;//初始摘要
@Override
protected void onInit() throws ServiceException {
System.out.println("我是初始化!");
initSummaryService = (IInitSummaryService) getApplicationContext().getBean("initSummaryService");
}
这样我们就可以使用InitsummaryService了 。当然这个类我们是要在spring配置里面提前声明装载的。
<bean id="initSummaryService" class="xxxx">
这样我们就可以进行相关操作了。
完整代码:
public class WebServiceTest extends ServletEndpointSupport implements IWebServiceTest{
private IInitSummaryService initSummaryService;//初始摘要
@Override
protected void onInit() throws ServiceException {
System.out.println("我是初始化!");
initSummaryService = (IInitSummaryService) getApplicationContext().getBean("initSummaryService");
}
@Override
public String getDate(String date) {
System.out.println(initSummaryService);
return date+"----成功!";
}
}
剩下最重要的一步就是如何让我们的webservice生效。
首先在web.xml里面配置上我们的Webservice访问地址
<!-- webservice -->
<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>/services/*</url-pattern>
</servlet-mapping>
然后在添加一个webservice用的配置文件,server-config.wsdd
这个文件放到和web.xml同级目录下也就是我们的WEB-INF下
然后里面写上配置信息:
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
<service name="Test" provider="java:RPC">
<parameter name="className" value="com.caxins.themis.webservice.caxs.WebServiceTest"/>
<parameter name="allowedMethods" value="*"/>
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper"/>
</requestFlow>
</transport>
</deployment>
然后开启我们的web项目,访问起来:
http://localhost:8080/xxx/services/Test?wsdl