webservice框架cxf

由于cxf的web项目已经集成了Spring,所以cxf的服务类都是在spring的配置文件中完成的。以下是步骤:

  • 第一步:建立一个web项目。
  • 第二步:准备所有jar包。将cxf_home\lib项目下的所有jar包全部copy到新项目的lib目录下,里面已经包含了spring3.0的jar包。
  • 第三步:在web.xml中配置cxf的核心servlet,CXFServlet。
  • 第四步:创建(最好是Copy)cxf-servlet.xml文件。这是一个spring的配置文件。

1、web.xml中配置servlet

如果没有提供给cxf默认的/WEB-INF/cxf-servlet.xml配置文件,则必须要在spring的配置文件中配置以下三行配置(import)。否则将不能加载名称为cxf的bean.从而启动失败。

2、applicationContext.xml


1

2

3

4

5

6

7

8

9

10

11

12

13

<!--spring发布webservice服务配置 -->

<import resource="classpath:META-INF/cxf/cxf.xml" />

<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> 

<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

<!-- 注入webservice服务 -->

<!-- 统一工号管理接口 -->

<bean id="UnifiedNoServiceBean" class="com.webservice.unifiedno.service.impl.UnifiedNoServiceImpl" />  

<jaxws:server id="UnifiedNoService" serviceClass="com.webservice.unifiedno.service.UnifiedNoService"

    address="/unifiedNoService">  

    <jaxws:serviceBean>  

        <ref bean="UnifiedNoServiceBean" />  

    </jaxws:serviceBean>

</jaxws:server>

注意:

1、<import>的三个文件是否需要全部引入根据cxf框架版本不同而不同

2、address的值为webservice注解的值:@WebService(serviceName = "unifiedNoService")

3、必须要在声明为serviceClass的接口上声明@WebSerive注解,因为,要使用了接口,在接口上添加的注解才会有效。

4、serviceClass:必须为一个接口,并在接口上必须使用@WebService注解否则调用时会抛出异常

5、serviceBean:是实际服务的类,必须是serviceClass的子类,此类上面即可以使用@WebService注解,也可以不使用

6、address:访问地址,省去前面的ip:port,注意在此注册的类,必须要添加@WebService的注解

启动项目,测试cxf是否配置成功:

访问:http://localhost:8080/ins/services,会列出所有已经发布的webservice接口服务

4、测试

http://localhost:8080/ins/services/unifiedNoService?wsdl

Java项目代码调用服务:

使用纯Java项目调用

1、根据客户端生成的代码来调用。(优选这种方式)

请先生成然后在任意的Java项目中调用 。

2、客户端只拥有一个接口,使用JaxWsProxyFactoryBean来调用。

因为以下使用了JaxWsProxyFactoryBean,所以,仍然需要CXF的环境,而使用此环境就会造成Jar文件的大量冗余,所以大家要谨慎选择。

1、注意,此处所说的是在Java项目中调用Spring的服务,并不是在JavaEE项目中调用。后期将会讲到如何在JavaEE项目中调用。

2、建议从wsdl地址获取接口文件,也仅需要接口文件。


1

2

3

4

5

6

JaxWsProxyFactoryBean client = new JaxWsProxyFactoryBean();

client.setAddress("http://localhost:7777/xcxf2_web/ws/one");

client.setServiceClass(IOneService.class);

IOneService one = client.create(IOneService.class);

String ss = one.sayHi("OK你好");

System.err.println(ss);

-------------------------------------------------------------------

在Spring项目中,通过配置文件调用:

以下是使用Spring的配置文件调用:

新建立一个Java项目,并加载cxf的所有包。

只需要生成的接口文件。

在classpath下新建立一个ClientBeans.xml文件.

优点与缺点:

此种情况,适合于一个Javaweb项目已经集成了Spring。并希望通过CXF配置的方式调用Web服务。

此种情况,仍然需要导入CXF的大量jar包。

这种情况也存在一定人优点,如可以将外部的Web服务通过配置文件注入(DI)到Action类中。

说明:

通过<jaxws:client/>来获取WebService,id就不用说了吧。

address是不包含?wsdl的服务地址。

serviceClass是本地的接口名,与服务接口名保持相同才可以。

原文地址:https://www.cnblogs.com/xyhero/p/96633e9f698c1e9e8a4e4b6bd063bdde.html

时间: 2024-10-08 06:41:10

webservice框架cxf的相关文章

WebService框架CXF实战一在Tomcat中发布WebService(二)

服务接口及实现类请参考WebService框架CXF实战(一) 创建Maven Web项目,在pom.xml中添加CXF和Spring Web的引用,由于CXFServlet需要Spring Web的支持. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&quo

webService框架CXF的简单使用

最近本来已经将上一个项目交活,全身心投入了另外项目的前端的开发工作.可之前的项目经理通知我,之前的项目需要做一个webService的功能,于是稍微做了一下webService,可是忘了通知我现在的项目经理,所以现在的项目经理以为我在做现在项目的前端工作,结果搞得很不好.然而我还是有私心的,因为目前两个项目需要使用的技术是我没有接触过的,而我的一个臭毛病就是对想做的喜欢做的技术会有莫名的兴奋感,每天早上起来的时候想到自己今天要将一个自己不了解的技术应用于工作中,就会很兴奋,恨不得立刻开始工作.总

WebService框架CXF实战一RESTFul服务(七)

JAX-RS概述 JAX-RS是Java提供用于开发RESTful Web服务基于注解(annotation)的API.JAX-RS旨在定义一个统一的规范,使得Java程序员可以使用一套固定的接口来开发REST应用,避免了依赖第三方框架.同时JAX-RS使用POJO编程模型和基于注解的配置并集成JAXB,可以有效缩短REST应用的开发周期.JAX-RS只定义RESTful API,具体实现由第三方提供,如Jersey.Apache CXF等. JAX-RS包含近五十多个接口.注解和抽象类: ja

WebService框架CXF实战一发布RESTFul服务(七)

JAX-RS概述 JAX-RS是Java提供用于开发RESTful Web服务基于注解(annotation)的API.JAX-RS旨在定义一个统一的规范,使得Java程序员可以使用一套固定的接口来开发REST应用,避免了依赖第三方框架.同时JAX-RS使用POJO编程模型和基于注解的配置并集成JAXB,可以有效缩短REST应用的开发周期.JAX-RS只定义RESTful API,具体实现由第三方提供,如Jersey.Apache CXF等. JAX-RS包含近五十多个接口.注解和抽象类: ja

WebService框架CXF实战一传输文件(六)

CXF的文件传输通过MTOM实现.MTOM(SOAP Message Transmission Optimization Mechanism)SOAP消息传输优化机制,可以在SOAP消息中发送二进制数据.MTOM允许将消息中包含的大型数据元素外部化,并将其作为无任何特殊编码的二进制数据随消息一起传送.相对于把二进制转为base64进行传输,MTOM具有更高的传输效率. 文件传输包装类 CXF文件传输DataHandler只有二进制数据,没有文件名.文件类型和文件大小等,需要额外的传输参数.通常自

WebService框架CXF实战(一)

Apache CXF提供了用于方便地构建和开发WebService的可靠基础架构.它允许创建高性能和可扩展的服务,可以部署在Tomcat和基于Spring的轻量级容器中,也可以部署在更高级的服务器上,例如Jboss.WebSphere或WebLogic. CXF提供了以下功能: WebService服务标准支持: Java API for XML Web Services (JAX-WS) SOAP WebService描述语言(Web Services Description Language

WebService框架CXF实战一拦截器Interceptor(四)

拦截器(Interceptor)是CXF功能最主要的扩展点,可以在不对核心模块进行修改的情况下,动态添加很多功能.拦截器和JAX-WS Handler.Filter的功能类似,当服务被调用时,就会创建一个拦截器链(Interceptor Chain),拦截器链在服务输入(IN)或输出(OUT)阶段实现附加功能. 拦截器可以在客户端,也可以在服务端添加.当客户端发起一个WebService请求时,在客户端会创建输出拦截器链,服务端接收到客户端的后,会创建输入拦截器链.当服务端返回响应消息时,响应消

WebService框架CXF实战一自定义拦截器(五)

CXF已经内置了一些拦截器,这些拦截器大部分默认添加到拦截器链中,有些拦截器也可以手动添加,如手动添加CXF提供的日志拦截器.也可以自定义拦截器,CXF中实现自定义拦截器很简单,只要继承AbstractPhaseInterceptor或者AbstractPhaseInterceptor的子类(如AbstractSoapInterceptor)即可. 自定义权限认证拦截器 权限认证拦截器处理SOAPHeader中的认证信息,客户端在发起请求时在SOAPHeader中添加认证信息,服务端在接收到请求

Webservice与CXF框架快速入门

1. Webservice Webservice是一套远程调用技术规范 远程调用RPC, 实现了系统与系统进程间的远程通信.java领域有很多可实现远程通讯的技术,如:RMI(Socket + 序列化).Binary-RPC(Http+二进制, 代表Hessian).XML-RPC(Http+XML, 代表Burlap, WebService用的SOAP).JMS(使用消息机制).Mina(使用NIO)等, 底层都是基于http/socket和网络IO来实现的.从效率上来讲, RMI > Hes