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;
}
}