CXF中使用Simple FrontEnd Project方式發佈並獲取webservice服務

/**

**QQ:252574345

**MSN:[email protected]

*/

 

使用CXF Simple FrontEnd Project,不需要在業務接口中設置具體的協議、@Web Service、@Web Method,僅僅需要創建與具體webservice技術無關的業務接口就可以了(真有點像SCA了,呵呵不恰當的對比)。利用代理類進行發佈服務和獲取服務

(工程文件附後下載)

 

1。業務接口

 

package demo.zhaoyl.server;

/**
 * 業務接口
 * 與wsdl first project 、java first project方式不同的是
 * 這個業務接口僅僅是普通的java interface
 * @author zhaoyl
 *
 */
public interface HelloWorld
{
   
    String sayHi(String name);

}

 

2。業務接口實現類

 

package demo.zhaoyl.server;

/**
 * 業務接口實現類
 * @author zhaoyl
 *
 */
public class HelloWorldImpl implements HelloWorld {

 /**
  * 向客戶端返回一個名字
  */
    public String sayHi(String name) {
        return "Hello " + name;
    }
}

 

 

3。服務端

 

package demo.zhaoyl.server;

import org.apache.cxf.frontend.ServerFactoryBean;

/**
 * 服務端
 * @author zhaoyl
 *
 */
public class Server {

    protected Server() throws Exception
    {
        HelloWorldImpl helloworldImpl = new HelloWorldImpl();
        ServerFactoryBean svrFactory = new ServerFactoryBean();
        //設置服務接口類
        svrFactory.setServiceClass(HelloWorld.class);
        //address 也就是wsdl文件中的 <soap:address location="
http://localhost:9000/Hello" />
        svrFactory.setAddress("
http://localhost:9000/Hello");
        //在瀏覽器端通過
http://localhost:9000/Hello?wsdl訪問生成的wsdl文件
        //設置服務實現接口類
        svrFactory.setServiceBean(helloworldImpl);
        //創建服務
        svrFactory.create();
    }

    public static void main(String args[]) throws Exception {
        new Server();
        System.out.println("Server ready...");

        Thread.sleep(5 * 60 * 1000);
        System.out.println("Server exiting");
        System.exit(0);
    }
}

 

4。服務端

 

package demo.zhaoyl.client;

import demo.zhaoyl.server.HelloWorld;
import org.apache.cxf.frontend.ClientProxyFactoryBean;

/**
 * 客戶端
 * 僅僅需要一個與具體技術無關的java接口HelloWorld
 * @author zhaoyl
 *
 */
public final class Client {

    private Client()
    {
    }

    public static void main(String args[]) throws Exception
    {
     
        ClientProxyFactoryBean factory = new ClientProxyFactoryBean();
       
        //設置已發佈服務接口
        factory.setServiceClass(HelloWorld.class);

        //爲客戶端代理bean 設置已經發布的服務地址
        factory.setAddress("
http://localhost:9000/Hello");
       
        //獲取已發佈服務接口實例
        HelloWorld client = (HelloWorld)factory.create();
       
        System.out.println("Invoke 遠程服務接口方法sayHi()....");
       
        //返回客戶機器用戶名稱
        System.out.println(client.sayHi(System.getProperty("user.name")));
       
        System.exit(0);
    }

}

啓動服務

運行客戶端

結果:

Invoke 遠程服務接口方法sayHi()....
Hello zhaoyl

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章