CXF本身应该有更方便的方式进行添加,去读读文档。
我当时也遇到这个问题,时间太紧我没时间读文档,用了一个很笨很直接的办法:
我当时的场景:对方服务是用net开发的,我用JAVA&CXF,他自己用net很顺序地能调通,我用CXF就不行。
我的笨办法:
1、我搞到别人能调通的SOAP报文;
2、抓到我CXF调用发出的报文;
3、比较两者之不同;
4、然后自己在拦截器中把差的报文节点补齐;
5、搞定。(看起来复杂,其实没花多少时间)
代码虽然还一翻就找到了,附上希望给你一点思路。
public class HeaderIntercepter extends AbstractPhaseInterceptor<SoapMessage> {
public static final String xml_namespaceUR_att = ">
webservice的调用,常用的大约有3种方式:
1、使用axis调用
2、使用xfire调用
3、使用cxf调用
项目中,采用axis进行调用,记录如下,备忘:
ps教程:想当年的时候是用的xfire方式调用的,结果没做记录,现在已经完全记不得怎么玩了。所以说要多写博客啊 t_t
版本说明:
aixs版本:axis-bin-1_4zip
java环境略
第一步:确保wsdl文件可用,文中为获取到sendsmsservicewsdl,当然url的也行。
第二步:执行生成客户端代码的脚本。脚本内容为:
set axis_lib=d:axis-1_4lib
set java_cmd=java -djavaextdirs=%axis_lib%
set output_path=
set package=infojyzhwapliaoningpush
%java_cmd% orgapacheaxiswsdlwsdl2java sendsmsservicewsdl -o%output_path% -p%package% -t
#查看wsdl2java的使用帮助#%java_cmd% orgapacheaxiswsdlwsdl2java -help
ok,至此,客户端代码就生成出来了。还带了一个单元测试哦。
详细介绍了在tomcat容器中创建、发布和访问CXF服务的步骤和各种方法。一、服务器端1.添加CXF包1)基本包:commons-logging-111jargeronimo-activation_11_spec-102jargeronimo-annotation_10_spec-111jargeronimo-javamail_14_spec-16jargeronimo-jaxws_21_spec-10jargeronimo-servlet_25_spec-12jargeronimo-stax-api_10_spec-101jargeronimo-ws-metadata_20_spec-112jarjaxb-api-21jarjaxb-impl-2112jarjetty-6121jarjetty-util-6121jarneethi-204jarsaaj-api-13jarsaaj-impl-132jarwsdl4j-162jarwstx-asl-328jarxml-resolver-12jarXmlSchema-145jar2)jsf和jstl(非必要,用MyEclipse创建WebProject时会自动加入,无须再添加)jsf-apijarjsf-impljarjstl-12jar3)cxfcxf-224jar4)Springjars,为XMLConfiguration添加Spring支持。aopalliance-10jarspring-core-255jarspring-beans-255jarspring-context-255jarspring-web-255jar2.服务接口及实现1)接口类,如HelloWorldjava:packagecxftest;importjavaxjwsWebService;@WebServicepublicinterfaceHelloWorld{//一个简单的方法,返回一个字符串Stringsay(Stringhello);}2)实现类,如HelloWorldImpljava:packagecxftest;importjavaxjwsWebService;//WebService实现类//使用@WebService指向Interface定义类即可@WebService(endpointInterface="cxftestHelloWorld")publicclassHelloWorldImplimplementsHelloWorld{publicStringsay(Stringhello){return"hello"+hello;}}3.服务配置1)webxmlcontextConfigLocationWEB-INF/beansxmlorgspringframeworkwebcontextContextLoaderListenerCXFServletorgapachecxftransportservletCXFServletCXFServlet/services/2)beansxml注:服务无需诸如indexjsp之类的配置,MyEclipse自动加入的可删除,对服务及配置无任何影响。4.服务发布(到Tomcat)方法一:通过MyEclipse发布点击工具栏图标,或者右键单击项目→MyEclipse→AddandRemoveProjectDeployments。方法二:使用Ant。二、客户端创建WebProject,执行下列步骤即可。无须设置webxml。1.添加CXF包针对不同的方法,需要的包不尽相同。如下面“3.服务调用”的方法三,需要如下包:commons-logging-111jarcxf-224jarneethi-204jarspring-core-255jarspring-beans-255jarspring-context-255jarwsdl4j-162jarXmlSchema-145jar2.获取服务服务接口类(类似于C/C++中的h头文件)方法一:直接从原项目中copy这当然是最简单的方法,也是最“难”的方法(如果服务不是自己做的,显然没法获得)。方法二:从wsdl文档中生成。需要先安装cxf程序包。生成步骤如下:1)安装cxf,设置环境变量,如:D:/Apache/apache-cxf-224;同时,PATH后加上“;%CXF_HOME%/bin”(可选)。wsdl2java的用法如下:wsdl2java–p包名–d目录名wsdl路径如:wsdl2java–pdemoserviceclient–de:/srchtt://localhost:8080/helloWorldwsdl-p指定其wsdl的命名空间,也就是要生成代码的包名-d指定要产生代码所在目录-client生成客户端测试webservice的代码-server生成服务器启动webservice的代码-impl生成webservice的实现代码-ant生成buildxml文件-compile生成代码后编译-quient静默模式,不输出警告与错误信息-all生成所有开始端点代码:types,serviceproxy,serviceinterface,servermainline,clientmainline,implementationobject,andanAntbuildxmlfile2)执行wsdl2java批处理程序,如:wsdl2java-pcxftest-dd:/src-servernecessarypublicfinalclassClient{privatestaticfinalQNameSERVICE_NAME=newQName("","HelloWorld");//首参为接口实现类包名的反缀privatestaticfinalQNamePORT_NAME=newQName("","HelloWorldPort");privateClient(){}publicstaticvoidmain(Stringargs[])throwsException{Serviceservice=Servicecreate(SERVICE_NAME);//EndpointAddressStringendpointAddress="HelloWorld";//AddaporttotheServiceserviceaddPort(PORT_NAME,SOAPBindingSOAP11>
以上就是关于高分求教webservice设置header问题全部的内容,包括:高分求教webservice设置header问题、CXF方式搭建本地webservice服务和soap方式调用踩坑、如何使用CXF调用webservice接口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)