首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

8.3跟Jetty集成

2013-04-22 
8.3和Jetty集成Jetty web container已经存在了很长时间并使可靠的。它是小的,快的并且有一个活跃的开发者社

8.3和Jetty集成
Jetty web container已经存在了很长时间并使可靠的。它是小的,快的并且有一个活跃的开发者社区。Jetty提供了许多和Tomcat相同的特性因为它们都是基于Java Servlet spec,但是每个实现都是特殊的。
Jetty本质上是一个构建一个web容器的工具包,它可以在许多方面定制。Out of box,Jetty是bare-bones的,但是它有一些配置文件这样徐东不同的组合服务能在Jetty中启动。这种程度的定制是有意的和允许极端的灵活性。Jetty Hightide是分布式的Jetty,有一组默认启用的服务。Jetty Hightide最好的描述是它的文档:
Hightide 是一个optimized,versioned的分布式Jetty 开源web容器。它预先集成了一定数量的仅在J2EE应用服务器中找到的服务,或者是你不得不craft together yourself:JNDI,一个XA transaction service,一个JMS消息fabric,和一个JDBC可访问数据库。感谢Jetty的lightweight,pluggable architecture,Hightide 允许你简单地选择你想要使用的服务,或者甚至使用其他的替换它们。
在本章节中,ActiveMQ将使用一个local JNDI配置和一个global JNDI配置集成到Jetty Hightide。为该章节从Codehaus下载Jetty Hightide 7.0.2.v20100331(http://mng.bz/Sk6u)并解压到你的电脑上。
Jetty为JNDI资源配置提供了三种风格:local,影响在Jetty上布置的所有应用的global和影响在JVM上布置的所有应用的global。在这些JNDI配置风格中有些不同,有些能通过Jetty的特性控制,该特性提供了scopt JNDI资源到一个特定的context的能力。Jetty的JNDI的scopting是强大的并能在该章节中被利用,但是仅是minimally。为了更深地了解Jetty的scopeJNDI资源的能力,看一下Jetty的global JNDI信息(http://mng.bz/x67C)。我们将演示的这两种风格的JNDI配置是local JNDI和global JNDI.这两种风格的配置类似于在Tomcat中它们的配置,但是配置格式是独特的。
注意  local JNDI配置示例和global JNDI配置示例无法同时部署。因为这会导致classloader issues并使ActiveMQ无法正确部署。确保某刻只部署某一个风格的配置。
8.3.1使用local JNDI来在Jetty中集成ActiveMQ
Jetty的local JNDI配置也在资源定义的地方限制了资源对于应用的可用性。JNDI资源在一个文件中定义,该文件存在于web应用中名为WEB-INF/jetty-env.xml,显示如下。
Listing 8.8 The Jetty jetty-env.xml file

$ java -jar start.jar2010-04-11 21:41:23.253:INFO::Logging to StdErrLog::DEBUG=falsevia org.eclipse.jetty.util.log.StdErrLog...INFO - BrokerService - ActiveMQ 5.4.1 JMS MessageBroker (FooBroker) is starting...2010-04-11 21:41:33.116:INFO::Started SelectChannelConnector@0.0.0.0:8080

你能从上面代理启动的输出中看到ActiveMQ在使用activemq.xml配置文件因为brokerName FooBroker在那个文件中被指定了。
第七步 访问http://localhost:8080/jms-webapp并使用在图8.4中显示的页面来发送一个消息。
第八步 通过检查控制台查看下面的输出verify消息已成功发送和消费:

...
2010-04-11 21:41:33.116:INFO::Started SelectChannelConnector@0.0.0.0:8080
INFO - SingleConnectionFactory - Established shared JMS Connection:
ActiveMQConnection {id=ID:mongoose.local-61512-1270782421187-2:1,
clientId=null,started=false}
INFO - JmsMessageDelegate - Consumed message with payload:
This is a test message

再一次,注意Jetty运行的输出。从JmsMessageDelegateListener bean的输出展示了消息已经被consumed。

Jetty的global JNDI配置提供了与Tomcat相同的优点。如果在单个Jetty实例上部署的多一个应用需要对JNDI资源的访问权,这是个很好的选择。

Tomcat和Jetty是两个能很好和集成ActiveMQ的web 容器示例。web容器之外是非常完善的Java EE应用服务器如Apache Geronimo和JBoss。

热点排行