Java项目打war包并部署到tomcat服务器

2024-06-22 17:32

本文主要是介绍Java项目打war包并部署到tomcat服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1 打war包
    • 1.1 编辑工具打war包
    • 1.2 DOS命令打war包
  • 2 部署到Tomcat服务器
    • 2.1 静态部署
    • 2.2 动态部署
    • 2.3 tomcat部署多应用
    • 2.4 补充

1 打war包

我们知道Java项目打war包可以在EclipseMyEclipse工具中自动打包,就是右键,然后导出war包就可以了,可是发现我的一个项目打war包的过程中遇到点小麻烦,导出的war包打开之后,里面少了很多东西,明显有问题。那怎么办呢,网上搜了许多偏方都没效果,请教同事,大家也没遇到过这种状况。

1.1 编辑工具打war包

附,eclipse导出war包方法:首先右击项目–export,将出现下图:
在这里插入图片描述
在框中输入war,然后选择导出位置就OK

1.2 DOS命令打war包

运用DOS命令来手工打war包:
首先,打开DOS命令行,敲入“jar”jar --help,我们发现它提示不是内部或外部的命令这样的错误,这时八成是你的JAVA环境没有配置好,我们可以用JAVA_HOME方式或者直接在Path路径里配置,等配置好,(注意JDK版本,里面有jar.exejavac.exe的版本适合)再敲入"jar"jar --help,会出现如下效果,说明配置成功。
在这里插入图片描述
下面我们用DOS命令进入到项目中,然后使用如下命令生成war
在这里插入图片描述
回车键入,等待它自动执行完:
在这里插入图片描述

OK,打包完成,现在我们来看下目录下的war包
在这里插入图片描述
已经打好了,我们放到TomcatWebapps下,启动tomcat,自动解压完成。

2 部署到Tomcat服务器

Tomcat中部署Java Web应用程序有两种方式:静态部署动态部署。在下文中$CATALINA_HOME指的是Tomcat根目录。
假如项目名为:ItSourceManage

2.1 静态部署

静态部署指的是在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的Web应用程序才能访问。以下3中方式都可以部署:

  1. 项目目录拷贝到$CATALINA_HOME\webapps下,然后启动服务器就可以了。这种方式比较简单,但是web应用程序必须在webapps目录下。访问地址如下:http://localhost:8080/项目名/
  2. 这种方式可以不必将项目目录目录拷贝到webapps下,直接在F:\部署。方法如下,更改$CATALINA_HOME\conf\server.xml文件,在标签内添加标签,内容如下:
 <Context docBase="/Users/a123/Desktop/apache-tomcat-9.0.0/work/Catalina/localhost/test/sm-template-1.0.0-SNAPSHOT" path="/sm-template-1.0.0-SNAPSHOT" reloadable="false"><WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

其中reloadable="false"表示当应用程序中的内容发生更改之后服务器不会自动加载,这个属性在开发阶段通常都设为true,方便开发,在发布阶段应该设置为false,提高应用程序的访问速度。docBase为路径,可以使用绝对路径,也可以使用相对路径,相对路径相对于webappspath属性的值是访问时的根地址。访问地址如下:http://localhost:8080/ItSource/

  1. 这种方式和第二种方式差不多,但是不是在Server.xml文件中添加Context标签,而是在$CATALINA_HOME\conf\Catalina\localhost中添加一个xml文件,如ItSource.xml,内容如下:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="/Users/a123/Desktop/apache-tomcat-9.0.0/work/Catalina/localhost/test/sm-template-1.0.0-SNAPSHOT" path="/sm-template-1.0.0-SNAPSHOT" reloadable="false"><WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

大家可能发现和第二种方式差不多,如果缺少了path属性,这种方式服务器会使用.xml名字作为path属性的值。访问地址如下:http://localhost:8080/ItSource/
我们刚才是将ItSourceManage文件夹部署在了服务器中,我们知道可以将Web应用程序的内容打成.war包,然后在部署在服务器上。
这样在当前目录下应该有 myjspweb.war文件。
部署ItSource.war文件非常简单,将刚才有docBase="F:\ItSourceManage"更改为docBase="F:\ItSource.war"或者直接将其拷贝到webapps下也可以。重新启动服务器就可以将ItSource.war部署为一个Web应用程序了。如果你够细心的话你会发现,服务器将ItSource.war文件解开,并且在webapps下面又生成了一个ItSource文件夹,然后把ItSource.war的内容拷贝到里面去了。我们可以通过以下方式取消自动解压缩,配置方式如下:

  <Host name="localhost"  appBase="webapps"unpackWARs="false" autoDeploy="true">

2.2 动态部署

要开启Web应用的自动部署,需要配置所在的虚拟主机;配置的方式就是Host元素的deployOnStartupautoDeploy属性。如果deployOnStartupautoDeploy设置为true,则tomcat启动自动部署:当检测到新的Web应用或Web应用的更新时,会触发应用的部署(或重新部署)。二者的主要区别在于,deployOnStartuptrue时,Tomcat在启动时检查Web应用,且检测到的所有Web应用视作新应用;autoDeploytrue时,Tomcat在运行时定期检查新的Web应用或Web应用的更新。除此之外,二者的处理相似。

appBase属性指定Web应用所在的目录,默认值是webapps,这是一个相对路径,代表Tomcat根目录下webapps文件夹。
xmlBase属性指定Web应用的XML配置文件所在的目录,默认值为conf/<engine_name>/<host_name>

Tomcat按照如下的顺序进行扫描,来检查应用更新:

  • 扫描虚拟主机指定的xmlBase下的XML配置文件
  • 扫描虚拟主机指定的appBase下的WAR文件
  • 扫描虚拟主机指定的appBase下的应用目录

动态部署是指可以在服务器启动之后部署web应用程序,而不用重新启动服务器。动态部署要用到服务器提供的manager.war文件,如果在$CATALINA_HOME\webapps\下没有该文件,你必须去重新下载tomcat,否则不能完成以下的功能。要想使用该管理程序必须首先编辑$CATALINA_HOME\conf\tomcat-users.xml文件,内容如下:

<user username="tomcat" password="123456" roles="tomcat,manager-gui"/>

在浏览器中键入如下地址:http://localhost:8080/应该看到一个漂亮的加菲猫了吧。点击左边的Tomcat Manager链接,提示输入用户名和密码,本文都是coresun

Context Path(option):中输入/ItSource
XML Configration file URL中要指定一个.xml文件,比如我们在F:\下建立一个ItSource.xml文件,内容如下:
docBase不用写了,因为在下一个文本框中填入。或者更简单点,这个文本框什么都不填。
在WAR or Directory URL:中键入F:\ItSourceManage或者F:\ItSource.war都可以,然后点击Deploy按钮,看看上面是不是已经看到了你web应用程序,名字就是你Context Path(option):中的名字。
如果你部署.war文件还有更加简单的方式,下面还有个Select WAR file uploae点击浏览选择.war文件,然后点击Deploy也可以。

2.3 tomcat部署多应用

关于用tomcat部署多个应用的3种方法:

  1. 配置文件中使用多个Context元素
    这种配置好处是这些应用公用Connector,也就是说访问端口是一样的,这样就可以都部署在8080下了。这样有一个要求,就是应用程序在设计的时候就支持Context,一些链接前面都先加上动态的应用名,而不是使用“/”这样的绝对路径。Context元素的path一定不要以“/”结尾,可以是""或者"/WEB1"这样的。

  2. 配置文件中使用多个Service元素。
    这种配置可以解决应用程序不支持动态应用名的情况,使用不同端口访问不同页面。不过这样有时候也不是很顺利,由于一个tomcatjvm对一个jni类只允许load一次,你多个应用如果同时load了某个jni的类则会部署失败。这种情况可以把这个类从项目里拿出来放到tomcat安装目录的lib下作为公用的。不过还是有点麻烦

  3. 部署多个tomcat。
    这个一般是做集群的时候用的,不过你也可以用来部署多应用,只要调整下端口不冲突就行。

2.4 补充

一般常用的方法:将你的项目或把项目的war包复制到tomcat安装目录下的webapps目录,然后启动tomcattomcat目录会自动解包并部署工程。
还有两种方法也可以试试:

  1. TOMCAT_HOME\conf\Catalina\localhost下新建一个xml文件,其中内容指向你所在的工程的应用目录,然后启动tomcat,也能实现工程的发布,这样的方式对于开发调试来说非常方便,是开发过程中经常使用的方式,xml内容格式如下:
<?xml version="1.0" encoding="UTF-8"?> 
  1. 将编译后的整个工程文件夹拷贝到webapps下,然后启动tomcat
<Context path="/myapp" docBase="H:/work/projects/myapp/myappWebContext" crossContext="false" 
debug="0" reloadable="true"></Context>

这篇关于Java项目打war包并部署到tomcat服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084947

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2