I don't understand why I am getting this error in my Tomcat catalina log:
May 17, 2005 9:39:45 PM org.apache.tomcat.util.digester.Digester fatalError
May 17, 2005 9:39:45 PM org.apache.tomcat.util.digester.Digester fatalError
SEVERE: Parse Fatal Error at line -1 column -1: Premature end of file.
org.xml.sax.SAXParseException: Premature end of file.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:215)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:386)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1438)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(XMLDocumentScannerImpl.java:928)
I am developing on a Windows XP machine with jdk 5.0 and Tomcat 5.5.9. I went back and discovered that I was missing my filter-mapping element, however, that didn't change the error I was receiving. Here is my web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="Employment" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Test</display-name>
<filter>
<filter-name>Security Filter</filter-name>
<filter-class>org.securityfilter.filter.SecurityFilter</filter-class>
<init-param>
<description>Configuration file location (this is the default value)</description>
<param-name>config</param-name>
<param-value>/WEB-INF/securityfilter-config.xml</param-value>
</init-param>
<init-param>
<description>Validate config file if set to true</description>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!-- map all requests to the SecurityFilter, control what it does with configuration settings -->
<filter-mapping>
<filter-name>Security Filter</filter-name>
<url-pattern>/secure/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- make the session time-out after fifteen minutes -->
<session-config>
<session-timeout>15</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- SecurityFilter works with custom error pages -->
<error-page>
<error-code>403</error-code>
<location>/error/403.jsp</location>
</error-page>
</web-app>
Here is my corresponding security-config.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE securityfilter-config PUBLIC
"-//SecurityFilter.org//DTD Security Filter Configuration 2.0//EN"
"http://www.securityfilter.org/dtd/securityfilter-config_2_0.dtd">
<securityfilter-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Secure Page</web-resource-name>
<url-pattern>/secure/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>Admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/index.jsp</form-login-page>
<form-error-page>/error/403.jsp</form-error-page>
<form-default-page>/secure/-index.jsp</form-default-page>
</form-login-config>
</login-config>
<!-- start with a Catalina realm adapter to wrap the Catalina realm defined below -->
<realm className="org.securityfilter.realm.catalina.CatalinaRealmAdapter" />
<!-- this is a Catalina realm that will be adapted to the securityfilter by the realm defined above -->
<realm className="org.apache.catalina.realm.JDBCRealm">
<realm-param name="connectionName" value="test" />
<realm-param name="connectionPassword" value="test" />
<realm-param name="connectionURL" value="jdbc:mysql://localhost:3306/employment" />
<realm-param name="digest" value="none" />
<realm-param name="driverName" value="com.mysql.jdbc.Driver" />
<realm-param name="roleNameCol" value="role" />
<realm-param name="userCredCol" value="password" />
<realm-param name="userNameCol" value="username" />
<realm-param name="userRoleTable" value="role" />
<realm-param name="userTable" value="administration" />
</realm>
</securityfilter-config>
If someone could shed some light on this I'd really appreciate it.