View Full Version : Application Server Integration.
03-23-2006, 04:11 AM
We would like to create workflows within kettle that include custom plugins steps in our transformations, then execute them within an application server (JBoss in particular). Ideally we would then be able to deploy our ear to any jboss instance without needing to install kettle. Is there any documentation on how to integrate kettle into an app server?
03-23-2006, 04:17 AM
There have been some messages on the forum concerning this.
The main trick is to make sure that you init the classload with the location(s) of the plugins. In an app-server environment you need to do this.
Other that this, it seems pretty straightforward, just include kettle.jar in the ear/war file and the drivers you need like Rhino (js.jar) JDBC, ...
Please check Pan.java to get an idea of the things to init before you can launch a transformation. Same with Chef.java for jobs.
03-24-2006, 06:15 AM
Is there also a way then to have a database connection come from a server managed datasource?
Thanks for the quick response.
03-24-2006, 06:23 AM
No, not yet, although it makes sense, it's a completely new habitat for Kettle.
We would probably have to add an attribute to the database connections allowing us to specify the JNDI data source. Additional to Native (JDBC), ODBC, OCI we would have JNDI.
Would it be hard to do you think?
What kind of dependencies would we introduce into Kettle if we did?
03-24-2006, 06:35 AM
That is a good question. I think the way the steps are so extensible is very nice, it would be ideal if database connection could be some sort of a plugin. If i wanted one that reads from jndi, i could do that. if i wanted one that read from ldap, i could do that. that would be ideal.
Then the dependancies introduced are based on what plugins you wanted to implement with the out of the box distribution.
03-24-2006, 10:26 AM
Database Connection plugins are already high on the wishlist. The reason was mostly the incompatibilities between JDBC driver and database versions. (Oracle is the worst in this regard but there are others)
Connecting to JNDI should be easier. I'm no expert but isn't a JNDI connection with the class to load the port, the database name etc. defined in an XML on the application somewhere? Those settings are no longer required. However, we still need to know the database dialect, version etc. So there is bound to be some overlap.
Perhaps we can dump the JNDI logic in a separate jar file. Loading is already done dynamically of-course.
In that case, we would only need additional dependencies at compile time which would be fine I guess.
Just some random thoughts. I guess the whole Kettle connection plugin mechanism is not that hard to do, most of the custom classloaders etc. are already there.
All the best,