I learned that from my coworker Michael. He's really helpful. I learned a lot from him in half an hour.
In our company, we have several portlets in Liferay portal which we can add them into our pages. Some of them deal with database. Those portlets need to specify DataSource. Previously, I just define the bean in springconfiguration.xml. But it's not a good way. In case our datasource has changed, we have to go into every project and change every xml file.
If we define the datasource in one place, we only need to change on place and restart tomcat. It's pretty neat.
springconfiguration.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"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd">
<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydatasource"/>
//...more
tomcat-7.0.25\conf\context.xml
<Resource name="jdbc/mydatasource"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://IP:port;databaseName=***"
username="***"
password="***"
maxActive="20"
/>