使用cxf構建簡單的WebService
阿新 • • 發佈:2018-11-10
伺服器端
首先要在pom檔案中增加一些內容,吧cxf的jar包利用maven下載下來
<properties>
<!-- 檔案拷貝編碼 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 輸出編碼 -->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 編譯編碼 -->
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<!-- CXF版本 -->
<cxf.version>3.1.1</cxf.version>
</properties>
<dependencies>
<!-- CXF -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId >cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version >
</dependency>
<dependency>
<!-- 如果CXF不整合到Web伺服器中,必須新增該引用 -->
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>${cxf.version}</version>
</dependency>
<!-- End CXF -->
然後我們建立一個介面
@WebService(name = "HelloWS",
targetNamespace = "http://benzhu/services/hello")
public interface HelloWS {
@WebMethod
String welcome(@WebParam(name = "name") String name);
}
@WebService 是用來標識 web服務的
@WebMethod 標識的是web的方法
@WebParam 是web服務的引數
targetNamespace 其實可以理解成java裡的包的概念
詳細的可以看
http://blog.csdn.net/xxssyyyyssxx/article/details/50292787
然後定義實現類
@WebService(
endpointInterface = "com.demo.HelloWS",
portName = "HelloWSPort",
serviceName = "HelloWSService",
targetNamespace = "http://benzhu/services/hello"
)
public class HelloWSImpl implements HelloWS {
@Override
public String welcome(String name) {
return "Welcome " + name;
}
}
這個webservice的作用就是 你提供一個字串 他在前面加上Welcome 再返回
最後一步啟動 webservice
public class CxfServer {
public static void main(String[] args) {
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setServiceClass(HelloWS.class);
//服務釋出的地址
factory.setAddress("http://localhost:8999/services/hello");
factory.setServiceBean(new HelloWSImpl());
factory.create();
}
}
在瀏覽器輸入http://localhost:8999/services/hello?wsdl
可以看到xml檔案
下面編寫客戶端
public class Client {
public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(HelloWS.class);
factory.setAddress("http://localhost:8999/services/hello");
HelloWS helloWS = factory.create(HelloWS.class);
String welcome = helloWS.welcome("pig");
System.out.println(welcome);
}
}
不出意外你可以在控制檯輸出Welcome pig