SPRING JDBC [PROBLEMAS CON 'COMMIT' EN LA APLICACIÓN]

Que tal chicos una consulta, estoy manejando "SimpleJdbcCall" y estoy teniendo problemas al momento de manejar las transacciones con SPRING. El escenario es el siguiente: "Le estoy mandando a mi método de persistencia una LISTA de registros a REGISTRAR por medio de un PROCEDURE", la idea que es dicho PROCEDURE me responde un 1 si es OK (El PROCEDURE no maneja el COMMIT) y al iterar toda la lista yo valida que me si me responde != 1 haga un break y setee un false. Con dicho false valida fuera del FOR que si es false hago el ROLLBACK sino el COMMIT de todas las transacciones que tengo cargadas. Algo similar que se hace cuando se maneja JDBC de forma nativa. Lo que pasa es que al hacerlo así por mas que el PROCEDURE me responde != 1 ejecuta el un COMMIT, "SIEMPRE ME REGISTRA EL INSERT" (como un Auto-Commit = true). Y eso es lo que no quiero que ejecute un Auto Commit pero manejado con SPRING. (Quiero poder controlar el COMMIT). Aquí mi configuración:

CODIGO JAVA:

  /**
    * registrarServicioLlamadas
    * @param  applicationContext
    * @param  listaIteraciones
    * @param  objServicioLlamadas
    * @return DataBaseValidatorBean
    */

        @Override
        public DataBaseValidatorBean registrarServicioLlamadas( ApplicationContext   applicationContext,
                                                                                                            List<Integer>        listaIteraciones,
                                                                                                            ServicioLlamadasBean objServicioLlamadas ){
                   this.logger.info( "*********** [INICIO] - DENTRO: [registrarServicioLlamadas - DAO] ***********" );
                   
                   JdbcTemplate          objJdbcTemplate          = null;
                   DataBaseValidatorBean objDataBaseValidatorBean = null;
                   String                OWNER                    = null;
                   String                PAQUETE                  = null;
                   String                PROCEDURE                = null;
                   long                  tiempoInicio             = System.currentTimeMillis();
                   
                   PlatformTransactionManager transactionManager = null;
                   TransactionDefinition      definition         = null;
                   TransactionStatus          status             = null;
                   
           try{
                   this.logger.info( "DATA SOURCE: [" + this.servicioLlamadasJNDI + "]" );
                   this.servicioLlamadasJNDI.setLoginTimeout( UtilPropertiesMapper.DB_TIMEOUT_CONEXION );
 
                   transactionManager = (PlatformTransactionManager)applicationContext.getBean( "transactionManager" );                    
                   definition         = new DefaultTransactionDefinition();
                   status             = transactionManager.getTransaction( definition );
                                   
                   this.logger.info( "transactionManager: [" + transactionManager + "]" );
                   
                   OWNER     = UtilPropertiesMapper.DB_OWNER;  
                   PAQUETE   = UtilPropertiesMapper.DB_PAQUETE_REGISTRO;    
                   PROCEDURE = UtilPropertiesMapper.DB_PROCEDURE_REGISTRO;    
 
                   String telefono   = objServicioLlamadas.getTelefono();
                   String tecnologia = objServicioLlamadas.getTecnologia();
                   String codigo     = objServicioLlamadas.getCodigo();
                   String mensaje    = objServicioLlamadas.getMensaje();
                   String paquete    = objServicioLlamadas.getPaquete();
                   String plan       = objServicioLlamadas.getPlan();
                   String saldo      = objServicioLlamadas.getSaldo();
               
                   
                   String  vCodigoErr_OUT      = null;
                   String  vMensajeErr_OUT     = null;
                   Integer vCodigoServLLam_OUT = null;
                   boolean estadoTransaccion   = false;
                   
                   this.logger.info( "# REGISTROS A REGISTRAR: [" + listaIteraciones.size() + "]" );
                   
                   for( int i=0; i<listaIteraciones.size(); i++ ){
                                    Integer indice = listaIteraciones.get( i );  
                                   
                                    this.logger.info( "TRANSACCION: [" + indice + "]" );
                                   
                                    //PARAMETROS [IN]:
                                    SqlParameterSource objParametrosIN = new MapSqlParameterSource()
                                    .addValue( "SLL_TELEFONO_IN",   telefono,   Types.VARCHAR )
                                    .addValue( "SLL_TECNOLOGIA_IN", tecnologia, Types.VARCHAR )
                                    .addValue( "SLL_CODIGO_IN",     codigo,     Types.VARCHAR )
                                    .addValue( "SLL_MENSAJE_IN",    mensaje,    Types.VARCHAR )
                                    .addValue( "SLL_PAQUETE_IN",    paquete,    Types.VARCHAR )
                                    .addValue( "SLL_PLAN_IN",       plan,       Types.VARCHAR )
                                    .addValue( "SLL_SALDO_IN",      saldo,      Types.VARCHAR );
                                   
                                    this.objJdbcCall = new SimpleJdbcCall( this.servicioLlamadasJNDI );
                                    objJdbcTemplate = this.objJdbcCall.getJdbcTemplate();
                                    objJdbcTemplate.setQueryTimeout( UtilPropertiesMapper.DB_TIMEOUT_EXECUTION  );
         
                                    //MATCHING:
                                    Map<String, Object> objResultado = this.objJdbcCall
                                    .withoutProcedureColumnMetaDataAccess()
                                    .withSchemaName(  OWNER   )
                                    .withCatalogName( PAQUETE )
                                    .withProcedureName( PROCEDURE )  
                                    .declareParameters(
                                                new SqlParameter( "SLL_TELEFONO_IN",   Types.VARCHAR ),
                                                new SqlParameter( "SLL_TECNOLOGIA_IN", Types.VARCHAR ),
                                                new SqlParameter( "SLL_CODIGO_IN",     Types.VARCHAR ),
                                                new SqlParameter( "SLL_MENSAJE_IN",    Types.VARCHAR ),
                                                new SqlParameter( "SLL_PAQUETE_IN",    Types.VARCHAR ),
                                                new SqlParameter( "SLL_PLAN_IN",       Types.VARCHAR ),
                                                new SqlParameter( "SLL_SALDO_IN",      Types.VARCHAR ),
                                               
                                                new SqlOutParameter( "ERR_OUT",        Types.VARCHAR ),
                                                new SqlOutParameter( "MESSAGE_OUT",    Types.VARCHAR ),
                                                new SqlOutParameter( "SSL_COD_OUT",    Types.INTEGER )
                                    )
                                    .execute( objParametrosIN );  
                                   
                                this.logger.info( "PROCEDURE: [" + this.objJdbcCall.getCallString() + "]" );
                                   
                                    //PARAMETROS [OUT]:
                                    vCodigoErr_OUT      = (String)objResultado.get(  "ERR_OUT" );
                                    vMensajeErr_OUT     = (String)objResultado.get(  "MESSAGE_OUT" );
                                    vCodigoServLLam_OUT = (Integer)objResultado.get( "SSL_COD_OUT" );
                                   
                                    this.logger.info( "ERR_OUT:     " + vCodigoErr_OUT  );
                                    this.logger.info( "MESSAGE_OUT: " + vMensajeErr_OUT );
                                    this.logger.info( "SSL_COD_OUT: " + vCodigoServLLam_OUT );
                                   
                                    //1=OK
                                    if( !(vCodigoErr_OUT.equals( "1" )) ){
                                        estadoTransaccion = false;
                                        break;
                                    }
                                    else{
                                         estadoTransaccion = true;
                                         continue;
                                    }
                           }
                   
                   this.logger.info( "estadoTransaccion: [" + estadoTransaccion + "]" );
                   
               if( estadoTransaccion == true ){
                   transactionManager.commit( status );
                   this.logger.info( "APLICANDO [COMMIT] A LA TRANSACCION ...!!!" );
               }
               else{
                    transactionManager.rollback( status );
                    this.logger.info( "APLICANDO [ROLLBACK] A LA TRANSACCION ...!!!" );
               }
                   
                   objDataBaseValidatorBean = new DataBaseValidatorBean();
                   objDataBaseValidatorBean.setCodigo_OUT(  vCodigoErr_OUT + "" );
                   objDataBaseValidatorBean.setMensaje_OUT( vMensajeErr_OUT );
                   objDataBaseValidatorBean.setCodServLlam( vCodigoServLLam_OUT );
           }
           catch( SQLException e ){
                      this.logger.error( "ERROR: [SQLException] - [" + e.getMessage() + "] ", e );
                     
                      if( transactionManager != null ){
                          try{
                                  transactionManager.rollback( status );
                                           }
                                           catch( Exception x ){
                                                          x.printStackTrace();
                                           }
                      }
                     
                          objDataBaseValidatorBean = new DataBaseValidatorBean();
                          objDataBaseValidatorBean.setCodigo_OUT( UtilPropertiesMapper.ESTADO_NOK );
                          objDataBaseValidatorBean.setMensaje_OUT( e.getMessage() );
                          objDataBaseValidatorBean.setListaDatos(  null );
           }
           catch( Exception e ){
                      this.logger.error( "ERROR: [Exception] - [" + e.getMessage() + "] ", e );
                     
                          objDataBaseValidatorBean = new DataBaseValidatorBean();
                          objDataBaseValidatorBean.setCodigo_OUT( UtilPropertiesMapper.ESTADO_NOK );
                          objDataBaseValidatorBean.setMensaje_OUT( e.getMessage() );
                          objDataBaseValidatorBean.setCodServLlam( null );
           }
          finally{
                       this.logger.info( "Tiempo TOTAL Proceso: [" + (tiempoInicio-System.currentTimeMillis()) + "]" );
                       this.logger.info( "*********** [FIN] - DENTRO: [registrarServicioLlamadas - DAO] ***********" );
           }
           
           return objDataBaseValidatorBean;
        }

CONFIGURACIÓN DE SPRING (applicationDatasource.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:context="http://www.springframework.org/schema/context"
       xmlns:task="http://www.springframework.org/schema/task"
       xmlns:jee="http://www.springframework.org/schema/jee"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:ws="http://jax-ws.dev.java.net/spring/core"
       xmlns:wss="http://jax-ws.dev.java.net/spring/servlet"
       xmlns:oxm="http://www.springframework.org/schema/oxm"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           <a href="
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
" title="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
">http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
</a>                           <a href="
http://www.springframework.org/schema/context
" title="http://www.springframework.org/schema/context
">http://www.springframework.org/schema/context
</a>                           <a href="
http://www.springframework.org/schema/context/spring-context-3.0.xsd
" title="http://www.springframework.org/schema/context/spring-context-3.0.xsd
">http://www.springframework.org/schema/context/spring-context-3.0.xsd
</a>                           <a href="
http://www.springframework.org/schema/task
" title="http://www.springframework.org/schema/task
">http://www.springframework.org/schema/task
</a>                           <a href="
http://www.springframework.org/schema/task/spring-task-3.0.xsd
" title="http://www.springframework.org/schema/task/spring-task-3.0.xsd
">http://www.springframework.org/schema/task/spring-task-3.0.xsd
</a>                           <a href="
http://www.springframework.org/schema/aop" title="http://www.springframework.org/schema/aop">http://www.springframework.org/schema/aop</a>  
                           <a href="http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" title="http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">http://www.springframework.org/schema/aop/spring-aop-3.0.xsd</a>  
                           <a href="http://www.springframework.org/schema/context" title="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a>  
                           <a href="http://www.springframework.org/schema/context/spring-context-3.0.xsd
"
title="http://www.springframework.org/schema/context/spring-context-3.0.xsd
"
>http://www.springframework.org/schema/context/spring-context-3.0.xsd
</a>                           <a href="http://www.springframework.org/schema/jee
"
title="http://www.springframework.org/schema/jee
"
>http://www.springframework.org/schema/jee
</a>                           <a href="http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
"
title="http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
"
>http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
</a>                           <a href="http://www.springframework.org/schema/util
"
title="http://www.springframework.org/schema/util
"
>http://www.springframework.org/schema/util
</a>                           <a href="http://www.springframework.org/schema/util/spring-util-3.0.xsd
"
title="http://www.springframework.org/schema/util/spring-util-3.0.xsd
"
>http://www.springframework.org/schema/util/spring-util-3.0.xsd
</a>                           <a href="http://jax-ws.dev.java.net/spring/core
"
title="http://jax-ws.dev.java.net/spring/core
"
>http://jax-ws.dev.java.net/spring/core
</a>                           <a href="http://jax-ws.dev.java.net/spring/core.xsd
"
title="http://jax-ws.dev.java.net/spring/core.xsd
"
>http://jax-ws.dev.java.net/spring/core.xsd
</a>                           <a href="http://jax-ws.dev.java.net/spring/servlet
"
title="http://jax-ws.dev.java.net/spring/servlet
"
>http://jax-ws.dev.java.net/spring/servlet
</a>                           <a href="http://jax-ws.dev.java.net/spring/servlet.xsd"" title="http://jax-ws.dev.java.net/spring/servlet.xsd"">http://jax-ws.dev.java.net/spring/servlet.xsd"</a> ]

    [!-- ************** [ DATA SOURCE - (JNDI-WebLogic) ] ************** --]    
        [jee:jndi-lookup id                = "servicioLlamadasJNDI"
                         jndi-name         = "${db.jndi.serviciollamadas}"  
                             cache             = "true"
                             resource-ref      = "true"  
                             lookup-on-startup = "false"
                             proxy-interface   = "javax.sql.DataSource" /]
    [!-- ************** [ DATA SOURCE - (JNDI-WebLogic) ] ************** --]  
   
    [!-- ******************* [ TRANSACTION MANAGER ] ******************* --]  
        [bean id="txManager" class="com.atomikos.icatch.jta.UserTransactionManager" /]
             
        [bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" ]
              [property name="transactionManager" ref="txManager" /]
        [/bean]
        [!-- ******************* [ TRANSACTION MANAGER ] ******************* --]            
       
[/beans]

Algún comentario para solucionar este problema ?. Gracias.

Saludos.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

La etiqueta code nos ayuda mucho

Antes que nada te recomiendo utilizar la etiqueta
code. Ya que sin la etiqueta queda cómo:
public String theString = "sin etiqueta  ";
Y con la etiqueta queda cómo:
public String theSTring = "con <code>"

Luego, otra cosa, ¿podrías poner la pila de traza (stack
trace)?... Si hay un error deberías poder poner cual es
o qué es.

Saludos.

Imagen de JavaMan

RE:Opciones de visualización de comentarios

No existe error alguno, simplemente no logra hacer bien el manejo de la transaccionalidad.

Saludos.

Imagen de Sr. Negativo

Re:Re:Opciones de visualización de comentarios

Creo se ve mejor asi:

/**
* registrarServicioLlamadas
* @param applicationContext
* @param listaIteraciones
* @param objServicioLlamadas
* @return DataBaseValidatorBean
*/

@Override
public DataBaseValidatorBean registrarServicioLlamadas( ApplicationContext applicationContext,
List listaIteraciones,
ServicioLlamadasBean objServicioLlamadas ){
this.logger.info( "*********** [INICIO] - DENTRO: [registrarServicioLlamadas - DAO] ***********" );
JdbcTemplate objJdbcTemplate = null;
DataBaseValidatorBean objDataBaseValidatorBean = null;
String OWNER = null;
String PAQUETE = null;
String PROCEDURE = null;
long tiempoInicio = System.currentTimeMillis();
PlatformTransactionManager transactionManager = null;
TransactionDefinition definition = null;
TransactionStatus status = null;
try{
this.logger.info( "DATA SOURCE: [" + this.servicioLlamadasJNDI + "]" );
this.servicioLlamadasJNDI.setLoginTimeout( UtilPropertiesMapper.DB_TIMEOUT_CONEXION );
transactionManager = (PlatformTransactionManager)applicationContext.getBean( "transactionManager" );
definition = new DefaultTransactionDefinition();
status = transactionManager.getTransaction( definition );
this.logger.info( "transactionManager: [" + transactionManager + "]" );
OWNER = UtilPropertiesMapper.DB_OWNER;
PAQUETE = UtilPropertiesMapper.DB_PAQUETE_REGISTRO;
PROCEDURE = UtilPropertiesMapper.DB_PROCEDURE_REGISTRO;
String telefono = objServicioLlamadas.getTelefono();
String tecnologia = objServicioLlamadas.getTecnologia();
String codigo = objServicioLlamadas.getCodigo();
String mensaje = objServicioLlamadas.getMensaje();
String paquete = objServicioLlamadas.getPaquete();
String plan = objServicioLlamadas.getPlan();
String saldo = objServicioLlamadas.getSaldo();
String vCodigoErr_OUT = null;
String vMensajeErr_OUT = null;
Integer vCodigoServLLam_OUT = null;
boolean estadoTransaccion = false;
this.logger.info( "# REGISTROS A REGISTRAR: [" + listaIteraciones.size() + "]" );
for( int i=0; i objResultado = this.objJdbcCall
.withoutProcedureColumnMetaDataAccess()
.withSchemaName( OWNER )
.withCatalogName( PAQUETE )
.withProcedureName( PROCEDURE )
.declareParameters(
new SqlParameter( "SLL_TELEFONO_IN", Types.VARCHAR ),
new SqlParameter( "SLL_TECNOLOGIA_IN", Types.VARCHAR ),
new SqlParameter( "SLL_CODIGO_IN", Types.VARCHAR ),
new SqlParameter( "SLL_MENSAJE_IN", Types.VARCHAR ),
new SqlParameter( "SLL_PAQUETE_IN", Types.VARCHAR ),
new SqlParameter( "SLL_PLAN_IN", Types.VARCHAR ),
new SqlParameter( "SLL_SALDO_IN", Types.VARCHAR ),
new SqlOutParameter( "ERR_OUT", Types.VARCHAR ),
new SqlOutParameter( "MESSAGE_OUT", Types.VARCHAR ),
new SqlOutParameter( "SSL_COD_OUT", Types.INTEGER )
)
.execute( objParametrosIN );
this.logger.info( "PROCEDURE: [" + this.objJdbcCall.getCallString() + "]" );
//PARAMETROS [OUT]:
vCodigoErr_OUT = (String)objResultado.get( "ERR_OUT" );
vMensajeErr_OUT = (String)objResultado.get( "MESSAGE_OUT" );
vCodigoServLLam_OUT = (Integer)objResultado.get( "SSL_COD_OUT" );
this.logger.info( "ERR_OUT: " + vCodigoErr_OUT );
this.logger.info( "MESSAGE_OUT: " + vMensajeErr_OUT );
this.logger.info( "SSL_COD_OUT: " + vCodigoServLLam_OUT );
//1=OK
if( !(vCodigoErr_OUT.equals( "1" )) ){
estadoTransaccion = false;
break;
}
else{
estadoTransaccion = true;
continue;
}
}
this.logger.info( "estadoTransaccion: [" + estadoTransaccion + "]" );
if( estadoTransaccion == true ){
transactionManager.commit( status );
this.logger.info( "APLICANDO [COMMIT] A LA TRANSACCION ...!!!" );
}
else{
transactionManager.rollback( status );
this.logger.info( "APLICANDO [ROLLBACK] A LA TRANSACCION ...!!!" );
}
objDataBaseValidatorBean = new DataBaseValidatorBean();
objDataBaseValidatorBean.setCodigo_OUT( vCodigoErr_OUT + "" );
objDataBaseValidatorBean.setMensaje_OUT( vMensajeErr_OUT );
objDataBaseValidatorBean.setCodServLlam( vCodigoServLLam_OUT );
}
catch( SQLException e ){
this.logger.error( "ERROR: [SQLException] - [" + e.getMessage() + "] ", e );
if( transactionManager != null ){
try{
transactionManager.rollback( status );
}
catch( Exception x ){
x.printStackTrace();
}
}
objDataBaseValidatorBean = new DataBaseValidatorBean();
objDataBaseValidatorBean.setCodigo_OUT( UtilPropertiesMapper.ESTADO_NOK );
objDataBaseValidatorBean.setMensaje_OUT( e.getMessage() );
objDataBaseValidatorBean.setListaDatos( null );
}
catch( Exception e ){
this.logger.error( "ERROR: [Exception] - [" + e.getMessage() + "] ", e );
objDataBaseValidatorBean = new DataBaseValidatorBean();
objDataBaseValidatorBean.setCodigo_OUT( UtilPropertiesMapper.ESTADO_NOK );
objDataBaseValidatorBean.setMensaje_OUT( e.getMessage() );
objDataBaseValidatorBean.setCodServLlam( null );
}
finally{
this.logger.info( "Tiempo TOTAL Proceso: [" + (tiempoInicio-System.currentTimeMillis()) + "]" );
this.logger.info( "*********** [FIN] - DENTRO: [registrarServicioLlamadas - DAO] ***********" );
}
return objDataBaseValidatorBean;
}
[?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:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:ws="http://jax-ws.dev.java.net/spring/core"
xmlns:wss="http://jax-ws.dev.java.net/spring/servlet"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://jax-ws.dev.java.net/spring/core
http://jax-ws.dev.java.net/spring/core.xsd
http://jax-ws.dev.java.net/spring/servlet
http://jax-ws.dev.java.net/spring/servlet.xsd"
]
[!-- ************** [ DATA SOURCE - (JNDI-WebLogic) ] ************** --]
[jee:jndi-lookup id = "servicioLlamadasJNDI"
jndi-name = "${db.jndi.serviciollamadas}"
cache = "true"
resource-ref = "true"
lookup-on-startup = "false"
proxy-interface = "javax.sql.DataSource" /]
[!-- ************** [ DATA SOURCE - (JNDI-WebLogic) ] ************** --]
[!-- ******************* [ TRANSACTION MANAGER ] ******************* --]
[bean id="txManager" class="com.atomikos.icatch.jta.UserTransactionManager" /]
[bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" ]
[property name="transactionManager" ref="txManager" /]
[/bean]
[!-- ******************* [ TRANSACTION MANAGER ] ******************* --]
[/beans]

No existe error alguno, simplemente no logra hacer bien el manejo de la transaccionalidad.

Entonces no hay nada más que decir , el único que puede probar el código eres tu.

Tendríamos que tener todo tu proyecto y hacerlo funcionar para ver cual es el problema.

Imagen de JavaMan

SOLUCIÓN: PROBLEMA 'TRANSACCIONALIDAD' EN LA APLICACIÓN

Hola,

La solución esta en que no se estaba manejando de forma eficiente el 'PlatformTransactionManager', 'TransactionDefinition', 'TransactionStatus' y parte del Mapping de SPRING. He acomodando esas partes y con ello ya valide que la TRANSACCIONALIDAD, ya puedo controlarla desde la aplicación y hace COMMIT o ROLLBACK en el momento se requiera. Gracias por los aportes.

CÓDIGO JAVA:

@Repository
 public class ServicioLlamadasDaoImp implements ServicioLlamadasDao{
       
        private final Logger logger = Logger.getLogger( this.getClass().getName() );
       
        @Autowired
        private DataSource servicioLlamadasJNDI = null;
 
        @Autowired
        private PlatformTransactionManager transactionManager = null;
       
        private SimpleJdbcCall objJdbcCall = null;
       
   /**
    * registrarServicioLlamadas
    * @param  applicationContext
    * @param  listaIteraciones
    * @param  objServicioLlamadas
    * @return DataBaseValidatorBean
    */

        @Override
        public DataBaseValidatorBean registrarServicioLlamadas( ApplicationContext   applicationContext, List<Integer> listaIteraciones,       ServicioLlamadasBean objServicioLlamadas ){
                   this.logger.info( "*********** [INICIO] - DENTRO: [registrarServicioLlamadas - DAO] ***********" );
                   
                   JdbcTemplate          objJdbcTemplate          = null;
                   DataBaseValidatorBean objDataBaseValidatorBean = null;
                   String                OWNER                    = null;
                   String                PAQUETE                  = null;
                   String                PROCEDURE                = null;
                   long                  tiempoInicio             = System.currentTimeMillis();
 
                   TransactionDefinition objTransDefinition = null;
                   TransactionStatus     objTransStatus     = null;
                 
           try{
                   this.logger.info( "DATA SOURCE: [" + this.servicioLlamadasJNDI + "]" );
                   this.servicioLlamadasJNDI.setLoginTimeout( UtilPropertiesMapper.DB_TIMEOUT_CONEXION );
                   
                   objTransDefinition = new DefaultTransactionDefinition();
                   objTransStatus     = this.transactionManager.getTransaction( objTransDefinition );
 
                   this.logger.info( "transactionManager: [" + this.transactionManager + "]" );
         
                   OWNER     = UtilPropertiesMapper.DB_OWNER;  
                   PAQUETE   = UtilPropertiesMapper.DB_PAQUETE_REGISTRO;    
                   PROCEDURE = UtilPropertiesMapper.DB_PROCEDURE_REGISTRO;    
 
                   String telefono   = objServicioLlamadas.getTelefono();
                   String tecnologia = objServicioLlamadas.getTecnologia();
                   String codigo     = objServicioLlamadas.getCodigo();
                   String mensaje    = objServicioLlamadas.getMensaje();
                   String paquete    = objServicioLlamadas.getPaquete();
                   String plan       = objServicioLlamadas.getPlan();
                   String saldo      = objServicioLlamadas.getSaldo();
                           
                   String  vCodigoErr_OUT      = null;
                   String  vMensajeErr_OUT     = null;
                   Integer vCodigoServLLam_OUT = null;
                   boolean estadoTransaccion   = false;
                   
                   this.logger.info( "# REGISTROS A REGISTRAR: [" + listaIteraciones.size() + "]" );
                   
                   for( int i=0; i<listaIteraciones.size(); i++ ){
                                    Integer indice = listaIteraciones.get( i );  
                                   
                                    this.logger.info( "TRANSACCION: [" + indice + "]" );
                 
                                    //PARAMETROS [IN]:
                                    SqlParameterSource objParametrosIN = new MapSqlParameterSource()
                                    .addValue( "SLL_TELEFONO_IN",   telefono,   Types.VARCHAR )
                                    .addValue( "SLL_TECNOLOGIA_IN", tecnologia, Types.VARCHAR )
                                    .addValue( "SLL_CODIGO_IN",     codigo,     Types.VARCHAR )
                                    .addValue( "SLL_MENSAJE_IN",    mensaje,    Types.VARCHAR )
                                    .addValue( "SLL_PAQUETE_IN",    paquete,    Types.VARCHAR )
                                    .addValue( "SLL_PLAN_IN",       plan,       Types.VARCHAR )
                                    .addValue( "SLL_SALDO_IN",      saldo,      Types.VARCHAR );
                                   
                                    this.objJdbcCall = new SimpleJdbcCall( this.servicioLlamadasJNDI );
                                    objJdbcTemplate = this.objJdbcCall.getJdbcTemplate();
                                    objJdbcTemplate.setQueryTimeout( UtilPropertiesMapper.DB_TIMEOUT_EXECUTION  );
         
                                    //MATCHING:
                                    Map<String, Object> objResultado = this.objJdbcCall
                                    .withoutProcedureColumnMetaDataAccess()
                                    .withSchemaName(  OWNER   )
                                    .withCatalogName( PAQUETE )
                                    .withProcedureName( PROCEDURE )  
                                    .declareParameters(
                                                                new SqlParameter( "SLL_TELEFONO_IN",   Types.VARCHAR ),
                                                                new SqlParameter( "SLL_TECNOLOGIA_IN", Types.VARCHAR ),
                                                                new SqlParameter( "SLL_CODIGO_IN",     Types.VARCHAR ),
                                                                new SqlParameter( "SLL_MENSAJE_IN",    Types.VARCHAR ),
                                                                new SqlParameter( "SLL_PAQUETE_IN",    Types.VARCHAR ),
                                                                new SqlParameter( "SLL_PLAN_IN",       Types.VARCHAR ),
                                                                new SqlParameter( "SLL_SALDO_IN",      Types.VARCHAR ),
                                                               
                                                                new SqlOutParameter( "ERR_OUT",        Types.VARCHAR ),
                                                                new SqlOutParameter( "MESSAGE_OUT",    Types.VARCHAR ),
                                                                new SqlOutParameter( "SSL_COD_OUT",    Types.INTEGER )
                                    )
                                    .execute( objParametrosIN );  
                                   
                                this.logger.info( "PROCEDURE: [" + this.objJdbcCall.getCallString() + "]" );
                                   
                                    //PARAMETROS [OUT]:
                                    vCodigoErr_OUT      = (String)objResultado.get(  "ERR_OUT" );
                                    vMensajeErr_OUT     = (String)objResultado.get(  "MESSAGE_OUT" );
                                    vCodigoServLLam_OUT = (Integer)objResultado.get( "SSL_COD_OUT" );
                                   
                                    this.logger.info( "ERR_OUT:     " + vCodigoErr_OUT  );
                                    this.logger.info( "MESSAGE_OUT: " + vMensajeErr_OUT );
                                    this.logger.info( "SSL_COD_OUT: " + vCodigoServLLam_OUT );
                                   
                                    //1=OK
                                    if( !(vCodigoErr_OUT.equals( "1" )) ){
                                        estadoTransaccion = false;
                                        break;
                                    }
                                    else{
                                         estadoTransaccion = true;
                                         continue;
                                    }                                                                          
                   }             
                   
                   this.logger.info( "estadoTransaccion: [" + estadoTransaccion + "]" );
                   
               if( estadoTransaccion == true ){
                   this.transactionManager.commit( objTransStatus );
                   this.logger.info( "APLICANDO [COMMIT] A LA TRANSACCION ...!!!" );
               }
               else{
                    this.transactionManager.rollback( objTransStatus );
                    this.logger.info( "APLICANDO [ROLLBACK] A LA TRANSACCION ...!!!" );
               }
                   
                   objDataBaseValidatorBean = new DataBaseValidatorBean();
                   objDataBaseValidatorBean.setCodigo_OUT(  vCodigoErr_OUT + "" );
                   objDataBaseValidatorBean.setMensaje_OUT( vMensajeErr_OUT );
                   objDataBaseValidatorBean.setCodServLlam( vCodigoServLLam_OUT );
           }
           catch( DataAccessException e ){
                          this.logger.error( "ERROR: [DataAccessException] - [" + e.getMessage() + "] ", e );
                           
                          if( this.transactionManager != null ){
                                  try{
                                      this.transactionManager.rollback( objTransStatus );
                                  }
                                  catch( Exception x ){
                                             this.logger.error( "ERROR: [" + e.getMessage() + "] ", e );
                                  }
                          }
                           
                          objDataBaseValidatorBean = new DataBaseValidatorBean();
                          objDataBaseValidatorBean.setCodigo_OUT( UtilPropertiesMapper.ESTADO_NOK );
                          objDataBaseValidatorBean.setMensaje_OUT( e.getMessage() );
                          objDataBaseValidatorBean.setListaDatos(  null );
           }
           catch( SQLException e ){
                      this.logger.error( "ERROR: [SQLException] - [" + e.getMessage() + "] ", e );
                     
                      if( this.transactionManager != null ){
                          try{
                                  this.transactionManager.rollback( objTransStatus );
                                           }
                                           catch( Exception x ){
                                                      this.logger.error( "ERROR: [" + e.getMessage() + "] ", e );
                                           }
                      }
                     
                      String cadenaError = e.toString();
                     
                      //TIMEOUT:
                      if( cadenaError.contains( UtilPropertiesMapper.TIMEOUT_CADENA_ERROR  ) ){
                          objDataBaseValidatorBean.setCodigo_OUT(  UtilPropertiesMapper.ESTADO_NOK );
                          objDataBaseValidatorBean.setMensaje_OUT( UtilPropertiesMapper.TIMEOUT_MENSAJE_ERROR );
                      }
                     
                          objDataBaseValidatorBean = new DataBaseValidatorBean();
                          objDataBaseValidatorBean.setCodigo_OUT( UtilPropertiesMapper.ESTADO_NOK );
                          objDataBaseValidatorBean.setMensaje_OUT( e.getMessage() );
                          objDataBaseValidatorBean.setListaDatos(  null );
           }
           catch( Exception e ){
                      this.logger.error( "ERROR: [Exception] - [" + e.getMessage() + "] ", e );
                     
                          objDataBaseValidatorBean = new DataBaseValidatorBean();
                          objDataBaseValidatorBean.setCodigo_OUT( UtilPropertiesMapper.ESTADO_NOK );
                          objDataBaseValidatorBean.setMensaje_OUT( e.getMessage() );
                          objDataBaseValidatorBean.setCodServLlam( null );
           }
           catch( Throwable e ){
                      this.logger.error( "ERROR: [Throwable] - [" + e.getMessage() + "] ", e );
                     
                          objDataBaseValidatorBean = new DataBaseValidatorBean();
                          objDataBaseValidatorBean.setCodigo_OUT( UtilPropertiesMapper.ESTADO_NOK );
                          objDataBaseValidatorBean.setMensaje_OUT( e.getMessage() );
                          objDataBaseValidatorBean.setCodServLlam( null );
           }
           finally{
                       this.logger.info( "Tiempo TOTAL Proceso: [" + (tiempoInicio-System.currentTimeMillis()) + "]" );
                       this.logger.info( "*********** [FIN] - DENTRO: [registrarServicioLlamadas - DAO] ***********" );
           }
           
           return objDataBaseValidatorBean;
        }
}

MAPPING SPRING:

<?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:context="http://www.springframework.org/schema/context"
       xmlns:task="http://www.springframework.org/schema/task"
       xmlns:jee="http://www.springframework.org/schema/jee"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:ws="http://jax-ws.dev.java.net/spring/core"
       xmlns:wss="http://jax-ws.dev.java.net/spring/servlet"
       xmlns:oxm="http://www.springframework.org/schema/oxm"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           <a href="
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
" title="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
">http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
</a>                           <a href="
http://www.springframework.org/schema/context
" title="http://www.springframework.org/schema/context
">http://www.springframework.org/schema/context
</a>                           <a href="
http://www.springframework.org/schema/context/spring-context-3.0.xsd
" title="http://www.springframework.org/schema/context/spring-context-3.0.xsd
">http://www.springframework.org/schema/context/spring-context-3.0.xsd
</a>                           <a href="
http://www.springframework.org/schema/task
" title="http://www.springframework.org/schema/task
">http://www.springframework.org/schema/task
</a>                           <a href="
http://www.springframework.org/schema/task/spring-task-3.0.xsd
" title="http://www.springframework.org/schema/task/spring-task-3.0.xsd
">http://www.springframework.org/schema/task/spring-task-3.0.xsd
</a>                           <a href="
http://www.springframework.org/schema/aop" title="http://www.springframework.org/schema/aop">http://www.springframework.org/schema/aop</a>  
                           <a href="http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" title="http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">http://www.springframework.org/schema/aop/spring-aop-3.0.xsd</a>  
                           <a href="http://www.springframework.org/schema/context" title="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a>  
                           <a href="http://www.springframework.org/schema/context/spring-context-3.0.xsd
"
title="http://www.springframework.org/schema/context/spring-context-3.0.xsd
"
>http://www.springframework.org/schema/context/spring-context-3.0.xsd
</a>                           <a href="http://www.springframework.org/schema/jee
"
title="http://www.springframework.org/schema/jee
"
>http://www.springframework.org/schema/jee
</a>                           <a href="http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
"
title="http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
"
>http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
</a>                           <a href="http://www.springframework.org/schema/util
"
title="http://www.springframework.org/schema/util
"
>http://www.springframework.org/schema/util
</a>                           <a href="http://www.springframework.org/schema/util/spring-util-3.0.xsd
"
title="http://www.springframework.org/schema/util/spring-util-3.0.xsd
"
>http://www.springframework.org/schema/util/spring-util-3.0.xsd
</a>                           <a href="http://jax-ws.dev.java.net/spring/core
"
title="http://jax-ws.dev.java.net/spring/core
"
>http://jax-ws.dev.java.net/spring/core
</a>                           <a href="http://jax-ws.dev.java.net/spring/core.xsd
"
title="http://jax-ws.dev.java.net/spring/core.xsd
"
>http://jax-ws.dev.java.net/spring/core.xsd
</a>                           <a href="http://jax-ws.dev.java.net/spring/servlet
"
title="http://jax-ws.dev.java.net/spring/servlet
"
>http://jax-ws.dev.java.net/spring/servlet
</a>                           <a href="http://jax-ws.dev.java.net/spring/servlet.xsd"" title="http://jax-ws.dev.java.net/spring/servlet.xsd"">http://jax-ws.dev.java.net/spring/servlet.xsd"</a> >

    <!-- ************** [DATA SOURCE - (JNDI-WebLogic)] ************** -->    
        <jee:jndi-lookup id                = "servicioLlamadasJNDI"
                         jndi-name         = "${db.jndi.serviciollamadas}"  
                             cache             = "true"
                             resource-ref      = "true"  
                             lookup-on-startup = "false"
                             proxy-interface   = "javax.sql.DataSource" />
    <!-- ************** [DATA SOURCE - (JNDI-WebLogic)] ************** -->  
   
   
    <!-- ******************* [TRANSACTION MANAGER] ******************* -->  
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
          <property name="dataSource" ref="servicioLlamadasJNDI" />    
    </bean>
    <!-- ******************* [TRANSACTION MANAGER] ******************* -->  
   
   
    <!-- ********************** [INYECCIÓN:DAO] ********************** -->
    <bean id="servicioLlamadasDao" class="pe.com.javaman.dummy.servicioLlamadasWS.dao.ServicioLlamadasDaoImp" />  
    <!-- ********************** [INYECCIÓN:DAO] ********************** -->
       
</beans>

Imagen de JavaMan

SOLUCIÓN: PROBLEMA CON 'COMMIT' EN LA APLICACIÓN.

Aquí comparto la solución. Estaba en el manejo de: 'TransactionDefinition' y 'TransactionStatus', no lo estaba manejando correctamente al igual que el MAPPING del XML de Spring del transaction. He hecho algunas modificaciones en el CÓDIGO y MAPPING. Ya validé su funcionamiento ya ahora de esta forma ya el commit manejado desde la aplicación y funcionando bien. Gracias.

CÓDIGO JAVA:

       
        @Autowired
        private DataSource servicioLlamadasJNDI = null;
 
        @Autowired
        private PlatformTransactionManager transactionManager = null;
       
        private SimpleJdbcCall objJdbcCall = null;
       
   /**
    * registrarServicioLlamadas
    * @param  applicationContext
    * @param  listaIteraciones
    * @param  objServicioLlamadas
    * @return DataBaseValidatorBean
    */

        @Override
        public DataBaseValidatorBean registrarServicioLlamadas( ApplicationContext   applicationContext, List<Integer> listaIteraciones, ServicioLlamadasBean  objServicioLlamadas ){
                   this.logger.info( "*********** [INICIO] - DENTRO: [registrarServicioLlamadas - DAO] ***********" );
                   
                   JdbcTemplate          objJdbcTemplate          = null;
                   DataBaseValidatorBean objDataBaseValidatorBean = null;
                   String                OWNER                    = null;
                   String                PAQUETE                  = null;
                   String                PROCEDURE                = null;
                   long                  tiempoInicio             = System.currentTimeMillis();
 
                   TransactionDefinition objTransDefinition = null;
                   TransactionStatus     objTransStatus     = null;
                 
           try{
                   this.logger.info( "DATA SOURCE: [" + this.servicioLlamadasJNDI + "]" );
                   this.servicioLlamadasJNDI.setLoginTimeout( UtilPropertiesMapper.DB_TIMEOUT_CONEXION );
                   
                   objTransDefinition = new DefaultTransactionDefinition();
                   objTransStatus     = this.transactionManager.getTransaction( objTransDefinition );
 
                   this.logger.info( "transactionManager: [" + this.transactionManager + "]" );
         
                   OWNER     = UtilPropertiesMapper.DB_OWNER;  
                   PAQUETE   = UtilPropertiesMapper.DB_PAQUETE_REGISTRO;    
                   PROCEDURE = UtilPropertiesMapper.DB_PROCEDURE_REGISTRO;    
 
                   String telefono   = objServicioLlamadas.getTelefono();
                   String tecnologia = objServicioLlamadas.getTecnologia();
                   String codigo     = objServicioLlamadas.getCodigo();
                   String mensaje    = objServicioLlamadas.getMensaje();
                   String paquete    = objServicioLlamadas.getPaquete();
                   String plan       = objServicioLlamadas.getPlan();
                   String saldo      = objServicioLlamadas.getSaldo();
                           
                   String  vCodigoErr_OUT      = null;
                   String  vMensajeErr_OUT     = null;
                   Integer vCodigoServLLam_OUT = null;
                   boolean estadoTransaccion   = false;
                   
                   this.logger.info( "# REGISTROS A REGISTRAR: [" + listaIteraciones.size() + "]" );
                   
                   for( int i=0; i<listaIteraciones.size(); i++ ){
                                    Integer indice = listaIteraciones.get( i );  
                                   
                                    this.logger.info( "TRANSACCION: [" + indice + "]" );
                 
                                    //PARAMETROS [IN]:
                                    SqlParameterSource objParametrosIN = new MapSqlParameterSource()
                                    .addValue( "SLL_TELEFONO_IN",   telefono,   Types.VARCHAR )
                                    .addValue( "SLL_TECNOLOGIA_IN", tecnologia, Types.VARCHAR )
                                    .addValue( "SLL_CODIGO_IN",     codigo,     Types.VARCHAR )
                                    .addValue( "SLL_MENSAJE_IN",    mensaje,    Types.VARCHAR )
                                    .addValue( "SLL_PAQUETE_IN",    paquete,    Types.VARCHAR )
                                    .addValue( "SLL_PLAN_IN",       plan,       Types.VARCHAR )
                                    .addValue( "SLL_SALDO_IN",      saldo,      Types.VARCHAR );
                                   
                                    this.objJdbcCall = new SimpleJdbcCall( this.servicioLlamadasJNDI );
                                    objJdbcTemplate = this.objJdbcCall.getJdbcTemplate();
                                    objJdbcTemplate.setQueryTimeout( UtilPropertiesMapper.DB_TIMEOUT_EXECUTION  );
         
                                    //MATCHING:
                                    Map<String, Object> objResultado = this.objJdbcCall
                                    .withoutProcedureColumnMetaDataAccess()
                                    .withSchemaName(  OWNER   )
                                    .withCatalogName( PAQUETE )
                                    .withProcedureName( PROCEDURE )  
                                    .declareParameters(
                                                                new SqlParameter( "SLL_TELEFONO_IN",   Types.VARCHAR ),
                                                                new SqlParameter( "SLL_TECNOLOGIA_IN", Types.VARCHAR ),
                                                                new SqlParameter( "SLL_CODIGO_IN",     Types.VARCHAR ),
                                                                new SqlParameter( "SLL_MENSAJE_IN",    Types.VARCHAR ),
                                                                new SqlParameter( "SLL_PAQUETE_IN",    Types.VARCHAR ),
                                                                new SqlParameter( "SLL_PLAN_IN",       Types.VARCHAR ),
                                                                new SqlParameter( "SLL_SALDO_IN",      Types.VARCHAR ),
                                                               
                                                                new SqlOutParameter( "ERR_OUT",        Types.VARCHAR ),
                                                                new SqlOutParameter( "MESSAGE_OUT",    Types.VARCHAR ),
                                                                new SqlOutParameter( "SSL_COD_OUT",    Types.INTEGER )
                                    )
                                    .execute( objParametrosIN );  
                                   
                                this.logger.info( "PROCEDURE: [" + this.objJdbcCall.getCallString() + "]" );
                                   
                                    //PARAMETROS [OUT]:
                                    vCodigoErr_OUT      = (String)objResultado.get(  "ERR_OUT" );
                                    vMensajeErr_OUT     = (String)objResultado.get(  "MESSAGE_OUT" );
                                    vCodigoServLLam_OUT = (Integer)objResultado.get( "SSL_COD_OUT" );
                                   
                                    this.logger.info( "ERR_OUT:     " + vCodigoErr_OUT  );
                                    this.logger.info( "MESSAGE_OUT: " + vMensajeErr_OUT );
                                    this.logger.info( "SSL_COD_OUT: " + vCodigoServLLam_OUT );
                                   
                                    //1=OK
                                    if( !(vCodigoErr_OUT.equals( "1" )) ){
                                        estadoTransaccion = false;
                                        break;
                                    }
                                    else{
                                         estadoTransaccion = true;
                                         continue;
                                    }                                                                          
                   }             
                   
                   this.logger.info( "estadoTransaccion: [" + estadoTransaccion + "]" );
                   
               if( estadoTransaccion == true ){
                   this.transactionManager.commit( objTransStatus );
                   this.logger.info( "APLICANDO [COMMIT] A LA TRANSACCION ...!!!" );
               }
               else{
                    this.transactionManager.rollback( objTransStatus );
                    this.logger.info( "APLICANDO [ROLLBACK] A LA TRANSACCION ...!!!" );
               }
                   
                   objDataBaseValidatorBean = new DataBaseValidatorBean();
                   objDataBaseValidatorBean.setCodigo_OUT(  vCodigoErr_OUT + "" );
                   objDataBaseValidatorBean.setMensaje_OUT( vMensajeErr_OUT );
                   objDataBaseValidatorBean.setCodServLlam( vCodigoServLLam_OUT );
           }
           catch( DataAccessException e ){
                          this.logger.error( "ERROR: [DataAccessException] - [" + e.getMessage() + "] ", e );
                           
                          if( this.transactionManager != null ){
                                  try{
                                      this.transactionManager.rollback( objTransStatus );
                                  }
                                  catch( Exception x ){
                                             this.logger.error( "ERROR: [" + e.getMessage() + "] ", e );
                                  }
                          }
                           
                          objDataBaseValidatorBean = new DataBaseValidatorBean();
                          objDataBaseValidatorBean.setCodigo_OUT( UtilPropertiesMapper.ESTADO_NOK );
                          objDataBaseValidatorBean.setMensaje_OUT( e.getMessage() );
                          objDataBaseValidatorBean.setListaDatos(  null );
           }
           catch( SQLException e ){
                      this.logger.error( "ERROR: [SQLException] - [" + e.getMessage() + "] ", e );
                     
                      if( this.transactionManager != null ){
                          try{
                                  this.transactionManager.rollback( objTransStatus );
                                           }
                                           catch( Exception x ){
                                                      this.logger.error( "ERROR: [" + e.getMessage() + "] ", e );
                                           }
                      }
                     
                      String cadenaError = e.toString();
                     
                      //TIMEOUT:
                      if( cadenaError.contains( UtilPropertiesMapper.TIMEOUT_CADENA_ERROR  ) ){
                          objDataBaseValidatorBean.setCodigo_OUT(  UtilPropertiesMapper.ESTADO_NOK );
                          objDataBaseValidatorBean.setMensaje_OUT( UtilPropertiesMapper.TIMEOUT_MENSAJE_ERROR );
                      }
                     
                          objDataBaseValidatorBean = new DataBaseValidatorBean();
                          objDataBaseValidatorBean.setCodigo_OUT( UtilPropertiesMapper.ESTADO_NOK );
                          objDataBaseValidatorBean.setMensaje_OUT( e.getMessage() );
                          objDataBaseValidatorBean.setListaDatos(  null );
           }
           catch( Exception e ){
                      this.logger.error( "ERROR: [Exception] - [" + e.getMessage() + "] ", e );
                     
                          objDataBaseValidatorBean = new DataBaseValidatorBean();
                          objDataBaseValidatorBean.setCodigo_OUT( UtilPropertiesMapper.ESTADO_NOK );
                          objDataBaseValidatorBean.setMensaje_OUT( e.getMessage() );
                          objDataBaseValidatorBean.setCodServLlam( null );
           }
           catch( Throwable e ){
                      this.logger.error( "ERROR: [Throwable] - [" + e.getMessage() + "] ", e );
                     
                          objDataBaseValidatorBean = new DataBaseValidatorBean();
                          objDataBaseValidatorBean.setCodigo_OUT( UtilPropertiesMapper.ESTADO_NOK );
                          objDataBaseValidatorBean.setMensaje_OUT( e.getMessage() );
                          objDataBaseValidatorBean.setCodServLlam( null );
           }
           finally{
                       this.logger.info( "Tiempo TOTAL Proceso: [" + (tiempoInicio-System.currentTimeMillis()) + "]" );
                       this.logger.info( "*********** [FIN] - DENTRO: [registrarServicioLlamadas - DAO] ***********" );
           }
           
           return objDataBaseValidatorBean;
        }

MAPPING SPRING:

<?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:context="http://www.springframework.org/schema/context"
       xmlns:task="http://www.springframework.org/schema/task"
       xmlns:jee="http://www.springframework.org/schema/jee"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:ws="http://jax-ws.dev.java.net/spring/core"
       xmlns:wss="http://jax-ws.dev.java.net/spring/servlet"
       xmlns:oxm="http://www.springframework.org/schema/oxm"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           <a href="
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
" title="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
">http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
</a>                           <a href="
http://www.springframework.org/schema/context
" title="http://www.springframework.org/schema/context
">http://www.springframework.org/schema/context
</a>                           <a href="
http://www.springframework.org/schema/context/spring-context-3.0.xsd
" title="http://www.springframework.org/schema/context/spring-context-3.0.xsd
">http://www.springframework.org/schema/context/spring-context-3.0.xsd
</a>                           <a href="
http://www.springframework.org/schema/task
" title="http://www.springframework.org/schema/task
">http://www.springframework.org/schema/task
</a>                           <a href="
http://www.springframework.org/schema/task/spring-task-3.0.xsd
" title="http://www.springframework.org/schema/task/spring-task-3.0.xsd
">http://www.springframework.org/schema/task/spring-task-3.0.xsd
</a>                           <a href="
http://www.springframework.org/schema/aop" title="http://www.springframework.org/schema/aop">http://www.springframework.org/schema/aop</a>  
                           <a href="http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" title="http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">http://www.springframework.org/schema/aop/spring-aop-3.0.xsd</a>  
                           <a href="http://www.springframework.org/schema/context" title="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a>  
                           <a href="http://www.springframework.org/schema/context/spring-context-3.0.xsd
"
title="http://www.springframework.org/schema/context/spring-context-3.0.xsd
"
>http://www.springframework.org/schema/context/spring-context-3.0.xsd
</a>                           <a href="http://www.springframework.org/schema/jee
"
title="http://www.springframework.org/schema/jee
"
>http://www.springframework.org/schema/jee
</a>                           <a href="http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
"
title="http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
"
>http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
</a>                           <a href="http://www.springframework.org/schema/util
"
title="http://www.springframework.org/schema/util
"
>http://www.springframework.org/schema/util
</a>                           <a href="http://www.springframework.org/schema/util/spring-util-3.0.xsd
"
title="http://www.springframework.org/schema/util/spring-util-3.0.xsd
"
>http://www.springframework.org/schema/util/spring-util-3.0.xsd
</a>                           <a href="http://jax-ws.dev.java.net/spring/core
"
title="http://jax-ws.dev.java.net/spring/core
"
>http://jax-ws.dev.java.net/spring/core
</a>                           <a href="http://jax-ws.dev.java.net/spring/core.xsd
"
title="http://jax-ws.dev.java.net/spring/core.xsd
"
>http://jax-ws.dev.java.net/spring/core.xsd
</a>                           <a href="http://jax-ws.dev.java.net/spring/servlet
"
title="http://jax-ws.dev.java.net/spring/servlet
"
>http://jax-ws.dev.java.net/spring/servlet
</a>                           <a href="http://jax-ws.dev.java.net/spring/servlet.xsd"" title="http://jax-ws.dev.java.net/spring/servlet.xsd"">http://jax-ws.dev.java.net/spring/servlet.xsd"</a> >

    <!-- ************** [DATA SOURCE - (JNDI-WebLogic)] ************** -->    
        <jee:jndi-lookup id                = "servicioLlamadasJNDI"
                         jndi-name         = "${db.jndi.serviciollamadas}"  
                             cache             = "true"
                             resource-ref      = "true"  
                             lookup-on-startup = "false"
                             proxy-interface   = "javax.sql.DataSource" />
    <!-- ************** [DATA SOURCE - (JNDI-WebLogic)] ************** -->  
   
   
    <!-- ******************* [TRANSACTION MANAGER] ******************* -->  
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
          <property name="dataSource" ref="servicioLlamadasJNDI" />    
    </bean>
    <!-- ******************* [TRANSACTION MANAGER] ******************* -->  
   
   
    <!-- ********************** [INYECCIÓN:DAO] ********************** -->
    <bean id="servicioLlamadasDao" class="pe.com.javaman.dummy.servicioLlamadasWS.dao.ServicioLlamadasDaoImp" />  
    <!-- ********************** [INYECCIÓN:DAO] ********************** -->
       
</beans>

Imagen de ingscjoshua

mmmmmm

podrias subir tu appContext completo y amm porq no estas usando la inyeccion de dependencia podrias usarla de 2 forma delarando las propiedades y generando sus set para que spring inyecte todo o usando la anotacion @autowired no me queda muy calro que pretendes hacer? porq usar un procedure? lo podras hacer todo dese java con un api de persistencia cono jpa o hibernate nose amm quisiera entender que pretendes para si de alquna forma te puedo ayudar pues ayudar o confundirte mas jajajaj OK Ya me calmo saludos.

Imagen de JavaMan

JDBC

Doc en estos momentos no tengo las fuentes pero maniana las debo estar subiendo. Si estan inyectando con el @autowired, ya lo valide su funcionamiento. Sobre el manejo de PROCEDURE, el DUMMY esta planteado de esa manera ya que en el trabajo es requerimiento por segmentacion del motor de datos. Sobre los archivos de mapping los tengo separados en base a su funcionalidad ese que mostre solo contiene el de acceso a datos.

Saludos