You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@rave.apache.org by "Ate Douma (JIRA)" <ji...@apache.org> on 2013/02/26 17:14:13 UTC

[jira] [Created] (RAVE-901) Move database access to container provided JNDI resource

Ate Douma created RAVE-901:
------------------------------

             Summary: Move database access to container provided JNDI resource
                 Key: RAVE-901
                 URL: https://issues.apache.org/jira/browse/RAVE-901
             Project: Rave
          Issue Type: Improvement
    Affects Versions: 0.20
            Reporter: Ate Douma
            Assignee: Ate Douma
             Fix For: 0.21


Currently we configure database access through the rave portal.properties and rave.shindig.properties files deployed within their war application (portal and ROOT).
This however should be more the responsibility of the admin deployer and be managed at the container (application server) level. Typically this is done through JNDI resource lookups.

This will also solve a current issue with the default H2 database engine, also bundled with both web applications, as they (by default) point to the same database and therefore can cause concurrent usage conflicts, causing exceptions like this:

    org.h2.jdbc.JdbcSQLException: Database may be already in use: "Locked by another process". Possible solutions: close all other connection(s); use the server mode 

By moving to container provided JNDI resources, this problem can be solved as we then can deploy the H2 database engine (jar) on container level (only) and access will go through a single classloader without the above problems.

The consequence of this will be that existing projects will have to be updated for the new configuration, meaning that the above mentioned property files will no longer define the complete database connection configuration but only a NEW property which I will call rave.dataSource.name, specifying the JNDI resource lookup name, e.g. like 
    rave.dataSource.name=jdbc/ravePortalDB (for the portal.properties)
and
    rave.dataSource.name=jdbc/raveShindigDB (for the rave.shindig.properties)

Through an updated cargo configuration, these JNDI resources will be 'automatically' configured and setup for the target container (Tomcat), using Maven pom properties for the specific connection parameters (which then can be overridden/customized in your custom projects).  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira