在发布war文件的时候经常需要关闭启动tomcat,太麻烦了,就起了怎么在ant里实现一体化的想法
在google了一下以后找到了答案,经过验证是可行的
一、失败的解决方案,不够好
通常的想法是写一个target来实行,可是这个样子好像不太来晒艾,ant会堵塞在那里一直到tomcat挂了为止.
执行以下的ant target,你只能得到以下的结果,永远得不到"END STARTUP TOMCAT 4.1",除非tomcat结束了
[echo] STARTUP TOMCAT 4.1
[exec] Using CATALINA_BASE: C:/Tomcat4.1
[exec] Using CATALINA_HOME: C:/Tomcat4.1
[exec] Using CATALINA_TMPDIR: C:/Tomcat4.1\temp
[exec] Using JAVA_HOME: C:/j2sdk1.4.2_02
<target name="rroger">
<echo message="SHUTDOWN TOMCAT 4.1"></echo>
<exec dir="c:/Tomcat4.1/bin" executable="cmd">
<env key="JAVA_HOME" value="C:/j2sdk1.4.2_02"/>
<env key="CATALINA_HOME" value="C:/Tomcat4.1"/>
<arg value="/c shutdown.bat"/>
</exec>
<echo message="STARTUP TOMCAT 4.1"></echo>
<exec dir="${tomcat_home}/bin" executable="cmd">
<env key="JAVA_HOME" value="C:/j2sdk1.4.2_02"/>
<env key="CATALINA_HOME" value="C:/Tomcat4.1"/>
<arg value="/c startup.bat"/>
</exec>
<echo message="END STARTUP TOMCAT 4.1"></echo>
</target>
二、有个强人给了一个解决办法,自写tomcat的任务
-----[build.xml]----------------
<project name="My Application" default="BlockingTask" basedir=".">
<taskdef name="startServer" classname="org.rogerCompany.StartServerTask" classpath="${classpath}"/>
<target name="BlockingTask">
<exec dir="C:/Tomcat4.1/bin" executable="cmd.exe">
<arg line="/c startup.bat"/>
</exec>
</target>
<target name="startServerAsync">
<startServer startTarget="BlockingTask"/>
</target>
</project>
-----[StartServerTask.java]----------------
package org.rogerCompany;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
/**
* An Ant Task that does the following :
*
* create a java thread,
*
* start another Ant target in that thread. This target must be a
* blocking target.
*
*
*/
public class StartServerTask extends Task {
/**
* Helper class
*/
private StartServerHelper helper;
/**
* Initialization
*/
public void init() {
this.helper = new StartServerHelper(this);
}
/**
* @see Task#execute()
*/
public void execute() throws BuildException {
this.helper.execute();
}
/**
* Ant will automatically call this method when the "startTarget" attribute
* of our task is used.
*
* @param theStartTarget the Ant target to call
*/
public void setStartTarget(String theStartTarget) {
this.helper.setStartTarget(theStartTarget);
}
}
-----[StartServerHelper.java]----------------
package org.rogerCompany;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.CallTarget;
/**
* A helper class for an Ant Task that does the following :
* create a java thread,
*
* start another Ant target in that thread. This target must be a
* blocking target.
*
*/
public class StartServerHelper implements Runnable {
/**
* The Ant target name that will start the blocking target.
*/
private String startTarget;
/**
* The tasks that wraps around this helper class
*/
private Task task;
/**
* @param theTask the Ant task that is calling this helper
*/
public StartServerHelper(Task theTask) {
this.task = theTask;
}
/**
* @see Task#execute()
*/
public void execute() throws BuildException {
// Verify that a start target has been specified
if (this.startTarget == null) {
throw new BuildException("A startTarget Ant target name must " +
"be specified");
}
// Call the target in another thread. The called
// target must be blocking.
Thread thread = new Thread(this);
thread.start();
// We're done ... Ant will continue processing other tasks
}
/**
* The thread that calls the Ant target that starts, for example, a server.
* Must be a blocking target.
*/
public void run() {
// Call the Ant target using the "antcall" task.
CallTarget callee;
callee = (CallTarget) (this.task.getProject().createTask("antcall"));
callee.setOwningTarget(this.task.getOwningTarget());
callee.setTaskName(this.task.getTaskName());
callee.setLocation(this.task.getLocation());
callee.init();
callee.setTarget(this.startTarget);
callee.execute();
// Should never reach this point as the target is blocking, unless the
// server is stopped.
}
/**
* @param theStartTarget the Ant target to call
*/
public void setStartTarget(String theStartTarget) {
this.startTarget = theStartTarget;
}
}
分享到:
相关推荐
描述: Java 实现 Tomcat 的自启动和关闭,可实现远程控制 Tomcat 标签: Java Tomcat 知识点 1: Java 项目结构 在创建一个 Java 项目时,需要添加必要的 JAR 包来实现 Tomcat 服务器的启动。在项目结构中,需要...
如果不想以服务方式运行,但仍然想在命令行启动Tomcat而不显示窗口,可以在启动命令后添加`-startup`参数,例如:`startup.bat -startup`。这将在后台启动Tomcat,但仅适用于手动启动,不适合自动启动或远程操作。 ...
这也是一个Windows批处理脚本,它的作用是启动Tomcat服务器。当你运行`startup.bat`时,它会启动Tomcat的服务进程,加载服务器配置,并准备好接收HTTP请求。Tomcat的启动过程中,会读取`conf/server.xml`配置文件,...
linux操作系统,制定定时任务步骤: ... 0 4 * * * /opt/ltim/tomcat/bin/shutdown.sh —表示每天4点关闭tomcat; 20 4 * * * /opt/ltim/tomcat/bin/startup.sh —表示每天4点十分打开tomcat; 5)按住es
### Linux下启动Tomcat命令详解 #### 一、前言 在Linux环境下部署与管理Java Web应用程序时,Apache Tomcat服务器作为最常用的轻量级应用容器之一,其启动与停止命令是运维人员必须掌握的基本技能。本文将详细介绍...
加入系统启动任务,可以监测tomcat运行情况,当tomcat停止服务时,可以自动启动tomcat
标题中的“自动启动Tomcat”指的是在服务器上配置Tomcat服务,使其能够在关闭后自动重新启动,以确保应用程序的连续性和稳定性。C#是.NET框架的一部分,通常用于编写Windows服务或者控制台应用来实现这样的自动化...
为了通过Ant启动Tomcat,我们首先需要在Ant的构建脚本中定义一个目标(target),该目标将执行启动Tomcat的脚本。以下是一个示例XML配置: ```xml <target name="start-tomcat" description="tomcat starting.."> ...
启动Tomcat通常需要通过Tomcat安装目录下的`bin`目录执行相应的脚本命令。具体的步骤如下: 1. **进入Tomcat目录**: ```bash cd /path/to/tomcat ``` 其中`/path/to/tomcat`需要替换为实际的Tomcat安装路径。 ...
1. **启动Tomcat**:通常,Tomcat可以通过执行`bin/startup.sh`(Unix/Linux)或`bin/startup.bat`(Windows)脚本来启动。这些脚本会调用`catalina.sh`或`catalina.bat`来启动服务器。在某些环境中,可能还需要设置...
### Java调用命令行启动Tomcat #### 一、引言 在开发环境中,我们经常需要启动Tomcat服务器来运行Java Web应用。通常情况下,我们会通过双击`startup.bat`或`catalina.sh`脚本来启动Tomcat。然而,在某些特定场景...
linux下启动和关闭tomcat命令
需要注意的是,在重新启动 Tomcat 之前,需要确保 Tomcat 已经关闭,否则可能会报端口被占用异常。此外,在启动 Tomcat 之前,需要确保正确地登录 Linux 系统,并正确地进入 Tomcat 的目录。 重新启动 Tomcat 需要...
定时启动Tomcat应用服务器批处理脚本是系统管理员常用的一种工具,用于自动化管理Tomcat服务,确保服务在特定时间自动启动,提高运维效率,降低人工干预的需求。下面将详细介绍这个主题及其相关知识点。 一、批处理...
3. **启动Tomcat**:进入解压后的bin目录,运行`startup.sh`脚本来启动Tomcat服务。 ``` cd apache-tomcat-8.5.47/bin/ ./startup.sh ``` 4. **验证Tomcat状态**:通过`ps`命令检查Tomcat是否已经成功启动。...
- **ant启动tomcat**:此标题表明文章的主题是介绍如何使用Ant自动化构建工具来启动Tomcat应用服务器。 #### 描述分析 - **antantantantantantantantantantantant**:描述部分似乎并未提供有效信息,因此我们直接...
- 在文件末尾添加以下命令来启动Tomcat服务: ```bash /usr/local/tomcat7_1/bin/startup.sh ``` - 保存文件并关闭编辑器。 - 最后,为了让`rc.local`脚本在系统启动时被执行,需要确保它具有执行权限: ```...
启动Tomcat服务器需要进入Tomcat服务器的bin目录,然后执行"./startup.sh"命令启动Tomcat服务器。查看Tomcat服务器的Log信息,可以查看Tomcat服务器是否已经正常启动成功。如果Tomcat服务器启动不了,可能是启动时...
在Java应用服务器领域,理解如何通过Bootstrap接口控制Tomcat的启动与关闭对于运维和开发者来说至关重要。下面将详细介绍这个过程以及相关的知识点。 一、Bootstrap的启动流程 1. **初始化**: Bootstrap类是Tomcat...