CXF入门例子

1、 WebService实现类:@WebService注解表示这个类发布为一个WebService服务。

package com.coshaho.learn.cxf;

import javax.jws.WebService;

/**
 * WebService实现类不继承接口,则所有WebService相关注解需要写在实现类中
 * @author coshaho
 *
 */
@SuppressWarnings("restriction")
@WebService(name="HelloWoldService")
public class HelloWorldServiceImpl
{
    public String sayHello(String username) 
    {
        return "Hello " + username + "!";
    }
}

2、发布服务。

package com.coshaho.learn.cxf;

import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

public class CXFServer 
{
    public static void main(String[] args)
    {
        JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
        
        // Web服务的地址
        factoryBean.setAddress("http://localhost:8081/hello");

        // Web服务对象调用接口
        factoryBean.setServiceClass(HelloWorldServiceImpl.class);
        Server server = factoryBean.create();
        server.start();
    }
}

3、WebService客户端模拟接口:CXF客户端接口参数名称(@WebParam),方法名称(@WebMethod),返回值名称(@WebResult)需要与WebService服务端实现类或接口保持一致。

package com.coshaho.learn.cxf;

import javax.jws.WebService;

/**
 * CXF客户端接口参数名称(@WebParam),方法名称(@WebMethod),返回值名称(@WebResult)需要与WebService服务端实现类或接口保持一致
*
@author coshaho * */ @SuppressWarnings("restriction") @WebService public interface HelloWoldClientServiceI { public String sayHello(String userName); }

4、客户端调用WebService服务。

package com.coshaho.learn.cxf;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

public class CXFClient 
{
    public static void main(String[] args)
    {
        JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();

        //获取服务器端
        factoryBean.setAddress("http://localhost:8081/hello");

        //通过客户端的接口获取服务器端的接口
        factoryBean.setServiceClass(HelloWoldClientServiceI.class);
        HelloWoldClientServiceI hello =(HelloWoldClientServiceI) factoryBean.create();
        System.out.println(hello.sayHello("CXF"));
    }
}

5、如果服务端实现类继承于一个接口,则可以在接口中写明WebService相关注解,实现类省略注解。

package com.coshaho.learn.cxf;

import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;

/**
 * WebService实现类可以继承WebService接口,所有WebService相关注解写在接口中
 * @author coshaho
 *
 */
@SuppressWarnings("restriction")
@WebService(name="HelloWoldService")
public interface HelloWoldServiceI 
{
    @WebMethod(operationName="sayHelloWorld")
    @WebResult(name="result")
    public String sayHello(@WebParam(name="userName") String username);   
}

 

posted @ 2016-01-06 14:05  coshaho  阅读(536)  评论(0编辑  收藏  举报