Axis1.4调用cxf部署的webservice,接收参数总是null值?
今天学习用cxf来发布webservice,下了最新的包apache-cxf-2.5.2,然后搭建了一个web项目,根据官网不引入spring时可继承CXFNonSpringServlet来发布,如下:
@Override protected void loadBus(ServletConfig config) { super.loadBus(config); Bus bus = super.getBus(); ServerFactoryBean factory = new ServerFactoryBean(); factory.setBus(bus); factory.setAddress("/hello"); factory.setServiceClass(HelloWorld.class); factory.create(); }
我的webservice程序HelloWorld.java如下:
public class HelloWorld { public String say(@WebParam(name="text") String text) { return "Hello World:" + text + "!"; } }
然后启动服务,正常发布此服务。然后用axis1.4作为客户端程序调用,调用代码:
public class Test { public static void main(String[] args) { Service service = new Service(); try { Call call = (Call) service.createCall(); call.setEncodingStyle(Constants.NS_PREFIX_SCHEMA_XSD); // call.setUseSOAPAction(true); // call.setSOAPVersion(SOAPConstants.SOAP11_CONSTANTS); call.setTargetEndpointAddress("http://localhost:8088/cxf/ws/hello"); call.setOperationName(new QName("http://ws.cxf.com/", "say")); call.addParameter("text", XMLType.XSD_STRING, ParameterMode.IN); call.setReturnType(XMLType.XSD_STRING); String result = (String) call.invoke(new Object[]{"hyq"}); System.out.println("结果:" + result); } catch (ServiceException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } } }而服务方say方法参数总是获取null值,方法是调用到了,就是参数传输不了,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
factory.setServiceClass(HelloWorld.class);
factory.setAddress("/hello");
原来写反了,这样就可以了
终于搞定了,原来是loadBus这个实现类用下面发布方式就没问题了: