J etty提供HTTP服务器、客户端,它是javax.sevlet的容器。而这些组件都是开源且可商用的。它被广泛的应用在工程与产品中。它可以嵌入的设备,工具,框架,应用服务器以及集成。Jetty项目的核心由Eclipse组织提供服务器。Codehaus提供附件,集成及扩展,并为其提供旧版本的存放主机。
其官方页面为: http://www.mortbay.org/jetty/
现在就来看怎样在Jetty中配置JNDI数据源,以及如何在Spring工程中使用。
让Jetty在Web工程中支持java:comp/env查找,作为可选特性,需要做一些配置。让我们来看看要怎样配置。首先,使JNDI在Web应用中可用,需要在Jetty.xml文件中,加入如下配置:
<!-- ======================================================= --> <!-- Configure jndi --> <!-- ======================================================= --> <Array id="plusConfig" type="java.lang.String"> <Item>org.mortbay.jetty.webapp.WebInfConfiguration</Item> <Item>org.mortbay.jetty.plus.webapp.EnvConfiguration</Item> <Item>org.mortbay.jetty.plus.webapp.Configuration</Item> <Item>org.mortbay.jetty.webapp.JettyWebXmlConfiguration</Item> <Item>org.mortbay.jetty.webapp.TagLibConfiguration</Item> </Array> <New id="orclc3p0" class="org.mortbay.jetty.plus.naming.Resource"> <Arg>jdbc/orclc3p0</Arg> <Arg> <New class="org.apache.commons.dbcp.BasicDataSource"> <Set name="driverClassName">org.postgresql.Driver</Set> <Set name="url">jdbc:oracle:thin:@192.168.0.173:1521:orcl</Set> <Set name="username">test</Set> <Set name="password">test</Set> <Set name="maxActive">10</Set> </New> </Arg> </New>
然后在WebAppContext中添加plusConfig:
<New id="application" class="org.mortbay.jetty.webapp.WebAppContext"> ... <Set name="ConfigurationClasses"><Ref id="plusConfig" /></Set> ... </New>
然后需在Web.xml或容器的WebDefault.xml文件中添加:
<resource-ref> <res-ref-name>jdbc/orclc3p0</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref>
Spring中使用的方法为:
<bean id="dataSourceForTest" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/orclc3p0" /> </bean>
如果工程使用了maven,需在工程的pom.xml文件中添加包含了org.mortbay.jetty.plus.naming.Resource的jar依赖:
<dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-plus</artifactId> <version>${jetty-version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-naming</artifactId> <version>${jetty-version}</version> <scope>provided</scope> </dependency>其中 ${jetty-version}为6.1.9版本