当前位置: 代码网 > 服务器>服务器>Tomcat > IDEA创建web service项目并打包部署到Tomcat

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

2024年05月18日 Tomcat 我要评论
实现的效果通过 idea 创建一个简单的 web service 项目用测试类运行这个 web service 项目通过 idea 把 web service 项目打成 war 包web servic

实现的效果

  • 通过 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
  @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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • Tomcat实现https访问的步骤详解

    https是一种加密传输协议,而tomcat默认是http的方式访问,那我们怎样实现tomcat的https访问呢?下面给大家介绍。首先我们需要确保我们的电脑装了jdkwin10中…

    2024年05月18日 服务器
  • tomcat优化配置小结

    1修改tomcat的内存配置,打开$tomcat_home/bin/catalina.sh文件内存优化:-server参数:表示以服务模式启动,启动速度会稍微慢一点,但性能会高很多…

    2024年05月18日 服务器
  • Tomcat配置控制台的实现

    status控制台用于监控服务器的状态,而manager控制台可以部署/监控web应用。登陆控制台必须输入用户名和密码,而控制台的用户名和密码是通过tomcat的jaas控制的。查…

    2024年05月18日 服务器
  • 配置tomcat的图文教程

    一、官网下载tomcat安装包,任意版本,以tomcat 9为例:二、查看电脑支持32还是64,选择合适版本下载安装包,完成后解压,保存在磁盘中三、配置环境变量,在此电脑&mdas…

    2024年05月18日 服务器
  • 源码剖析Tomcat类的加载原理

    源码剖析Tomcat类的加载原理

    众所周知,java中默认的类加载器是以父子关系存在的,实现了双亲委派机制进行类的加载,在前文中,我们提到了,双亲委派机制的设计是为了保证类的唯一性,这意味着在同... [阅读全文]
  • 使用Tomcat无法访问http:localhost:8080的解决方法

    我们在tomcat网站下载apache tomcat® - welcome!后解压在电脑上面。本地下载地址:一.检查tomcat配置的环境变量1. tomcat需与jdk搭…

    2024年05月18日 服务器

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com