axis2 1.6.1 与项目整合
?1、在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>
?
2、将axis2/WEB-INF下的modules、service和conf文件件拷至工程的WEB-INF目录下。(modules和conf可选)
把lib下的jar包拷过去
最精简jar包 参考?http://mtvwang.iteye.com/blog/506299
以下是我的项目中新加的lib

拷贝axis2-web页面文件到工程(可方便管理)
?
3、新加一个服务 参考?http://mtvwang.iteye.com/blog/506299
与spring整合时service.xml中这样配置
<parameter name="ServiceObjectSupplier">??
????????org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier???
</parameter>??
<parameter name="SpringBeanName">此处填写spring中配置的bean</parameter>
?
4、如果要使用axis2的后台管理功能,找到下载的war包中相关class放到部署环境中"axis2\WEB-INF\classes\org"
并在web.xml中加入AxisAdminServlet的相关配置。【注意在conf/axis2.xml中修改用户名和密码确保安全】
?
5、axis2客户端提供异步调用功能,从其它地方拷贝的示例,暂时未测试
import javax.xml.namespace.QName;import org.apache.axis2.addressing.EndpointReference;import org.apache.axis2.client.Options;import org.apache.axis2.context.MessageContext;import org.apache.axis2.rpc.client.RPCServiceClient;public class RPCAsyncClient{public static void main(String[] args) throws Exception{RPCServiceClient serviceClient = new RPCServiceClient();Options options = serviceClient.getOptions();EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/myService");options.setTo(targetEPR);Object[] opAddEntryArgs = new Object[]{};QName opAddEntry = new QName("http://service", "getName");serviceClient.invokeNonBlocking(opAddEntry, opAddEntryArgs,new org.apache.axis2.client.async.AxisCallback(){@Overridepublic void onComplete(){}@Overridepublic void onError(Exception arg0){} }@Overridepublic void onFault(MessageContext arg0){}@Overridepublic void onMessage(MessageContext mc){// 输出返回值System.out.println(mc.getEnvelope().getFirstElement().getFirstElement().getFirstElement().getText());}});System.out.println("异步调用!");// 阻止程序退出System.in.read();}} ?
Axis2默认把Service类中所有的public方法都发布成web service的operation(就是对外公布的ws接口)
在services.xml用如下方法可以排除不需要公开的public方法
参考http://desert3.iteye.com/blog/801339
<!-- 排除setBusiness001 --> <excludeOperations> <operation>setBusiness001</operation> </excludeOperations>
?
?
?