IDEA創(chuàng)建web service項目并打包部署到Tomcat
實現(xiàn)的效果
- 通過 IDEA 創(chuàng)建一個簡單的 web service 項目
- 用測試類運行這個 web service 項目
- 通過 IDEA 把 web service 項目打成 war 包
- web service 項目部署到 Tomcat
- 訪問 web service 服務(wù)頁面
- 編寫一個 web service 客戶端(生成 web service 服務(wù)代碼)
- 客戶端調(diào)用 web service 接口
一、創(chuàng)建 web service 項目
IDEA 創(chuàng)建項目,選擇 Java 項目,Next
填寫你的項目名字
Finish 后創(chuàng)建一個空項目
右鍵項目包名,選擇 Add Framework Support
勾選 WebServices,選擇 Download
等待一會,項目就變成這樣,lib 下就會有需要的包
里面已經(jīng)自動給我們創(chuàng)建了一個模板例子了,我們不管他的例子,刪除掉,下面用我寫的這個 demo
我的 demo 項目很簡單,只有這幾個文件
Hello 類代碼:
package service; import javax.jws.WebMethod; import javax.jws.WebService; @WebService() public class Hello { // 對外提供的接口 1 @WebMethod public String sayHello(String from) { String result = "李啟業(yè) " + from; System.out.println("接口被調(diào)用啦"); return result; } // 對外提供的接口 2 @WebMethod public String test(String from) { String result = "測試接口 " + from; System.out.println("接口被調(diào)用啦"); return result; } }
sun-jaxws.xml
<?xml version="1.0" encoding="UTF-8"?> <endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'> <!-- 注意這里: --> <!-- implementation 必須對上你寫的帶@WebService的類的路徑 --> <!-- url-pattern 指定的就是這個 web service 的接口地址 --> <!-- 例如:這個項目最終打包成 webservice.war,訪問地址就是 http://localhost:8080/webservice/hello --> <endpoint name="Hello" implementation="service.Hello" url-pattern="/hello"/> </endpoints>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- 如果用 tomcat 直接部署 web service ,這個文件好像沒什么用,它是創(chuàng)建 web service 項目自帶的,我沒有去修改它 --> <listener> <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class> </listener> <servlet> <description>JAX-WS endpoint</description> <display-name>WSServlet</display-name> <servlet-name>WSServlet</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>WSServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app>
TestServer 類代碼
package service.test; import service.Hello; import javax.xml.ws.Endpoint; /** * @author liqiye * @description 用來測試運行 web service 服務(wù)的 * @date 2023/2/21 */ public class TestServer { public static void main(String[] args) { Object implementor = new Hello(); // 這個地址在這里測試用什么都可以,只是我想要剛好對上等下用tomcat部署的連接 String address = "http://localhost:8080/webservice/hello"; Endpoint.publish(address, implementor); } }
到這里,web service 項目的服務(wù)端就開發(fā)好了!
二、測試類運行 web service 服務(wù)端
上面代碼的 TestServer 就是我們的測試類,直接運行它
訪問連接:http://localhost:8080/webservice/hello
看到下面的頁面,證明 web service 項目啟動成功:
三、IDEA 打包 web service 項目
注意上面代碼中的 sun-jaxws.xml 文件,我在上面已經(jīng)做了注釋,url-pattern 指定的是部署后對外的接口
配置項目的 Artifacts,先選 Web Application Exploded
然后再選 Web Application Archive
點擊 IDEA 上面的 Build — Build Artifacts
生成 out 目錄,里面已經(jīng)有打好的 war 包了
四、web service 項目部署到 Tomcat
上面我們已經(jīng)打包好了 war,要部署到 Tomcat
啟動 Tomcat,然后把這個 war 包放進去 /webapps 等待解壓部署即可。
訪問地址和剛才用測試類啟動的連接是一樣的: http://localhost:8080/webservice/hello
看到的頁面也是一樣
五、web service 客戶端
我們已經(jīng)完成 web service 的部署,也訪問到了首頁,那我們怎么調(diào)用剛才里面的 Hello 接口呢?
我們通過編寫一個java程序作為客戶端,去調(diào)用剛才的接口!
創(chuàng)建一個空白項目:
進去到 liqiye 目錄,打開cmd,用 jdk 提供的命令,連接目標 web service 服務(wù)生成對應(yīng)的調(diào)用代碼
wsimport -s . http://localhost:8080/webservice/hello?wsdl
注意:web service 服務(wù)地址后面必須帶上 ?wsdl
然后發(fā)現(xiàn)項目目錄下自動生成了如下代碼:
編寫客戶端的測試類:
package com.liqiye.client; import service.HelloService; import service.Hello; public class TestClient { public static void main(String[] args) throws Exception { //構(gòu)建服務(wù)視圖對象(從service標簽name屬性獲?。? HelloService service = new HelloService(); //獲取服務(wù)的實現(xiàn)類(從portType的name屬性獲取 Hello hello = service.getPort(Hello.class); //調(diào)用方法(portType下的operation屬性獲取 String info = hello.sayHello("你好"); System.out.println("調(diào)用服務(wù)端接口方法結(jié)果是:"+info); String info2 = hello.test("你好"); System.out.println("調(diào)用服務(wù)端接口方法結(jié)果是:"+info2); } }
執(zhí)行這個測試類,看到已經(jīng)成功調(diào)用 web service 的接口:
總結(jié)
到此這篇關(guān)于IDEA創(chuàng)建web service項目并打包部署到Tomcat的文章就介紹到這了,更多相關(guān)IDEA創(chuàng)建web service內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何在IntelliJ IDEA 2018上配置Tomcat并運行第一個JavaWeb項目
這篇文章主要介紹了在IntelliJ IDEA 2018上配置Tomcat并運行第一個JavaWeb項目,需要的朋友可以參考下2020-09-09tomcat使用問題之安裝后無法訪問localhost:8080解決
當Tomcat無法訪問localhost:8080時,可能是由于未啟動、環(huán)境變量未配置、端口號占用或版本問題,這篇文章主要介紹了tomcat使用問題之安裝后無法訪問localhost:8080解決的相關(guān)資料,需要的朋友可以參考下2024-10-10詳解springboot-修改內(nèi)置tomcat版本
這篇文章主要介紹了springboot-修改內(nèi)置tomcat版本的相關(guān)資料,希望通過本文大家能掌握這樣的方法,需要的朋友可以參考下2017-08-08