spring中配置JNDI
在spring中配置,这样就可以动态切换在本地,还是服务器上
applicationContext-databaseSource-jndi.xml 通过JNDI访问数据源
applicationContext-databaseSource-jdbc.xml 通过本地配置jDBC访问数据源
在applicationContext.xml中引入即可:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!--数据库连接 -->
<import resource="applicationContext-databaseSource-xxxx.xml" /> //xxxx指的是jndi或是jdbc
</beans>
applicationContext-databaseSource-jndi.xml 具体配置方式如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="activityToon_r" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/ActivityToon_r"/>
</bean>
<bean id="activityToon_w" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/ActivityToon_w"/>
</bean>
</beans>
applicationContext-databaseSource-jdbc.xml具体配置方式如下
<bean id="UCenter_w" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://172.28.5.92:3306/xxxx?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true"/>
<property name="username" value="xxx"/>
<property name="password" value="xxxx"/>
</bean>
要使用:JNDI数据源需要在tomcat中配置才能获取到 Tomcat6使用的是DBCP数据源,它的配置方式如下
具体配置信息请参考:http://blog.csdn.net/lwwgtm/article/details/8222521
1.它可以直接配置在Server.xml中Context元素下,这时数据源就只有他所属的应用能够访问。
2.如果需要所有的应用能够访问,可以配置在$TOMCAT/conf/context.xml中,直接配置下根元素下即可。这个文件在启动tomcat的时候,所有的应用都会加载。
3.如果需要节省资源,共享同一个数据源,可以配置在Server.xml的GlobalNamingResources 这是一个全局的
第三种全局数据源配置:
//
3.在Server.xml全局的数据源配置如下:
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="jdbc/UCenter_r" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
//在应用中可以通过别名访问,提供别名的方式是在应用所在的元素下添加如下的子元素:
<ResourceLink name="jdbc/UCenter_r" global="jdbc/UCenter_r" type="javax.sql.DataSource"/>
第二种所有的应用能够共享访问配置在$TOMCAT/conf/context.xml中配置在根元素<Context></Context>中
<Resource name="jdbc/ActivityToon_r" auth="Container" type="javax.sql.DataSource"
maxActive="10" maxIdle="30" maxWait="10000"
username="xxxx" password="xxxx" driverClassName="com.mysql.jdbc.Driver"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true" validationQuery="select 1"
url="jdbc:mysql://172.28.5.91:3306/xxx_activityDemo?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true"/>
第一种只限当前应用访问数据源在Server.xml配置:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
<Context docBase="/home/webapp2/XXBusinessAPI.war" path="/" reloadable="true" source="org.eclipse.jst.jee.server:ActivityBusinessAPI">
<Resource name="jdbc/ActivityToon_r" auth="Container" type="javax.sql.DataSource"
maxActive="10" maxIdle="30" maxWait="10000"
username="xxxx" password="xxxx" driverClassName="com.mysql.jdbc.Driver"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true" validationQuery="select 1"
url="jdbc:mysql://172.28.5.91:3306/xxx_activityDemo?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="route_access_" suffix=".txt" pattern="common" resolveHosts="false"/>
</Context>
</Host>
更具体的配置信息请看 http://blog.csdn.net/lwwgtm/article/details/8222521