如何嵌入Tomcat 6?
我目前正在生产中的 Tomcat 6 上运行我的 web 应用程序,并且想评估以嵌入式模式运行 Tomcat。
除了 API 文档?
I'm currently running my webapps on Tomcat 6 in production, and would like to evaluate running Tomcat in embedded mode.
Is there a good tutorial or other resource besides what's in the api documentation?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
代码不言而喻。 请参阅 pom.xml 片段和运行 tomcat 的类。
Code speaks for itself. See the pom.xml snippet and the class to run tomcat.
虽然这篇文章有些过时了,但我正在回答我自己的答案,因为它可以节省其他人的时间
我也遇到了
404
错误,并且挣扎了一段时间。 通过查看日志“INFO: No default web.xml
”,我怀疑它(如果这是警告,就很容易发现)。。 技巧是使用 Tomcat 提供的web.xml
(rootContext.setDefaultWebXml("web.xml")
) (conf/web.xml
)。 原因是,它包含 DefaultServlet,它提供 HTML、JS 等静态文件。 使用web.xml
或在代码中手动注册 servlet。用法:
不要忘记将默认的
web.xml
放在该程序的同一目录中或指向正确的位置。应该指出的是,关闭挂钩的灵感来自于 Antonio 的回答。
Though this post is some what aged, I m answering my own answer as it could save some other' time
I also faced the
404
error and struggled some time. By seeing the log 'INFO: No default web.xml
', I suspected it (if that is a warning, would've been easy to spot). The trick being using theweb.xml
(rootContext.setDefaultWebXml("web.xml")
) supplied with Tomcat (conf/web.xml
). The reason being, it includes the DefaultServlet, which serves the static files likes HTML, JS. Either use theweb.xml
or register the servlet manually in your code.Usage:
Do not forget to place the default
web.xml
in the same directory of this program or point to the correct location.It should be noted that the shutdown hook is inspired from Antonio's answer.
人们可能会使用 Tomcat 而不是 Jetty 的原因有很多:
第 5 点在我的工作中很重要。 例如,我可以通过 Tomcat 直接访问 JSPWiki 实例,但使用 Jetty 时完全无法访问。 我在 2007 年曾要求解决这个问题,但尚未听到答案。 所以我最终放弃了,开始使用 Tomcat 6。我研究过 Glassfish 和 Grizzly,但到目前为止,Tomcat(令人惊奇地)是最稳定、文档记录最齐全的 Web 容器(这并没有说明太多)。
There are a number of reasons why one might use Tomcat over Jetty:
Point #5 has been important in my work. For example, I can gain direct access to a JSPWiki instance via Tomcat, but it's completely inaccessible when using Jetty. I asked for a solution to that in 2007 and haven't yet heard an answer. So I finally gave up and began using Tomcat 6. I've looked into Glassfish and Grizzly, but so far Tomcat is (amazingly) the most stable and well-documented web container (which isn't saying much really).
这可能会有所帮助。
如果你下载Tomcat6.x的源码包,你会得到这个类:
http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/startup/Catalina.html#main (java.lang.String[])
这是如何使用 Embedd 类的示例:它是一个用于停止|启动特定 Tomcat 安装的 shell。 (我的意思是您可以设置 CATALINA_BASE 来指向现有的 Tomcat 安装)。
如果你编译它,你可以像这样运行:
java -D"catalina.base=%CATALINA_BASE%" -D"catalina.home=%CATALINA_HOME%" org.apache.catalina.startup.Catalina start
我不知道如何更改此代码以关闭服务器!
This might help.
If you download the source package for Tomcat6.x, you get this class:
http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/startup/Catalina.html#main(java.lang.String[])
Which is an example of how to use the Embedd class: its a shell to stop|start a specific Tomcat installation. (I mean you can set up
CATALINA_BASE
to point at an existing Tomcat installation).If you compile this you can run like this:
java -D"catalina.base=%CATALINA_BASE%" -D"catalina.home=%CATALINA_HOME%" org.apache.catalina.startup.Catalina start
I'm not sure how to alter this code to shutdown the server yet though!
几个月前读完这篇文章后,我编写了这个项目:spring-embedded-tomcat。
它可用于将 tomcat6 嵌入到基于 Spring 的应用程序中。
After reading this thread some months ago, I wrote this project: spring-embedded-tomcat.
It can be used to embed tomcat6 into Spring-based applications.
我认为使用 Tomcat 7 或 Jetty 9 嵌入更容易。 在这里你会找到一个很好的介绍: http://www.hascode.com/2013/07/embedding-jetty-or-tomcat-in-your-java-application/
I think with Tomcat 7 or Jetty 9 embedding is easier. Here you will find a nice introduction: http://www.hascode.com/2013/07/embedding-jetty-or-tomcat-in-your-java-application/