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了。祝好运!