c语言编程笔录

首页 >   > 笔记大全

笔记大全

使用spring怎么对cxf框架进行整合

更新时间:2023-10-01

1. 引入CXF和Spring依赖

首先需要在项目中引入CXF和Spring相关的依赖,可以通过Maven配置实现。例如:

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>3.3.7</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.2</version>
</dependency>

2. 定义WebService接口

在整合CXF和Spring的过程中,需要定义WebService接口。可以通过标准的JAX-WS注解定义接口方法的输入输出参数、所使用的SOAP绑定和地址信息等。例如:

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public interface HelloWorldService {

    @WebMethod
    String sayHello(String name);
}

3. 配置CXF服务端

在Spring配置文件中定义CXF服务端,包括所用的WebService实现类、服务地址和SOA绑定等信息。例如:

<bean id="helloWorldService" class="com.example.HelloWorldServiceImpl"/>
 
<bean id="cxf" class="org.apache.cxf.bus.spring.SpringBus">
    <property name="extensions">
        <list>
            <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
            <bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor"/>    
        </list>
    </property>
</bean>
 
<cxf:service id="helloWorldServiceEndpoint"
                  address="/helloWorldService"
                  serviceClass="com.example.HelloWorldService"
                  serviceBean="#helloWorldService"
                  endpointName="s:HelloWorldServicePort"
                  serviceName="s:HelloWorldService"
                  wsdlLocation="WEB-INF/wsdl/HelloWorldService.wsdl">
    <cxf:inInterceptors>
        <ref bean="loggingInInterceptor"/>
    </cxf:inInterceptors>
    <cxf:outInterceptors>
        <ref bean="loggingOutInterceptor"/>
    </cxf:outInterceptors>
    <cxf:outFaultInterceptors>
        <ref bean="loggingOutInterceptor"/>
    </cxf:outFaultInterceptors>
    <cxf:inFaultInterceptors>
        <ref bean="loggingInInterceptor"/>
    </cxf:inFaultInterceptors>
</cxf:service>

4. 配置Spring MVC客户端

在Spring MVC控制器中定义CXF客户端,使其能够用于调用WebService服务。例如:

<bean id="helloWorldClient" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
    <property name="serviceClass" value="com.example.HelloWorldService"/>
    <property name="address" value="http://localhost:8080/myapp/helloWorldService"/>
</bean>