前言:
初學Java,因為工作需要,直接跳到開發WebService。以前用.NET開發過WebService,對比一下,Java的WebService開發部署難度高了不止一個檔次。網上的教程各式各異,剛開始我學着使用XFire開發,但是配置過程已經把我給搞糊塗了,弄了兩天沒搞好。
最后使用Java1.6的新特性,Java-WS專門用於開發WebService,發現這個方法特別的簡單(相對而言),但是其中還是有不少注意事項,我這篇主要是參考http://www.cnblogs.com/lee0oo0/archive/2013/01/25/2876357.html,但是我在參考這篇文章時遇到了不少的問題,會在我的文章里面指出來。
有關WebService的名詞定義,建議自行百度,或者參考http://blog.csdn.net/icecream0/article/details/6955524。
以下開始講解如何在MyEclipse中開發一個WebService。
內容:
我使用的是MyEclipse 2014,tomcat是內置的。
第一部分:如何在本地發布一個WebService。
1、新建一個Web Service Project
2、我的工程名是“EbonyWS”,WebService Framework選擇JAX-WS。
3、定義一個Java包,存放服務端的類與接口等。新建一個Java包:com.ebony.service
4、先定義一個服務需要具有的方法的接口。新建一個接口:IHello
1 package com.ebony.service; 2 3 /** 4 * 服務需要具備的接口方法 5 * @author Administrator 6 * 7 */ 8 public interface IHello { 9 /** 10 * 必須具備的方法sayHello 11 * @param name 姓名 12 * @return 13 */ 14 public String sayHello(String name); 15 }
5、定義此接口的一個實現類,實現類里的方法可以理解成最終調用WebService的具體函數所在地。新建一個類:HelloImpl
1 package com.ebony.service; 2 3 /** 4 * 具體的方法實現,最終調用的方法所在地 5 * @author Administrator 6 * 7 */ 8 public class HelloImpl implements IHello { 9 10 @Override 11 public String sayHello(String name) { 12 String string = "Congratulations! " 13 + name + ", you have finished your first WebService!"; 14 return string; 15 } 16 17 }
6、部署工程到服務器上。可以搜索菜單"Add and Remove Project Deployments..."或者點擊按鈕。
搜索:
或點擊按鈕:
7、在打開的"Project Deployments"菜單里,單擊"Add"。
8、在彈出的菜單中選擇"MyEclipse Tomcat",內置的Tomcat,也可以選擇自己的Tomcat位置,不過選擇內置的更不容易出錯。
添加之后的顯示:
9、配置好工程的Tomcat之后,啟動服務
啟動服務成功,會在Console中顯示,此時可以確認以上部署服務過程無誤:
10、設置Tomcat服務器的端口。因為默認是8080端口,往往這個端口是被占用了的,這樣會造成發布WebService不成功。此時需要先修改"Windows-Perferences-MyEclipse-Servers-Integated Sandbox-MyEclipse Tomcat 6"里的Port Number為8089(可自行選擇,不要選擇被占用的)。
如果你是內置額Tomcat,修改這里就行了,如果是自己下載的Tomcat,還需要修改Tomcat目錄下的"conf-server.xml"下的port為8089。
<Connector port="8089" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
11、部署Tomcat之后,開始在此服務上發布WebService
Strategy選擇下面的一項,可以為工程生成wsdl文件。
下圖中,1處需要選擇一個實現類,我們這里選擇我們已經寫好的實現類"com.ebony.service.HelloImpl",並勾選2處的"Generate WSDL in project"。
發布之后會在我們的包"com.ebony.service"生成一個類HelloImplDelegate,作為提供給外部調用的類。
還會為工程生成一個wsdl目錄,雙擊打開"HelloImplService.wsdl"文件。
修改紅框內的端口"8080"為"8089",HelloImplPort里的地址,就是我們可以提供給外部調用的WebService地址。
12、在瀏覽器中打開地址"http://localhost:8089/EbonyWS/HelloImplPort",顯示一下內容說明WebService發布成功。
第二部分:如何在Java中調用此WebService
1、新建一個EbonyClient的Java Project。
2、導入WebService。
3、在紅框內填入之前的WebService地址,注意要加上"?wsdl",即:
http://localhost:8089/EbonyWS/HelloImplPort?wsdl
導入之后我們會發現,com.ebony.service這個包會導入到了我們的EbonyClient中。
4、新建一個客戶端包:com.ebony.client。
5、新建一個客戶端類:Client.java
1 package com.ebony.client; 2 3 import com.ebony.service.HelloImplDelegate; 4 import com.ebony.service.HelloImplService; 5 6 /** 7 * 調用WebService的客戶端 8 * @author Administrator 9 * 10 */ 11 public class Client { 12 public static void main(String[] args) { 13 //實例化服務 14 HelloImplService helloImplService = new HelloImplService(); 15 //實例化服務委托 16 HelloImplDelegate helloImplDelegate = helloImplService.getHelloImplPort(); 17 //使用委托調用服務的方法 18 System.out.println(helloImplDelegate.sayHello("ebony")); 19 } 20 }
至此調用服務的工程開發完成。