设为首页 收藏本站
查看: 406|回复: 0

[经验分享] 启动嵌入式Tomcat

[复制链接]

尚未签到

发表于 2017-1-18 07:21:00 | 显示全部楼层 |阅读模式
  从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
功能的自己的服务器,当然还可以扩展更多,但需要我们的有想法。

 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-329871-1-1.html 上篇帖子: tomcat安装与运行(一) 下篇帖子: 使用MyEclipse的Tomcat的tomcat配置问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表