文章目录

  • 实现的效果
  • 一、创建 web service 项目
  • 二、测试类运行 web service 服务端
  • 三、IDEA 打包 web service 项目
  • 四、web service 项目部署到 Tomcat
  • 五、web service 客户端
  • 总结

实现的效果

  • 通过 IDEA 创建一个简单的 web service 项目

  • 用测试类运行这个 web service 项目

  • 通过 IDEA 把 web service 项目打成 war 包

  • web service 项目部署到 Tomcat

  • 访问 web service 服务页面

  • 编写一个 web service 客户端(生成 web service 服务代码)

  • 客户端调用 web service 接口


一、创建 web service 项目

IDEA 创建项目,选择 Java 项目,Next

填写你的项目名字

Finish 后创建一个空项目

右键项目包名,选择 Add Framework Support

勾选 WebServices,选择 Download

等待一会,项目就变成这样,lib 下就会有需要的包

里面已经自动给我们创建了一个模板例子了,我们不管他的例子,删除掉,下面用我写的这个 demo

我的 demo 项目很简单,只有这几个文件


Hello 类代码:

package service;
import javax.jws.WebMethod;
import javax.jws.WebService;@WebService()
public class Hello {// 对外提供的接口 1@WebMethodpublic String sayHello(String from) {String result = "李启业 " + from;System.out.println("接口被调用啦");return result;}// 对外提供的接口 2@WebMethodpublic String test(String from) {String result = "测试接口 " + from;System.out.println("接口被调用啦");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 --><endpointname="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 ,这个文件好像没什么用,它是创建 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 服务的* @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 项目的服务端就开发好了!

二、测试类运行 web service 服务端

上面代码的 TestServer 就是我们的测试类,直接运行它

访问连接:http://localhost:8080/webservice/hello

看到下面的页面,证明 web service 项目启动成功:

三、IDEA 打包 web service 项目

注意上面代码中的 sun-jaxws.xml 文件,我在上面已经做了注释,url-pattern 指定的是部署后对外的接口

配置项目的 Artifacts,先选 Web Application Exploded

然后再选 Web Application Archive

点击 IDEA 上面的 Build — Build Artifacts

生成 out 目录,里面已经有打好的 war 包了

四、web service 项目部署到 Tomcat

上面我们已经打包好了 war,要部署到 Tomcat

启动 Tomcat,然后把这个 war 包放进去 /webapps 等待解压部署即可。

访问地址和刚才用测试类启动的连接是一样的: http://localhost:8080/webservice/hello

看到的页面也是一样

五、web service 客户端

我们已经完成 web service 的部署,也访问到了首页,那我们怎么调用刚才里面的 Hello 接口呢?

我们通过编写一个java程序作为客户端,去调用刚才的接口!

创建一个空白项目:

进去到 liqiye 目录,打开cmd,用 jdk 提供的命令,连接目标 web service 服务生成对应的调用代码

wsimport -s . http://localhost:8080/webservice/hello?wsdl

注意:web service 服务地址后面必须带上 ?wsdl

然后发现项目目录下自动生成了如下代码:

编写客户端的测试类:

package com.liqiye.client;import service.HelloService;
import service.Hello;public class TestClient {public static void main(String[] args) throws Exception {//构建服务视图对象(从service标签name属性获取)HelloService service = new HelloService();//获取服务的实现类(从portType的name属性获取Hello hello = service.getPort(Hello.class);//调用方法(portType下的operation属性获取String info = hello.sayHello("你好");System.out.println("调用服务端接口方法结果是:"+info);String info2 = hello.test("你好");System.out.println("调用服务端接口方法结果是:"+info2);}
}

执行这个测试类,看到已经成功调用 web service 的接口:


总结

欢迎指出我的错误!

IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat相关推荐

  1. [译]使用 Rust 开发一个简单的 Web 应用,第 4 部分 —— CLI 选项解析

    原文地址:A Simple Web App in Rust, Part 4 -- CLI Option Parsing 原文作者:Joel's Journal 译文出自:掘金翻译计划 本文永久链接:g ...

  2. php项目webpack打包,Vue项目webpack打包部署时Tomcat刷新报404错误问题如何处理

    这次给大家带来Vue项目webpack打包部署时Tomcat刷新报404错误问题如何处理,Vue项目webpack打包部署时Tomcat刷新报404错误问题处理的注意事项有哪些,下面就是实战案例,一起 ...

  3. 【项目】手把手带你用 SpringBoot、Uniapp、MySql 开发一个简单的活动报名项目

    文章目录 一.前言和大致功能需求 二.用到的技术 (1) Java (2) MySQL (3) Uniapp 前端开发 (4) SSM 和 SpringBoot 三.数据库搭建 四.创建 Spring ...

  4. mvn打包并部署本地tomcat_maven项目自动打包部署到tomcat中

    1. 在eclipse配置tomcat,部署路径设置为tomcat的webapps目录下. 2.修改tomcat-users.xml 3.maven的settings.xml 文件打开,写入用户名和密 ...

  5. maven学习笔记之IDEA+Maven+Jetty运行一个简单的web项目

    maven学习笔记 一.什么是maven Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Life ...

  6. 如何利用spring框架来开发一个简单的小项目——书店项目

    这里我将用spring来开发一个简单的书店项目 Step1:所用到的开发软件为 idea , 所用到的jar包为 这些jar的下载可在 官网 下载,选择5.2.6版本下载,不会的在下面评论私信 Ste ...

  7. 1-3.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之三

    在1-1.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之一 基础上进行如下操作: 所有路由不能全部都在myDjango下的urls.py路由文件中, ...

  8. WCF分布式开发必备知识(4):Web Service(转)

    今天继续我们的WCF分布式开发必备知识系列文章的第4节:Web Service.前3节我们分别介绍了MSMQ消息队列/.Net Remoting/Enterprise Services三个相关的技术. ...

  9. SSM整合的 一个简单的贴吧项目

    1.新建一个maven工程和数据库 1.1maven web工程: 1.2数据库: 帖子表: 评论表: 2.新建相关工程目录: 3.在pom.xml中放入相关依赖包 <!-- https://m ...

最新文章

  1. 在Win平台得到磁盘、CPU、用户信息
  2. .NET 6 攻略大全(二)
  3. oidc_使用Java EE和OIDC构建Java REST API
  4. 分别用Comparable和Comparator两个接口对下列四位同学的成绩做降序排序,如果成绩一样, 那在成绩排序的基础上按照年龄由小到大排序。 姓名(String
  5. springboot+mybatis日志显示SQL
  6. Windows 7 beta 1补充汉化文件
  7. easyui学习笔记4—panel的实现
  8. c++11新特性的使用---可变模板参数、type_traits、function综合使用
  9. SVN服务器端安装过程出现“Custom action InstallWMISchemaExecute failed:无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。”
  10. 什么是Http无状态协议?
  11. 【CV】用于计算机视觉的 Transformer 高被引综述
  12. Android 改变View的中心点
  13. MongoDB热备方案
  14. 【win10专业版】新建账户激活 Office 2019
  15. 深度学习CV文章整理
  16. vue3+ts+vite 路由详解
  17. 初识Nginx及编译安装Nginx
  18. LeetCode - 股票交易题总结
  19. 解决电脑操作系统MSXML组件版本过低,导致启动失败,电脑出现点击卡顿现象
  20. 最新E4A影视APP带有独立后台源码+包含类库/ThinkPHP核心

热门文章

  1. 数据字典的QUAN DEC类型与ABAP P型转换
  2. 切蛋糕切西瓜(数学)
  3. 钱姓——姓氏起源(聚集地、家谱、历史名人)
  4. 计算机老师的作文,新电脑老师作文300字
  5. 售前技术支持的工作步骤
  6. DIY树莓派小车(三)外壳设计和Web控制 完结
  7. 想注册域名,怎样查询有没有被注册?
  8. oracle中如何删除列,oracle如何删除列?
  9. SpringBoot构造器注入循环依赖及解决
  10. 使用工具去除图片的背景(PPT)