play!中使用webservice
第一种方式见:http://playframework.wordpress.com/2010/08/15/web-services-using-play/
直接使用play!的WS工具类操作,对少量和简单接口来说非常方便。
现在主要分享一下第二种方式:在play!中使用 Apache CXF来使用webservice,其实你也可以选其它的看你自己的意愿了。
首先去http://cxf.apache.org/download.html下载apache cxf,然后把bin加到环境变量中备用。
然后你就可以看看官方的这个文档了解一下wsdl2java工具的使用 http://cxf.apache.org/docs/wsdl-to-java.html
wsdl2java -d 输出目录 -p 包名 -fe jaxws21 wsdl文件(这里可以是远程wsdl地址也可以是本地文件)
WSDLToJava Error: Thrown by JAXB : undefined element declaration 's:schema'
public static void getCategory() {List<String> categories = (List<String>) Cache.get("categories");if (categories == null) {Logger.info("getCategory远程服务获取数据");WsDataEngineForWebSite ws = new WsDataEngineForWebSite();WsDataEngineForWebSiteSoap wsp = ws.getWsDataEngineForWebSiteSoap12();GetCategoryResult categoryResult = wsp.getCategory();Element categoryElement = (Element) categoryResult.getAny();categories = new ArrayList<String>();for (Node event : XPath.selectNodes("//NewDataSet//Table1", categoryElement)) {String sort = XPath.selectText("sort", event);String name = XPath.selectText("name", event);String ename = XPath.selectText("ename", event);categories.add(StringUtils.trimToEmpty(sort) + "|" + StringUtils.trimToEmpty(name) + "|" + StringUtils.trimToEmpty(ename));}Cache.set("categories", categories, "2min");}render(categories);}
