在個人上一片文章中,我在本地新建了一個普通的類來編寫WebService,使用終端類 Endpoint 發佈這個WebService,以此來實現讓其餘類調用這個接口,實現接口中定義的功能。java
那麼若是是Web項目的話,應該怎麼編寫併發布WebService呢? Web項目可使用監聽器或者Servlet來發布WebService,本片實例我用Servlet來發布WebService。瀏覽器
首先新建一個 Dynamic Web Project 項目,以後建立三個類文件:服務器
- 接口
- 接口實現類
- 入口類
這三個類文件能夠放在一個包下,或者像上圖那樣分別放在對應的包下,推薦後一種併發
IWebService.javaapp
package cn.xuzihui.itf; import javax.jws.WebService; @WebService public interface IWebService { String sayHello(String name); }
WebServiceImpl.javawebapp
package cn.xuzihui.impl; import java.text.SimpleDateFormat; import java.util.Date; import javax.jws.WebService; import cn.xuzihui.itf.IWebService; @WebService public class WebServiceImpl implements IWebService { @Override public String sayHello(String name) { Date date = new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String hello = df.format(date) + "," + name + "call the inferface!"; return hello; } }
注意要在IWebService.java、WebServiceImpl.java文件中加上@WebService的註解,位置如上所示ide
WebServiceCalledByServlet.javaui
package cn.xuzihui.controller; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.xml.ws.Endpoint; import cn.xuzihui.impl.WebServiceImpl; @WebServlet(value="", loadOnStartup=0) public class WebServiceCalledByServlet extends HttpServlet{ private static final long serialVersionUID = -2864381365175258589L; public void init() { String address = "http://127.0.0.1:8888/WebServiceWithServlet"; Endpoint.publish(address, new WebServiceImpl()); System.out.println("使用WebServiceCalledByServlet發佈webservice成功!"); } }
這樣就完成了WebService的建立,接下來咱們要把這個Web項目導出爲 war file ,並部署在遠程Tomcat服務器上。.net
選擇項目並右擊,選擇導出
選擇導出的類型爲 WAR file
點擊下一步
選擇導出的位置,點擊完成就生成了 war 文件
那麼接下來就是把這個WebServiceWithServlet.war 文件上傳到咱們的遠程Tomcat服務器,當上傳到Tomcat服務器的webapp文件夾中,Tomcat服務器會自動初始化併發布WebService,以下圖所示:
訪問咱們服務器的Tomcat的管理頁面,點擊 Manager APP
你會看到已經存在了咱們剛纔上傳的項目
咱們在瀏覽器的地址欄中輸入WebService入口類文件中定義的address地址,注意,要把ip地址改爲你的遠程服務器的ip,而且在地址的後面加上 "?wsdl"。
那麼若是出現了上圖相似的界面,那麼就說明WebService發佈成功。
接下來呢,咱們就要實如今本地調用這個遠程接口。
在本地再新建一個普通的 Java Project 項目
鼠標右擊這個項目,選擇新建->其餘->Web Service Client
在彈出的選項框中的 Service definition 填寫上一步在瀏覽器地址欄中填寫的URL
點擊完成,系統會自動爲咱們建立一些必要的類
紅框圈起來的是系統建立的類,上面那個包是下一步咱們須要建立的
咱們須要本身在建立一個類來實現這些調用這些新建立的類,以到達調用接口的目的
WSClient.java
package cn.xuzihui.client; import java.rmi.RemoteException; import javax.xml.rpc.ServiceException; import cn.xuzihui.impl.WebServiceImpl; import cn.xuzihui.impl.WebServiceImplServiceLocator; public class WSClinet { public static void main(String[] args) throws ServiceException, RemoteException { WebServiceImpl serviceImpl = new WebServiceImplServiceLocator().getWebServiceImplPort(); String sayWhat = serviceImpl.sayHello("迪迦"); System.out.println(sayWhat); } }
右鍵點擊運行程序
在結果上會有報錯信息,多是缺乏兩個jar包
須要下載這兩個jar包導入到 Client 項目下
下載地址 https://download.csdn.net/download/bronzehammer/10608421
在項目中新建一個 lib文件夾,把這兩個jar包放在lib中,並在項目中添加外部jar
以後咱們從新啓動服務,應該就不會有報錯了