IDEA創(chuàng)建web service項(xiàng)目并打包部署到Tomcat
IDEA 創(chuàng)建項(xiàng)目,選擇 Java 項(xiàng)目,Next
填寫(xiě)你的項(xiàng)目名字
Finish 后創(chuàng)建一個(gè)空項(xiàng)目
右鍵項(xiàng)目包名,選擇 Add Framework Support
勾選 WebServices,選擇 Download
等待一會(huì),項(xiàng)目就變成這樣,lib 下就會(huì)有需要的包
里面已經(jīng)自動(dòng)給我們創(chuàng)建了一個(gè)模板例子了,我們不管他的例子,刪除掉,下面用我寫(xiě)的這個(gè) demo
我的 demo 項(xiàng)目很簡(jiǎn)單,只有這幾個(gè)文件
Hello 類(lèi)代碼:
package service;import javax.jws.WebMethod;import javax.jws.WebService;@WebService()public class Hello { // 對(duì)外提供的接口 1 @WebMethod public String sayHello(String from) { String result = '李啟業(yè) ' + from; System.out.println('接口被調(diào)用啦'); return result; } // 對(duì)外提供的接口 2 @WebMethod public String test(String from) { String result = '測(cè)試接口 ' + 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 必須對(duì)上你寫(xiě)的帶@WebService的類(lèi)的路徑 --> <!-- url-pattern 指定的就是這個(gè) web service 的接口地址 --> <!-- 例如:這個(gè)項(xiàng)目最終打包成 webservice.war,訪問(wèn)地址就是 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 ,這個(gè)文件好像沒(méi)什么用,它是創(chuàng)建 web service 項(xiàng)目自帶的,我沒(méi)有去修改它 --> <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 類(lèi)代碼
package service.test;import service.Hello;import javax.xml.ws.Endpoint;/** * @author liqiye * @description 用來(lái)測(cè)試運(yùn)行 web service 服務(wù)的 * @date 2023/2/21 */public class TestServer { public static void main(String[] args) {Object implementor = new Hello();// 這個(gè)地址在這里測(cè)試用什么都可以,只是我想要?jiǎng)偤脤?duì)上等下用tomcat部署的連接String address = 'http://localhost:8080/webservice/hello';Endpoint.publish(address, implementor); }}到這里,web service 項(xiàng)目的服務(wù)端就開(kāi)發(fā)好了!
二、測(cè)試類(lèi)運(yùn)行 web service 服務(wù)端上面代碼的 TestServer 就是我們的測(cè)試類(lèi),直接運(yùn)行它
訪問(wèn)連接:http://localhost:8080/webservice/hello
看到下面的頁(yè)面,證明 web service 項(xiàng)目啟動(dòng)成功:
注意上面代碼中的 sun-jaxws.xml 文件,我在上面已經(jīng)做了注釋?zhuān)瑄rl-pattern 指定的是部署后對(duì)外的接口
配置項(xiàng)目的 Artifacts,先選 Web Application Exploded
然后再選 Web Application Archive
點(diǎn)擊 IDEA 上面的 Build — Build Artifacts
生成 out 目錄,里面已經(jīng)有打好的 war 包了
上面我們已經(jīng)打包好了 war,要部署到 Tomcat
啟動(dòng) Tomcat,然后把這個(gè) war 包放進(jìn)去 /webapps 等待解壓部署即可。
訪問(wèn)地址和剛才用測(cè)試類(lèi)啟動(dòng)的連接是一樣的: http://localhost:8080/webservice/hello
看到的頁(yè)面也是一樣
五、web service 客戶(hù)端我們已經(jīng)完成 web service 的部署,也訪問(wèn)到了首頁(yè),那我們?cè)趺凑{(diào)用剛才里面的 Hello 接口呢?
我們通過(guò)編寫(xiě)一個(gè)java程序作為客戶(hù)端,去調(diào)用剛才的接口!
創(chuàng)建一個(gè)空白項(xiàng)目:
進(jìn)去到 liqiye 目錄,打開(kāi)cmd,用 jdk 提供的命令,連接目標(biāo) web service 服務(wù)生成對(duì)應(yīng)的調(diào)用代碼
wsimport -s . http://localhost:8080/webservice/hello?wsdl注意:web service 服務(wù)地址后面必須帶上 ?wsdl
然后發(fā)現(xiàn)項(xiàng)目目錄下自動(dòng)生成了如下代碼:
編寫(xiě)客戶(hù)端的測(cè)試類(lèi):
package com.liqiye.client;import service.HelloService;import service.Hello;public class TestClient { public static void main(String[] args) throws Exception {//構(gòu)建服務(wù)視圖對(duì)象(從service標(biāo)簽name屬性獲?。〩elloService service = new HelloService();//獲取服務(wù)的實(shí)現(xiàn)類(lèi)(從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í)行這個(gè)測(cè)試類(lèi),看到已經(jīng)成功調(diào)用 web service 的接口:
到此這篇關(guān)于IDEA創(chuàng)建web service項(xiàng)目并打包部署到Tomcat的文章就介紹到這了,更多相關(guān)IDEA創(chuàng)建web service內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
