Jetty嵌入式服务器的JNDI快速配置指南

 

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版本

 

 

 

你可能感兴趣的:(spring,maven,应用服务器,jdbc,嵌入式)