构建SOAP Client遇到的几个问题
最近项目要做一个SOAP Client,一直对JAVA不是很熟,很久以前,同事提供过一个代码例子,我扩展这个例子完成过SOAP Client的功能,那是基于URL/HttpURLConnection的方法,用URL.getConnection来得到Connection,再对Connection进行
setDoInput,setDoOutput,setRequestMethod进行发送和接收,这个扩展程序一直工作的很好。所以这个项目我想也没有什么大问题。不料,同样的步骤总是返回错误结果,Connection总是返回HTTP status code为500,根本无法得到response的内容,因为
web service不是我这边做的,所以跟web service组的同事请教,结果人家不用这种底层的调用方法,而是用SOAPMessage/SOAPConnection来实现,还好同事又提供了一个代码例子,不过这么简单的代码在我环境里编译后无法正确执行,返回SOAPMessage的setProperty方法必须被子类覆写。
我纳闷了,这个都是组件里的东东,怎么会自己不行的呢?不至于组件有这么大问题吧?
在网络上一搜索,中文的网页没有这个问题呢!英文网页找到几个,都说到jdk 1.6对SOAPMessage的改动会导致JBOSS的web service出错,JBoss开发组据说还没有在最新的release进行支持,需要在下一个release中进行跟进( [url]http://www.jboss.com/index.html?module=bb&op=viewtopic&t=99036[/url] )。
没办法,只好退到1.5了,注意了,退到1.5必须先重新配置系统的path, JAVA_HOME都到新的jre/jdk了,然后到eclipse里把项目的执行环境/编译环境改成1.5的,并且把soap的组件包saaj从jboss的lib里拷出,这时又出现axis的impl类无法找到,只好把jboss带的axis 1.4的组件包全加进,再编译,出现javax.activation.datahandle和internetmail的类找不到,只好把jboss里的相关jar拷入。
最近项目要做一个SOAP Client,一直对JAVA不是很熟,很久以前,同事提供过一个代码例子,我扩展这个例子完成过SOAP Client的功能,那是基于URL/HttpURLConnection的方法,用URL.getConnection来得到Connection,再对Connection进行
setDoInput,setDoOutput,setRequestMethod进行发送和接收,这个扩展程序一直工作的很好。所以这个项目我想也没有什么大问题。不料,同样的步骤总是返回错误结果,Connection总是返回HTTP status code为500,根本无法得到response的内容,因为
web service不是我这边做的,所以跟web service组的同事请教,结果人家不用这种底层的调用方法,而是用SOAPMessage/SOAPConnection来实现,还好同事又提供了一个代码例子,不过这么简单的代码在我环境里编译后无法正确执行,返回SOAPMessage的setProperty方法必须被子类覆写。
我纳闷了,这个都是组件里的东东,怎么会自己不行的呢?不至于组件有这么大问题吧?
在网络上一搜索,中文的网页没有这个问题呢!英文网页找到几个,都说到jdk 1.6对SOAPMessage的改动会导致JBOSS的web service出错,JBoss开发组据说还没有在最新的release进行支持,需要在下一个release中进行跟进( [url]http://www.jboss.com/index.html?module=bb&op=viewtopic&t=99036[/url] )。
没办法,只好退到1.5了,注意了,退到1.5必须先重新配置系统的path, JAVA_HOME都到新的jre/jdk了,然后到eclipse里把项目的执行环境/编译环境改成1.5的,并且把soap的组件包saaj从jboss的lib里拷出,这时又出现axis的impl类无法找到,只好把jboss带的axis 1.4的组件包全加进,再编译,出现javax.activation.datahandle和internetmail的类找不到,只好把jboss里的相关jar拷入。
还有问题?哦麦高的,common-logger没有!从jdk里include,再执行???好了!!!谢天谢地。。。
本文转自 dannyy1026 51CTO博客,原文链接:http://blog.51cto.com/dannyyuan/116060