[jboss-user] [Datasource Configuration] - Data source configuration during runtime

Grzegorz Gwoźdź do-not-reply at jboss.com
Mon Nov 15 13:42:59 EST 2010

Grzegorz Gwoźdź [http://community.jboss.org/people/gwozdziu] created the discussion

"Data source configuration during runtime"

To view the discussion, visit: http://community.jboss.org/message/571285#571285

Hi everyone. I need to implement a solution that would enable me to change data source configuration during runtime. There is a system A that admins have access to and whre they put configuration for stuff, including db configuration. You can think of it as "Configuration Central".

Component in another system - lets call it B - periodically reads that configuration. When configuration in A changes, system B detects that change and updets itself. I need to implement a solution that would enable me to change datasource configuration on the fly to use new configuration from system A without a need to restart the jboss.

*Conenction URL change*

I am able to change the connection url infollowing way...
1. DataSource has few underlying components (MBeans). One of them is ManagedConnectionFactory. 
2. I do a JNDI lookup on this one, then cast it to org.jboss.resource.connectionmanager.RARDeploymentMBean to have access to properties
3. I use RARDeploymentMBean#setManagedConnectionFactoryAttribute(arg0, arg1, arg2) to set the url
Looks good so far.

*Credentials switch*

Then I need to update the the credentials - username and password. There is a component named org.jboss.security.auth.login.DynamicLoginConfig with a parameter AuthConfig that points to a file that stores various policies conatining username and password. Here is an abstract from this file:
  <application-policy name="MyName_LoginDomain">
      <login-module code="org.jboss.resource.security.SecureIdentityLoginModule" flag="required">
    <module-option name="username">username</module-option>
    <module-option name="password">password</module-option>
    <module-option name="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=MyName_DS</module-option>

I also found that each datasource has a ConnectionManager attribute, and this connection manager could also be found using JNDI lookup. It has an attribute called SecurityDomainJndiName with value of MyName_LoginDomain. Using this one I could switch between predefined LoginDomain as I like to call them. Those are in fact instances of org.jboss.security.plugins.SecurityDomainContext.

Admins switch data base to which in system A  to which system B should connect. I change te url, then I switch to correct SecurityDomainContext and that is fine. However when database username or password changes I have no idea what to do other than updating the file pointed by DynamicLoginConfig.AuthConfig and restarting jboss after it. Is there any way to change username and password associated with given SecurityDomainContext during runtime?

Sorry for such a large post, but I wanted to describe the whole problem to be clear. If you need any addtional information so that we could think it out together just let me know. Thanks a lot for any help!

Reply to this message by going to Community

Start a new discussion in Datasource Configuration at Community

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20101115/8b943aa1/attachment.html 

More information about the jboss-user mailing list