使用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&characterEncoding=utf8&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&characterEncoding=utf8&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>
配置完毕。