Global Transactions en Weblogic 10g

alex_xp

Gold Member
Se incorporó
12 Octubre 2004
Mensajes
2.613
Estimados,

No sabía si dejar este hilo en base de datos o en programación web

Tengo la siguiente situación

Desde un OSB 11g tengo instalado un jar que se comunica con una aplicación en weblogic 10g, esta aplicación toma los datos en xml los transforma en java y crea la conexión para conectarse a una SP en una base de datos oracle (no tengo idea que versión será).
Mi problema es que al activar en el datasource la opcion Supports Global Transactions la consulta me arroja el siguiente error

Código:
  <faultcode>S:Server</faultcode>
         <faultstring>Cannot call Connection.commit in distributed transaction.  Transaction Manager will commit the resource manager when the distributed transaction is committed.</faultstring>
         <detail>
            <ns2:exception class="cl.bco.model.ws.FaultMsg" note="To disable this feature, set com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace system property to false" xmlns:ns2="http://jax-ws.dev.java.net/">
               <message>Cannot call Connection.commit in distributed transaction.  Transaction Manager will commit the resource manager when the distributed transaction is committed.</message>
               <ns2:stackTrace>

Al desactivar esta opción me arroja el resultado de la consulta correctamente.
Entonces mi duda es la siguiente:

Es un problema de SP o de la base de datos que no soporte transacciones globales? (La base de datos como el SP no son míos ni los desarrolle, sólo los consulto.)

Es un problema de la aplicación que tengo el weblogic 10g? (eso sería raro ya que lo desarrolle tomando como ejemplo otras aplicaciones que hacen prácticamente lo mismo.)

Por darse la paja de leer y por su ayuda de antemano gracias.
 

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
La opción "Supports Global Transaction" es la opción por defecto. ¿Estás usando el driver por defecto? ¿el driver "NON XA" ?

¿Qué opción usaste?
- Logging Last Resource
- Emulate Two-Phase Commit
- One-Phase Commit -> Opción por defecto.
 
Upvote 0

alex_xp

Gold Member
Se incorporó
12 Octubre 2004
Mensajes
2.613
La opción "Supports Global Transaction" es la opción por defecto. ¿Estás usando el driver por defecto? ¿el driver "NON XA" ?

¿Qué opción usaste?
- Logging Last Resource
- Emulate Two-Phase Commit
- One-Phase Commit -> Opción por defecto.

El driver que estoy usando es

Oracle's Driver (Thin) Versions 9.0.1, 9.2.0, 10, 11

Y la opción one-phase commit
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
El driver que estoy usando es

Oracle's Driver (Thin) Versions 9.0.1, 9.2.0, 10, 11

Y la opción one-phase commit

Oks, estás usando la opción por defecto.

¿Este error te salte SIEMPRE que invocas al SP o de vez en cuando?
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
¿Puedes enviar el texto del driver?

Vas a la consola de weblogic, opción Services, opción Data Sources, seleccionas el datasource y vas a la lengüeta Connection Pool. Pon acá lo que dice la casilla Driver Class Name.

Un driver XA dirá algo así como
oracle.jdbc.xa.client.OracleXADataSource

El driver estándar dirá algo así como
oracle.jdbc.OracleDriver
 
Upvote 0

alex_xp

Gold Member
Se incorporó
12 Octubre 2004
Mensajes
2.613
Gracias por tu ayuda @Zuljin pero ya encontré el maldito error.

En el EJB que tengo me falto agregar un annotation

@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)

Con esa pura linea el wn ahora soporta la configuración del datasource :naster
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Gracias por tu ayuda @Zuljin pero ya encontré el maldito error.

En el EJB que tengo me falto agregar un annotation

@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)

Con esa pura linea el wn ahora soporta la configuración del datasource :naster

Pera... ¿el error estaba en el EJB entonces?
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
yeah, es una estupidez ya que todos los síntomas me indicaban que había algo raro en el datasource, hasta que me puse a revisar las fuentes y cache que me faltaba ese annotation

Igual la arquitectura de weblogic para los datasources y el transaction manager es super robusta. Ya me parecía raro que el problema estuviera en el datasource.
 
Upvote 0

alex_xp

Gold Member
Se incorporó
12 Octubre 2004
Mensajes
2.613
Ahora me da este error en el servidor de QA

Código:
   <S:Body xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
      <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
         <faultcode>S:Server</faultcode>
         <faultstring>ORA-06550: line 1, column 7:
PLS-00201: identifier 'PKG_COBROS_COMISIONES_TC.OBTCOMISION' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored</faultstring>
         <detail>

Lo raro es que en local me anda bien conectado a la misma base de datos remota que en QA :naster
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Ahora me da este error en el servidor de QA

Código:
   <S:Body xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
      <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
         <faultcode>S:Server</faultcode>
         <faultstring>ORA-06550: line 1, column 7:
PLS-00201: identifier 'PKG_COBROS_COMISIONES_TC.OBTCOMISION' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored</faultstring>
         <detail>

Lo raro es que en local me anda bien conectado a la misma base de datos remota que en QA :naster
El datasource está configurado con la misma cuenta?

Enviado desde mi Moto E (4) Plus mediante Tapatalk
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Ahora me da este error en el servidor de QA

Código:
   <S:Body xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
      <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
         <faultcode>S:Server</faultcode>
         <faultstring>ORA-06550: line 1, column 7:
PLS-00201: identifier 'PKG_COBROS_COMISIONES_TC.OBTCOMISION' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored</faultstring>
         <detail>

Lo raro es que en local me anda bien conectado a la misma base de datos remota que en QA :naster

Parecen dos casos:
1.- Es una base de datos distintas. En esta segunda base de datos, el package PKG_COBROS_COMISIONES_TC no tiene el subprocedimiento OBTCOMISION o lisa y llanamente está en estado inválido.
2.- Estás conectándote a la misma base de datos pero con una cuenta de usuario distinta.
 
Upvote 0

alex_xp

Gold Member
Se incorporó
12 Octubre 2004
Mensajes
2.613
Parecen dos casos:
1.- Es una base de datos distintas. En esta segunda base de datos, el package PKG_COBROS_COMISIONES_TC no tiene el subprocedimiento OBTCOMISION o lisa y llanamente está en estado inválido.
2.- Estás conectándote a la misma base de datos pero con una cuenta de usuario distinta.

1.- Esta el package instalado con el sp que indica.
2.- Las credenciales son las mismas.

Ahora revisando más detenidamente el package que esta en la base de datos de QA es una versión anterior a la que esta en la base de datos de Desarrollo.
Ahora hice una prueba de configurar el DataSource para conectarme (localmente) a la BD de QA y me dio otro error que corresponde a la cantidad de parámetros (que es esperable ya que la versión cambio), pero no me dio el error del pakage.

Por ahora pedí que instalaran la misma versión del pakage de desarrollo en QA y ver que pasa
 
Upvote 0

alex_xp

Gold Member
Se incorporó
12 Octubre 2004
Mensajes
2.613
Actualizo este tema:

El SP que estaba instalado en QA era una versión antigua por lo que la actualizaron pero les quedo mal instalada, al parecer a la base de datos le falta una tabla, así que para la próxima semana debería quedar bien y vuelvo a probar
 
Upvote 0

alex_xp

Gold Member
Se incorporó
12 Octubre 2004
Mensajes
2.613
Actualización

Reinstalaron tanto la base de datos como el pakage con los SP en la BD de QA, yo desde mi ambiente local apuntando el datasource a QA me responde bien, pero desde el ambiente de QA apuntado el datasource a QA aún sigue el mismo error.
Ya me tiene medio podrido el tema y estoy empezando a sospechar que el datasource que se configuro en QA esta mal hecho en algún punto o como dice Zuljin puede ser la cuenta con que configuraron el DS la que tenga problemas, así que les deje el cacho a otros que revisen por mientras, total el error que aparece es de BD.
 
Upvote 0

alex_xp

Gold Member
Se incorporó
12 Octubre 2004
Mensajes
2.613
Actualización final

Al fin funciono el servicio, el tipo de QA no había instalado bien ni los jar ni el ear y más encima en la configuración del business estaba apuntando a cualquier lado:killme y después de 2 días de peleas tuvieron que instalar en otra maquina :yao y mi servicio funciono a la primera.

Lo malo es que quieren hacer un cambio para aguantar otras funcionalidades y entregarlo hoy en la tarde para hacer las pruebas de QA :why

Menos mal que ya lo tenia listo y probado
 
Upvote 0

Cosme

Gold Member
Se incorporó
27 Febrero 2005
Mensajes
8.281
Actualización final

Al fin funciono el servicio, el tipo de QA no había instalado bien ni los jar ni el ear y más encima en la configuración del business estaba apuntando a cualquier lado:killme y después de 2 días de peleas tuvieron que instalar en otra maquina :yao y mi servicio funciono a la primera.

Lo malo es que quieren hacer un cambio para aguantar otras funcionalidades y entregarlo hoy en la tarde para hacer las pruebas de QA :why

Menos mal que ya lo tenia listo y probado
tienes el QA probado antes de que el servicio de QA este arriba? :zippypozo
 
Upvote 0

alex_xp

Gold Member
Se incorporó
12 Octubre 2004
Mensajes
2.613
tienes el QA probado antes de que el servicio de QA este arriba? :zippypozo
Obviamente tengo mi ambiente de desarrollo para probar todo, weblogic, osb, eclipse, jdeveloper, etc. Si al final el problema no era yo, sino el tipo que instala en el ambiente de QA. Pero yo ahí no tengo que meter las manos
 
Upvote 0
Subir