We want to deploy ODE to SMX 4.
To do this I downloaded SMX4, run it, and place ode-jbi-1.2.jar (which
is basically jbi component), to SMX_HOME/deploy folder.
In log file I've found following:
java.lang.RuntimeException: TransactionManager is not recoverable.
at org.apache.ode.il.dbutil.Database.initInternalDb(Database.java:179)
at org.apache.ode.il.dbutil.Database.initEmbeddedDb(Database.java:232)
at org.apache.ode.il.dbutil.Database.initDataSource(Database.java:147)
at org.apache.ode.il.dbutil.Database.start(Database.java:99)
at org.apache.ode.jbi.OdeLifeCycle.initDataSource(OdeLifeCycle.java:175)
at org.apache.ode.jbi.OdeLifeCycle.init(OdeLifeCycle.java:113)
at
org.apache.servicemix.jbi.deployer.impl.ComponentImpl$ComponentWrapper.init(ComponentImpl.java:258)
So, ODE component want transaction manager, taken from jbi component
context to be instance of
org.apache.geronimo.transaction.manager.RecoverableTransactionManager
interface. To check it ODE use instanseof operator.
As I checked from spring-dm description file, placed in
org.apache.servicemix.transaction bundle:
<osgi:service ref="transactionManager">
<osgi:interfaces>
<value>javax.transaction.TransactionManager</value>
<value>org.apache.geronimo.transaction.manager.RecoverableTransactionManager</value>
<value>org.springframework.transaction.PlatformTransactionManager</value>
</osgi:interfaces>
</osgi:service>
And
org.apache.geronimo.transaction.manager.RecoverableTransactionManager
class exported by geronimo-transaction-2.2.jar bundle
The problem is: ODE jbi component classloader can't import
RecoverableTransactionManager from geronimo-transaction-2.2 bundle, at
least I don't know how to do this, and of course
"transactionManager instanceof RecoverableTransactionManager"
will return false.
So, obviously, ODE-JBI not adopted to run in SMX4 OSGI based
environment. But we are really need to get it runing.