You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Uros Kotnik <ur...@asterius.co.yu> on 2003/03/03 09:17:16 UTC

RE: DataSource realm, apply fix for 16316 bug, still not working ?

Basicaly my own Realm implementation is copy/paste DataSourceRealm, I
just changed preparedRoles and preparedCredentials in start() and also
modified hasRole(Principal principal, String role) for my needs, but
exception that I get is when opening DataSource which is defined in
Context, it seemes that Context is not started yet when opening DB
connection from Realm ?


-----Original Message-----
From: Glenn Nielsen [mailto:glenn@mail.more.net] 
Sent: Tuesday, February 25, 2003 17:18 
To: Tomcat Developers List
Subject: Re: DataSource realm, apply fix for 16316 bug, still not
working ?

So the problem isn't in the DataSourceRealm that comes with Tomcat?
It is in your own Realm implementation?  If so, debugging the problem
is up to you.

 From your config you might try using the fully qualified JNDI name
in your Realm config "java:env/jdbc/hsqldb".

Regards,

Glenn
Uros Kotnik wrote:
> OK, I'm doing this:
> 
> 
> I made class 
> -------------
> 
> public class UserManager
>     extends RealmBase
> 
> It's almost same like DataSourceRealm just little changed to suit my
DB.
> 
> I deleted code parts from start() that validates that we can open our
> connection and also put this code part  to 
> 
> public Principal authenticate(String username, String credentials)
> 
> if (dbConnection == null) {
>                 return null;
>             }
> 
> 
> 
> 
> This is where I get exception
> -----------------------------
> 
> private Connection open() {
>         try {
>             StandardServer server = (StandardServer)
> ServerFactory.getServer();
>             Context context = server.getGlobalNamingContext();
>             DataSource dataSource =
> (DataSource)context.lookup(dataSourceName); //exception here
> 
>             return dataSource.getConnection();
>         } catch (Exception e) {
>             // Log the problem for posterity
>             log(sm.getString("dataSourceRealm.exception"), e);
>         }
>         return null;
>     }
> 
> This is from the log:
> ---------------------
> 
> 003-02-25 15:09:16 DataSourceRealm[]: Exception performing
> authentication
> javax.naming.NameNotFoundException: Name jdbc is not bound in this
> Context
> at org.apache.naming.NamingContext.lookup(NamingContext.java:811)
> at org.apache.naming.NamingContext.lookup(NamingContext.java:194)
> at org.asterius.tomcat.security.UserManager.open(UserManager.java:647)
> at
>
org.asterius.tomcat.security.UserManager.authenticate(UserManager.java:4
> 80)
> at
>
org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAut
> henticator.java:263) at
>
org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticator
> Base.java:480)
> 
> 
> 
> This is Server.xml
> ------------------
> 
> <Context debug="0" docBase="C:\Projects\ipcs\ipcs" path=""
> workDir="C:\Projects\ipcs\ipcs">
> 
> 
>   <Resource name="jdbc/hsqldb"
> 	auth="Container"
> 	type="javax.sql.DataSource"/>
> 
>   <ResourceParams name="jdbc/hsqldb">
>     <parameter>
>       <name>factory</name>
>       <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
>     </parameter>
> 
>     <parameter>
>       <name>maxActive</name>
>       <value>100</value>
>     </parameter>
> 
>     <parameter>
>       <name>maxIdle</name>
>       <value>30</value>
>     </parameter>
> 
>    
>     <parameter>
>       <name>maxWait</name>
>       <value>10000</value>
>     </parameter>
> 
>     <!-- dB username and password for dB connections  -->
>     <parameter>
>      <name>username</name>
>      <value>iuser</value>
>     </parameter>
>     <parameter>
>      <name>password</name>
>      <value>iuser</value>
>     </parameter>
> 
>     <!-- Class name for JDBC driver -->
>     <parameter>
>        <name>driverClassName</name>
>        <value>org.hsqldb.jdbcDriver</value>       
>     </parameter>
> 
>     <parameter>
>       <name>url</name>
>       <value>jdbc:hsqldb:hsql://asterix</value>      
>     </parameter>
>   </ResourceParams>
> 	
> 	
> 
> <Realm className="org.asterius.tomcat.security.UserManager" debug="99"

>    dataSourceName="jdbc/hsqldb"
>    userTable="ic_users" userNameCol="login_name"
userCredCol="password"
>    userRoleTable="ic_groups" roleNameCol="group_name" 
>    linkUserRoleTable="ic_users_groups" groupIDcol="id_group"
> userIDcol="id_user"
>    userIDlang = "id_language" userRealName="real_name"
>    />					
> 
> 

----------------------------------------------------------------------
Glenn Nielsen             glenn@more.net | /* Spelin donut madder    |
MOREnet System Programming               |  * if iz ina coment.      |
Missouri Research and Education Network  |  */                       |
----------------------------------------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org


Re: DataSource realm, apply fix for 16316 bug, still not working ?

Posted by Glenn Nielsen <gl...@mail.more.net>.
Take a step back and see if you can access the JDBC DataSource from
a test jsp page in your context.  First make sure your DataSource is
configured correctly.

Glenn

Uros Kotnik wrote:
> Basicaly my own Realm implementation is copy/paste DataSourceRealm, I
> just changed preparedRoles and preparedCredentials in start() and also
> modified hasRole(Principal principal, String role) for my needs, but
> exception that I get is when opening DataSource which is defined in
> Context, it seemes that Context is not started yet when opening DB
> connection from Realm ?
> 
> 
> -----Original Message-----
> From: Glenn Nielsen [mailto:glenn@mail.more.net] 
> Sent: Tuesday, February 25, 2003 17:18 
> To: Tomcat Developers List
> Subject: Re: DataSource realm, apply fix for 16316 bug, still not
> working ?
> 
> So the problem isn't in the DataSourceRealm that comes with Tomcat?
> It is in your own Realm implementation?  If so, debugging the problem
> is up to you.
> 
>  From your config you might try using the fully qualified JNDI name
> in your Realm config "java:env/jdbc/hsqldb".
> 
> Regards,
> 
> Glenn
> Uros Kotnik wrote:
> 
>>OK, I'm doing this:
>>
>>
>>I made class 
>>-------------
>>
>>public class UserManager
>>    extends RealmBase
>>
>>It's almost same like DataSourceRealm just little changed to suit my
> 
> DB.
> 
>>I deleted code parts from start() that validates that we can open our
>>connection and also put this code part  to 
>>
>>public Principal authenticate(String username, String credentials)
>>
>>if (dbConnection == null) {
>>                return null;
>>            }
>>
>>
>>
>>
>>This is where I get exception
>>-----------------------------
>>
>>private Connection open() {
>>        try {
>>            StandardServer server = (StandardServer)
>>ServerFactory.getServer();
>>            Context context = server.getGlobalNamingContext();
>>            DataSource dataSource =
>>(DataSource)context.lookup(dataSourceName); //exception here
>>
>>            return dataSource.getConnection();
>>        } catch (Exception e) {
>>            // Log the problem for posterity
>>            log(sm.getString("dataSourceRealm.exception"), e);
>>        }
>>        return null;
>>    }
>>
>>This is from the log:
>>---------------------
>>
>>003-02-25 15:09:16 DataSourceRealm[]: Exception performing
>>authentication
>>javax.naming.NameNotFoundException: Name jdbc is not bound in this
>>Context
>>at org.apache.naming.NamingContext.lookup(NamingContext.java:811)
>>at org.apache.naming.NamingContext.lookup(NamingContext.java:194)
>>at org.asterius.tomcat.security.UserManager.open(UserManager.java:647)
>>at
>>
> 
> org.asterius.tomcat.security.UserManager.authenticate(UserManager.java:4
> 
>>80)
>>at
>>
> 
> org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAut
> 
>>henticator.java:263) at
>>
> 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticator
> 
>>Base.java:480)
>>
>>
>>
>>This is Server.xml
>>------------------
>>
>><Context debug="0" docBase="C:\Projects\ipcs\ipcs" path=""
>>workDir="C:\Projects\ipcs\ipcs">
>>
>>
>>  <Resource name="jdbc/hsqldb"
>>	auth="Container"
>>	type="javax.sql.DataSource"/>
>>
>>  <ResourceParams name="jdbc/hsqldb">
>>    <parameter>
>>      <name>factory</name>
>>      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
>>    </parameter>
>>
>>    <parameter>
>>      <name>maxActive</name>
>>      <value>100</value>
>>    </parameter>
>>
>>    <parameter>
>>      <name>maxIdle</name>
>>      <value>30</value>
>>    </parameter>
>>
>>   
>>    <parameter>
>>      <name>maxWait</name>
>>      <value>10000</value>
>>    </parameter>
>>
>>    <!-- dB username and password for dB connections  -->
>>    <parameter>
>>     <name>username</name>
>>     <value>iuser</value>
>>    </parameter>
>>    <parameter>
>>     <name>password</name>
>>     <value>iuser</value>
>>    </parameter>
>>
>>    <!-- Class name for JDBC driver -->
>>    <parameter>
>>       <name>driverClassName</name>
>>       <value>org.hsqldb.jdbcDriver</value>       
>>    </parameter>
>>
>>    <parameter>
>>      <name>url</name>
>>      <value>jdbc:hsqldb:hsql://asterix</value>      
>>    </parameter>
>>  </ResourceParams>
>>	
>>	
>>
>><Realm className="org.asterius.tomcat.security.UserManager" debug="99"
> 
> 
>>   dataSourceName="jdbc/hsqldb"
>>   userTable="ic_users" userNameCol="login_name"
> 
> userCredCol="password"
> 
>>   userRoleTable="ic_groups" roleNameCol="group_name" 
>>   linkUserRoleTable="ic_users_groups" groupIDcol="id_group"
>>userIDcol="id_user"
>>   userIDlang = "id_language" userRealName="real_name"
>>   />					
>>
>>
> 
> 
> ----------------------------------------------------------------------
> Glenn Nielsen             glenn@more.net | /* Spelin donut madder    |
> MOREnet System Programming               |  * if iz ina coment.      |
> Missouri Research and Education Network  |  */                       |
> ----------------------------------------------------------------------
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org