发布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了。