1. 新建一个工程,导入CXF依赖的包。
2. 服务接口:
3. 服务实现:
4. 发布服务:
5. 在浏览器键入http://localhost:9070/HelloService?wsdl,看到如下内容,说明发布成功。
6. 调用服务:
2. 服务接口:
package com.huey.dream.ws;
import javax.jws.WebParam;
import javax.jws.WebService;
/**
* Web服务接口,注解@WebService说明此接口是一个Web Service
* @author huey2672
* @version 1.0
* @created 2014-8-12
*/
@WebService
public interface HelloService {
/**
* WebService方法
* @param name 注解@WebParam说明参数名称,默认为arg0
* @return
*/
public String sayHello(@WebParam(name = "name") String name);
}
3. 服务实现:
package com.huey.dream.ws.impl;
import javax.jws.WebParam;
import javax.jws.WebService;
import com.huey.dream.ws.HelloService;
/**
* WebService的实现
* @author huey2672
* @version 1.0
* @created 2014-8-12
*/
@WebService(name = "HelloService")
public class HelloServiceImpl implements HelloService {
public String sayHello(@WebParam(name = "name") String name) {
return "Hello, " + name + "!";
}
}
4. 发布服务:
package com.huey.dream.main;
import javax.xml.ws.Endpoint;
import com.huey.dream.ws.HelloService;
import com.huey.dream.ws.impl.HelloServiceImpl;
/**
* 服务端,发布Web服务
* @author huey2672
* @version 1.0
* @created 2014-8-12
*/
public class Server {
/**
* 发布WebService
*/
public void publishWebService() {
System.out.println("Starting Server...");
HelloService helloService = new HelloServiceImpl();
String address = "http://localhost:9070/HelloService";
Endpoint.publish(address, helloService);
}
public static void main(String[] args) {
try {
new Server().publishWebService();
System.out.println("Server Ready...");
Thread.sleep(5 * 60 * 1000);
System.out.println("Server Existing...");
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("ending...");
}
}
}
5. 在浏览器键入http://localhost:9070/HelloService?wsdl,看到如下内容,说明发布成功。
<?xml version="1.0"?>
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://impl.ws.dream.huey.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http" xmlns:ns1="http://ws.dream.huey.com/" name="HelloServiceImplService" targetNamespace="http://impl.ws.dream.huey.com/">
<wsdl:import location="http://localhost:9071/HelloService?wsdl=HelloService.wsdl" namespace="http://ws.dream.huey.com/"></wsdl:import>
<wsdl:binding name="HelloServiceImplServiceSoapBinding" type="ns1:HelloService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="sayHello">
<soap:operation soapAction="" style="document" />
<wsdl:input name="sayHello">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="sayHelloResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HelloServiceImplService">
<wsdl:port binding="tns:HelloServiceImplServiceSoapBinding" name="HelloServicePort">
<soap:address location="http://localhost:9071/HelloService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
6. 调用服务:
package com.huey.dream.main;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.huey.dream.ws.HelloService;
/**
* 客户端,调用Web服务
* @author huey2672
* @version 1.0
* @created 2014-8-12
*/
public class CxfClient {
public static void main(String[] args) {
try {
System.out.println("Starting Client...");
// 创建JaxWs代理工厂
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
// 设置服务类
factory.setServiceClass(HelloService.class);
// 设置地址
factory.setAddress("http://localhost:9070/HelloService");
// 获取并调用服务
HelloService helloService = (HelloService)factory.create();
System.out.println(helloService.sayHello("Huey"));
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("ending...");
}
}
}