axis2 调用webservice方法

//测试代码 public static void main(String[] args) {         try {             RPCServiceClient rpcClient = new RPCServiceClient();             Options options=rpcClient.getOptions();             options.setTo(new EndpointReference("http:-//localhost:-8081/WebServiceT/WebServiceT?wsdl"));                           Object[] objects = new Object[] { 1,2 };                  Class<?>[] classes = new Class[] { int.class };               QName qname = new QName("http:-//web.-sdl.-com/", "add");                 int result = (int) rpcClient.invokeBlocking(qname, objects, classes)[0];                System.out.println(result);                      } catch (AxisFault ex) {             Logger.getLogger(JavaApplication5.class.getName()).log(Level.SEVERE, null, ex);         }     }

//测试代码 public static void main(String[] args) {         try {             RPCServiceClient rpcClient = new RPCServiceClient();             Options options=rpcClient.getOptions();             options.setTo(new EndpointReference("http:-//localhost:-8081/WebServiceT/WebServiceT?wsdl"));                           Object[] objects = new Object[] { 1,2 };                  Class<?>[] classes = new Class[] { int.class };               QName qname = new QName("http:-//web.-sdl.-com/", "add");                 int result = (int) rpcClient.invokeBlocking(qname, objects, classes)[0];                System.out.println(result);                      } catch (AxisFault ex) {             Logger.getLogger(JavaApplication5.class.getName()).log(Level.SEVERE, null, ex);         }     }

参数为什么每次传递都是空啊?
new EndpointReference里的地址应该是不带?wsdl的,你去掉再试试

(@WebParam(name = "i") int i, @WebParam(name = "j") int j)
axis2调用java6发布的服务的时候 方法参数的注解@WebParam需要去掉。
直接把上面的这句删掉或者注释掉。重新发布下再调用就OK了

你原来的那个服务类参数方法参数都给了注解。是给xfire调用的。如果把方法参数的注解@WebParam
去掉。xfire又会出现参数为空的情况。

还有种办法就是换种调用方式。

原因可能是xfire的wsdl文档规范比axis2在参数这块多规定一些东西。具体的我也没深入去看。公司后面要改用CXF了。祝好运!

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有