怎样在最新版spring boot 中同时使用cxf 和xfire

1 ,maven : 配置项

   <!--cxf包依赖-->

    <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-spring-boot-starter-jaxrs</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>${cxf.version}</version>
        </dependency>
     
      
        
          <!--Xfirejar包依赖-->
        <dependency>
            <groupId>org.codehaus.xfire</groupId>
            <artifactId>xfire-all</artifactId>
            <version>1.2.6</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

 

 

2.

servie 配置类

@ImportResource("classpath:xfire.xml")
@Configuration
public class WebServiceConfig   {
    

@Bean
public WebAnnotations webAnnotations() {
    return new Jsr181WebAnnotations();
}

@Bean
public Jsr181HandlerMapping jsr181HandlerMapping(@Autowired XFire xFire) {
    Jsr181HandlerMapping jsr181HandlerMapping = new Jsr181HandlerMapping();
    jsr181HandlerMapping.setXfire(xFire);
    jsr181HandlerMapping.setWebAnnotations(webAnnotations());
    jsr181HandlerMapping.setOrder(Ordered.HIGHEST_PRECEDENCE);
    return jsr181HandlerMapping;
}

    
//    cxf 方式
    @Autowired
    private Bus bus;

    @Autowired
    private OrderService orderService;

    @Bean
    public Endpoint endpoint(){
        EndpointImpl endpoint = new EndpointImpl(bus, orderService);
        endpoint.publish("/orderService");
        return endpoint;
    }


}

3.  xfire 需要进入 如下bean 可以通过xml 也可以使用@bean 配置

<bean id="xfire.serviceRegistry"
          class="org.codehaus.xfire.service.DefaultServiceRegistry"/>

    <bean id="xfire.transportManager"
          class="org.codehaus.xfire.transport.DefaultTransportManager"
          init-method="initialize" destroy-method="dispose">
    </bean>

    <bean id="xfire" class="org.codehaus.xfire.DefaultXFire">
        <constructor-arg index="0">
            <ref bean="xfire.serviceRegistry" />
        </constructor-arg>
        <constructor-arg index="1">
            <ref bean="xfire.transportManager" />
        </constructor-arg>
    </bean>

    <bean id="xfire.typeMappingRegistry"
          class="org.codehaus.xfire.aegis.type.DefaultTypeMappingRegistry"
          init-method="createDefaultMappings" >
    </bean>

    <bean id="xfire.aegisBindingProvider"
          class="org.codehaus.xfire.aegis.AegisBindingProvider">
        <constructor-arg index="0">
            <ref bean="xfire.typeMappingRegistry" />
        </constructor-arg>
    </bean>

    <bean id="xfire.serviceFactory"
          class="org.codehaus.xfire.service.binding.ObjectServiceFactory">
        <constructor-arg index="0">
            <ref bean="xfire.transportManager" />
        </constructor-arg>
        <constructor-arg index="1">
            <ref bean="xfire.aegisBindingProvider" />
        </constructor-arg>
    </bean>

    <bean id="xfire.servletController"
          class="org.codehaus.xfire.transport.http.XFireServletController">
        <constructor-arg>
            <ref bean="xfire" />
        </constructor-arg>
    </bean>

    <bean id="xfire.messageServiceFactory"
          class="org.codehaus.xfire.service.binding.ObjectServiceFactory">
        <constructor-arg index="0" ref="xfire.transportManager" />
        <constructor-arg index="1" ref="xfire.messageBindingProvider" />
        <property name="style" value="message" />
    </bean>

    <bean id="xfire.messageBindingProvider"
          class="org.codehaus.xfire.service.binding.MessageBindingProvider" />
    <!-- START SNIPPET: xfire -->
<!--     <bean
        class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="urlMap">
            <map>
                <entry key="/orderService">
                    <ref bean="orderService" />
                </entry>
            </map>
        </property>
    </bean> -->

    <!-- 定义一个父类,让所有服务都可共用,而不需要每次都加上XFire的配置 -->
    <bean id="XFireAbstractBean"
        class="org.codehaus.xfire.spring.remoting.XFireExporter"
        abstract="true">
        <property name="serviceFactory">
            <ref bean="xfire.serviceFactory" />
        </property>
        <property name="xfire">
            <ref bean="xfire" />
        </property>
    </bean>

4.

接口:

@WebService( name = "helloService ",// 暴露服务名称
targetNamespace = "http://service.hello.com"// 命名空间,一般是接口的包名倒序
)
public interface HelloService {

   @WebMethod
    @WebResult
    String sendMessage(@WebParam(name = "username") String username);

}

 

实现类;

@WebService(serviceName = "orderService", // 与接口中指定的name一致
        targetNamespace = "http://service.hellow.com", // 与接口中的命名空间一致,一般是接口的包名倒
        endpointInterface = "com.hellow.web.webservice.service.HelloService"// 接口地址
)
@BindingType(value = SOAPBinding.SOAP12HTTP_BINDING)
@Component("orderServiceImpl")
public class OrderServiceImpl  implements OrderService {

    @Override
    public String sendMessage(String test) {

        return "hello " + test;
    }

}

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sunday_ding

一分钱也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值