`
johnie_sheng
  • 浏览: 112374 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

启动嵌入式Tomcat

阅读更多

从Tomcat5.0开始提供和支持Embeded版本,即最简化Tomcat Server,下面就针对Tomcat Server的Embeded版本进行介绍,怎样把Tomcat集成到Java应用中。

首先可以在http://apache.mirrors.versehost.com/jakarta/tomcat-5/v5.0.28/bin/jakarta-tomcat-5.0.28-embed.tar.gz 下载Tomcat的Embeded版本,下载解压后把最里层的jakarta-tomcat-5.0.28-embed目录copy到容易查找的目录,为简易需要更名为tomcat-embed,作为嵌入Tomcat的工作目录。

首先我们需要了解Tomcat在工作时的层次情况,它按照:
<Server>
  <Service>
    <Connector />
    <Engine>
      <Host>
        <Context 1/>
        <Context 2/>
        <Context n…/>
      </Host>
    </Engine>
  </Service>
</Server>

 

这样的结构表明Tomcat Embeded工作时实例结构情况,一个Server含有1个Connector和1个Engine,其中Engine里含有1个Host,1个Host 内可以含有多个Context,Context代表Web应用,即1个Host里可以包含多个Web应用。

 

接下来在创建开发应用的项目后,我们需要把tomcat-embed目录下的lib内的所有jar包引入到项目的环境中,也就是说把这些Jar文件放到BuildPath中间去,这样就完成了项目开发环境的搭建。

 

在具体应用时启动嵌入式Tomcat,需要根据以下步骤(主要是参照上面的结构图):
1)创建org.apache.catalina.startup.Embedded实例,其代表嵌入式Tomcat Server的实例;
2)创建org.apache.catalina.Engine 实例,代表上面XML结构示例中的Engine,作为容器用来包含Host节点;
3)创建org.apache.catalina.Host实例,代表虚拟主机服务,把它加入到2)中产生的Engine中去;
4)创建一个或多个org.apache.catalina.Context实例,代表具体Web应用,每个Web应用都需要加入到3)产生的Host中;
5)最后创建org.apache.catalina.Connector实例,把它加入2)创建的Engine中,它用来接收客户发出的请求。

import java.io.File;
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;

public class TomcatService {
	private static Embedded tomcat;

	public static void main(String[] args) {
		// set the path for tomcat embed
		String path = "F:/myDaRepository/apache-tomcat-embed";
		Embedded tc = createTomcat(path);
		try {
			tc.start();
			System.out.println("Tomcat Server start over");
//			tc.stop();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static Embedded createTomcat(String path) {
		// create Tomcat Server Instance
		tomcat = new Embedded();
		// set the tomcat home
		tomcat.setCatalinaHome(path);
		// create the Tomcat engine
		Engine engine = tomcat.createEngine();
		engine.setName("MyTestServer");
		// create the host
		Host host = tomcat.createHost("localhost", tomcat.getCatalinaHome()
				+ "/webapps");
		// put the host into engine
		engine.addChild(host);
		engine.setDefaultHost(host.getName());

		String javayouPath = host.getAppBase() + "/CloudscapeDemo";
		if (!new File(javayouPath).exists()) {
			System.err.println("Please test if the javayou exists");
			return null;
		}
		System.out.println("javayouPath"+javayouPath);
		// create the context, and add it to the host
		Context ctxtJavayou = tomcat
				.createContext("/CloudscapeDemo", javayouPath);
		host.addChild(ctxtJavayou);

		tomcat.addEngine(engine);
		try {
			// put the Connector to Tomcat,listen the local visit from 127.0.0.1
			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;
		}
		return tomcat;
	}

	public void shutdown() throws Exception {
		tomcat.stop();
	}
}


打开IE,输入http://localhost:8080/CloudscapeDemo/HelloCloudscape.jsp,就可以看到运行结果了,Jsp和Servlet在预编译的时候稍显有些慢,之后感觉就和Tomcat实际运行的差不多了。
如果需要设置Host中的默认Web应用,如把javayou设置成默认的Web应用,则参考下面例子:
//创建CloudscapeDemo的Context,虚拟路径为"",而物理路径设置为 ../CloudscapeDemo
Context ctxtJavayou = tomcat.createContext("",host.getAppBase() +"/CloudscapeDemo");
ctxtJavayou.setPrivileged(true);
host.addChild(ctxtRoot);
用来替换上面例子中ctxJavayou的创建,编译后重新启动服务,则通过http://localhost:8080/HelloCloudscape.jsp 也可以访问了。

在这里需要注意,由于嵌入式版本Tomcat没有common/lib目录,一些需要的Jar包可以复制到JDK的/jre/lib/endorsed目录下进行使用。

对于Tomcat5 Embeded版本的使用介绍就到这里。在我们的印象中AppServer是复杂而消耗资源的,能把一个Tomcat整合到你的应用中,是个有趣的想法, 除此之外,它也可以让你方便的整合和调试具有后台应用的Web服务,也可以让你整改早前的胖客户应用程序,使它支持Web功能,还可以用来开发支持Web 功能的自己的服务器,当然还可以扩展更多,但需要我们的有想法。

 

 

 

分享到:
评论

相关推荐

    嵌入式tomcat,带例子。

    6. **示例代码**:描述中提到"带例子,简单易懂",可能压缩包中包含了一个简单的Java程序,演示了如何创建并启动嵌入式Tomcat。你可以查看这个例子,理解每个步骤的用途和作用。 嵌入式Tomcat的优点在于其小巧且...

    嵌入式tomcat

    嵌入式Tomcat的工作原理是将Tomcat的核心组件打包到应用程序中,通过编程的方式启动和管理Tomcat实例。这使得开发者能够在程序启动时自动启动Tomcat服务器,处理HTTP请求,并在程序关闭时关闭服务器,无需额外的配置...

    手写嵌入式Tomcat

    嵌入式Tomcat的核心思想是将Tomcat服务器的功能打包进你的应用程序中,使得在运行时可以随应用程序一起启动和停止。这与传统的Tomcat部署方式不同,传统方式通常是在操作系统级别作为单独的服务进行管理。嵌入式...

    嵌入式tomcat虚拟目录服务器应用程序源代码

    嵌入式Tomcat虚拟目录服务器应用程序源代码是一个用于创建和管理虚拟目录的高效解决方案,它无需用户手动安装完整的Apache Tomcat服务器。这个程序的核心在于它能够集成到Java虚拟机(JVM)中,使得开发者或者系统...

    嵌入式Tomcat5.5

    1. **快速开发**:由于其轻量级特性,嵌入式Tomcat5.5启动迅速,这对于快速迭代和频繁测试的开发流程非常有利。开发者可以快速地看到代码改动的效果,从而提高开发效率。 2. **简单配置**:Tomcat5.5的配置文件简洁...

    Spring 5 MVC演示应用程序,具有嵌入式Tomcat和Jaeger Tracing(不带Spring Boot).zip

    6. **运行脚本**:可能有一个`start.sh`或`start.bat`脚本,用于启动嵌入式Tomcat并运行应用。 通过研究这个项目,开发者可以学习到如何在没有Spring Boot的情况下手动配置和管理Spring MVC应用,以及如何集成...

    java嵌入式tomcat[借鉴].pdf

    Java 嵌入式 Tomcat 配置详细说明 Tomcat 是一个流行的 Java Web 服务器,可以作为独立的服务器运行,也可以嵌入到 Java 应用程序中。在本文中,我们将详细介绍如何在 Java 项目中嵌入 Tomcat 服务器,并配置相关...

    03-嵌入式Tomcat1

    在IT行业中,嵌入式Tomcat是一个非常关键的技术点,特别是在Spring Boot框架中。Spring Boot致力于简化Java应用程序的开发,而嵌入式Tomcat作为其默认的Web服务器,使得开发者无需进行复杂的部署配置就能快速运行Web...

    activeobjects-builder-0.27.0.zip

    `embeddedtc.zip`提供的`helper类`正是为了简化这个过程,它使得在Maven Web应用项目中启动嵌入式Tomcat变得轻而易举。 嵌入式Tomcat的核心概念在于,它允许开发者在程序运行时动态创建并管理Tomcat实例,无需单独...

    TOMCAT-EMBEDD

    一旦完成上述步骤,就可以通过调用相应的API方法来启动嵌入式Tomcat服务了。此外,还可以对各个组件进行详细的配置,例如设置端口号、工作路径等。 #### 六、总结 通过以上步骤,我们可以成功地构建并启动一个...

    Modular-Java-Jersey-Vue:Moduler Java,嵌入式Tomcat,Jersey,Vue,Restfull WebApp

    模块化Java,嵌入式Tomcat,Fat Jar,Vue JS 该应用程序演示了面向服务的RESTfull应用程序的各个部分。 演示(Heroku托管) 大约需要2-3分钟才能启动实例 技术栈 零件 技术 后端郎 Java 11(带有模块) 宁静的...

    tomcat-embed5.5.28

    以下是一段简单的嵌入式Tomcat启动示例代码,展示了如何在Java应用中启动Tomcat: ```java import org.apache.catalina.startup.Tomcat; public class Main { public static void main(String[] args) throws ...

    tomcat7 在java程序中启动

    这个例子中,`Tomcat`类是核心,通过实例化这个类并进行适当的配置后,即可启动嵌入式服务器。 #### 依赖的JAR包 嵌入式Tomcat需要一些特定的JAR包来正常工作。根据文档内容,至少需要以下JAR包: - `tomcat-...

    使用embeded tomcat进行嵌入式javaee开发-启动tomcat

    本文将深入探讨如何使用embeded Tomcat进行嵌入式JavaEE开发,并详细解释启动过程。 首先,理解embeded Tomcat的概念。Embeded Tomcat是指将Tomcat服务器作为Java应用程序的一部分,在代码中直接初始化和管理,而...

    EmbeddedTomcat:嵌入式Tomcat工作示例。 Tomcat版本8.5.38。 谢谢Heroku

    这个命令表明在`output/bin`目录下有一个名为`run`的脚本,该脚本用于启动包含嵌入式Tomcat的应用。通常,这样的脚本会设置必要的环境变量,然后调用Java命令运行主类,主类负责初始化并启动Tomcat服务器。 3. **...

    Tomcat开机自启动

    "Tomcat开机自启动" Tomcat开机自启动是指在 Linux 操作系统中,使 Tomcat 服务器在系统启动时自动启动的过程。下面将详细介绍 Tomcat 开机自启动的步骤和相关知识点。 一、基本概念 在开始之前,需要了解一些...

    嵌入tomcat

    2. **构建嵌入式Tomcat实例**:创建`Embedded`类的实例,它代表嵌入式Tomcat Server。 3. **配置引擎**:创建`Engine`实例,这将作为容器来包含`Host`节点。`Engine`充当整个Web应用的处理器。 4. **设置虚拟主机*...

    springEmbeddedTomcatJNDI:Spring Boot 2.x嵌入式tomcat JNDI数据源(开发配置文件)+ WAR

    Spring Boot 2.x嵌入式tomcat JNDI数据源(开发配置文件)+ WAR 该代码旨在通过JNDI数据源查找保持数据库访问。 在开发中,使用配置了JNDI数据源的嵌入式tomcat运行在部署为WAR时,它将在服务器上查找真实的JDNI...

Global site tag (gtag.js) - Google Analytics