I posted this awhile back (for MySQL), but here it is again. Also, when you
define your DataSource in this manner, you do not need the <resource-ref>
node in your context-specific web.xml files.
The global DataSource definition
--------------------------------
<!-- Global JNDI resources -->
<GlobalNamingResources>
<!-- Editable user database that can also be used by JNDI
DatabaseRealm to authenticate users -->
<Resource name="jdbc/MySQLConnectPool"
auth="Container"
type="javax.sql.DataSource" />
<ResourceParams name="jdbc/MySQLConnectPool" >
<parameter>
<name>username</name>
<value>????????</value>
</parameter>
<parameter>
<name>password</name>
<value>????????</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://<your IP here>:3306/<your DB name
here>?autoReconnect=true</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>200</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30000</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>100</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>
Realm definition using global DataSource
----------------------------------------
<Realm
className="org.apache.catalina.realm.DataSourceRealm"
dataSourceName="jdbc/MySQLConnectPool"
userTable="customers"
userNameCol="customer_username"
userCredCol="customer_password"
userRoleTable="roles"
roleNameCol="role"
debug="0"
/>
Context reference to global DataSource
--------------------------------------
<ResourceLink name="jdbc/MySQLConnectPool"
global="jdbc/MySQLConnectPool"
type="javax.sql.DataSource" />
Hope this helps!!
Thanks,
Scott Stewart
[Manager, Software Development]
[EMAIL PROTECTED]
ClearSky Mobile Media, Inc.
56 E. Pine St. Suite 200
Orlando, FL 32801
USA
-----Original Message-----
From: Madere, Colin [mailto:[EMAIL PROTECTED]
Sent: Wednesday, August 13, 2003 5:17 PM
To: 'Tomcat Users List'
Subject: JNDI DataSource Realm
Tomcat 4.1.27
PostgreSQL 7.3.4
pg73jdbc3.jar
Trying to use JNDI as a Realm source for both auth and data access for a
whole server, therefore trying as a GlobalNamingContext attribute. No love.
* Set up as a JDBC Realm, auth works.
* Set up Datasource as JNDI Resource within <DefaultContext>, data access
works.
Move <Resource> and params to <GlobalNamingContext> and I get the "Name jdbc
is not bound in this Context" error. Saw lots of refs to this error via
Google, but none relevant AFAICT. (Do I look up resources in the global
context differently? If so doesn't that kind of break the idea of it being
an abstractly defined data source?)
Anyone successfully using <GlobalNamingContext> for DataSources? Using these
components (Tomcat 4.1.x, postgreSQL)?
Change Realm from JDBC to DataSourceRealm and auth does not work (or report
any errors in logs).
server.xml (with DataSourceRealm commented out)
<Server port="8005" shutdown="SHUTDOWN" debug="0">
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
debug="0"/>
<Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
debug="0"/>
<!-- Global JNDI resources -->
<GlobalNamingResources>
</GlobalNamingResources>
<!-- Define the Tomcat Stand-Alone Service -->
<Service name="Tomcat-Standalone">
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
useURIValidationHack="false" disableUploadTimeout="true" />
<!-- Note : To disable connection timeouts, set connectionTimeout value
to -1 -->
<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8009" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="0"
useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
<!-- Define the top level container in our container hierarchy -->
<Engine name="Standalone" defaultHost="localhost" debug="0">
<!-- Global logger unless overridden at lower levels -->
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="catalina_log." suffix=".txt"
timestamp="true"/>
<!-- Because this Realm is here, an instance will be shared globally
-->
<!--
<Realm className="org.apache.catalina.realm.DataSourceRealm"
debug="99"
dataSourceName="java:/comp/env/jdbc/Auth"
userTable="Account" userNameCol="username"
userCredCol="password"
userRoleTable="AccountRole" roleNameCol="role_name"/>
-->
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
driverName="org.postgresql.Driver"
connectionURL="jdbc:postgresql://localhost/www_auth"
connectionName="www"
userTable="Account" userNameCol="username"
userCredCol="password"
userRoleTable="AccountRole" roleNameCol="role_name"/>
<!-- Define the default virtual host -->
<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true"
autoDeploy="true">
<Valve className="org.apache.catalina.authenticator.SingleSignOn"
debug="0"/>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs"
prefix="localhost_log." suffix=".txt" timestamp="true"/>
<!--
<Context path="" docBase="ROOT" debug="0"/>
-->
<DefaultContext>
<Resource name="jdbc/Auth" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/Auth">
<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>
<parameter>
<name>username</name>
<value>www</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.postgresql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:postgresql://localhost/www_auth</value>
</parameter>
</ResourceParams>
</DefaultContext>
</Host>
</Engine>
</Service>
</Server>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]