博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

通过CFX发布WebService(一)

Posted on 2015-05-15 15:18  言冰的夏虫  阅读(4853)  评论(0编辑  收藏  举报

        发布WebService的方法很多。如XFire,CFX等。现在首先介绍下怎样通过CFX来发部一个WebService。

        (1) 首先,是从Apache官方网站获取CFX的Java包。其地址是:http://cxf.apache.org/download.html。 在该网页上可以下载最新的CFX 的Java开发包。

        (2) 其次,新建一个简单的java工程,不必是web工程,只是通过eclipse或者myeclipse新建一个java project。将CFX的java开发包复制到该工程的classpath目录下。

             当新建的是一个web工程时,只需要将该工程复制到lib文件夹中。

        (3) 在该工程中新建一个普通的接口。

package com.example.webservice;
import
javax.jws.WebParam; import javax.jws.WebService; @WebService public interface HelloWorldService { public String sayHello(@WebParam(name="userName")String userName); }

      注意到:上面的接口中有一个注解:@WebService,该注解表示这个是一个WebService服务     

      (4) 同时新建一个类,HelloWorldServiceImpl实现该接口。     

package com.example.webservice;
import
javax.jws.WebMethod; import javax.jws.WebService; @WebService(endpointInterface="com.example.webservice.HelloWorldService", serviceName="helloWorldService") public class HelloWorldServiceImpl implements HelloWorldService { @WebMethod public String sayHello(String userName) { System.out.println("HelloWorldServiceImp.sayHello("+userName+")"); return "Hello,"+userName; } }

    注意:这个实现类中,也有注解,一个是@WebService注解,该注解中有2个部分,一个是endpointInterface="com.example.webservice.HelloWorldService",

这里的内容是上面的接口的完整包名和接口名组成的。另一个是serviceName="helloWorldService",这个是用来现实该webService的入口的,即该webservice的名称为

helloWorldService。当调用该webservice时,其地址应该是:htt://IpAddress:port/helloWorldService

     还有另一个注解:@WebMethod,该注解用来标识了webService的实现方法。

     现在主要的webservice的功能已经实现了,所要做的是将webservice进行发布。发布该webservice的方法有好几种,可以用Spring发布,也可以直接运行一个main还是发布。

      现在演示的是用一个main函数发布该webservice。

      新建一个类,该类中有一个main函数。

    

import javax.xml.ws.Endpoint;

import com.lenovo.webservice.HelloWorldServiceImpl;

public class ServerTest {

    public static void main(String[] args) {
        System.out.println("Starting Server");
        HelloWorldServiceImpl helloWorldServiceImpl=new HelloWorldServiceImpl();
        String address="http://localhost:8090/helloWorldService";
        Endpoint.publish(address, helloWorldServiceImpl);
        System.out.println("Start success");

    }

}

       运行该类之后,该webservice就已经发布了。

      此时,可以在其他的程序中调用该webservice了。