在应用中嵌入Tomcat编程开发技术.docVIP

  • 2
  • 0
  • 约7.15千字
  • 约 7页
  • 2019-01-27 发布于广东
  • 举报
在应用中嵌入Tomcat编程开发技术.doc

在应用中嵌入Tomcat -编程 开发技术 在应用中嵌入Tomcat 木文由ImportNew?飘扬叶 翻译自penguindreamso欢迎加入翻译小组。转载请见文末要 求。 很多Java web应用和服务,包括开源的和商业化的(比如Alfresco, iRisc, Confluence等),都倾向于将Apache Tomcat Servlet引擎整个嵌入到他们的 分发包中。Atlatisan公司甚至只支持他们自己提供的嵌入式Tomcat包,不再 提供WAR/EAR形式的分发包。这些安装包包含了整个Tomcat引擎和配置文件, 看起來确实冇点大材小用o在犬多数配置中,默认的配置文件英至从來不会变动O 真的有办法可以在代码中启动Tomcat并且只需要tomcat的jar文件作为依 赖么?在下而的教程屮,我们将会对Jetty (Jetty是一个为此目的而设计的 一种嵌入式servlet引擎)进行测试,同时还会展示如何将Jetty迁移到 Tomcat 。 我开始研究嵌入式Tomcat是因为BigSense项目,该项目是一个开源web服 务,用于模拟传感器网络。我的口的是可以将其作为一个标准的Linux软件包 进行分发,这样就可以作为一个服务启动,而不用依赖于Tomcat软件包。下面 的例了使用的是Scala语言,BigSense项目用的也是这种开发语言,但是你也 可以轻松地将所有源码和概念转换为Java语言。 首先,创建一个trait (类似于Java中的接口),里面包含两个简单的功能, 用于启动和停止web服务器。端口号可以从配置文件中获取。这是我的实现中 唯一可配置的了,但是你也可以对context path添加配置。 package io.bigsense, server /** * Created by sumit on 4/28/14. */ trait ServerTrait { lazy val httpPort 二 try { BigScnscScrvcr? config? options(httpPort)? tolnt } catch { case e: NumberFormatException 二amp;gt; Exi t. invalidHttpPort 0 //makes compiler happy def startServer() def stopServer () 下面是我使用Scala对Jetty的实现。大部分是直接从Jetty的官方文档中 摘出来的。所有的静态资源(图片,CSS和javascript脚本)都被直接打包到 了 jar文件中,可以作为类路径的资源进行访问。如果使用构建工具,如SBT, Gradel或者Maven,可以将这些文件放到项目的src/main/resources目录下。 Jetty的WebAppContext允许调用setResourceBase來使用项目的静态资源。 这个例子还展示了如何使用给定的Context路径来添加一个Servlet (在这个 例子中,只有一个servlet,匹配根目录,名字为MasterServlet)。还可以看 到一个EvcntListcncr的例子o web. xml中的大部分标准配置在Jetty中都可 以使用代码进行设置。 package io.bigsense, server import org. Ecl ipse, jetty. server. Server import org. eclipse, jetty. server. ScrverCormcctor import org.eclipse.jetty, server, handler. DefaultHandler import org. eclipse, jetty, server, handler. Hand1erCo11ection import org.eclipse, jetty, servlet. ServletContextHandler import org.ecl ipse, jetty, webapp. WebAppContext import io.bigscnsc. scrvlet. {DBUpdatcListcncr, MastcrScrvlet} class JettyServer extends ServerTrait { val server = new Server () val connector 二 new ScrverConncctor (server) connector. setPort(httpPort) server.setConnectors(Array(connector)) val context = new Servl

文档评论(0)

1亿VIP精品文档

相关文档