WebService CXF学习 1

理论联系实际,单单只讲理论那就成了纸上谈兵,用一个HelloWorld Demo可来说明事更加直观。那下面咱们就开始进行讲解:
首先到apache官方网下载apache-cxf-2.2.2,地址:http://cxf.apache.org/
新建一个Java Project,导入cxf常用.jar包

Java代码
1.commons-logging-1.1.1.jar  
2.geronimo-activation_1.1_spec-1.0.2.jar (or Sun's Activation jar)  
3.geronimo-annotation_1.0_spec-1.1.1.jar (JSR 250)  
4.geronimo-javamail_1.4_spec-1.6.jar (or Sun's JavaMail jar)  
5.geronimo-servlet_2.5_spec-1.2.jar (or Sun's Servlet jar)  
6.geronimo-ws-metadata_2.0_spec-1.1.2.jar (JSR 181)  
7.geronimo-jaxws_2.1_spec-1.0.jar (or Sun's jaxws-api-2.1.jar)  
8.geronimo-stax-api_1.0_spec-1.0.1.jar (or other stax-api jar)  
9.jaxb-api-2.1.jar  
10.jaxb-impl-2.1.12.jar  
11.jetty-6.1.21.jar  
12.jetty-util-6.1.21.jar  
13.neethi-2.0.4.jar  
14.saaj-api-1.3.jar  
15.saaj-impl-1.3.2.jar  
16.wsdl4j-1.6.2.jar  
17.wstx-asl-3.2.8.jar  
18.XmlSchema-1.4.5.jar  
19.xml-resolver-1.2.jar  
20.cxf-2.2.2.jar 
   commons-logging-1.1.1.jar
   geronimo-activation_1.1_spec-1.0.2.jar (or Sun's Activation jar)
   geronimo-annotation_1.0_spec-1.1.1.jar (JSR 250)
   geronimo-javamail_1.4_spec-1.6.jar (or Sun's JavaMail jar)
   geronimo-servlet_2.5_spec-1.2.jar (or Sun's Servlet jar)
   geronimo-ws-metadata_2.0_spec-1.1.2.jar (JSR 181)
   geronimo-jaxws_2.1_spec-1.0.jar (or Sun's jaxws-api-2.1.jar)
   geronimo-stax-api_1.0_spec-1.0.1.jar (or other stax-api jar)
   jaxb-api-2.1.jar
   jaxb-impl-2.1.12.jar
   jetty-6.1.21.jar
   jetty-util-6.1.21.jar
   neethi-2.0.4.jar
   saaj-api-1.3.jar
   saaj-impl-1.3.2.jar
   wsdl4j-1.6.2.jar
   wstx-asl-3.2.8.jar
   XmlSchema-1.4.5.jar
   xml-resolver-1.2.jar
   cxf-2.2.2.jar

   接下就是HelloWorld Demo开发了
   第一步:新建一个webservice接口

Java代码
1.@WebService 
2.public interface IHelloWorld {  
3.    //@WebParam给参数命名,提高可代码可读性。此项可选  
4.blic String sayHi(@WebParam(name="text") String text);  
5.} 
   @WebService
   public interface IHelloWorld {
       //@WebParam给参数命名,提高可代码可读性。此项可选
    public String sayHi(@WebParam(name="text") String text);
   }

   通过注解@WebService申明为webservice接口
   第二步,实现WebService接口

Java代码
1.  @WebService 
2.  public class HelloWorldImpl implements IHelloWorld {  
3. 
4.public String sayHi(String name) {  
5.    System.out.println("sayHello is called by " + name);  
6.    return "Hello " + name;  
7.}  
8. 
9.   } 
   @WebService
   public class HelloWorldImpl implements IHelloWorld {

    public String sayHi(String name) {
        System.out.println("sayHello is called by " + name);
        return "Hello " + name;
    }

    }

   第三步,创建服务端

Java代码
1.  public class Server {  
2. 
3.private Server(){  
4.    IHelloWorld helloWorld = new HelloWorldImpl();  
5.    //创建WebService服务工厂  
6.    JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();  
7.    //注册WebService接口  
8.    factory.setServiceClass(IHelloWorld.class);  
9.    //发布接口  
10.    factory.setAddress("http://localhost:9000/HelloWorld");  
11.    factory.setServiceBean(helloWorld);  
12.    //创建WebService  
13.    factory.create();  
14.};  
15. 
16.public static void main(String[] args) throws InterruptedException{  
17.       //启动服务端  
18.              new Server();  
19.    System.out.println("Server ready...");  
20.    //休眠一分钟,便于测试  
21.               Thread.sleep(1000*60);  
22.    System.out.println("Server exit...");  
23.    System.exit(0);  
24.}  
25.   } 
   public class Server {

    private Server(){
        IHelloWorld helloWorld = new HelloWorldImpl();
        //创建WebService服务工厂
        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
        //注册WebService接口
        factory.setServiceClass(IHelloWorld.class);
        //发布接口
        factory.setAddress("http://localhost:9000/HelloWorld");
        factory.setServiceBean(helloWorld);
        //创建WebService
        factory.create();
    };
   
    public static void main(String[] args) throws InterruptedException{
           //启动服务端
               new Server();
        System.out.println("Server ready...");
        //休眠一分钟,便于测试
                Thread.sleep(1000*60);
        System.out.println("Server exit...");
        System.exit(0);
    }
    }

    第四步,创建客户端
  
Java代码
1.   public class Client {  
2. 
3.private Client(){};  
4. 
5.public static void main(String[] args){  
6.    //创建WebService客户端代理工厂  
7.    JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();  
8.    //注册WebService接口  
9.    factory.setServiceClass(HelloWorld.class);  
10.    //设置WebService地址  
11.    factory.setAddress("http://localhost:9000/HelloWorld");       
12.    IHelloWorld iHelloWorld = (IHelloWorld)factory.create();  
13.    System.out.println("invoke webservice...");  
14.    System.out.println("message context is:"+iHelloWorld.sayHi("    
15.                 Josen"));  
16.    System.exit(0);  
17.}  
18.   }  
19.   
    public class Client {

    private Client(){};
   
    public static void main(String[] args){
        //创建WebService客户端代理工厂
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        //注册WebService接口
        factory.setServiceClass(HelloWorld.class);
        //设置WebService地址
        factory.setAddress("http://localhost:9000/HelloWorld");       
        IHelloWorld iHelloWorld = (IHelloWorld)factory.create();
        System.out.println("invoke webservice...");
        System.out.println("message context is:"+iHelloWorld.sayHi(" 
                  Josen"));
        System.exit(0);
    }
    }
  

    最后是万事俱备,只欠测试了
    首先,运行服务端程序
    其次,打开浏览器,在地址栏中输入http://localhost:9000/HelloWorld?wsdl(因为cxf自带了一个jetty服务器),查看接口是否发布成功,如里浏览器页面显示下面内容,证明接口发布成功

你可能感兴趣的:(webservice,CXF)