How to use Global Transactions and Data Sources with Spring Framework 2.0.8 in J2EE Applications, Part 2
In the previous part (1st), we saw how to configure SAP JTA Transaction into the Spring Context, now we are going to review the SAP J2EE Datasources.
We need to review two parts:
1. Configuration of the JEE datasources in the data-sources.xml file (in according to the SAP AS Platform).
In the next picture, you can see the last file that I used in my project
In this image you can see the definition of the Driver JDBC (2nd box), it needs to be set-up in the Visual Administrator. After, you see the sql-engine tag, it allows us to define the SQL type support (help). The valid values are (link):
- Open_SQL: the system returns a DBI CommonConnection
- Native_SQL: the system returns a DBI DirectConnection
- Vendor_SQL: the system returns a standard connection from JDBC driver (not using DBI at all)
In this case, I have used the value of Vendor_SQL because I have used iBatis in my persistence layer and not the persistence engines of SAP NW AS (jdo or entity beans).
Finally, you need to define the connection parameters as user, password, driver class name, and url parameters.
2. The configuration of Spring Application context.
In the first picture (in the 1st box on the picture), you can see the name of the datasource, we will use this name in the spring application contexte file, with the standard prefix "jdbc/" how the following picture shows
We need to create 2 beans to able the j2ee datasources in our development. The first bean is named "serviceLocator" and the 2nd the bean dataSource.
The bean serviceLocator is a bean factory to the dataSource bean, where the factory method "getDataSource" is defined in the class implementation of the bean serviceLocator.The implementation of this bean complais with the singleton pattern and in the bean definition also its scope is singleton. You could use obly the scope spring definition of the beans.
You ask yourself why you don't use "org.springframework.jndi.JndiObjectFactoryBean" or
Well, I have tried them, but I didn't have success.
Finally, the name of the j2ee datasource is defined as parameter constructor for the dataSource bean.
Comments