spring cxf 开发webservice

CXF spring 集成

1 新建 web project , 并加入 a pache-cxf-2.0.7/lib 所有包 ,编写要发布的 web service 接口和实现 . 这一步,与前面一样。

import javax.jws.WebService;

@WebService 

public interface HelloWorld {  

     public String sayHello(String text);  

}

import javax.jws.WebService;  

@WebService(endpointInterface="test.HelloWorld")  

public class HelloWorldImpl implements HelloWorld {  

      public String sayHello(String text) {  

                  return "Hello" + text ;  

    }  

  } 

@WebService  注解表示是要发布的 web 服务

2. spring-cxf.xml 配置发布的 web service 

<? 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.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 = "hello" class = "test.HelloWorldImpl" />  

    < jaxws:endpoint id = "helloWorld" implementor = "#hello" 

        address = "/HelloWorld" />  

   </ beans >

注意: < jaxws:endpoint id = "helloWorld" implementor = "#hello" 

        address = "/HelloWorld" />  

id :指在 spring 配置的 bean ID.

Implementor: 指明具体的实现类 .

Address: 指明这个 web service 的相对地址,

3.  配置 web.xml 文件:

<? xml version = "1.0" encoding = "UTF-8" ?>  

< web-app version = "2.4" xmlns = "http://java.sun.com/xml/ns/j2ee" 

    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 

    xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee   

    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >  

    < context-param >  

        < param-name > contextConfigLocation </ param-name >  

        < param-value > classpath:spring-cxf.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 >  

</ web-app >  

4 部署到 tomcat 服务器 , 输入 :http://localhost:8080/<web-app-name>/ HelloWorld?wsdl, 将显示这个 web service wsdl.

注意:如果web.xml 配置 < servlet-name > CXFServlet </ servlet-name >  

        < url-pattern > /ws/* </ url-pattern >  

则访问地址为: http://localhost:8080/<web-app-name>/ws/ HelloWorld?wsdl

5. 下面就开始创建一个客户端程序,访问这个web service, 同样新建 java project , 并加入 a pache-cxf-2.0.7/lib 所有包 . 创建与具体webservice 技术无关的业务接口HelloWorld.java

public interface HelloWorld {  

     public String sayHello(String text);  

}

6. 配置 spring-client.xml

< 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.0.xsd

http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd" >

 

    < bean id = "client" class = "test.HelloWorld"

      factory-bean = "clientFactory" factory-method = "create" />

   

    < bean id = "clientFactory" class = "org.apache.cxf.jaxws.JaxWsProxyFactoryBean" >

      < property name = "serviceClass" value = "test.HelloWorld" />

      < property name = "address" value = "http://localhost:9000/helloWorld" />

<!-- 这个地方的地址一定要注意,正确的 -->

    </ bean >

     

</ beans >

7 .测试:

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

 

import test.HelloWorld;

 

public class Test {  

     

    public static void main(String[] args) {  

 

        ApplicationContext ctx = new ClassPathXmlApplicationContext(  

                "spring-client.xml" );  

        HelloWorld client = (HelloWorld) ctx.getBean( "client" );  

        String result = client.sayHello( " 你好 !" );  

        System. out .println(result);  

    }  

}

猜你喜欢

转载自feiyeguohai.iteye.com/blog/1443299