I'm trying to set up Tomcat 5 to use a JDBCRealm that points to a MS SQL Server 2000 instance. I also have a datasource set up to the same database instance. I can get one or the other to work, but not both together. If I move the JDBCRealm inside my <Host> or <Context> tag, the datasource works, but the security quits working. If I leave the realm outside my <Host> tag, security starts working again, but I get an exception on the datasource. Any ideas on making them work together? I think my JDBCRealm might be in the wrong place but don't know for sure.
Here is my server.xml... --------------------------------------------------------- <Server port="8005" shutdown="SHUTDOWN"> <GlobalNamingResources> <!-- Used by Manager webapp --> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved"> </Resource> <ResourceParams name="UserDatabase"> <parameter> <name>factory</name> <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value> </parameter> <parameter> <name>pathname</name> <value>conf/tomcat-users.xml</value> </parameter> </ResourceParams> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8080" /> <!-- This is here for compatibility only, not required --> <Connector port="8009" protocol="AJP/1.3" /> <Engine name="Catalina" defaultHost="localhost"> <Logger className="org.apache.catalina.logger.FileLogger" /> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" /> <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver" connectionURL="jdbc:microsoft:sqlserver://dbserver:1433;DatabaseName=testdb;SelectMethod=Cursor;User=user;Password=pwd" userTable="users" userNameCol="username" userCredCol="password" userRoleTable="user_roles" roleNameCol="role"/> <Host name="localhost" appBase="/home/testuser/www" unpackWARs="false" 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="/home/testuser/www" debug="55555"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="test_log." suffix=".txt" timestamp="true"/> <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/TestDB"> <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>user</value> </parameter> <parameter> <name>password</name> <value>pwd</value> </parameter> <parameter> <name>driverClassName</name> <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value> </parameter> <parameter> <name>url</name> <value>jdbc:microsoft:sqlserver://dbserver:1433;DatabaseName=testdb;SelectMethod=Cursor;</value> </parameter> </ResourceParams> </Context> </Host> </Engine> </Service>