首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

axis2 1.6.1 与项目调整

2012-10-09 
axis2 1.6.1 与项目整合?1、在web.xml加入如下配置servlet servlet-nameAxisServlet/servlet-namese

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 1.6.1 与项目调整

拷贝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>

?

?

?

热点排行