CXF 入门步骤 详解:HelloWorld接口发布

来源:互联网 发布:淘宝密令红包不中 编辑:程序博客网 时间:2024/05/31 15:19

第一步:在myeclipse中新建一个web项目名为myWs,
并导入依赖的jar包(cxf,spring,apache-commons相关)

 

1、commons-logging-1.1.1.jar

2、cxf-2.4.1.jar

3、geronimo-activation_1.1_spec-1.1.jar

4、geronimo-annotation_1.0_spec-1.1.1.jar

5、geronimo-javamail_1.4_spec-1.7.1.jar

6、geronimo-jaxws_2.2_spec-1.0.jar

7、geronimo-servlet_3.0_spec-1.0.jar

8、geronimo-stax-api_1.0_spec-1.0.1.jar

9、geronimo-ws-metadata_2.0_spec-1.1.3.jar

10、jettison-1.3.jar

11、jetty-continuation-7.4.2.v20110526.jar

12、jetty-http-7.4.2.v20110526.jar

13、jetty-io-7.4.2.v20110526.jar

14、jetty-server-7.4.2.v20110526.jar

15、jetty-util-7.4.2.v20110526.jar

16、neethi-3.0.0.jar

17、saaj-api-1.3.jar

18、saaj-impl-1.3.2.jar

19、serializer-2.7.1.jar

cxf结合spring时所需jar包,此例子也需要这些,用到了spring上下文加载

(

    spring-asm-3.0.5.RELEASE.jar

    spring-beans-3.0.5.RELEASE.jar

    spring-context-3.0.5.RELEASE.jar

    spring-core-3.0.5.RELEASE.jar

    spring-expression-3.0.5.RELEASE.jar

    spring-aop-3.0.5.RELEASE.jar

    spring-web-3.0.5.RELEASE.jar

)

20、wsdl4j-1.6.2.jar

21、xalan-2.7.1.jar

22、xercesImpl.jar

23、xml-resolver-1.2.jar

24、xmlschema-core-2.0.jar

 

 

 

 

第二步:在WEB-INF中创建基本的cxf-beans.xml内容如下(作用:主要做webservice接口属性配置,通过web.xml配置加载,文件名和位置可以顺便,web.xml配置会用到)

 

Xml代码  收藏代码
  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:jaxws="http://cxf.apache.org/jaxws"  
  4.     xmlns:cxf="http://cxf.apache.org/core"  
  5.     xsi:schemaLocation="http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"  
  6.     default-autowire="byType" default-lazy-init="true">  
  7.   
  8.     <description>使用Apache CXF的Web Service配置文件,以下三个为固定配置文件(不需要创建)</description>  
  9.     <import resource="classpath:META-INF/cxf/cxf.xml" />  
  10.     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
  11.     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  
  12.   
  13.     <!--在这里配置相应内容-->  
  14.       
  15. </beans>  

 

 

第三部:在web.xml中加入cxf相应配置,内容如下:

Xml代码  收藏代码
  1. <!--cxf start-->  
  2. <!--用于加载cxf-beans.xml配置信息-->  
  3.     <context-param>  
  4.         <param-name>contextConfigLocation</param-name>  
  5.         <param-value>WEB-INF/cxf-beans.xml</param-value>  
  6.     </context-param>  
  7.     <!--使用spring ContextLoaderListener 加载cxf-beans.xml-->  
  8.     <listener>  
  9.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  10.     </listener>  
  11. <!--配置CXFServlet-->  
  12.     <servlet>  
  13.         <servlet-name>CXFServlet</servlet-name>  
  14.         <display-name>CXF Servlet</display-name>  
  15.         <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
  16.         <load-on-startup>1</load-on-startup>  
  17.     </servlet>  
  18.     <servlet-mapping>  
  19.         <servlet-name>CXFServlet</servlet-name>  
  20.         <!-- url可自定义配置,用于CXFServlet请求地址拦截,访问会用到 -->  
  21.         <url-pattern>/services/*</url-pattern>  
  22.     </servlet-mapping>  
  23. <!--cxf end -->  

 第四步:创建webservice接口及实现类

Java代码  收藏代码
  1. 1,创建接口  
  2. @WebService()//此注解必须,里面name,portName,targetNamespace serviceName 可以不用指定  
  3. public interface IHelloService {  
  4.     public String sayHello();  
  5. }  
  6.   
  7. 2,创建实现类  
  8. public class HelloWorldServiceImpl implements IHelloService {  
  9.   
  10.     public String sayHello() {  
  11.         System.out.println("It's my first webservice !");  
  12.         return "你已经成功调用sayHello()方法!";  
  13.     }  
  14.   
  15. }  

 第五步:配置cxf-beans.xml,加入以下内容:

Xml代码  收藏代码
  1. <!--id:随意配,implementor:指定接口具体实现类,address:随意配,访问时会用到,下面会做说明-->  
  2. <jaxws:endpoint id="HelloWorldService" implementor="com.ws.HelloWorldServiceImpl"  
  3.         address="/IHelloService">  
  4. </jaxws:endpoint>  

 第六步:发布webservice到tomcat

 

Java代码  收藏代码
  1. 1,验证ws是否发布成功:  
  2.    1.1,如果项目发布放在TOMCAT_HOME/webapps下时:  
  3.        访问http://IP地址:端口/项目名/services/{cxf-beans.xml中配置的address}?wsdl  
  4.    1.2,如果是在tomcat_home/conf的server.xml中配置的是外部站点(<Context  path="/testWs" docBase="D:\Developer\myWs" debug="0" reloadable="false" />),  
  5.    那访问方式应该是http://IP:端口/path值(没有就不用加)/services/{cxf-beans.xml中配置的address}?wsdl,  
  6.    例如:http://localhost:8080/testWs/services/IHelloService?wsdl //services对应web.xml中的<url-pattern>/services/*</url-pattern> services  
  7.     验证是否能正常看到xml格式的页面  

 

可以用SoapUi 软件测试接口

 

GOOD LUCKY!!!

 

写的不明的地方还请大家提出

远程具体调用方式请参考:CXF 入门之远程接口调用