tomcat启动的时候就调用某个action

合集下载

重启tomcat服务的方法

重启tomcat服务的方法

重启tomcat服务的方法在重启Tomcat 服务之前,你需要先停止当前正在运行的Tomcat 服务,然后再重新启动服务。

以下是在不同操作系统上重启Tomcat 服务的方法:在Windows 操作系统上:1. 打开命令行终端:按下“Win + R”组合键,打开“运行”对话框,输入“cmd”并按下“Enter”键,打开命令行终端。

2. 停止Tomcat 服务:在命令行终端中输入以下命令,停止当前正在运行的Tomcat 服务:C:\path\to\tomcat\bin\shutdown.bat其中,“C:\path\to\tomcat\”是你的Tomcat 安装目录。

3 等待服务停止:等待几秒钟,直到命令行终端输出“INFO: Server shutdown completed.”的消息,表示Tomcat 服务已经停止。

4. 启动Tomcat 服务:在命令行终端中输入以下命令,启动Tomcat 服务:C:\path\to\tomcat\bin\startup.bat等待几秒钟,直到命令行终端输出“INFO: Server startup in XXX ms”的消息,表示Tomcat 服务已经启动。

在Linux 或macOS 操作系统上:1. 打开终端:打开终端程序,可以在启动菜单或者应用程序中找到。

2. 停止Tomcat 服务:在终端中输入以下命令,停止当前正在运行的Tomcat 服务:/path/to/tomcat/bin/shutdown.sh其中,“/path/to/tomcat/”是你的Tomcat 安装目录。

3. 等待服务停止:等待几秒钟,直到终端输出“INFO: Server shutdown completed.”的消息,表示Tomcat 服务已经停止。

4. 启动Tomcat 服务:在终端中输入以下命令,启动Tomcat 服务:/path/to/tomcat/bin/startup.sh等待几秒钟,直到终端输出“INFO: Server startup in XXX ms”的消息,表示Tomcat 服务已经启动。

tomcat启动报错:Addressalreadyinuse:JVM_Bind

tomcat启动报错:Addressalreadyinuse:JVM_Bind

tomcat启动报错:Addressalreadyinuse:JVM_Bind
tomcat启动时出现Address already in use: JVM_Bind 的原因是因为端⼝被占⽤,有可能是因为多次启动tomcat或者启动了多个tomcat,或者是其他应⽤程序或者服务占⽤了。

错误⽇志如下:
严重: StandardServer.await: create[8080]:
.BindException: Address already in use: JVM_Bind
解决办法:
1、打开cmd,输⼊netstat -ano,查看所有端⼝的占⽤情况,找到被占⽤端⼝8080的PID是4196
2、输⼊tasklist|findstr "4196",回车,查看是哪个进程或者程序占⽤了8080端⼝,结果是:javaw.exe
3、打开任务管理器关闭进程就可以了,但是有时候会遇到这样的问题,同名进程太多不知道是哪个?
4、打开任务管理器的查看->选择列,√PID,点击确定,就可以找到那个进程占⽤了端⼝,结束进程即可。

解析Tomcat的启动脚本--startup.bat

解析Tomcat的启动脚本--startup.bat

解析Tomcat的启动脚本--startup.bat 概述我们通常使⽤ Tomcat 中的 startup.bat 来启动 Tomcat. 但是这其中⼲了⼀些什么事呢?⼤家都知道⼀个 Java 程序需要启动的话, 肯定需要 main ⽅法, 那么这个 main ⽅法在哪呢?Tomcat 脚本中⼜是配置了⼀些什么参数呢, 什么情况下 Tomcat 会启动失败呢?带着⼀些列的疑问我们来分析 Tomcat 的三个最重要的启动脚本:startup.batcatalina.batsetclasspath.batstartup.bat 脚本该脚本主要做了以下⼏件事:设置 CATALINA_HOME 环境变量的值找到 catalina.bat 脚本调⽤ catalina.bat 脚本, 并把参数传过去贴出简化版本的 startup.bat 脚本的内容@echo offrem 执⾏这个命令之后, 增加或者改动的环境变量只限于匹配到 endlocal 命令或者到达⽂件末尾.setlocalrem 假设 CATALINA_HOME 环境变量没有定义rem 取当前⽬录的路径值, 赋给 CURRENT_DIR 变量, 就是 ./apache-tomcat-x.x.xx/binset "CURRENT_DIR=%cd%"rem 如果 CATALINA_HOME 变量值不是 "" 的话, 调到 gotHome 标签处if not "%CATALINA_HOME%" == "" goto gotHomerem 如果 CATALINA_HOME 是 "" 的话, 设置 CATALINA_HOME 变量值为当前⽬录的路径值(./apache-tomcat-x.x.xx/bin) set "CATALINA_HOME=%CURRENT_DIR%"rem 判断当前路径下的是否有 bin\catalina.bat, 也就是 ./apache-tomcat-x.x.xx/bin/bin/catalina.batrem 如果存在的话, 直接调到 okHome 标签处, 显然是不存在的if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHomerem 不存在的话, CATALINA_HOME 取上级⽬录的值, 也就是(./apache-tomcat-x.x.xx/)cd ..set "CATALINA_HOME=%cd%"rem 进⼊ CURRENT_DIR(./apache-tomcat-x.x.xx/bin)cd "%CURRENT_DIR%":gotHomerem 通过上⾯的设置, CATALINA_HOME 的值已经是: ./apache-tomcat-x.x.xx/rem 所以整理是可以找到 catalina.bat 脚本的, 直接调到 okHome 标签处if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHomeecho The CATALINA_HOME environment variable is not defined correctlyecho This environment variable is needed to run this programgoto end:okHomerem 设置 EXECUTABLE 变量指向为 catalina.bat 脚本set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"rem 检查⽬标可执⾏⽂件(catalina.bat)是否存在, 通常情况下是存在的, 直接调到 okExec 标签处rem 如果不存在的话, 直接退出. 启动 Tomcat 结束if exist "%EXECUTABLE%" goto okExececho Cannot find "%EXECUTABLE%"echo This file is needed to run this programgoto end:okExecrem 获取剩余的没有⽤ shift 取出来的命令⾏参数, 并保存它们在 CMD_LINE_ARGSset CMD_LINE_ARGS=:setArgsrem 如果第⼀个命令⾏参数是空的话, 跳到 doneSetArgs 标签处rem "%1" : 表⽰执⾏命令之后的第⼀个参数if ""%1""=="""" goto doneSetArgsrem 第⼀个参数不是空的话, 拼接到 CMD_LINE_ARGS 变量set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1rem 这个命令可以⾃⾏百度shiftgoto setArgs:doneSetArgsrem 上⾯设置了 EXECUTABLE 变量的值是指向了 catalina.bat 脚本, 这个利⽤ call 命令执⾏调⽤, 并把参数传进去rem 接下来, 咱们看 catalina.bat 脚本的内容rem 完整的命令: ./apache-tomcat-x.x.xx/bin/catalina.bat startcall "%EXECUTABLE%" start %CMD_LINE_ARGS%:end要想理解脚本中的⼀些命令, ⾸先来了解⼀下常⽤的命令(我们⽤的 Window 版的)rem : 该命令后的代码不会被执⾏, 相当于注释@echo off : 关闭命令的显⽰, 如果没有设置, 执⾏了哪些命令都会显⽰出来echo : 输出后⾯的内容setlocal : 执⾏这个命令之后, 增加或者改动的环境变量的作⽤范围只限于匹配到 endlocal 命令或者到达⽂件末尾.set : 设置⼀个变量:xxx : 定义⼀个标签goto : 跳转到制定的标签处call : 执⾏命令我们来⼀⾏⾏分析 startup.bat 脚本set "CURRENT_DIR=%cd%"%cd% : 表⽰⽂件所在的⽬录的路径如果我们解压的 Tomcat 所在的⽬录为 D:/apache-tomcat-x.x.x/ . 因为 startup.bat 命令在 bin ⽬录下, 所以此时 %cd% 表⽰的⽬录是 D:/apache-tomcat-x.x.x/binif not "%CATALINA_HOME%" == "" goto gotHome我们通常情况下不会配置 CATALINA_HOME 这个环境变量的, 所以这⾥不会调到 gotHome 标签处.set "CATALINA_HOME=%CURRENT_DIR%"直接把当前⽬录假设为 CATALINA_HOME 的值if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome然后通过固定的格式来判断⼀下是否有 catalina.bat 脚本, 当然这⾥是肯定不会存在的, 因为 CATALINA_HOME = D:/apache-tomcat-x.x.x/bincd ..set "CATALINA_HOME=%cd%"因为 Tomcat 的⽬录格式是固定的, 所以这⾥直接进⼊上级⽬录(cd ..), 然后设置 CATALINA_HOME 的值为上级⽬录(D:/apache-tomcat-x.x.x ).if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHomeecho The CATALINA_HOME environment variable is not defined correctlyecho This environment variable is needed to run this programgoto end继续往下看, 这⾥⼜⼀次判断了⼀下 catalina.bat 在这样的⽬录结构是是否能找到, 如果我们解压完 Tomcat 后, 把 startup.bat放在⾮ Tomcat 的 bin ⽬录下之后, 这⾥是找不到的, 就直接 goto end, 退出 Tomcat 的启动.好了, 这⾥我们直接调到 okHome 标签处.:okHomeset "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"好了, 这⾥很简单, 设置⼀个 EXECUTABLE 变量的值指向 catalina.bat 脚本.if exist "%EXECUTABLE%" goto okExececho Cannot find "%EXECUTABLE%"echo This file is needed to run this programgoto end⼜⼀次的检查了⼀下这个脚本是否存在, 存在的话, 直接调到 okExec 标签处, 可以执⾏了.如果没有通过检查的话, 依旧退出启动, 并打印错误信息.:okExecset CMD_LINE_ARGS=:setArgsif ""%1""=="""" goto doneSetArgsset CMD_LINE_ARGS=%CMD_LINE_ARGS% %1shiftgoto setArgs先设置了⼀个 CMD_LINE_ARGS 变量, 并且其值暂且为空这⾥出现了⼀个 ""%1""=="""", 拆开看就是判断 "%1" 是否等于 "". 那么 "%1" ⼜是什么呢?这是 window 批处理的⼀个语法, 表⽰的是执⾏命令之后的第⼀个参数, 对于这⾥, 我们并没有传递什么参数, 所以这⾥的 "%1"是 ""(空).直接跳转到 doneSetArgs 标签处.如果不是空的话, 就拼在后⾯呗.这⾥这个 shift 命令意思就是移除⼀个参数, 举个例⼦就知道了:@echo offecho "%1"shiftecho "%1"建⼀个 test.bat 批处理程序, 然后把上⾯代码复制进去, 在 cmd 中执⾏并给它两个参数下⾯是执⾏结果, 这⾥⼤家可以把 @echo off 去掉再执⾏, 验证⼀下这个命令的作⽤PS D:\> .\test Hello World"Hello""World"PS D:\>这样, ⼤家应该可以理解了.继续分析:doneSetArgscall "%EXECUTABLE%" start %CMD_LINE_ARGS%:end在上⾯设置了 EXECUTABLE = %CATALINA_HOME%\bin\catalina.bat , 所以这⾥实际上是调⽤了 catalina.bat 这个脚本, 然后传递⼀个 start 参数给它.如果我们在 cmd 中运⾏ startup.bat 并且后⾯跟着⼀些参数的话, 这⾥也⼀起传递过去了.这⾥实际上就是执⾏了: %CATALINA_HOME%\bin\catalina.bat start总结这个脚本还是挺简单的, ⽬的就是找到 catalina.bat 并调⽤它.以上就是本⽂的全部内容,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,下篇继续介绍Tomcat相关知识--《》,有兴趣的朋友可以看下。

Tomcat(8005,8080,8009)端口占用问题常见原因及解决方法

Tomcat(8005,8080,8009)端口占用问题常见原因及解决方法

在企业版Eclipse中,在已经启动了Tomcat服务器后,准备运行页面或Servlet时,有时会出现这样的关于Tomcat服务器端口占用的问题:“Several ports (8005, 8080, 8009) required by Tomcat v6.0 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the other process or change the port number(s).”错误信息的大意是说Tomcat运行所需的那三个端口被被的程序占用了。

我个人遇到过的的原因大概有以下几种:情况一:点击运行的时候没有选中页面或Servlet窗口的标签情况如下图:仔细观察可知,左图其实并没有选中要运行的Servlet窗口的标签,因为标签是白色的,此时点击运行按钮的话相当于再启动一个服务器进程,端口当然是被原来那个已经启动的服务器给占了。

而右图中Servlet窗口标签是蓝色的,说明已经被选中了,点击绿色的运行按钮后自然就是将这个Servlet装入已经启动的那个服务器运行,所以不会有像刚才那种端口占用的情况。

情况二:在硬盘的两个地方都有Tomcat下面说说我碰到过的另一种情况,以前在D盘安装过一个Tomcat,后来因为有段时间不怎么用,就忽略了。

再后来又开始做练习的时候,在C盘装了另一个Tomcat,并且在Eclipse中配置的时候也是默认选择了C盘的那个Tomcat。

悲剧的是,因为原来在D盘的那个Tomcat我设成了开机启动,所以端口一开始就被它占着。

因此,在Eclipse中启动Tomcat(C盘那个)时,就出现了端口占用的错误提示。

Tomcat工作原理详解

Tomcat工作原理详解
然后内容类型等,这个顺序可以自己定。
六、管理
1、用户配置 在进行具体Tomcat管理之前,先给tomcat添加一个用户,使这个用户有权限来进行管理。 打开conf目录下的tomcat-users.xml文件,在相应的位置添加下面一行:
<user name="user" password="user" roles="standard,manager"/> 然后重起tomcat,在浏览器中输入http://localhost:8080/manager/,会弹出对话框,输入上面的用户 名和密码即可。
System($CLASSPATH/*.class和指定的jar)
Common($CATALINA_HOME/common 下的classes,lib,endores三个子目录)
Catalina ($CATALINA_HOME/server/下的classes和lib目录仅对Tomcat可见)
&Shared($CATALINA_HOME/shared/下的classes和lib目录以及$CATALINA_HOME/lib目录)仅对Web应用程序可见,对Tomcat不可见WebApp($WEBAPP/Web-INF/*仅对该WEB应用可见classes/*.class lib/*.jar)
3、会话超时的设置 设置session 的过期时间,单位是分钟; <session-config> <session-timeout>30</session-timeout> </session-config>
4、过滤器的设置 <filter> <filter-name>FilterSource</filter-name> <filter-class>project4. FilterSource </filter-class> </filter> <filter-mapping> <filter-name>FilterSource</filter-name> <url-pattern>/WwwServlet</url-pattern> (<url-pattern>/haha/*</url-pattern>) </filter-mapping>

java中action的用法

java中action的用法

java中action的用法Action是Java Web应用程序中一种常见的设计模式,用于将用户的请求与后台的业务逻辑进行关联。

它通过处理用户请求并将结果返回给用户,是MVC模式中的控制器部分。

在Java中,使用Action可以实现以下功能:1. 处理用户请求:Action可以接收用户的请求,通常通过HTTP请求发送给应用程序,然后解析请求参数,并基于这些参数执行相应的操作。

2. 调用业务逻辑:Action通常负责调用后台的业务逻辑代码,以完成用户请求的处理过程。

它可以与服务层或业务逻辑层进行交互,以执行必要的操作,如查询数据库、调用其他组件等。

3. 设置模型数据:Action可以将处理后的数据设置到模型中,以便在前端展示。

它可以将数据封装成对象,在视图层进行渲染,并将结果返回给用户。

4. 处理结果跳转:Action在处理完用户请求后,通常会根据执行结果选择前往哪个页面。

它可以将请求转发或重定向到不同的视图,以展示给用户相应的结果。

使用Action时,一般需要以下步骤:1. 创建Action类:创建一个Java类来实现Action接口或继承ActionSupport类。

该类应包含处理用户请求的逻辑以及相关的业务代码。

2. 定义请求映射:在配置文件中定义Action类与请求URL之间的映射关系。

常见的配置方式是使用Struts框架的struts.xml文件进行配置,或使用Spring MVC的@RequestMapping注解。

3. 处理用户请求:当用户发送请求时,Web容器将根据请求URL选择相应的Action进行处理。

Action将解析请求参数,并基于这些参数执行相应的操作。

4. 设置模型数据:在处理过程中,Action可以封装数据对象,并将其设置到模型中。

这些数据可以在视图层进行展示,以响应用户请求。

5. 处理结果跳转:根据处理结果,Action可以选择将请求转发到某个页面,或重定向到其他URL。

tomcat之startup.bat详解

tomcat之startup.bat详解

今天自学了X老师的课堂录制视频,虽然以前也曾用TOMCAT开发的软件,特别刚开始从事JA V A Web 环境变量的配置都只知道要配置!以前都是跟着课本上的步骤配置TOMCA T的环境变量,而也没有问过为什么要这样配置。

因为我们搞JA VA的初级人员对.bat 中的命令不通!今天在老师的讲解下,对.bat执行也有了初步的理解,对配置也就豁然开朗了@!因此,我也不得不承认,这儿的培训的确比当今大多数的培训机构都牛!但这并不能说明什么,因为在实际的开发的,或者根本不需要。

1.TOMCAT 为什么要配置环境变量对tomcat 安装目录下bin/startup.bat 批处理文件代码的理解:每一条批处理语句相当于一条DOS下的命令@echo off --------->DOS在运行批处理时,会依次执行批处理中的每条命令,并且会在显示器上显示,如果你不想让它们显示,可以加一个“echo off”,当然,“echo off”也是命令,它本身也会显示,如果连这条也不显示,就在前面加个“@”。

┝------------------------->rem 表示后面的是注释rem Licensed to the Apache Software Foundation (ASF) under one or morerem contributor license agreements. See the NOTICE file distributed withrem this work for additional information regarding copyright ownership.rem The ASF licenses this file to You under the Apache License, Version 2.0rem (the "License"); you may not use this file except in compliance withrem the License. You may obtain a copy of the License atremrem /licenses/LICENSE-2.0remrem Unless required by applicable law or agreed to in writing, softwarerem distributed under the License is distributed on an "AS IS" BASIS,rem WITHOUT W ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions andrem limitations under the License.if "%OS%" == "Windows_NT" setlocalrem ---------------------------------------------------------------------------rem Start script for the CATALINA Serverremrem $Id: startup.bat 908749 2010-02-10 23:26:42Z markt $rem ---------------------------------------------------------------------------rem Guess CATALINA_HOME if not defined设置CURRENT_DIR 为当前目录set "CURRENT_DIR=%cd%"如果CATALINA_HOME为空去执行gotHomeif not "%CATALINA_HOME%" == "" goto gotHome设置环境变量为变量CURRENT_DIR的值set "CATALINA_HOME=%CURRENT_DIR%"如果"%CATALINA_HOME%\bin\catalina.bat 文件存在goto okHomeif exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome回到上一级目录cd ..设置环境变量为变量为当前路径set "CATALINA_HOME=%cd%"相当于DOS下的cd 命令cd "%CURRENT_DIR%"gotHome 程序块:gotHome如果下面的批处理文件存在goto okHomeif exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome输出以下的消息echo The CATALINA_HOME environment variable is not defined correctly echo This environment variable is needed to run this programgoto endgoto end之后的语句意思都差不多,不在备注:okHomeset "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"rem Check that target executable existsif exist "%EXECUTABLE%" goto okExececho Cannot find "%EXECUTABLE%"echo This file is needed to run this programgoto end:okExecrem Get remaining unshifted command line arguments and save them in theset CMD_LINE_ARGS=:setArgsif ""%1""=="""" goto doneSetArgsset CMD_LINE_ARGS=%CMD_LINE_ARGS% %1shiftgoto setArgs:doneSetArgscall "%EXECUTABLE%" start %CMD_LINE_ARGS%:end从以上可知,会调用\bin\catalina.bat批处理问题,而在catalina 批处理文件中又会执行setclasspath.bat 批处理文件。

tomcat基本操作

tomcat基本操作

tomcat基本操作
1. 启动Tomcat:进入Tomcat的bin目录,执行startup.bat (Windows)或startup.sh(Linux)脚本;
2. 关闭Tomcat:进入Tomcat的bin目录,执行shutdown.bat (Windows)或shutdown.sh(Linux)脚本;
3. 部署一个Web应用程序:将具有.war文件扩展名的Web应用程序文件复制到$CATALINA_HOME/webapps目录中,然后等待Tomcat启动自动解压缩并部署;
4. 卸载一个Web应用程序:删除
$CATALINA_HOME/webapps目录中具有相应应用程序文件夹名称的文件夹;
5. 查找Tomcat版本号:进入Tomcat的bin目录,运行version.bat(Windows)或version.sh(Linux)脚本;
6. 查看运行时日志:进入Tomcat的logs目录,并查看各个日志文件;
7. 修改Tomcat端口号:修改
$CATALINA_HOME/conf/server.xml文件中的Port属性;8. 配置Tomcat环境变量:将$CATALINA_HOME/bin添加到系统环境变量中;
9. 配置Tomcat的JVM参数:修改
$CATALINA_HOME/bin/catalina.sh(Linux)或catalina.bat (Windows)文件;
10. 配置Tomcat的安全:修改
$CATALINA_HOME/conf/tomcat-users.xml文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Tomcat启动时就执行某个action
高福来
这个问题我倒腾了1天的时间,首先action是一个请求,如何来发送这个请求就是一个问题,解决的方法是用spring来管理它,这样在初始化spring容器之后就可以获取bean了;另外就是如何初始化呢?也即是只让它运行一次,在服务器启动的时间就开始运行。

实现ServletContextListener这个接口就行,它是在系统启动的时候就执行。

public class MyListener implements ServletContextListener{ public void contextDestroyed(ServletContextEvent event) { // TODO Auto-generated method stub
}
public void contextInitialized(ServletContextEvent event) { // TODO Auto-generated method stub
System.out.println("I am running...");
ApplicationContext context=new FileSystemXmlApplicationContext("classpath:applicationContext.xml ");
DemoAction demo=(DemoAction)context.getBean("test");
try {
demo.execute();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
然后在web.xml中配置下就行了。

<listener>
<listener-class>org.springframework.web.context.ContextLoaderL istener</listener-class>
</listener>
<listener>
<listener-class>com.role.utils.MyListener</listener-class> </listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>。

相关文档
最新文档