精华内容
下载资源
问答
  • Spring Boot:内置tomcat启动和外部tomcat部署总结

    万次阅读 多人点赞 2018-05-09 20:07:12
    使用内置tomcat启动 启动方式: 1、IDEA中main函数启动 2、mvn springboot-run 命令 3、java -jar XXX.jar 使用第三种时,为保证服务在后台运行,会使用nohup ,例如: nohup java -jar -Xms128m -Xmx128m -...

    springboot的web项目的启动主要分为:

    一.使用内置tomcat启动

    启动方式:

    1、IDEA中main函数启动

    2、mvn springboot-run 命令

    3、java -jar XXX.jar

    使用第三种时,为保证服务在后台运行,会使用nohup ,例如:

    nohup java -jar -Xms128m -Xmx128m -Xss256k -XX:+PrintGCDetails -XX:+PrintHeapAtGC -Xloggc:/data/log/web-gc.log web.jar >/data/log/web.log &

    配置内置tomcat属性:

    关于Tomcat的属性都在org.springframework.boot.autoconfigure.web.ServerProperties配置类中做了定义,我们只需在application.properties配置属性做配置即可。通用的Servlet容器配置都已”server”左右前缀,而Tomcat特有配置都以”server.tomcat”作为前缀。下面举一些常用的例子。

    配置Servlet容器:

    复制代码

    #配置程序端口,默认为8080
    server.port= 8080
    #用户绘画session过期时间,以秒为单位
    server.session.timeout=
    # 配置默认访问路径,默认为/
    server.context-path=

    复制代码

     

    配置Tomcat:

    # 配置Tomcat编码,默认为UTF-8
    server.tomcat.uri-encoding=UTF-8
    # 配置最大线程数
    server.tomcat.max-threads=1000

     

    二.使用外置tomcat部署

    配置步骤:

    1、继承SpringBootServletInitializer

    • 外部容器部署的话,就不能依赖于Application的main函数了,而是要以类似于web.xml文件配置的方式来启动Spring应用上下文,此时我们需要在启动类中继承SpringBootServletInitializer并实现configure方法:

    复制代码

    package com.zjt.chapter05;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.support.SpringBootServletInitializer;
    
    @SpringBootApplication
    public class Chapter05Application extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(Chapter05Application.class);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(Chapter05Application.class, args);
        }
    }

    复制代码

     

    这个类的作用与在web.xml中配置负责初始化Spring应用上下文的监听器作用类似,只不过在这里不需要编写额外的XML文件了。

     2、pom.xml修改tomcat相关的配置

      首先介绍下maven中scope依赖范围的概念,因为后续涉及到这个会有问题。

      依赖范围就是用来控制依赖和三种classpath(编译classpath,测试classpath、运行classpath)的关系,Maven有如下几种依赖范围:

    • compile:编译依赖范围。如果没有指定,就会默认使用该依赖范围。使用此依赖范围的Maven依赖,对于编译、测试、运行三种classpath都有效。典型的例子是spring-code,在编译、测试和运行的时候都需要使用该依赖。

    • test: 测试依赖范围。使用次依赖范围的Maven依赖,只对于测试classpath有效,在编译主代码或者运行项目的使用时将无法使用此依赖。典型的例子是Jnuit,它只有在编译测试代码及运行测试的时候才需要。

    • provided:已提供依赖范围。使用此依赖范围的Maven依赖,对于编译和测试classpath有效,但在运行时候无效。典型的例子是servlet-api,编译和测试项目的时候需要该依赖,但在运行项目的时候,由于容器以及提供,就不需要Maven重复地引入一遍。

     

     

    如果要将最终的打包形式改为war的话,还需要对pom.xml文件进行修改,因为spring-boot-starter-web中包含内嵌的tomcat容器,所以直接部署在外部容器会冲突报错。这里有两种方法可以解决,如下

    方法一:

    复制代码

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    复制代码

     

    在这里需要移除对嵌入式Tomcat的依赖,这样打出的war包中,在lib目录下才不会包含Tomcat相关的jar包,否则将会出现启动错误。

    还有一个很关键的关键点,就是tomcat-embed-jasper中scope必须是provided。

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

     

    因为SpringBootServletInitializer需要依赖 javax.servlet,而tomcat-embed-jasper下面的tomcat-embed-core中就有这个javax.servlet,如果没用provided,最终打好的war里面会有servlet-api这个jar,这样就会跟tomcat本身的冲突了。这个关键点同样适应于下面说的第二种方法。

    方法二:

    直接添加如下配置即可:

    复制代码

    <!--部署成war包时开启↓↓↓↓-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-jasper</artifactId>
                <scope>provided</scope>
            </dependency>
            <!--部署成war包时开启↑↑↑↑-->

    复制代码

     

    provided的作用上面已经介绍的很透彻了,这里就不啰嗦了,这种方式的好处是,打包的war包同时适合java -jar命令启动以及部署到外部容器中。

     

    3、由jar变成war

    <packaging>war</packaging>

    4、注意的问题

    此时打成的包的名称应该和application.properties的 
    server.context-path=/test

    保持一致

    <build>
        <finalName>test</finalName>
    </build>

     

    如果不一样发布到tomcat的webapps下上下文会变化

    展开全文
  • Tomcat启动一闪而过就消失的原因和解决方法

    万次阅读 多人点赞 2018-07-04 11:47:19
    Tomcat启动一闪而过怎么办?这成为了许多刚接触tomcat开发环境工作者的一个大问题,许多用户朋友都不知道是因为什么问题导致出现这种情况,下面就一起来了解一下吧。原因一: (1)首先要搞明白启动不起来的原因。...

    Tomcat启动一闪而过怎么办?这成为了许多刚接触tomcat开发环境工作者的一个大问题,许多用户朋友都不知道是因为什么问题导致出现这种情况,下面就一起来了解一下吧。

    原因一:

     (1)首先要搞明白启动不起来的原因。方法是在命令行下,运行startup.bat文件,这样程序就不会一闪而过,而会将启动不起来的原因打印到窗口上。

    (2)在命令行下启动tomcat的方法读者应该都很清楚,大体就是:cmd启动命令行窗口→通过cd命令到tomcat的bin目录下→运行startup.bat。

    (3)通过命令行的提示看到,这是因为电脑上没有配置JAVA_HOME或者JRE_HOME导致的。那么下面添加上JAVA_HOME和JRE_HOME。具体步骤为计算机→属性→环境变量,然后添加系统变量;




    (4)添加完JAVA_HOME和JRE_HOME两个系统变量之后,在将这两个变量放到path系统变量中,方法是,在path变量值的后面直接追加 【;%JAVA_HOME%;%JRE_HOME%】注意!分号是环境变量的分割符号,不可少。



    原因二:

    双击tomcat的bin目录下的startup.bat时一闪而过时,可以右键startup.bat找一个文本编辑器打开,然后在文本的最后敲上pause,保存后重新运行startup.bat,这时候窗口会留在桌面上(调试成功,把pause去掉即可)。我们可以看到DOS窗口里有错误信息。


    1. The JRE_HOME environment variable is not defined correctly This environment variableis needed to run this program 原因:以前版本的tomcat需要JDK,现在的tomcat(本人的是7.0)只要有JRE就可以。 如果你装的tomcat的是解压版的(免安装的)那么则需要自己手动配置JRE_HOME 这个环境变量,否则,就会出现上面的错误。 解决办法:右击 我的电脑 - 高级 - 环境变量, 在系统变量中 新建 变量名:JRE_HOME 变量值:C:\Program Files\Java\jre7(根据你自己的JDK安装目录寻找JRE)


    2.Neither the JAVA_HOME nor the JRE_HOME environment variable is defined Tomcat的startup.bat,它调用了catalina.bat,而catalina.bat则调用了setclasspath.bat,只要在setclasspath.bat的开头声明环境变量(红色两行)就可以了,原因是后来较新版本安装完不会自动登记环境变量JAVA_HOME,JRE_HOME。
    给setclasspath.bat的开头添加红色标记部分,如下: rem ___________________________ rem Set CLASSPATH and Java options rem rem rem ____________________________ set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_20 set JRE_HOME=C:\Program Files\Java\jre6 rem Make sure prerequisite environment variables are set if not “%JAVA_HOME%” == “” goto gotJdkHome if not “%JRE_HOME%” == “” goto gotJreHome echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined echo At least one of these environment variable is needed to run this program goto exit

    这样在每次运行startup.bat时就自动注册了JAVA_HOME,JRE_HOME。 运行startup.bat,提示“信息:Server startup in xxxxx ms” OK 大功告成。


    3. Cannot find “”d:\apache-tomcat-6.0.32”\bin\setclasspath.bat”


    这个时候,可能是CATALINA_HOME的值在某个地方被写死了,像我的绿色版tomcat在bin文件下多了一个setenv.bat的文件,打开一看果然是在这里面被写死了CATALINA_HOME的路径,这应该是为了某种原因被人后加上的设置文件,把这个文件删除之后,tomcat可以正常运行了。



    原因三:

    如果你的环境配置没有错,也没有上述两种错误那么可能你已经启动了一个Tomcat,这样两个Tomcat会产生冲突。你可以在com中查看8080是否被占用:

    (1)我们可以使用如下命令来找出哪个进程占用5037这个端口

            netstat -ano | findstr "5037"


    (2)最后一列为占用5037端口的进程号,PID为9060,那么我们可以在任务管理器里查看改进程号所对应的进程,直接右击结束该进程即可。或者使用上面提到的taskkill命令,它主要是用来批量删除某些进程,当然,也可以用来删除一个进程,使用方法如下:

    taskkill /PID 9060 /F        其中,/F主要是用来强制删除。

    你也可以查看Tomcat自带的打印日志在你的Tomcat的logs文件夹下如果出现了

    七月 04, 2018 10:40:20 上午 org.apache.catalina.core.StandardService initInternal

    严重: Failed to initialize connector [Connector[HTTP/1.1-8080]]

    org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8080]]


    类似的错误可能已经运行了一个Tomcat你可以在服务中把它终止掉,然后再运行自己的Tomcat就可以了。

    展开全文
  • tomcat启动快方法,tomcat优化实用方法,web.xml文件配置,<absolute-ordering/>

    tomcat启动快及优化方法:

           大家一定都遇到过tomcat启动很慢的时候吧,特别的是tomcat部署非常大的项目的时候,那怎么样才能使tomcat启动变快呢,下面请听我详细讲解

           当我们刚下载tomcat启动的时候,时间并不是很长才2000ms左右,每次时间都不一样,总之不长,如图:

           

         启动结果:

                       

         

           但是当tomcat部署到项目中去后,你就会发现tomcat启动很慢,我第一次部署到项目中启动用了300000ms,因为项目比较大,所以时间很长,所以我就去网上搜索了一下,好多方法但是我试了都不好用,不知道在哪偶然发现一种方法试过之后可以缩短很多时间,下面就给大家详细讲解一下哈:

           首先看你的tomcat安装目录下webapps文件夹下面有几个文件夹,我这里举两个例子,apache-tomcat-7.0.70和apache-tomcat-7.0.75

           

           apache-tomcat-7.0.70有3个文件夹,apache-tomcat-7.0.75有5个文件夹

           分别修改这些路径下的

           apache-tomcat-7.0.70\webapps\docs\WEB-INF

           apache-tomcat-7.0.70\webapps\manager\WEB-INF

           apache-tomcat-7.0.70\webapps\ROOT\WEB-INF

           web.xml文件

           加入:<absolute-ordering/>

           如果是7.0.75的还需要修改examples和host-manager这两个文件夹下面的web.xml文件

                   

           修改内容如下:

                   

          

          每一个web.xml文件都加入:<absolute-ordering/>

          当然如果只在一个web.xml中加入的话也可以,速度会快,但是不能比所有web.xml都加上快

          原来跑的时间是300000ms,现在请看结果:

                   

         


        是不是快多了,好了,大功告成,如果有问题的话请随时评论,我会及时解答的哈

         如果您觉得有用的话请给个赞哈,谢谢啦害羞

         

    展开全文
  • Tomcat启动出现乱码·解决方法

    万次阅读 多人点赞 2019-08-25 20:37:02
    Tomcat启动出现乱码·解决方法启动出现乱码 启动出现乱码 打开conf文件夹下的文件,如图,用记事本打开即可 之后打开后找到如图这一行 需要修改这一行,将这一行改为 java.util.logging.ConsoleHandler.encoding ...

    Tomcat启动出现乱码·解决方法

    启动出现乱码

    在这里插入图片描述

    打开conf文件夹下的文件,如图,用记事本打开即可
    在这里插入图片描述

    之后打开后找到如图这一行

    在这里插入图片描述

    需要修改这一行,将这一行改为

    java.util.logging.ConsoleHandler.encoding = GBK
    
    展开全文
  • 关于Tomcat启动失败的问题

    万次阅读 2020-06-03 02:47:19
    前端访问servlet的时候是通过注解,这个注解只能使用一次,否则Tomcat启动也会报错 就像是两个人都叫张三,Tomcat就不知道该去找谁了 但是我很确定,这个名字我没有使用过,仔细看,发现是忘记打/导致的报错 各位...
  • netty是一个NIO类型的 tomcat是一个BIO类型的   当时我把netty启动放在tomcat启动过程中,可能导致tomcat阻塞。 需要另开启一个线程来启动netty,这样就不会阻塞tomcat...
  • Tomcat启动内存设置

    万次阅读 2019-05-14 13:32:44
    Tomcat启动内存设置 Tomcat的启动分为startupo.bat启动和注册为windows服务的启动,下面一一说明。 1.startup.bat启动 在tomcat_home/bin目录下找到catalina.bat,用文本编辑器打开,加上下面一行: set JAVA_...
  • TomCat启动不了的原因

    万次阅读 2018-05-24 18:50:20
    这篇博客主要说一下我遇到的TomCat启动不了的解决办法。 首先,我在学习中遇到的两个TomCat启动不了的问题和解决办法。 第一个TomCat启动不了的原因是:TomCat所用的端口被其他程序占用,导致TomCat无法启动。 ...
  • 4.2 从Tomcat的Bin目录中启动服务器 4.3 Eclipse启动Tomcat 一、文章前言 本文是亲测有效解决At least one JAR was scanned for TLDs yet contained no TLDs问题,绝对不是为了积分随便粘贴复制然后压根都没有用...
  • Tomcat启动完毕后启动方法任务

    万次阅读 2016-01-14 09:18:38
    Tomcat启动完成后再执行一个指定的方法 - 不影响Tomcat的启动时间 本文主要介绍Tomcat启动真正完成后(即在eclipse的控制台上出现类似于Server started in 2300ms这样的消息后)执行一个操作。  如下的3种方法都是...
  • Tomcat启动springboot项目

    千次阅读 2019-03-31 19:52:19
    Tomcat启动springboot项目 1.首先需要先将springboot项目修改下 打包方式改为war,因为springboot项目maven的打包方式默认是jar。需要在pom中 <packaging>war</packaging> 引入springboot tomcat...
  • Tomcat启动过程原理详解

    万次阅读 多人点赞 2017-06-05 14:48:45
    Tomcat启动过程原理详解,Tomcat Server处理一个http请求的过程
  • Linux平台Tomcat启动失败问题排查

    千次阅读 2019-02-13 19:43:42
    Linux 下 Tomcat 启动失败 centOS 7 Tomcat 启动失败 部署在 Linux 服务器上边的 Tomcat服务通常在项目更新的时候需要重新启动,但是会由于各种原因,导致 Tomcat 启动失败,本文将以Linux 发行版 centOS 7 系统为例...
  • Tomcat启动乱码

    万次阅读 多人点赞 2019-01-12 11:32:24
    刚刚安装完系统,下了Tomcat,但是启动的时候不管是系统的控制台还是idea的控制台,显示的日志都有中文乱码,如下 12-Jan-2019 11:15:48.911 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener....
  • Tomcat启动报错,ClassNotFoundException

    千次阅读 2017-02-22 22:46:44
    tomcat启动报错
  • Tomcat启动超时问题

    千次阅读 2018-05-17 16:00:00
    遇到过很多次tomcat启动超时的问题,记录一下解决办法 首先要尝试的方法一般都是延长超时时间,很遗憾它只能解决一部分人的问题 下面说一下我今天遇到超时问题的解决办法 说明:我的项目中使用到了MyBatis ...
  • tomcat启动报错too low setting for -Xss

    万次阅读 多人点赞 2016-03-07 16:14:37
    tomcat启动报错too low setting for -Xss 网上给的答案都是调整Xss参数,其实不是正确的做法, -Xss:每个线程的Stack大小,“-Xss 15120” 这使得tomcat每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该...
  • Server Tomcat v8.5 Server at localhost failed to start.
  • 修改tomcat启动时间

    千次阅读 2016-07-22 14:47:05
    修改tomcat启动时间 当启动tomcat时候出现 Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server...
  • 轻松解决Tomcat启动慢的问题,只需一行代码

    万次阅读 多人点赞 2019-01-30 17:07:49
    今天在帮一位同学解决了一个问题——Tomcat启动超级慢,大概五六分钟。解决之后,只需要3秒钟即可启动。 问题怎么解决呢? 在Tomcat的bin目录下找到catalina.sh,然后打开它,在以下位置添加一行代码-Djava....
  • web项目集成shiro后加入tomcat启动超时,tomcat无法正常启动
  • tomcat启动控制台中文乱码

    千次阅读 2019-04-13 23:43:57
    tomcat启动时会有中文乱码问题,这是因为tomcat与系统编码不一致造成的 tomcat是utf-8,查看控制台编码发现是GBK,于是就乱码了 解决办法:进入tomcat目录下的conf apache-tomcat-8.5.38\conf\logging.properties ...
  • 最近接手了公司一个需要内置Tomcat启动程序的项目,也把配置方式梳理一下,请关注详情
  • myeclipse启动异常——tomcat启动失败

    千次阅读 2018-12-27 09:20:32
    因公司要求,必须使用特定版本的mye,在使用过程中产生了诸多的不适应。问题解决后,记录如下: ...tomcat启动异常: 先把eclipse——server视窗的tomcat中的项目移除。 再关闭eclipse。接下来...
  • tomcat启动报错解决

    万次阅读 2017-02-23 11:42:15
    tomcat启动报错,具体报错信息如下: Unable to complete the scan for annotations for web application [/Ftrans] due to a StackOverflowError. Possible root causes include a too low setting for -Xss and ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,868
精华内容 33,147
关键字:

tomcat启动