上一篇是通过spring bean的方式发布webservice,发布的webservice有些弊端,因为将所有的public方法都发布了,一些setter、getter方法也发布出去,这不是我们想要的。
因此我们定义一个接口,将想要发布的方法在接口中声明。
这里我们增加一个IFileWebService接口类,只声明了add、del、down三个方法
package com.alpha.service;
public interface IFileWebService {
public abstract String add();
public abstract String del();
public abstract String down();
}
接下来我们只需要修改services.xml文件即可,只是配置了接口类的parameter ,增加的内容
<!-- 接口类 -->
<parameter name="ServiceClass">
com.alpha.service.IFileWebService
</parameter>
<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
<service name="fileWebService" targetNamespace="http://service.crystal.com/" scope="application">
<description>spring集成axis2案例</description>
<!-- 通过ServiceObjectSupplier参数指定SpringServletContextObjectSupplier类来获得Spring的ApplicationContext对象 -->
<parameter name="ServiceObjectSupplier">
org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
</parameter>
<!--
SpringBeanName固定的不能改
fileWebService是spring中bean的id
-->
<parameter name="SpringBeanName">
fileWebService
</parameter>
<!-- 接口类 -->
<parameter name="ServiceClass">
com.alpha.service.IFileWebService
</parameter>
<!--
<messageReceivers>:用于设置处理WebService方法的处理器
in-out有返回值
in-only没有返回值
-->
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</messageReceivers>
</service>
</serviceGroup>
再次访问http://localhost:8080/WebServiceTest/services/fileWebService?wsdl便可看到只有接口中声明的方法