用的cxf 2.7
1.搭建服务器端用的是http://www.cnblogs.com/hoojo/archive/2011/03/30/1999563.html教程;
2.不使用上边例子中的客户端,搭建自己客户端,代码
public static void main(String[] args) {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
org.apache.cxf.endpoint.Client client =
dcf.createClient("http://localhost:8080/payservice/cxfinvoke/payservice?wsdl");
try {
PayObject po = new PayObject(); //自己封装的对象,因为不能传MAP,所以就把MAP封到对象里了
HashMap<String,String> map = bliudMap();
po.setMap(map);
Object[] ob = client.invoke("enterprisePay",po); //方法名和参数
System.out.println(((PayObject)ob[0]).getMap().get("status"));
} catch (Exception e) {
e.printStackTrace();
}
}
3.用上边的客户端还是冗余了部分服务器端的代码,在客户端使用PayObject类的过程中,一直报错,后来发现必须要放到客户端的service包下才行,至今没发现为什么。
4.客户端总报JAXB-api 包找不到,但已经将JAXB jar包放到了lib中,但是却总是提示找不到,后来查到是jdk的问题,升级到1.6.4解决问题。
5.本来想用webserice传递map,但是貌似不行,所以选择了将map封装进对象的方法。