谁遇到过在Tomcat下面部署的CXF出现这样的错误

谁遇到过在Tomcat下面部署的CXF出现这样的错误,第1张

详细介绍了在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>照你所说,已经生成客户端的java代码了,那就简单了,直接调用生成代码里面的方法就是。
问题是找到需要调用的方法。
具体方法最好让对方提供接口文档。
找好方法要是调不通,多半是jar包的问题。多查查。

CXF调用
import orgapachecxfinterceptorLoggingInInterceptor;
import orgapachecxfinterceptorLoggingOutInterceptor;
import orgapachecxfjaxwsJaxWsProxyFactoryBean;
import serviceICalculateService;
public class ClientTest {
public static void main(String[] args) {
// 创建webservice服务工厂
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
// 加入一个接收响应日志的拦截器
factorygetInInterceptors()add(new LoggingInInterceptor());
// 加入一个返回响应日志的拦截器
factorygetOutInterceptors()add(new LoggingOutInterceptor());
factorysetServiceClass(ICalculateServiceclass);
factorysetAddress(">

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13460123.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-11
下一篇 2023-08-11

发表评论

登录后才能评论

评论列表(0条)

保存