CXF与Spring 2.5整合

1.1资源下载

CXF http://cxf.apache.org (apache-cxf-2.2.10)

       Springhttp://www.springsource.com/download(spring2.5.5)

 

1.2系统环境

              JDK版本  1.6.0_18

              Tomcat版本:6.0 

 

1.3项目构建

第一步:导入CXF相关的类库

 

 

接着导入Spring 依赖的包

 

第二步:配置WEB-INF文件

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			WEB-INF/classes/applicationContext.xml
		</param-value>
	</context-param>
		
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>

	<servlet>
		<servlet-name>CXFServlet</servlet-name>
		<servlet-class>
			org.apache.cxf.transport.servlet.CXFServlet
		</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>CXFServlet</servlet-name>
		<url-pattern>/ws/*</url-pattern>
	</servlet-mapping>

 

 

第三步:编写接口及其实现类

接口类:
@WebService  
public interface IHelloWorld {

	//@WebParam给参数命名,提高可代码可读性。此项可选
	public String sayHi(@WebParam(name="text") String text);
}

实现类:
@WebService(endpointInterface = "com.ce.IHelloWorld") 
public class HelloWorldImpl implements IHelloWorld {

	public String sayHi(String text) {
		// TODO Auto-generated method stub
		System.out.println("sayHello is called by " + text);
		return text;
	}
}

 

第四步:对Spring进行配置,向外发布接口

 

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
						http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
						http://cxf.apache.org/jaxws 
						http://cxf.apache.org/schemas/jaxws.xsd">

	<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" />

	<bean id="jaxWsServiceFactoryBean"
		class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
		<property name="wrapped" value="true" />
		<property name="dataBinding" ref="aegisBean" />
	</bean>

	<bean id="aegisBean"
		class="org.apache.cxf.aegis.databinding.AegisDatabinding" />

	<jaxws:endpoint id="CollectiveServices"
		implementor="com.ce.impl.HelloWorldImpl" address="/HelloWorld">
		<jaxws:serviceFactory>
			<ref bean="jaxWsServiceFactoryBean" />
		</jaxws:serviceFactory>
	</jaxws:endpoint>

</beans>

 

第五步:服务器端测试

启动tomcat,在浏览器地址栏输入http://localhost:8080/cxf-spring/ws/HelloWorld?wsdl,验证是否配置正确。

 

 

<wsdl:import
 Lo  location="http://localhost:8080/cxf-spring/ws/HelloWorld?wsdl=IHello
Wo  world.wsdl" namespace="http://ce.com/" /> 
- <<wsdl:binding name="HelloWorldImplServiceSoapBinding"
 Ty  type="ns1:IHelloWorld">
  <    <soap:binding style="document"
 Tr         transport="http://schemas.xmlsoap.org/soap/http" /> 
- <       <wsdl:operation name="sayHi">
  <       <soap:operation soapAction="" style="document" /> 
- <       <wsdl:input name="sayHi">
  <       <soap:body use="literal" /> 
       </wsdl:input>
- <      <wsdl:output name="sayHiResponse">
  <     <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
- <  <wsdl:service name="HelloWorldImplService">
- <<wsdl:port binding="tns:HelloWorldImplServiceSoapBinding"
 Na  name="HelloWorldImplPort">
  <soap:address location="http://localhost:8080/cxf-spring/ws/HelloWorld" /> 

  

第六步:编写客户端程序进行测试

private static ClassPathXmlApplicationContext context;   
	  
    @BeforeClass  
    public static void beforeClass() {   
        context = new ClassPathXmlApplicationContext(   
                new String[] { "classpath:client_beans.xml" });   
    }   
  
    @AfterClass  
    public static void afterClass() {   
        context = null;   
    }   
  
    @Test  
    public void testSayHiWithSpringConfig() throws Exception {   
  
        IHelloWorld client = (IHelloWorld) context.getBean("client");   
        String response = client.sayHi("Joe");   
        assertEquals("Joe", response);   
    }   
    
    @Test  
    public void testSayHiByCode() throws Exception {   	
    	 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
         factory.getInInterceptors().add(new LoggingInInterceptor());
         factory.getOutInterceptors().add(new LoggingOutInterceptor());
         factory.setServiceClass(IHelloWorld.class);
         factory.setAddress("http://localhost:8080/cxf-spring/ws/HelloWorld");
         IHelloWorld service = (IHelloWorld)factory.create();
         assertEquals("Joe", service.sayHi("Joe"));

}

 

 

猜你喜欢

转载自wenrunchang123.iteye.com/blog/1313941
今日推荐