本文系本人原创性实验工作,如若转载,请尊重个人劳动,注明出处。
这阵子,由于实验的需要,需要通过程序启动和停止Tomcat Web Server。很早以前就知道有Embedded tomcat。如果不使用嵌入式服务器,直接调用命令行
startup.bat, shutdown.bat,将输入输出重定向,是比较容易的,但是这样的tomcat比较臃肿,也不好看。
网上也有一些实例,但只是告诉我们启动tomcat,却没有合适的停止tomcat的示例。
于是就尝试写一个TomcatServer.java, 用于启动和停止嵌入式的tomcat server。
原理很简单:
一个启动线程,一个停止线程。停止线程不断监听$TOMCAT_HOME/tomcat.stop 标志文件,如果有这个文件,直接stop tomcat engine,然后删除这个文件。
嵌入式tomcat作用还是蛮大的,你可以拿它做一个Web admin console工具,嵌入到你的任何系统当中。
准备工作:
1. 下载tomcat5.0.28embed.zip,能google到。总共也就4M的样子:
http://archive.apache.org/dist/tomcat/tomcat-5/v5.0.28/bin/jakarta-tomcat-5.0.28-embed.zip
2. 将它解压缩到d:\, 这样得到目录d:\jakarta-tomcat-5.0.28-embed
3. 准备一个demo.war,将其解压到d:\jakarta-tomcat-5.0.28-embed\webapps\下边,确保有一个demo目录,用作webapp。因为下边的程序要用到。
4. 在d:\jakarta-tomcat-5.0.28-embed下边编辑一个java源程序TomcatServer.java, 内容如下:
这个程序使用很简单,TomcatServer.start()启动,TomcatServer.stop()停止。
import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.startup.Embedded;
/***
* A very simple embedded tomcat server, which launches a single webapp: demo.
* The flag file : tomcat.stop locates at $CATALINA_HOME/ is used to notify the
* control thread to stop tomcat engine or noe.
*/
public class TomcatServer
{
public static void stop()
{
final String path = System.getProperty("tomcat.home", "d:/jakarta-tomcat-5.0.28-embed");
try
{
new File(path).createNewFile();
}
catch (IOException ex)
{
throw new RuntimeException(ex);
}
}
public static void start()
{
// set the path for tomcat embed
final String path = System.getProperty("tomcat.home", "d:/jakarta-tomcat-5.0.28-embed");
final Embedded tc = createTomcat(path);
Thread startThread = new Thread()
{
public void run()
{
try
{
tc.start();
System.out.println("Tomcat Server 5.0.28 started .....");
}
catch (Exception e)
{
e.printStackTrace();
throw new RuntimeException(e);
}
}
};
startThread.start();
try
{
startThread.join();
}
catch (Exception ex)
{
ex.printStackTrace();
}
Thread controlThread = new Thread()
{
public void run()
{
for (;;)
{
try
{
Thread.sleep(2000);
File f = new File(path + "/tomcat.stop");
if (f.exists())
{
try
{
tc.stop();
System.out.println("Tomcat Server 5.0.28 stopped .....");
}
catch (Exception e)
{
e.printStackTrace();
throw new RuntimeException(e);
}
f.delete();
break;
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
};
controlThread.start();
try
{
controlThread.join();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
private static Embedded createTomcat(String path)
{
// create Tomcat Server Instance
Embedded tomcat = new Embedded();
// set the tomcat home
tomcat.setCatalinaHome(path);
// create the Tomcat engine
Engine engine = tomcat.createEngine();
engine.setName("TomcatServer of ProxyTest");
// create the host
Host host = tomcat.createHost("localhost", tomcat.getCatalinaHome() + "/webapps");
// put the host into engine
engine.addChild(host);
engine.setDefaultHost(host.getName());
String contextPath = host.getAppBase() + "/demo";
if (!new File(contextPath).exists())
{
System.err.println("Please test if the contextPath exists");
return null;
}
System.out.println("contextPath: " + contextPath);
Context context = tomcat.createContext("/demo", contextPath);
host.addChild(context);
tomcat.addEngine(engine);
try
{
tomcat.addConnector(tomcat.createConnector(InetAddress.getByName("127.0.0.1"), 8080,
false));
}
catch (UnknownHostException e)
{
System.err
.println("can not bind tomcat Server to the localhost 127.0.0.1:8080;test the host is free");
e.printStackTrace();
tomcat = null;
throw new RuntimeException(e);
}
return tomcat;
}
public static void main(String[] args)
{
start();
}
}
分享到:
相关推荐
用嵌入式tomcat改造的一个绿色免安装Javaweb服务器。 特性与嵌入式Tomcat相同。 配置好后直接运行使用,绿色免安。适合演示、调试。 内含配置方法。
相对PC或服务器上运行的Apache、IIS、tomcat等web server,嵌入式系统由于ram和flash空间的限制,只能运行一些对资源要求低的web server,譬如BOA和GOAHEAD。 这里以海思的Hi3516a/d芯片平台为例,对boa的移植做了...
本文档是 TongWeb 嵌入式版产品的用户手册,详细介绍了嵌入式版的安装及配置,...TongWeb 嵌入式版 Web 容器需要结合 Spring Boot 框架应用,TongWeb 应用服务器运行 所需的 jar 资源包,您可以根据不同的场景进行引入
使用嵌入式 Tomcat 8 清洁安装带有 websocket 和 Atmosphere 的 Spring Boot 应用程序,运行由 thymeleaf 在 maven 构建的自托管 .jar 文件中生成的角度前端。 带有 Spring Security 的 Spring Boot Tomcat8 气氛...
弹簧靴易于部署,带有所有依赖项的 jar 来启动服务器嵌入式tomcat 准备配置 https 通信用于根据应用程序配置(API 端点)提供动态资源AngularJS 动态视图,数据绑定模板嵌入式表单验证器路由(易于实现有关实际登录...
一个部署在本地Tomcat服务器上的JavaWeb项目(Java+html5+css3+JavaScript+jQuery+Bootstrap+MySql) 软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目...
欢迎使用演示工具集,其中包含嵌入式tomcat应用程序和Web服务应用程序(SOAP,RESTful)。 应用范围: 嵌入式tomcat应用 jaxrs服务器 jaxrs客户端 jaxws服务器 jaxws客户端 汇编: 在根目录中运行: $ mvn clean ...
用于启动Web应用程序的嵌入式Tomcat服务器() Eclipse.org的SWT桌面UI库() Eclipse.org的RAP / RWT Web UI库() 图书馆抽象出SWT和RAP / RWT之间的差异() 样例应用程序代码 提供的库很容易分离,因此您可以为...
2.1 开发环境 ...Java可以编写桌面应用程序、Web应用程序、分布式系统、嵌入式系统应用程序等。 2.3 微信开发者工具 在传统web浏览器中,在加载htm15页面时先加载视图层的html和css,后加载逻辑层的java
2.1 开发环境 ...Java可以编写桌面应用程序、Web应用程序、分布式系统、嵌入式系统应用程序等。 2.3 微信开发者工具 在传统web浏览器中,在加载htm15页面时先加载视图层的html和css,后加载逻辑层的java
Nginx是一个高性能的开源Web服务器和反向代理服务器。 Tomcat是一个开源的Java Servlet容器,用于运行Java Web应用程序。 MySQL是一个关系型数据库管理系统,最流行的关系型数据库管理系统之一。 JDK是 Java 语言的...
硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备、移动设备等 操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式...
您还可以使用./mvnw package构建一个jar并在Java上运行它: java -jar target/person-api-0.0.1-SNAPSHOT.jar 该应用程序在嵌入式Tomcat Web服务器上运行,默认情况下,该服务器在8080端口上进行侦听。认证所有...
2.1 开发环境 ...Java可以编写桌面应用程序、Web应用程序、分布式系统、嵌入式系统应用程序等。 2.3 微信开发者工具 在传统web浏览器中,在加载htm15页面时先加载视图层的html和css,后加载逻辑层的java
此版本的Gama可以在具有嵌入式Tomcat服务器8.0.48的本地计算机上运行。 步骤1:下载在发布的zip文件 第2步:将其解压缩为4个文件gama.bat gama.sh GamaWeb.war tomcat_launcher.jar 步骤3:Windows用户双击gama....
markwilliamson-webtest Mark Williamson Web测试提交 服务安装 先决条件 ... 默认情况下,嵌入式Tomcat实例配置为在localhost的端口8080上运行Web服务。 如果要更改端口,请在与MarkWilliamsonWe
为了使应用程序使用嵌入式 Tomcat(或 Jetty)自动启动,将 spring-boot-starter-web 添加到列表依赖项并使用“com.michir.projects.spring.starup.Application* 主类启动应用程序. 依赖管理 该项目基于 Maven (3.x...
Apache作为经典的Web服务器,除了慢没有别的缺点了,Apache2对fcgi支持并不好,非常好用的proxy和proxy_ajp(很多人用它作为tomcat的前端),不支持epoll(这年头,epoll几乎是性能的必备)。Lighttpd作为杀手级的...
Myna是服务器端JavaScript Web应用程序服务器。 尽管应用程序是用JS编写的,但是该引擎是作为Java Servlet编写的,并且可以部署在任何Java Servlet容器中或在其自己的嵌入式Tomcat实例中进行部署
语言,基于 Servlet 和 JSP 技术,Tomcat 作为 WEB 服务器,选用 My SQL Server 5.5 作为后台数据库,MyEclipse 10 作为开发工具,采用 DIV+CSS 页面嵌套技术进行网 页布局,B/S(浏览器/服务器)结构进行教学平台的...