cxf和axis2使用有感
- CXF框架
个人不喜欢使用wsimport工具:
1.考虑到远端的服务接口发生变化,本地的接口还需要重新同步下
2.项目中无端多了些冗余的代码
这样我们选择cxf的动态调用接口吧,使用DynamicClientFactory这个接口,到可以避免上面的问题。但是DynamicClientFactory在首次使用时会生成所有的类,你可以在日志中看到如下:
信息: Created classes: com.wc8.Add, com.wc8.AddResponse, com.wc8.Cat, com.wc8.Customer, com.wc8.FindCustomer, com.wc8.FindCustomerResponse, com.wc8.GetCatsByUser, com.wc8.GetCatsByUserResponse, com.wc8.Minus, com.wc8.MinusResponse, com.wc8.ObjectFactory, com.wc8.ResponseBean, com.wc8.ResponseOrderBean, com.wc8.User, com.wc8.VODAllowOrder, com.wc8.VODAllowOrderResponse
所以首次调用效率一定很低,但是在后面的调用中,效率会提高很多,以下是测试:
- AXIS2框架
为了避免首次的效率问题,我开始研究axis2,结论如下:
1.效率方面不存在首次效率如此低的问题,下面是测试表:
2.当返回值中如果是自定义对象的话(先转成json,客户端再反转为object),需要在本地建立和远程对应的对象。如果远程对象发生变化,本地的对象也要发生变化,不然会调用失败,抛出如下错误:
org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "name" (Class ResponseBeanTk), not marked as ignorable
at [Source: java.io.StringReader@a6df38e; line: 1, column: 73] (through reference chain: ResponseBeanTk["name"])
这又是我痛恨的原因。。。
好吧 看情况而定吧