ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Boisvert" <boisv...@intalio.com>
Subject Re: Ode.war; persistency with MySQL using BEA Weblogic Server
Date Sun, 25 Nov 2007 05:23:16 GMT
Hi Toto,

(Not sure this is your actual name, but hey, I figured it sounded better
than Pimousse76)

1) Yes, practically Ode requires a database.  You could reimplement the DAOs
to use something different but that would require more work (this is an
understatement).

2) To use Ode in Weblogic, you'll need to implement your own
TransactionManagerFactory, similar to the JBoss
factory<http://svn.apache.org/repos/asf/ode/branches/APACHE_ODE_1.1/axis2/src/main/java/org/apache/ode/axis2/util/JBossFactory.java>,
to look up the TransactionManager from the JNDI context.  You'll also need
to configure ode-axis2.properties to use this factory.  This will probably
solve the OpenJPA issue you had.

cheers,
alex


On 11/23/07, Toto Toto <pimousse76@gmail.com> wrote:
>
> Hi everyone,
>
> As per documentation, ODE is running with an embedded db (Derby),
> through OpenJPA framework. My aim is to plug a MySQL database - for
> the time being, as the targeted candidate would likely be Oracle or
> SQL Server (anyway, the goal is identical).
>
> I read the ODE doumentation, had a look to the OpenJPA one, and I must
> admit I did not find any guide demonstrating how to unplug Derby in
> favor of MySQL. I've quote some questions below. Don't hesitate to
> re-route me to some documentation if I missed it.
>
> Thanks in advance.
>
> ========== Ecosystem
> + BEA Weblogic 10, Java 5.0
> + ODE 1.1 (downloaded the war)
> + MySQL 5.0.45
>
> ========== Is persistency mandatory?
> First, I would like to understand if ODE requires or not a DB /
> persistency mechanism.
>
> "ODE Execution Events" paragraph of the User Guide
> (http://ode.apache.org/user-guide.html) says that events are
> persisted. However, it also says that it is possible to completely
> deactivate them.
>
> "ODE Data Access Objects" paragraph of the Architectural Overview page
> (http://ode.apache.org/achitectural-overview.html) says that "the BPEL
> Engine Runtime requires DAO objects to deal with the following
> persistence issues:
> * active instances – keeping track of which instances have been created
> * message routing – which instance is waiting for which message
> * variables – the values of the BPEL variables for each instance
> * partner links – the values of the BPEL partner links for each instance
> * process execution state – the serialized state of the Jacob
> "persistent virtual machine"
> But is this also valid for short running processes? Indeed, I do not
> plan to create at all long running processes that would require to
> persist states...
>
> Finally, "Additional Settings" paragraph of
> http://ode.apache.org/creating-a-process.html page says that "[one]
> can define a process as being executed only in-memory. This greatly
> reduces the amount of generated queries and puts far less load on your
> database."
>
> Still, it is not 100% clear to me either ODE requires persistency or
> not. I would say so, but...
> By the way, what is the minimal scope of data to be persisted?
> Is
> http://svn.apache.org/viewvc/ode/trunk/dao-hibernate-db/src/main/sql/simplesched-mysql.sql?view=markup
> the only schema to create in MySQL?
>
>
> ========== Overriding persistency settings
> First, I would like to understand, in case of ode.war, at which layer
> the persistency settings have to be overriden:
> - ODE layer: I did not find any conf file directly related to ODE
> persistency config...
> - OpenJPA: I found some persistence.xml files packaged into some
> jars, but I do not think that's the right place.
> - axis level, through ode-axis2.properties.
>
> Even if I am a bit puzzled - it sounds strange to me that Axis drives
> ODE db settings... - I would say the latter case apply. Is this the
> appropriate solution?
>
> Indeed, from this link:
>
> http://groups.google.com/group/tempo-dev/browse_thread/thread/03175939ca3e395a/046b3e91222fe83d?#046b3e91222fe83d
> I understood that a ode-axis2.properties file had to be set in
> ode.war/WEB-INF/conf folder in order to override the database
> settings. Here is how mine looks like:
>
> ode-axis2.db.mode=EXTERNAL
> ode-axis2.db.ext.dataSource=java:mysql/jdbc/odePool/OdePool
> ode-axis2.tx.factory.class=org.apache.ode.axis2.util.JBossFactory
> ode-axis2.message.replicate.emptyns=true
>
> ode-axis2.dao.factory=org.apache.ode.daohib.bpel.BpelDAOConnectionFactoryImpl
>
> Obvisouly, this configuration produces exceptions:
>
> weblogic.application.ModuleException: [HTTP:101216]Servlet:
> "AxisServlet" failed to preload on startup in Web application: "ode".
> java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.apache.ode.axis2.ODEServer.initTxMgr(ODEServer.java:381)
> at org.apache.ode.axis2.ODEServer.init(ODEServer.java:141)
> at org.apache.ode.axis2.hooks.ODEAxisServlet.init(ODEAxisServlet.java:47)
> at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(
> StubSecurityHelper.java:282)
> at ....
> Caused by: java.lang.RuntimeException: Error while looking up
> TransactionManager at java:/TransactionManager
> at org.apache.ode.axis2.util.JBossFactory.getTransactionManager(
> JBossFactory.java:44)
> ... 47 more
> Caused by: javax.naming.NameNotFoundException: While trying to look up
> /TransactionManager in /app/webapp/ode/20490977.; remaining name
> '/TransactionManager'
> at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(
> BasicNamingNode.java:1138)
> ...
>
> As it could have been expected, both JBossFactory and GeronimoFactory
> failed to be instanciated in the context of a Weblogic server.
> Therefore I'll have to implement one.
> Except this development, is the configuration ok?
>
> Indeed, just after this exception, I have another one, related to
> OpenJPA itself:
> <4|true|0.9.7> org.apache.openjpa.persistence.ArgumentException: A
> JDBC Driver or DataSource class name must be specified in the
> ConnectionDriverName property.
> at org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(
> DataSourceFactory.java:67)
> at
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory
> (JDBCConfigurationImpl.java:797)
> at
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance
> (JDBCConfigurationImpl.java:563)
>
> It sounds to be related to
> http://openjpa.apache.org/docs/latest/manual/dbsupport_mysql.html
> If I well understood, these parameters have to be defined in an
> openjpa.xml configuration file, that should be deployed in
> ode.war/META-INF
>
> Am I right?
>
> ========
> Sorry for this long email. Any help would be greatly appreciated ;o)
>
> Regards.
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message