[x]
Posted via EE Mobile

Search, ask, and monitor your questions on the go with EE Mobile. Visit Experts Exchange from your mobile device and never be out of touch again.

Question
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

8.2

How does iBatis and Spring dataSource communicate?

Asked by MehtaJasmin in Spring, Java Programming Language, J2EE Frameworks

Tags: iBatis, Spring, Java Framework, Transaction, Rollback

Does the datasource get related from SqlMapConfig.xml (iBatis) with spring.xml ? Also I have data-source.xml file within META-INF folder of my project.

I have not defined dataSource bean in spring.xml thinking that iBatis layer has already done that. Is it must to define dataSource in spring.xml in order to have rollback working?  Can you view my code snippet and she what needs to be fixed ?
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
data-source.xml from META-INF
 
<?xml version = '1.0' encoding = 'windows-1252'?>
<data-sources xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/data-sources-10_1.xsd">
 <connection-pool name="jdev-connection-pool-qol_authschema">
                <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource"
                            user="qol"
                            password="->DataBase_User_bIyBdAJbKjpFHjI5nadAIJsLYXMVmja9"
                            url="jdbc:oracle:thin:@*****"/>
    </connection-pool>
    <managed-data-source name="jdev-connection-managed-qol_authschema"
                         jndi-name="jdbc/qol_authschemaDS"
                         connection-pool-name="jdev-connection-pool-qol_authschema"/>
    <native-data-source name="jdev-connection-native-qol_authschema"
                        jndi-name="jdbc/qol_authschemaCoreDS"
                        url="jdbc:oracle:thin:@******"
                        user="qol"
                        password="->DataBase_User_8ftciduUIkFSgxCaZr-1rh-0jLvq1hen"
                        data-source-class="oracle.jdbc.pool.OracleDataSource"/>
</data-sources>
 
SqlMapConfig.xml
 
 
<?xml version="1.0" encoding="UTF-8" ?>
 
<!DOCTYPE sqlMapConfig
    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
 
<sqlMapConfig>
 
  <properties resource="jdbc.properties"/>  
  <transactionManager type="JDBC">
    <dataSource type="SIMPLE">
      <property name="JDBC.Driver" value="${jdbc.driverClassName}"/>
      <property name="JDBC.ConnectionURL" value="${jdbc.url}"/>
      <property name="JDBC.Username" value="${jdbc.username}"/>
      <property name="JDBC.Password" value="${jdbc.password}"/>      
      <property name="JDBC.Class" value="oracle.jdbc.pool.OracleDataSource"/>
      <property name="JDBC.DefaultAutoCommit" value="false" /> 
      <property name="Pool.MaximumActiveConnections" value="10"/>
      <property name="Pool.MaximumIdleConnections" value="5"/>
      <property name="Pool.MaximumCheckoutTime" value="120000"/>
      <property name="Pool.TimeToWait" value="500"/>
    </dataSource> 
  </transactionManager> 
 
spring.xml
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
		  "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
 
 <bean id="sqlMapClient"
          class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation">
            <value>classpath:org/nexweb/qol/gcc/ibatis/config/SqlMapConfig.xml</value>
        </property>
 </bean>
<bean id="sqlMapClientTemplate"
          class="org.springframework.orm.ibatis.SqlMapClientTemplate">
        <property name="sqlMapClient">
            <ref bean="sqlMapClient"/>
        </property>
    </bean>
 
  <bean id="customerDao" class="org.nexweb.qol.gcc.ibatis.dao.sqlmaps.CustomerSqlMapDAO"> 
        <property name="sqlMapClient"> 
            <ref bean="sqlMapClient"/> 
        </property> 
    </bean>     
 
    <bean id="customerService" class="org.nexweb.qol.gcc.ibatis.services.CustomerService"> 
        <constructor-arg index="0" ref="customerDao"/> 
    </bean> 
 
CustomerSqlMapDAO 
 
public class CustomerSqlMapDAO extends SqlMapClientTemplate implements CustomerDAO 
{ 
  public Integer insertCustomer(CustomerVO customerVo) throws DataAccessException { 
        return (Integer)insert("insertCustomer", customerVo); 
    } 
 
    public Integer insertCustomerDependent(CustomerDependentVO customerDependentVo) throws DataAccessException { 
        return (Integer)insert("insertCustomerDependent", customerDependentVo); 
    } 
 
CustomerService 
 
public class CustomerService extends CommonService 
{ 
    private CustomerDAO customerDAO; 
 
    public CustomerService(CustomerDAO customerDAO) 
    { 
        super(customerDAO); 
        this.customerDAO = customerDAO; 
    }   
 
public Integer insertCustomer(CustomerVO customerVo) throws DataAccessException  { 
        return customerDAO.insertCustomer(customerVo); 
    } 
 
    public Integer insertCustomerDependent(CustomerDependentVO customerDependentVo) throws DataAccessException  { 
        return customerDAO.insertCustomerDependent(customerDependentVo); 
    } 
 
 
CustomerAction.java 
 
CustomerService customerService = SpringBeans.getCustomerService(); 
try 
{ 
                  // retrieve cust_id from QOL_CUSTOMER using qol_customer_seq.NEXTVAL 
         custId = customerService.getCustomerId();               
 
        customerService.startTransaction(); 
         // start batch process 
        customerService.startBatch(); 
 
        // insert record into QOL_CUSTOMER table (add to batch process) 
         customerService.insertCustomer(customerVo); 
 
         // retrive dependent first/last name for insertion check to QOL_DEPENDENT tabel 
         String custDepFirstName = customerPersonalForm.getDepFirstName(); 
         String custDepLastName = customerPersonalForm.getDepLastName(); 
        // insert into DEPENDENT table only if dependent first/last name enterd on the form 
         if (StringUtils.isNotBlank(custDepFirstName) || StringUtils.isNotBlank(custDepLastName)) 
         { 
           customerDependentVo.setCustId(custId); 
           // set CustomerDependentVO to CustomerVO only if dependent first/last name exist and 
           // record to DEPENDENT is going to be inserted in for this customer id 
           customerVo.setCustomerDependentVo(customerDependentVo);           
           // insert record into DEPENDENT table (add to batch process) 
           customerService.insertCustomerDependent(customerDependentVo); 
         } 
         // insert record into VEHICLE table (add to batch process) 
         customerVehicleService.insertCustomerVehicle(customerVehicleVo);       --> same issue with this insert, if i remove constraint from DEPENDENT 
         // execute batch 
         customerService.executeBatch(); 
 
         // end batch process 
        customerService.commitTransaction(); 
     } 
       catch(SQLException sqlEx) 
       {  ........... 
}  
Open in New Window Select All
 
Related Solutions
Keywords: How does iBatis and Spring dataSourc…
 
Loading Advertisement...
 
[+][-]04/13/09 11:43 AM, ID: 24131884Accepted Solution

View this solution now by starting your 30-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

About this solution

Zones: Spring, Java Programming Language, J2EE Frameworks
Tags: iBatis, Spring, Java Framework, Transaction, Rollback
Sign Up Now!
Solution Provided By: MehtaJasmin
Participating Experts: 1
Solution Grade: A
 
[+][-]03/10/09 09:52 AM, ID: 23848823Expert Comment

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 30-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]03/11/09 04:54 AM, ID: 23855948Author Comment

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
 
Loading Advertisement...
20091111-EE-VQP-92 - Hierarchy / EE_QW_3_20080625