IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat
作者:mmseoamin日期:2023-12-25

文章目录

  • 实现的效果
  • 一、创建 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

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第1张

      填写你的项目名字

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第2张

      Finish 后创建一个空项目

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

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第3张

      勾选 WebServices,选择 Download

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第4张

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

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第5张

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

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

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第6张

      Hello 类代码:

      package service;
      import javax.jws.WebMethod;
      import javax.jws.WebService;
      @WebService()
      public class Hello {
        // 对外提供的接口 1
        @WebMethod
        public String sayHello(String from) {
          String result = "李启业 " + from;
          System.out.println("接口被调用啦");
          return result;
        }
        // 对外提供的接口 2
        @WebMethod
        public String test(String from) {
          String result = "测试接口 " + from;
          System.out.println("接口被调用啦");
          return result;
        }
      }
      

      sun-jaxws.xml

      
      
          
          
          
          
          
      
      

      web.xml

      
      
          
          
              com.sun.xml.ws.transport.http.servlet.WSServletContextListener
          
          
              JAX-WS endpoint
              WSServlet
              WSServlet
              com.sun.xml.ws.transport.http.servlet.WSServlet
              1
          
          
              WSServlet
              /services/*
          
      
      

      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 项目,并打包部署到 Tomcat,在这里插入图片描述,第7张

      三、IDEA 打包 web service 项目

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

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第8张

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

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第9张

      然后再选 Web Application Archive

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第10张

      点击 IDEA 上面的 Build — Build Artifacts

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第11张

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第12张

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

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第13张

      四、web service 项目部署到 Tomcat

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

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

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

      看到的页面也是一样

      五、web service 客户端

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

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

      创建一个空白项目:

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第14张

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

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

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

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

      IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat,在这里插入图片描述,第15张

      编写客户端的测试类:

      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,在这里插入图片描述,第16张


      总结

      欢迎指出我的错误!