Tomcat

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Tomcat > IDEA创建web service

IDEA创建web service项目并打包部署到Tomcat

作者:单手入天象

本文主要介绍了IDEA创建web service项目并打包部署到Tomcat,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

实现的效果

一、创建 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
  @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

<?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 ,这个文件好像没什么用,它是创建 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的文章就介绍到这了,更多相关IDEA创建web service内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文