Datasource not binding when trying to access DatabaseServerL
sanjuthomas Apr 6, 2004 3:01 AMhi all,
wer are trying use DatabaseServerLoginModule to secure EJBs, but when we try to access DatabaseServerLoginModule we are getting Exception that Datasource not bound. please see the code
login-config.xml
<application-policy name="OptiwiseDatabase">
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="dsJndiName">java:/OracleDS</module-option
<module-option name="principalsQuery">"SELECT OW_PASSWORD FROM OW_T_USER WHERE OW_USERID=?"</module-option>
<module-option name="rolesQuery">"SELECT OW_T_ROLE.OW_NAME FROM OW_T_ROLE WHERE OW_OID IN (SELECT OW_T_USERROLE.OW_ROLEOID FROM OW_T_USERROLE WHERE OW_USEROID = (SELECT OW_T_USER.OW_OID FROM OW_T_USER WHERE OW_USERID=?))"</module-option>
</login-module>
</application-policy>
client program
import javax.naming.Context;
import java.util.Hashtable;
import javax.naming.InitialContext;
import javax.security.auth.login.LoginContext;
import org.apache.log4j.Logger;
import org.jboss.security.auth.callback.UsernamePasswordHandler;
/**
*
* @author Optiwise
*/
public class OptiwiseTestClient
{
public static void main(String args[]) throws Exception
{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL, "jnp://localhost:1099");
Logger log = Logger.getLogger("OptiwiseDatabase");
log.info("Login with username="+args[0]+", password="+args[1]);
UsernamePasswordHandler handler = new UsernamePasswordHandler(args[0], args[1].toCharArray());
LoginContext lc = new LoginContext("OptiwiseDatabase", handler);
lc.login();
log.info("Looking up RequestMgr Bean");
InitialContext iniCtx = new InitialContext(env);
Object ref = iniCtx.lookup("RequestMgr");
RequestMgrHome home = (RequestMgrHome) ref;
RequestMgr ob1 = home.create();
log.info(ob1);
System.out.println(ob1);
log.info("Created Request Manager Object");
lc.logout();
}
}
auth.conf
OptiwiseDatabase
{
org.jboss.security.auth.spi.DatabaseServerLoginModule required
dsJndiName="java:/OracleDS";
};
Exception when running the client program
F:\sanju\work\JBoss>java -Djava.security.auth.login.config=%JBOSS_HOME%\client\a
uth.conf OptiwiseTestClient sanju sanju
Exception in thread "main" javax.security.auth.login.LoginException: javax.namin
g.NameNotFoundException: OracleDS not bound
at org.jboss.security.auth.spi.DatabaseServerLoginModule.getUsersPasswor
d(DatabaseServerLoginModule.java:110)
at org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(Usernam
ePasswordLoginModule.java:150)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at javax.security.auth.login.LoginContext.invoke(LoginContext.java:664)
at javax.security.auth.login.LoginContext.access$000(LoginContext.java:1
29)
at javax.security.auth.login.LoginContext$4.run(LoginContext.java:599)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.LoginContext.invokeModule(LoginContext.java
:596)
at javax.security.auth.login.LoginContext.login(LoginContext.java:523)
at OptiwiseTestClient.main(OptiwiseTestClient.java:24)
if anybody know waht is the error please help me.......
thanking you
sanju