Maven配置Jetty中的JNDI数据源

       使用Maven开发web项目,Jetty嵌入式服务器是个不错的选择。项目发布过程中,如果我们使用普通的jdbc.properties配置文件来配置数据库连接,那么在发布之前就要看一下这个配置有没有被人提交覆盖过,这项工作其实是可以规避掉的。方法就是开发人员环境与服务器环境同时使用JNDI数据源。

服务器Tomcat的数据源配置方法示例如下:

   在TOMCAT_HOME/conf/context.xml文件中的Context节点加入以下配置。(示例使用的是Druid连接池,需要注意的是必须使用Druid-1.0.9以上的版本。)

 <Resource
    name="jdbc/myds"
    factory="com.alibaba.druid.pool.DruidDataSourceFactory"
    auth="Container"
    type="javax.sql.DataSource"
    driverClassName="com.mysql.jdbc.Driver"
    maxActive="100"
    maxWait="10000"
    url="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8&amp;zeroDateTimeBehavior=convertToNull"
    username="root"
    password="root" />

maven中配置jetty数据源:

将pom.xml中的jetty插件配置加入jettyEnvXml配置,指向数据源的配置文件。

<plugin>
   <groupId>org.mortbay.jetty</groupId>
   <artifactId>maven-jetty-plugin</artifactId>
   <version>6.1.9</version>
   <configuration>
      <!-- jetty数据源 -->
      <jettyEnvXml>src/main/resources/jetty.xml</jettyEnvXml>
      ....
   </configuration>
</plugin>

jetty.xml示例如下:(示例使用的是Druid连接池,需要注意的是必须使用Druid-1.0.9以上的版本。)

<Configure id="wac" class="org.mortbay.jetty.webapp.WebAppContext">
<New id="myds" class="org.mortbay.jetty.plus.naming.Resource">
  <Arg>jdbc/myds</Arg>
  <Arg>
   <Call id="dsbyfact" class="com.alibaba.druid.pool.DruidDataSourceFactory"
            name="createDataSource">
      <Arg>
         <Map>
            <Entry>
               <Item>driverClass</Item>
               <Item>
                  <New class="java.lang.String">
                     <Arg>com.mysql.jdbc.Driver</Arg>
                  </New>
               </Item>
            </Entry>
            <Entry>
               <Item>username</Item>
               <Item>
                  <New class="java.lang.String">
                     <Arg>root</Arg>
                  </New>
               </Item>
            </Entry>
            <Entry>
               <Item>password</Item>
               <Item>
                  <New class="java.lang.String">
                     <Arg>root</Arg>
                  </New>
               </Item>
            </Entry>
            <Entry>
               <Item>url</Item>
               <Item>
                  <New class="java.lang.String">
                     <Arg>jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8&amp;zeroDateTimeBehavior=convertToNull</Arg>
                  </New>
               </Item>
            </Entry>
            <Entry>
               <Item>maxActive</Item>
               <Item>
                  <New class="java.lang.String">
                     <Arg>20</Arg>
                  </New>
               </Item>
            </Entry>
            <Entry>
               <Item>minIdle</Item>
               <Item>
                  <New class="java.lang.String">
                     <Arg>10</Arg>
                  </New>
               </Item>
            </Entry>
            <Entry>
               <Item>maxWait</Item>
               <Item>
                  <New class="java.lang.String">
                     <Arg>60000</Arg>
                  </New>
               </Item>
            </Entry>
         </Map>
      </Arg>
    </Call>
  </Arg>
</New>
</Configure>

修改spring配置中的dataSource指向JNDI数据源。spring用的是3.1.2版本

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
     <property name="jndiName">
          <value>java:comp/env/jdbc/myds</value>
     </property>
</bean>

配置完毕。

你可能感兴趣的:(Maven配置Jetty中的JNDI数据源)