Tomcat下通过CXF实现不用注解发布WebService

本文介绍如何使用CXF框架结合Spring部署WebService,包括配置web.xml、Spring配置文件、编写接口及其实现类等步骤。

最近开始学习CXF框架下部署WebServices  , 起初都是用注释类或使用JAX-WS的方式如@WebService 等方式来进行和Spring结合发布的WebService


但是后来突然发现这样无形中和Java代码的耦合程度更大了,于是便需找累死xfie的aegis方式进行部署,貌似这类的文章很难找,


虽然找了大概三四天吧不过很幸运,感谢博主http://blog.csdn.net/pengchua/article/details/2740588


本文将通过图文方式进行部署,顺便把和Spring的结合进行讲解一下:


1....................首先看一下我的工程目录,这样会更容易下面的理解


2...............................配置web.xml文件这样所有架构才能启动(之前别忘记加入Spring和CXF的架包)

[html]  view plain copy print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  5.     id="WebApp_ID" version="2.5">  
  6.   
  7.     <!--spring需要加载的配置文件-->  
  8.     <context-param>  
  9.         <param-name>contextConfigLocation</param-name>  
  10.         <param-value>  
  11.             classpath:applicationContext-server.xml  
  12.         </param-value>  
  13.     </context-param>  
  14.     <listener>  
  15.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  16.     </listener>  
  17.     <!-- 
  18.         cxf服务启动servlet 
  19.     -->  
  20.     <servlet>  
  21.         <servlet-name>CXFServlet</servlet-name>  
  22.         <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
  23.         <load-on-startup>1</load-on-startup>  
  24.     </servlet>  
  25.     <servlet-mapping>  
  26.         <servlet-name>CXFServlet</servlet-name>  
  27.         <url-pattern>/services/*</url-pattern>  
  28.     </servlet-mapping>  
  29.     <welcome-file-list>  
  30.         <welcome-file>index.jsp</welcome-file>  
  31.     </welcome-file-list>  
  32. </web-app>  

3.....................................Spring 配置文件applicationContext.xml的配置

[html]  view plain copy print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:context="http://www.springframework.org/schema/context"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6.                      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     
  7.                         http://www.springframework.org/schema/context     
  8.             http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
  9.     <import resource="xml/services.xml" />  
  10. </beans>  

4................................编写接口文件


[java]  view plain copy print ?
  1. package com.interfaces;  
  2.   
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. import org.w3c.dom.Document;  
  7.   
  8. import com.javabean.User;  
  9.   
  10. public interface ServicesInterface {  
  11.   
  12.     //字符串  
  13.     public String sayHi(String text);  
  14.   
  15.     //document类型对象  
  16.     public Document getDocument();  
  17.       
  18.     String sayUserHello(User user);  
  19.        
  20.     List<User> findUsers();  
  21.    
  22.     Map<Integer, User> getMapUsers();  
  23.   
  24. }  

5...................编写实现类(这些应该都是小儿科了吧)

[java]  view plain copy print ?
  1. package com.interfaces;  
  2.   
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. import org.w3c.dom.Document;  
  7.   
  8. import com.javabean.User;  
  9.   
  10. public interface ServicesInterface {  
  11.   
  12.     //字符串  
  13.     public String sayHi(String text);  
  14.   
  15.     //document类型对象  
  16.     public Document getDocument();  
  17.       
  18.     String sayUserHello(User user);  
  19.        
  20.     List<User> findUsers();  
  21.    
  22.     Map<Integer, User> getMapUsers();  
  23.   
  24. }  

6........................看看User这个JavaBean里面有什么冬冬

[java]  view plain copy print ?
  1. package com.javabean;  
  2.   
  3. public class User {  
  4.     private String username;  
  5.     private String password;  
  6.   
  7.     public String getUsername() {  
  8.         return username;  
  9.     }  
  10.   
  11.     public void setUsername(String username) {  
  12.         this.username = username;  
  13.     }  
  14.   
  15.     public String getPassword() {  
  16.         return password;  
  17.     }  
  18.   
  19.     public void setPassword(String password) {  
  20.         this.password = password;  
  21.     }  
  22.   
  23. }  

7........................配置services.xml就是用来部署接口的这个文件,这个很重要,真的很重要(后面就知道为什么了)


[html]  view plain copy print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:simple="http://cxf.apache.org/simple"  
  4.     xmlns:soap="http://cxf.apache.org/bindings/soap"  
  5.     xsi:schemaLocation="  
  6. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  7. http://cxf.apache.org/core     
  8.   http://cxf.apache.org/schemas/core.xsd  
  9.  http://cxf.apache.org/simple    
  10.  http://cxf.apache.org/schemas/simple.xsd">  
  11.   
  12.     <import resource="classpath:META-INF/cxf/cxf.xml" />  
  13.     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  
  14.     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
  15.   
  16.     <bean id="aegisBean" class="org.apache.cxf.aegis.databinding.AegisDatabinding" />  
  17.   
  18.     <simple:server id="helloservice" serviceClass="com.interfaces.ServicesInterface"  
  19.         address="/hello">  
  20.         <simple:serviceBean>  
  21.             <bean class="com.imp.HelloWorldImpl" />  
  22.         </simple:serviceBean>  
  23.         <simple:dataBinding>  
  24.             <ref bean="aegisBean" />  
  25.         </simple:dataBinding>  
  26.     </simple:server>  
  27. </beans>  

注意:上面的配置文件中不仅要注意配置的内容,而且要注意配置的顺序,例如


[html]  view plain copy print ?
  1. http://cxf.apache.org/simple    
  2. http://cxf.apache.org/schemas/simple.xsd  

这两个的先后顺序是不能颠倒的,唉,在这里吃好大亏啊,如果颠倒了的话在写下面的标签的时候你回发现根本找不到simple的标签,所以一定要注意


8.............................如果一切顺利的话那么就来启动服务器来看看我们的成果吧

http://localhost:8080/aegis_CXF/services/hello?wsdl

呵呵最喜欢看到下面这张图了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值