Turned out that the database driver could not be found, which resulted
in the same error that I was being given by the Container when it
tried to connect for the JDBCRealm.

Adding the file to the WEB-INF/lib folder allows a connection to be
made from a JSP, however Tomcat still gives the same error as before -
does adding the jar to WEB-INF/lib give the container access to the
class files stored in it?!

The contents of the server.xml file (which does not work correctly) is:
           <Realm className="org.apache.catalina.realm.JDBCRealm"
                  debug="99"
                  driverName="com.borland.datastore.jdbc.DataStoreDriver"
                  connectionURL="jdbc:borland:dslocal:C:\\Documents
and Settings\\SIS_Db.jds"
                  connectionName="sysdba"
                  connectionPassword="masterkey"
                  userTable="users"
                  userNameCol="user_name"
                  userCredCol="user_pass"
                  userRoleTable="user_roles"
                  roleNameCol="role_name" />

>>>>>>

For anyone with a similar problem the driver (DataStoreDriver) can be
found in <JBuilder>\lib\jdsserver.jar.  The code I added to the top of
the JSP to test the database connection is below:

<% 

try {
 Class.forName("com.borland.datastore.jdbc.DataStoreDriver");
}
catch (Exception e) {
 System.out.println("Driver Error\n" + e);
}

try {
 String username = "sysdba";
 String password = "masterkey";
 String db_url = "jdbc:borland:dslocal:";
 String db_file = "C:\\Documents and Settings\\SIS_Db.jds";
 java.sql.Connection
connection=java.sql.DriverManager.getConnection(db_url + db_file,
username, password);
 
 java.sql.ResultSet
rs=connection.createStatement().executeQuery("SELECT * FROM users");
 System.out.println("Column count is: " + rs.getMetaData().getColumnCount()); 
}
catch (Exception e) {
 System.out.println("Error\n" + e);
}

%> 


On Tue, 8 Feb 2005 20:17:49 -0500, David G. Friedman
<[EMAIL PROTECTED]> wrote:
> Tim,
> 
> Have you tried using any command line tools to get to your datastore?
> Knowing that could rule out permissions issues on the database site as well
> as the connection host/port/URL.
> 
> Regards,
> David
> 
> -----Original Message-----
> From: Tim Christopher [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, February 08, 2005 5:45 PM
> To: Struts Users Mailing List
> Subject: Re: Application Security
> 
> I managed to solve the first error by reordering the elements within
> the server.xml file, however I'm now stuck with the following error
> (which occurs when the server is started):
> 
> JDBCRealm[Catalina]: Exception opening database connection
> java.sql.SQLException: com.borland.datastore.jdbc.DataStoreDriver
>        at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:589)
>        at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:663)
>                <snip/>
> 
> Does anyone know if this is a problem with the database driver, or the
> location of the database?  I've tried changing the URL to a path that
> doesn't exist and I still get the same error, however I'm confident
> that the connectionURL is correct as it connects perfectly when using
> the same information within JBuilder's database pilot.
> 
> Any suggestions would be appreciated. :o)
> 
> Tim
> 
> On Tue, 8 Feb 2005 12:07:16 -0500, David G. Friedman
> <[EMAIL PROTECTED]> wrote:
> > Tim,
> >
> > Have you also updated your web.xml and Tomcat conifgurations?
> >
> > -----Original Message-----
> > From: Tim Christopher [mailto:[EMAIL PROTECTED]
> > Sent: Tuesday, February 08, 2005 12:05 PM
> > To: Struts Users Mailing List
> > Subject: Re: Application Security
> >
> > Cheers for all your advice.
> >
> > I've just tried implementing the JDBCRealm, though unfortunaltly it
> > does not work.  The Log4j error file contains the following:
> >
> > http-80-Processor25 ERROR org.apache.catalina.realm.JAASRealm
> > JAASRealm.java:269 Unexpected error
> > java.lang.SecurityException: Unable to locate a login configuration
> >     at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:97)
> >     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> > Method)
> >     <snip/>
> >
> > To be honest, I'm not really sure what that means...  All I've done so
> > far is copy a simple example and I've got that error.  Do I need to
> > add anything to the classpath?
> >
> > I can post the code I'm using if anything thinks that will help....
> >
> > On Tue, 8 Feb 2005 03:06:51 -0000, Niall Pemberton
> > <[EMAIL PROTECTED]> wrote:
> > > The forms for container managed security don't have to be plain html -
> you
> > > can configure in the web.xml custom "Logon"  and "Logon Error" pages
> which
> > > can be jsps, not just plain html. I have a custom tag on each of these
> > pages
> > > which writes the fact that a user has arrived at that page to log4j
> along
> > > with details from the request (e.g. IP address). Log4j is pretty
> powerful
> > in
> > > how you can configure it to filter that info and where to send it to.
> > >
> > > There are tags in the Jakarta Taglibs which you could use to achieve the
> > > same thing...
> > >    http://jakarta.apache.org/taglibs/doc/log-doc/intro.html
> > >    http://jakarta.apache.org/taglibs/doc/request-doc/intro.html
> > >
> > > For example on your "Logon Error Page", you might have something like
> > > this...
> > >
> > > <req:request id="req"/>
> > > <log:error category="myapp.logon.failed">
> > >      <bean:write name="req" property="remoteAddr"/>
> > >      <bean:write name="req" property="remoteHost"/>
> > > </log:error>
> > >
> > > Once a user has "logged on", you can get the user name from from the
> > request
> > > and then look up the user details wherever they are stored...
> > >      request.getUserPrincipal().getName()
> > >
> > > The actual form elements required are, as you say, plain html - but is
> > there
> > > any need for special tags since the action your posting to is fixed?
> > >
> > > Niall
> > >
> > > ----- Original Message -----
> > > From: "Tim Christopher" <[EMAIL PROTECTED]>
> > > Sent: Tuesday, February 08, 2005 2:08 AM
> > >
> > > > I've recently discovered that it is not possible to map an action to
> > > > j_security_check.  Given this situation how is it possible to populate
> > > > a form bean with user data, or create a log of any failed login
> > > > attempts (bad username / password) if the container takes control of
> > > > the entire login process?
> > > >
> > > > Looking back at previous posts to the newsgroup I can see that in the
> > > > past people have just used plain html to produce the j_security_check
> > > > form.  Is it possible to do this using the <sslext:form> tag, but so
> > > > that it does not require a Struts action mapping for j_security_check
> > > > to be present?
> > > >
> > > > I was currently intending on using JDBCRealm and the security-filter
> > > > to control the site's security, though given the above problems I'm
> > > > starting to think there might be a better way?  Or are these problems
> > > > everyone has already solved, as surely some form of login system is
> > > > present in the vast majority of Struts applications.
> > >
> > > ---------------------------------------------------------------------
> > > 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]
> >
> >
> 
> ---------------------------------------------------------------------
> 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]

Reply via email to