Occasionally when developing an action sequence to extend the Pentaho BI platform, the action sequence needs access to information in a relational database. The Relational action or SQL Command action can be added to the action sequence to get access to this information.
The Relational and SQL Command actions are configured to reference a specific database using the database's JNDI name. When running the Pentaho BI Platform in the JBoss Application server, there are several steps required to successfully configure a JNDI name for the datasource. In the example, I'll use values appropriate for a MySQL database, and I'll be using the Pentaho Preconfigured Install to verify that the datasource was configured properly.
|Working with the Preconfigured Install|
You will need to learn how to install and work with the Pentaho preconfigured install in order to test your datasource configuration.
The first step is to get a driver for your database and drop the driver file into /pentaho-preconfiguredinstall/server/default/lib. You can get the MySQL driver from the MySQL driver download page. Extract the driver (mysql-connector-java-5.0.4/mysql-connector-java-5.0.4-bin.jar) from the zip file and place it in the /pentaho-preconfiguredinstall/server/default/lib folder.
|Configuration Property Names for the Example|
For the example, I will choose myJNDIName for my JNDI name, myDatebaseName for my database name, username for the username, and password for the password.
After installing the driver, you'll need to configure the JBoss server with a datasource and a JNDI name to reference the datasource. This is done by creating a datasource definition file in /pentaho-preconfiguredinstall/server/default/deploy. The datasource definition file is an XML file whose name consists of an arbitrary name followed by "-ds.xml", for instance, my-datasource-name-ds.xml.
Below is an example of a datasource definition file. The datasource is referenced by the JNDI name myJNDIName, and is configured to connect to a database named myDatabaseName which is hosted on a MySQL RDBMS. The RDBMS is hosted on a machine called localhost, and the RDBMS is listening for connections on port 3306.
Bellow is the same BD now on a PostgreSQL server localhost, port 5432:
TODO: create sample datasource definition files for other RDBMSs.
Almost there! Now, modify the pentaho web application configuration files to include our connection info.
- Locate the web.xml file in <pci-home>\jboss\server\default\deploy\pentaho.war\WEB-INF.
- Inside the <webapp></webapp> tags, after the last </resource-ref> tag, add the following:
NOTE that the <res-ref-name> value should match the JNDI name used in the report definition above, preceded by "jdbc/".
- Locate the jboss-web.xml file in <pci-home>\jboss\server\default\deploy\pentaho.war\WEB-INF.
- Inside the <jboss-web></jboss-web> tags, after the last </resource-ref> tag, add the following:
NOTE that the <res-ref-name> value and the <jndi-name> value should include the JNDI name used in the report definition above.
Please note you have to use the proper configuration based on your database supplier. Example above has used MySQL, but if you were using PostgreSQL for instance you would have to have it changed accordingly.
The above directions were missing from this article, but where present in many others, like in http://wiki.pentaho.com/display/COM/Designing+Reports+With+MySQL+and+JNDI, from where it was copied from.
That is it! You now have to restart the Pentaho preconfigured install.
To test the datasource configuration, you'll need to have the Pentaho preconfigured install setup and running.
|Creating the Action Sequence using the Design Studio|
In order to create the Action Sequence to test your datasource configuration, you may like to use the Pentaho Design Studio. You can get the Design Studio from SourceForge: pentaho-design-studio_188.8.131.521-GA.zip. The Design Studio is implemented as an Eclipse plugin.
Prior to creating the Action Sequence, it may be useful to learn more about using the Design Studio and its Action Sequence Editor.