Looking up data sources with resource references for relational access
Using a resource reference to access your data source or connection factory is required when running in WebSphere Application Server. Some of the reasons follow:
If a data source is looked up directly, the connection gets all default properties for the missing resource reference. For example, the sharing-scope is a shareable connection resulting in the possibility that the physical connection is the same each time the connection is requested from the data source. This situation can cause a multitude of problems if you expect unshareable connections.
It relieves the programmer from having to know the name of the actual data source at the target application server.
You can set the default isolation level for the data source through resource references. With no resource reference you get the default for the JDBC driver you use.
Use a resource reference (resource-ref) for looking up a data source through the standard Java Naming and Directory Interface (JNDI) naming interface. The JNDI name defined in the resource-ref is a logical name of the data source. Have your application use this JNDI name to look up a data source instead of using the JNDI name that is defined on the data source.
Later, you can substitute the real name, either by using the RAD 6.0 or during installation of the application EAR file onto the server.
In your code, do not look up the data source directly. Instead, you look up the resource reference from the java:comp/env namespace file.
For example, assume that you use a DataSource jdbc/Section as illustrated in the code below:
DataSource appDS = (DataSource) context.lookup("java:comp/env/jdbc/Section");
In the RAD 6.0, specify the name (jdbc/Section) as the resource reference. If you know the name of the DataSource, you specify it in the WebSphere Bindings section.
<resource-ref id="ResourceRef_1182173555396"> <description> </description> <res-ref-name>jdbc/Section</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref>