Axis1框架客户端调用服务端方式

Axis1框架出来也很久了,很多公司的老项目也是使用的该框架实现WebService的调用,对于新入行的小伙伴来说有很大机率会维护以前的老项目,所以这里也给大家介绍下怎么使用Axis1框架调用服务端.

调用方式有两种,一种是通过WSDL文件生客户端调用代码,通过生成的代码来调用,此种方式比较直观,就象本地调用接口方法一样,但比较麻烦点的就是需要先生成客户端代码,执行一个编译命令,如下:

java -Djava.ext.dirs=E:\axis-1_2_1\lib(axis的jar包所在目录)  org.apache.axis.wsdl.WSDL2Java  -p test.wsdl(指定代码路径)  E:\axis-1_2_1\Test\CSSFaultService.wsdl(本地WSDL文件)

通过上面的命令会在指定目录下生成相应的客户端代码,主要看生成的代码中后面为(Soap_BindingStub和ServiceLocator)的类,然后通过客户端代码即可调用对方WebService服务端

//在根据WSDL文件生成的类中有 带有LOCATOR和BINDINGSTUB的两个类,实现这两个类按如下方式调用即可
FSMInterfaceServerServiceLocator serverServiceLocator=new  FSMInterfaceServerServiceLocator();
  serverServiceLocator.setEOMSProcessServiceEndpointAddress("http://10.120.136.232:8080/fsm/services/EOMSProcessService");
EOMSProcessServiceSoapBindingStub  serviceSoapBindingStub=(EOMSProcessServiceSoapBindingStub)
serverServiceLocator.getEOMSProcessService();
serviceSoapBindingStub.setTimeout(60000);
String testStr=serviceSoapBindingStub.isAlive();
System.out.print("调用EOMS接口返回===="+testStr);

另一种方法就是使用Axis1框架自带的API接口调用,主要注意wsdlUrl,nameSpaceUri,目标方法几个参数即可,如下:

                ------另一种调用方式
                String serSupplier = "FSM";
                String serCaller = "HEMEOMS";
                String callerPwd = "Hem_eoms8089";
                Service service = new Service();
                Call call = (Call) service.createCall();
                call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
                call.setOperationName(new QName(nameSpaceUri,"queryUserMehtod"));
                call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING);
                call.addParameter("serSupplier",  org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
                call.addParameter("serCaller",  org.apache.axis.encoding.XMLType.SOAP_STRING, javax.xml.rpc.ParameterMode.IN);
                call.addParameter("callerPwd",  org.apache.axis.encoding.XMLType.SOAP_STRING, javax.xml.rpc.ParameterMode.IN);
                call.addParameter("callTime",  org.apache.axis.encoding.XMLType.SOAP_STRING, javax.xml.rpc.ParameterMode.IN);
                call.addParameter("opDetail",  org.apache.axis.encoding.XMLType.SOAP_STRING, javax.xml.rpc.ParameterMode.IN);
                call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING);
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
                String  result = (String)call.invoke(new Object[]{serSupplier,  serCaller, callerPwd, sdf.format(new Date()),opDetail});
                response.getWriter().print("返回的值===="+result);

上面就是两种调用服务端的方法,具体可参考实际的情况选择,有问题可以留言交流.

欢迎各们小伙伴加群交流,期待你们的加入,群号:1077176637

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值