Web項目經過Servlet編寫一個接口,部署在遠程服務器上

在個人上一片文章中,我在本地新建了一個普通的類來編寫WebService,使用終端類 Endpoint 發佈這個WebService,以此來實現讓其餘類調用這個接口,實現接口中定義的功能。java

經過普通類寫一個簡單的WebService併發布web

那麼若是是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

這裏寫圖片描述

這裏寫圖片描述

以後咱們從新啓動服務,應該就不會有報錯了

在這裏插入圖片描述

相關文章
相關標籤/搜索