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.

Reply via email to