|
|
|
alexndr
|
Hi guys,
I have a question regarding XA transactions towards WLS. I have created a JCAPS integration that involves a chain of BPELs and EJBs which picks up a message from a JMS queue, transforms the message in different ways and then forwards the message to an EJB running on a WLS platform. My question: Is it possible for me to run the entire process in a single XA transaction? By problem so far have been how to propagate the transaction that I start when picking the message from the JMS queue all the way to WLS. When I commit the transaction I want it to be commited at the WLS-side and at the JCAPS-side at the same time. Is it even possible or do I have to rethink the design? /A |
|
Andreas Egloff
|
I should note that AFAIK we do not test this, and I am not aware if
there are existing ESB customers doing this, so this comes with risk. Right now what you could do is to include a (glassfish "local") EJB in your service composite, and ensure you have an XA transaction propagated to it. Then manually call the remote EJB, using the capabilities of EJB for distributed transactions (utilizing IIOP). The glassfish mailing list would be a good resource for that specific part if assistance is needed. For something more automatic, it depends on your time frames. When you look at the partner roadmap for Corba and EJB BC you will see transactions on there, and in theory either of these components could achieve what you are looking for once they have full transactions support. I am aware that we (Sun) have been helping out on questions in this regard, however I do not have insights into their progress or time frames. Besides IIOP utilized above, technically WS-AtomicTransaction is another technology to achieve distributed transactions; however, implementations generally are not mature and interoperability testing scarce, it is highly likely that you will run into problems trying to apply this between stacks that don't explicitly state they have tested interoperability. HTH, Andi alexndr wrote: > Hi guys, > I have a question regarding XA transactions towards WLS. > > I have created a JCAPS integration that involves a chain of BPELs and EJBs > which picks up a message from a JMS queue, transforms the message in > different ways and then forwards the message to an EJB running on a WLS > platform. > > My question: Is it possible for me to run the entire process in a single XA > transaction? By problem so far have been how to propagate the transaction > that I start when picking the message from the JMS queue all the way to WLS. > When I commit the transaction I want it to be commited at the WLS-side and > at the JCAPS-side at the same time. Is it even possible or do I have to > rethink the design? > > /A > --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] |
||||||||||||||||
|
fmartin
|
Hi,
I'm still finding problems with distributed transactions. One of the requisites is to have BPEL persistence enabled, and now I'm having a problem with something not related to transaction: [#|2009-10-26T11:11:38.699+0100|WARNING|sun-appserver2.1|com.sun.jbi.engine. bpel.core.bpel.connection.AbstractDBConnection|_ThreadID=41;_ThreadName=sun- bpel-engine-thread-2;Process Instance Id=192.168.1.99:352d0bea:124904eaaa1:-7fba;Service Assembly Name=bpel_6;BPEL Process Name=ProcessPassport;_RequestID=68dea237-9131-490f-b2ce-57b16799c14e;|BPCOR- 6149: failed while executing SQL statement INSERT INTO CRMP (stateid, crmpinvokeid, partnerlink, operation) VALUES(?, ?, ?, ? ) java.sql.SQLException: ORA-12899: el valor es demasiado grande para la columna "BPELSE_USER"."CRMP"."CRMPINVOKEID" (real: 159, máximo: 128) at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70) at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:204) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:19 4) at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement. java:953) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java :1222) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedSta tement.java:3387) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedState ment.java:3468) at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePrepar edStatementWrapper.java:1062) at com.sun.jbi.engine.bpel.core.bpel.connection.AbstractDBConnection.insert(Abs tractDBConnection.java:120) at com.sun.jbi.engine.bpel.core.bpel.persist.impl.StateManagerImpl.performDBOpe rationForDBOs(StateManagerImpl.java:782) at com.sun.jbi.engine.bpel.core.bpel.persist.impl.StateManagerImpl.performDBTra nsactionForDBOs(StateManagerImpl.java:691) at com.sun.jbi.engine.bpel.core.bpel.persist.impl.StateManagerImpl.insertState( StateManagerImpl.java:425) at com.sun.jbi.engine.bpel.core.bpel.persist.impl.StateManagerImpl.persistState (StateManagerImpl.java:390) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.PersistenceManager.spec ificUpdateStateForStartElement(PersistenceManager.java:207) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.PersistenceManager.upda teState(PersistenceManager.java:192) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.ReceiveUnitImpl.consume Mesg(ReceiveUnitImpl.java:347) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.ReceiveUnitImpl.doActio n(ReceiveUnitImpl.java:281) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.CodeReUseHelper.execute ChildActivities(CodeReUseHelper.java:65) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.StructuredActivityUnitI mpl.executeChildActivities(StructuredActivityUnitImpl.java:193) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.StructuredActivityUnitI mpl.doAction(StructuredActivityUnitImpl.java:93) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.SequenceUnitImpl.doActi on(SequenceUnitImpl.java:95) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.CodeReUseHelper.execute ChildActivities(CodeReUseHelper.java:65) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.StructuredActivityUnitI mpl.executeChildActivities(StructuredActivityUnitImpl.java:193) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.BPELProcessInstanceImpl .doAction(BPELProcessInstanceImpl.java:650) at com.sun.jbi.engine.bpel.core.bpel.engine.impl.BPELInterpreter.execute(BPELIn terpreter.java:162) at com.sun.jbi.engine.bpel.core.bpel.engine.BusinessProcessInstanceThread.execu te(BusinessProcessInstanceThread.java:98) at com.sun.jbi.engine.bpel.core.bpel.engine.impl.BPELProcessManagerImpl.process (BPELProcessManagerImpl.java:1031) at com.sun.jbi.engine.bpel.core.bpel.engine.impl.EngineImpl.process(EngineImpl. java:289) at com.sun.jbi.engine.bpel.core.bpel.engine.impl.EngineImpl.process(EngineImpl. java:1291) at com.sun.jbi.engine.bpel.BPELSEInOutThread.processRequest(BPELSEInOutThread.j ava:566) at com.sun.jbi.engine.bpel.BPELSEInOutThread.processMsgEx(BPELSEInOutThread.jav a:290) at com.sun.jbi.engine.bpel.BPELSEInOutThread.run(BPELSEInOutThread.java:183) |#] I'm using Oracle, and created the user and database schema using the provided scripts for Oracle. Looks like the field CRMPINVOKEID is too small. This field seems to allocate a URL. Should I just make this field bigger, or is this a bug that should be solved in a different way? Thanks --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] |
||||||||||||||||
|
Philip Varghese
|
Some javascript/style in this post has been disabled (why?)
This is a bpel internal state persistence error, a column value size has exceeded its maximum value. Please file a bug in the open esb issue tracker page, and attach the test project, so that we can reproduce this error. We have not come across this error and it may be unique to your project and also the environment, so it is important that you attach a test project to the bug report. Thanks Philip Fernando Martín wrote: Hi, I'm still finding problems with distributed transactions. One of the requisites is to have BPEL persistence enabled, and now I'm having a problem with something not related to transaction: [#|2009-10-26T11:11:38.699+0100|WARNING|sun-appserver2.1|com.sun.jbi.engine. bpel.core.bpel.connection.AbstractDBConnection|_ThreadID=41;_ThreadName=sun- bpel-engine-thread-2;Process Instance Id=192.168.1.99:352d0bea:124904eaaa1:-7fba;Service Assembly Name=bpel_6;BPEL Process Name=ProcessPassport;_RequestID=68dea237-9131-490f-b2ce-57b16799c14e;|BPCOR- 6149: failed while executing SQL statement INSERT INTO CRMP (stateid, crmpinvokeid, partnerlink, operation) VALUES(?, ?, ?, ? ) java.sql.SQLException: ORA-12899: el valor es demasiado grande para la columna "BPELSE_USER"."CRMP"."CRMPINVOKEID" (real: 159, máximo: 128) at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70) at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:204) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:19 4) at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement. java:953) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java :1222) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedSta tement.java:3387) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedState ment.java:3468) at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePrepar edStatementWrapper.java:1062) at com.sun.jbi.engine.bpel.core.bpel.connection.AbstractDBConnection.insert(Abs tractDBConnection.java:120) at com.sun.jbi.engine.bpel.core.bpel.persist.impl.StateManagerImpl.performDBOpe rationForDBOs(StateManagerImpl.java:782) at com.sun.jbi.engine.bpel.core.bpel.persist.impl.StateManagerImpl.performDBTra nsactionForDBOs(StateManagerImpl.java:691) at com.sun.jbi.engine.bpel.core.bpel.persist.impl.StateManagerImpl.insertState( StateManagerImpl.java:425) at com.sun.jbi.engine.bpel.core.bpel.persist.impl.StateManagerImpl.persistState (StateManagerImpl.java:390) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.PersistenceManager.spec ificUpdateStateForStartElement(PersistenceManager.java:207) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.PersistenceManager.upda teState(PersistenceManager.java:192) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.ReceiveUnitImpl.consume Mesg(ReceiveUnitImpl.java:347) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.ReceiveUnitImpl.doActio n(ReceiveUnitImpl.java:281) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.CodeReUseHelper.execute ChildActivities(CodeReUseHelper.java:65) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.StructuredActivityUnitI mpl.executeChildActivities(StructuredActivityUnitImpl.java:193) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.StructuredActivityUnitI mpl.doAction(StructuredActivityUnitImpl.java:93) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.SequenceUnitImpl.doActi on(SequenceUnitImpl.java:95) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.CodeReUseHelper.execute ChildActivities(CodeReUseHelper.java:65) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.StructuredActivityUnitI mpl.executeChildActivities(StructuredActivityUnitImpl.java:193) at com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.BPELProcessInstanceImpl .doAction(BPELProcessInstanceImpl.java:650) at com.sun.jbi.engine.bpel.core.bpel.engine.impl.BPELInterpreter.execute(BPELIn terpreter.java:162) at com.sun.jbi.engine.bpel.core.bpel.engine.BusinessProcessInstanceThread.execu te(BusinessProcessInstanceThread.java:98) at com.sun.jbi.engine.bpel.core.bpel.engine.impl.BPELProcessManagerImpl.process (BPELProcessManagerImpl.java:1031) at com.sun.jbi.engine.bpel.core.bpel.engine.impl.EngineImpl.process(EngineImpl. java:289) at com.sun.jbi.engine.bpel.core.bpel.engine.impl.EngineImpl.process(EngineImpl. java:1291) at com.sun.jbi.engine.bpel.BPELSEInOutThread.processRequest(BPELSEInOutThread.j ava:566) at com.sun.jbi.engine.bpel.BPELSEInOutThread.processMsgEx(BPELSEInOutThread.jav a:290) at com.sun.jbi.engine.bpel.BPELSEInOutThread.run(BPELSEInOutThread.java:183) |#] I'm using Oracle, and created the user and database schema using the provided scripts for Oracle. Looks like the field CRMPINVOKEID is too small. This field seems to allocate a URL. Should I just make this field bigger, or is this a bug that should be solved in a different way? Thanks --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] |
||||||||||||||||
|
Murali Pottlapelli
|
In reply to this post
by fmartin
Is this issue resolved? making field bigger should be sufficient.
We are interested to know what scenarios it is exceeding the default limit, so we appreciate if you can describe your scenario or provide a test case. Regards Murali Fernando Martín wrote: > Hi, > > I'm still finding problems with distributed transactions. One of the > requisites is to have BPEL persistence enabled, and now I'm having a problem > with something not related to transaction: > > > [#|2009-10-26T11:11:38.699+0100|WARNING|sun-appserver2.1|com.sun.jbi.engine. > bpel.core.bpel.connection.AbstractDBConnection|_ThreadID=41;_ThreadName=sun- > bpel-engine-thread-2;Process Instance > Id=192.168.1.99:352d0bea:124904eaaa1:-7fba;Service Assembly Name=bpel_6;BPEL > Process > Name=ProcessPassport;_RequestID=68dea237-9131-490f-b2ce-57b16799c14e;|BPCOR- > 6149: failed while executing SQL statement INSERT INTO CRMP (stateid, > crmpinvokeid, partnerlink, operation) VALUES(?, ?, ?, ? ) > java.sql.SQLException: ORA-12899: el valor es demasiado grande para la > columna "BPELSE_USER"."CRMP"."CRMPINVOKEID" (real: 159, máximo: 128) > > at > oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70) > at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131) > at > oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:204) > at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455) > at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413) > at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034) > at > oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:19 > 4) > at > oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement. > java:953) > at > oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java > :1222) > at > oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedSta > tement.java:3387) > at > oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedState > ment.java:3468) > at > oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePrepar > edStatementWrapper.java:1062) > at > com.sun.jbi.engine.bpel.core.bpel.connection.AbstractDBConnection.insert(Abs > tractDBConnection.java:120) > at > com.sun.jbi.engine.bpel.core.bpel.persist.impl.StateManagerImpl.performDBOpe > rationForDBOs(StateManagerImpl.java:782) > at > com.sun.jbi.engine.bpel.core.bpel.persist.impl.StateManagerImpl.performDBTra > nsactionForDBOs(StateManagerImpl.java:691) > at > com.sun.jbi.engine.bpel.core.bpel.persist.impl.StateManagerImpl.insertState( > StateManagerImpl.java:425) > at > com.sun.jbi.engine.bpel.core.bpel.persist.impl.StateManagerImpl.persistState > (StateManagerImpl.java:390) > at > com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.PersistenceManager.spec > ificUpdateStateForStartElement(PersistenceManager.java:207) > at > com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.PersistenceManager.upda > teState(PersistenceManager.java:192) > at > com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.ReceiveUnitImpl.consume > Mesg(ReceiveUnitImpl.java:347) > at > com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.ReceiveUnitImpl.doActio > n(ReceiveUnitImpl.java:281) > at > com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.CodeReUseHelper.execute > ChildActivities(CodeReUseHelper.java:65) > at > com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.StructuredActivityUnitI > mpl.executeChildActivities(StructuredActivityUnitImpl.java:193) > at > com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.StructuredActivityUnitI > mpl.doAction(StructuredActivityUnitImpl.java:93) > at > com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.SequenceUnitImpl.doActi > on(SequenceUnitImpl.java:95) > at > com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.CodeReUseHelper.execute > ChildActivities(CodeReUseHelper.java:65) > at > com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.StructuredActivityUnitI > mpl.executeChildActivities(StructuredActivityUnitImpl.java:193) > at > com.sun.jbi.engine.bpel.core.bpel.model.runtime.impl.BPELProcessInstanceImpl > .doAction(BPELProcessInstanceImpl.java:650) > at > com.sun.jbi.engine.bpel.core.bpel.engine.impl.BPELInterpreter.execute(BPELIn > terpreter.java:162) > at > com.sun.jbi.engine.bpel.core.bpel.engine.BusinessProcessInstanceThread.execu > te(BusinessProcessInstanceThread.java:98) > at > com.sun.jbi.engine.bpel.core.bpel.engine.impl.BPELProcessManagerImpl.process > (BPELProcessManagerImpl.java:1031) > at > com.sun.jbi.engine.bpel.core.bpel.engine.impl.EngineImpl.process(EngineImpl. > java:289) > at > com.sun.jbi.engine.bpel.core.bpel.engine.impl.EngineImpl.process(EngineImpl. > java:1291) > at > com.sun.jbi.engine.bpel.BPELSEInOutThread.processRequest(BPELSEInOutThread.j > ava:566) > at > com.sun.jbi.engine.bpel.BPELSEInOutThread.processMsgEx(BPELSEInOutThread.jav > a:290) > at > com.sun.jbi.engine.bpel.BPELSEInOutThread.run(BPELSEInOutThread.java:183) > |#] > > I'm using Oracle, and created the user and database schema using the > provided scripts for Oracle. Looks like the field CRMPINVOKEID is too small. > This field seems to allocate a URL. Should I just make this field bigger, or > is this a bug that should be solved in a different way? > > Thanks > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [hidden email] > For additional commands, e-mail: [hidden email] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] |
||||||||||||||||
| Free Embeddable Forum Powered by Nabble | Help |