Diferencia entre revisiones de «Transaction Manager en Weblogic»

De Dos Ideas.
Saltar a: navegación, buscar
 
Línea 1: Línea 1:
Teníamos una aplicación que ya funcionaba con un transaction manager de este tipo:  
+
En [[Spring Framework]] se suele usar el siguiente Transaction Manager genérico para manejar las transacciones:  
org.springframework.transaction.jta.JtaTransactionManager
+
org.springframework.transaction.jta.JtaTransactionManager
  
Al agregarle nueva funcionalidad con un job de springbatch y usarlo con el mismo transaction manager, resultó esta exception:
+
Sin embargo, si se utiliza [[WebLogic]] como [[Servidor de Aplicaciones]], pueden surgir problemas. Por ejemplo, dependiendo del tipo de propagación podemos obtener la siguiente excepción:  
  
 
<code>
 
<code>
Línea 17: Línea 17:
 
</code>
 
</code>
  
Aparentemente necesitaba por lo menos algún atributo que agregar y configurar,
+
La solución es utilizar un Transaction Manager propio para [[WebLogic]], que Spring nos provee con la siguiente clase:  
resolvimos cambiar por el siguiente:
 
  
'''org.springframework.transaction.jta.WebLogicJtaTransactionManager'''
+
org.springframework.transaction.jta.WebLogicJtaTransactionManager
  
Que se integra muy bien con Weblogic y esto solucionó el tema.
+
== Ver también ==
Para el futuro es preferible directamente usar éste tipo desde el inicio en servidores Weblogic.
+
* [[Transacciones Con Spring]]
 +
* [[Spring Framework]]
 +
 
 +
[[Category: Spring Framework]]

Revisión actual del 15:29 30 dic 2009

En Spring Framework se suele usar el siguiente Transaction Manager genérico para manejar las transacciones:

org.springframework.transaction.jta.JtaTransactionManager

Sin embargo, si se utiliza WebLogic como Servidor de Aplicaciones, pueden surgir problemas. Por ejemplo, dependiendo del tipo de propagación podemos obtener la siguiente excepción:

org.springframework.transaction.InvalidIsolationLevelException: JtaTransactionMa nager does not support custom isolation levels by default - switch 'allowCustomI solationLevels' to 'true'

       at org.springframework.transaction.jta.JtaTransactionManager.applyIsolat

ionLevel(JtaTransactionManager.java:907)

       at org.springframework.transaction.jta.JtaTransactionManager.doJtaBegin(

JtaTransactionManager.java:883)

       at org.springframework.transaction.jta.JtaTransactionManager.doBegin(Jta

TransactionManager.java:843) ......

La solución es utilizar un Transaction Manager propio para WebLogic, que Spring nos provee con la siguiente clase:

org.springframework.transaction.jta.WebLogicJtaTransactionManager

Ver también