XA transaction towards WLS

5 messages Options
Embed this post
Permalink
alexndr

XA transaction towards WLS

Reply Threaded More More options
Print post
Permalink
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

Re: XA transaction towards WLS

Reply Threaded More More options
Print post
Permalink
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

BPEL Persistence

Reply Threaded More More options
Print post
Permalink
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

Re: BPEL Persistence

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
Hi Fernando,
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

Re: BPEL Persistence

Reply Threaded More More options
Print post
Permalink
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]