<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    Data source configuration during runtime
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="http://community.jboss.org/people/gwozdziu">Grzegorz Gwoźdź</a> in <i>Datasource Configuration</i> - <a href="http://community.jboss.org/message/571285#571285">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>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".</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>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.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><strong>Conenction URL change</strong></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I am able to change the connection url infollowing way...</p><ol><li>DataSource has few underlying components (MBeans). One of them is ManagedConnectionFactory. </li><li>I do a JNDI lookup on this one, then cast it to org.jboss.resource.connectionmanager.RARDeploymentMBean to have access to properties</li><li>I use RARDeploymentMBean#setManagedConnectionFactoryAttribute(arg0, arg1, arg2) to set the url</li></ol><p>Looks good so far.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><strong>Credentials switch</strong></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>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:</p><p>&#160; &lt;application-policy name="MyName_LoginDomain"&gt;<br/>&#160;&#160;&#160; &lt;authentication&gt;<br/>&#160;&#160;&#160;&#160;&#160; &lt;login-module code="org.jboss.resource.security.SecureIdentityLoginModule" flag="required"&gt;<br/>&#160;&#160;&#160; &lt;module-option name="username"&gt;username&lt;/module-option&gt;<br/>&#160;&#160;&#160; &lt;module-option name="password"&gt;password&lt;/module-option&gt;<br/>&#160;&#160;&#160; &lt;module-option name="managedConnectionFactoryName"&gt;jboss.jca:service=LocalTxCM,name=MyName_DS&lt;/module-option&gt;<br/>&#160;&#160;&#160;&#160;&#160; &lt;/login-module&gt;<br/>&#160;&#160;&#160; &lt;/authentication&gt;<br/>&#160; &lt;/application-policy&gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>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.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><strong>Problem</strong></p><p>Admins switch data base to which in system A&#160; 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?</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>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!</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre>
</pre></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/571285#571285">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in Datasource Configuration at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2077">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>