苏烟软包香烟价格表:CXF 2.0 webservice 学习笔记2

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 08:57:17

对比了一下CXF2 和 AXIS 2 还是选择在框架中集成CXF2。不过CXF2的文档更新的真是慢啊,试了一下,目前CXF2支持的两种绑定方式jaxb2和aegis,看了半天源码总算调通了。又忍不住批一下他的文档,给的都是半调子的例子,希望开发小组能尽快完善啊!

先放一个HelloWold的aegis的配置:
一、server 端:
1. HelloWorld.java
代码

  1. package demo.spring;   
  2.   
  3. import javax.jws.WebService;   
  4.   
  5. @WebService  
  6. public interface HelloWorld {   
  7.     String sayHi(String text);   
  8. }   

 

2.HelloWorldImpl.java
代码

  1. package demo.spring;   
  2.   
  3. import javax.jws.WebService;   
  4.   
  5. @WebService(endpointInterface = "demo.spring.HelloWorld")   
  6. public class HelloWorldImpl implements HelloWorld {   
  7.   
  8.     public String sayHi(String text) {   
  9.         return "Hello " + text;   
  10.     }   
  11. }   

 

3.beans.xml
代码

  1.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xmlns:jaxws="http://cxf.apache.org/jaxws"  
  3.     xsi:schemaLocation="   
  4. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd   
  5. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">  
  6.   
  7.       
  8.       
  9.       
  10.   
  11.     
  12.         class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">  
  13.           
  14.           
  15.       
  16.   
  17.     
  18.         class="org.apache.cxf.aegis.databinding.AegisDatabinding" />  
  19.   
  20.     
  21.         implementor="demo.spring.HelloWorldImpl" address="/HelloWorld">  
  22.           
  23.               
  24.           
  25.       
  26.   

 

4.web.xml
代码

  1.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  3.   
  4.       
  5.         contextConfigLocation  
  6.         WEB-INF/beans.xml  
  7.       
  8.   
  9.       
  10.           
  11.             org.springframework.web.context.ContextLoaderListener   
  12.           
  13.       
  14.   
  15.       
  16.         CXFServlet  
  17.           
  18.             org.apache.cxf.transport.servlet.CXFServlet   
  19.           
  20.         1  
  21.       
  22.   
  23.       
  24.         CXFServlet  
  25.         /ws/*  
  26.       
  27.   
  28.   

 

二、客户端

1.ClientTest.java
代码

  1. package demo.spring.client;   
  2.   
  3. import static org.junit.Assert.assertEquals;   
  4.   
  5. import org.apache.cxf.aegis.databinding.AegisDatabinding;   
  6. import org.apache.cxf.frontend.ClientProxyFactoryBean;   
  7. import org.junit.AfterClass;   
  8. import org.junit.BeforeClass;   
  9. import org.junit.Test;   
  10. import org.springframework.context.support.ClassPathXmlApplicationContext;   
  11.   
  12. import demo.spring.HelloWorld;   
  13.   
  14. public final class ClientTest {   
  15.   
  16.     private static ClassPathXmlApplicationContext context;   
  17.   
  18.     @BeforeClass  
  19.     public static void beforeClass() {   
  20.         context = new ClassPathXmlApplicationContext(   
  21.                 new String[] { "demo/spring/client/client-beans.xml" });   
  22.     }   
  23.   
  24.     @AfterClass  
  25.     public static void afterClass() {   
  26.         context = null;   
  27.     }   
  28.   
  29.     @Test  
  30.     public void testSayHiWithSpringConfig() throws Exception {   
  31.   
  32.         HelloWorld client = (HelloWorld) context.getBean("client");   
  33.   
  34.         String response = client.sayHi("Joe");   
  35.         assertEquals("Hello Joe", response);   
  36.     }   
  37.        
  38.     /**  
  39.      * 这个官方有例子(http://cwiki.apache.org/CXF20DOC/aegis-databinding.html)  
  40.      *   
  41.      * @throws Exception  
  42.      */  
  43.     @Test  
  44.     public void testSayHiByCode() throws Exception {   
  45.   
  46.          ClientProxyFactoryBean factory = new ClientProxyFactoryBean();   
  47.          factory.setServiceClass(HelloWorld.class);   
  48.          factory.setAddress("http://localhost:8080/testCxf/ws/HelloWorld");   
  49.          factory.getServiceFactory().setDataBinding(new AegisDatabinding());   
  50.          HelloWorld client = (HelloWorld) factory.create();   
  51.   
  52.          assertEquals("Hello Joe", client.sayHi("Joe"));   
  53.     }      
  54. }   
  55.   

 

2.client_beans.xml(testSayHiWithSpringConfig()中需要使用的配置文件)

代码

  1.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xmlns:jaxws="http://cxf.apache.org/jaxws"  
  3.     xsi:schemaLocation="   
  4. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   
  5. http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">  
  6.   
  7.        
  8.     
  9.         class="org.apache.cxf.aegis.databinding.AegisDatabinding" />  
  10.            
  11.       
  12.           
  13.       
  14.   
  15.     
  16.         factory-bean="clientFactory" factory-method="create" />  
  17.   
  18.     
  19.         class="org.apache.cxf.frontend.ClientProxyFactoryBean">  
  20.           
  21.         
  22.             value="demo.spring.HelloWorld" />  
  23.         
  24.             value="http://localhost:8080/testCxf/ws/HelloWorld" />  
  25.       
  26.   
  27.