[jcifs] IllegalStateException: Exception Processing ErrorPage[errorCode=401

Eric Glass eric.glass at gmail.com
Mon Aug 13 11:11:45 GMT 2007


This entry is likely the culprit:

<error-page id="ErrorCodeErrorPage_2">
        <error-code>401</error-code>
        <location>/ufs_authentication_error_page.htm</location>
</error-page>

The error page directive tells the servlet container to replace any
responses that generate a 401 error (authentication failed) with the
contents of a custom page.  For the jCIFS filter (and NTLM authentication in
general) there is a very specific protocol handshake that must take place
involving this response code.

On 8/13/07, Vircos <info at vircos.nl> wrote:
>
>
> Here is my web.xml. I fated some information out with * signs
>
> ****************
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
> 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
>    <web-app id="WebApp_ID">
>       <display-name>UFSWebModule</display-name>
>       <filter>
>               <filter-name>NtlmHttpFilter</filter-name>
>               <filter-class>jcifs.http.NtlmHttpFilter</filter-class>
>               <init-param>
>
> <param-name>jcifs.http.domainController</param-name>
>                           <param-value>****</param-value>
>               </init-param>
>               <init-param>
>                           <param-name>jcifs.smb.client.domain</param-name>
>                           <param-value>****</param-value>
>               </init-param>
>               <init-param>
>                           <param-name>jcifs.smb.client.username
> </param-name>
>                           <param-value>****</param-value>
>               </init-param>
>               <init-param>
>                           <param-name>jcifs.smb.client.password
> </param-name>
>                           <param-value>****</param-value>
>               </init-param>
>       </filter>
>       <filter-mapping>
>                       <filter-name>NtlmHttpFilter</filter-name>
>                       <url-pattern>/*</url-pattern>
>       </filter-mapping>
>       <filter>
>         <filter-name>EbaseFilter</filter-name>
>         <filter-class>formservlets.EbaseFilter</filter-class>
>       </filter>
>       <filter-mapping>
>         <filter-name>EbaseFilter</filter-name>
>         <url-pattern>/ufsmain</url-pattern>
>       </filter-mapping>
>       <filter-mapping>
>         <filter-name>EbaseFilter</filter-name>
>         <url-pattern>/BrowserCheck</url-pattern>
>       </filter-mapping>
>       <filter-mapping>
>         <filter-name>EbaseFilter</filter-name>
>         <url-pattern>/Uploader</url-pattern>
>       </filter-mapping>
>       <filter-mapping>
>         <filter-name>EbaseFilter</filter-name>
>         <url-pattern>/SaveRestore</url-pattern>
>       </filter-mapping>
>       <filter-mapping>
>         <filter-name>EbaseFilter</filter-name>
>         <url-pattern>/PDFPrint</url-pattern>
>       </filter-mapping>
>       <filter-mapping>
>         <filter-name>EbaseFilter</filter-name>
>         <url-pattern>/Redirect</url-pattern>
>       </filter-mapping>
>       <listener>
>
> <listener-class>com.ebasetech.ufs.licence.SessionMonitor</listener-class>
>       </listener>
>       <servlet>
>          <servlet-name>UFSMain</servlet-name>
>          <servlet-class>formservlets.FormClient</servlet-class>
>          <load-on-startup>1</load-on-startup>
>       </servlet>
>       <servlet>
>          <servlet-name>Designer</servlet-name>
>
> <servlet-class>com.ebasetech.ufs.designer.server.DesignerServlet
> </servlet-class>
>          <load-on-startup>2</load-on-startup>
>       </servlet>
>       <servlet>
>          <servlet-name>SaveRestore</servlet-name>
>          <servlet-class>formservlets.SaveRestore</servlet-class>
>       </servlet>
>       <servlet>
>          <servlet-name>PDFPrint</servlet-name>
>          <servlet-class>formservlets.PDFPrint</servlet-class>
>       </servlet>
>       <servlet>
>          <servlet-name>UnattendedXMLClient</servlet-name>
>
> <servlet-class>com.ebasetech.ufs.batch.UnattendedXMLClient</servlet-class>
>          <load-on-startup>4</load-on-startup>
>       </servlet>
>       <servlet>
>          <servlet-name>BatchServer</servlet-name>
>          <servlet-class>com.ebasetech.ufs.batch.BatchServer
> </servlet-class>
>          <load-on-startup>3</load-on-startup>
>       </servlet>
>       <servlet>
>         <servlet-name>ExternalCallReturn</servlet-name>
>         <display-name>ExternalCallReturn</display-name>
>         <servlet-class>formservlets.ExternalCallReturn</servlet-class>
>       </servlet>
>       <servlet>
>         <servlet-name>UploaderServlet</servlet-name>
>         <display-name>File Uploader</display-name>
>         <servlet-class>formservlets.UploaderServlet</servlet-class>
>       </servlet>
>       <servlet>
>         <servlet-name>BrowserAttributesCheck</servlet-name>
>         <display-name>BrowserAttributesCheck</display-name>
>         <servlet-class>formservlets.BrowserAttributesCheck</servlet-class>
>       </servlet>
>       <servlet>
>         <servlet-name>RedirectServlet</servlet-name>
>         <display-name>RedirectServlet</display-name>
>         <servlet-class>formservlets.RedirectServlet</servlet-class>
>       </servlet>
>       <servlet>
>         <servlet-name>ScheduledTaskTriggerServlet</servlet-name>
>         <display-name>ScheduledTaskTrigger</display-name>
>
> <servlet-class>com.ebasetech.ufs.batch.ScheduledTaskTriggerServlet
> </servlet-class>
>       </servlet>
>           <servlet>
>          <servlet-name>IntegrationServlet</servlet-name>
>          <servlet-class>formservlets.IntegrationServlet</servlet-class>
>          <load-on-startup>6</load-on-startup>
>       </servlet>
>       <servlet>
>         <servlet-name>WorkflowServlet</servlet-name>
>
> <servlet-class>
> com.ebasetech.ufs.workflow.server.enactment.WorkflowWorkQueueServlet
> </servlet-class>
>         <load-on-startup>5</load-on-startup>
>       </servlet>
>       <servlet>
>         <servlet-name>WorkflowAPIServlet</servlet-name>
>
> <servlet-class>com.ebasetech.ufs.workflow.server.api.WorkflowAPIServlet
> </servlet-class>
>       </servlet>
>       <servlet>
>         <servlet-name>LogonExitServlet</servlet-name>
>         <display-name>LogonExitServlet</display-name>
>
> <servlet-class>
> com.ebasetech.ufs.security.authentication.EbaseLogonExitServlet
> </servlet-class>
>         <init-param>
>             <param-name>MaxLogonAttempts</param-name>
>             <param-value>3</param-value>
>         </init-param>
>         <init-param>
>             <param-name>LogonPage</param-name>
>             <param-value>samples/logon/logon.jsp</param-value>
>         </init-param>
>         <init-param>
>             <param-name>InvalidLogonPage</param-name>
>             <param-value>samples/logon/logonInvalid.jsp</param-value>
>         </init-param>
>         <init-param>
>             <param-name>LogonTimeoutPage</param-name>
>             <param-value>ufs_timeout_page.htm.jsp</param-value>
>         </init-param>
>       </servlet>
>       <servlet>
>         <servlet-name>FormCacheLoader</servlet-name>
>         <display-name>FormCacheLoader</display-name>
>         <servlet-class>formservlets.FormCacheLoader</servlet-class>
>         <load-on-startup>7</load-on-startup>
>       </servlet>
>       <servlet-mapping>
>          <servlet-name>UFSMain</servlet-name>
>          <url-pattern>/ufsmain</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>          <servlet-name>Designer</servlet-name>
>          <url-pattern>/designer</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>          <servlet-name>SaveRestore</servlet-name>
>          <url-pattern>/SaveRestore</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>          <servlet-name>PDFPrint</servlet-name>
>          <url-pattern>/PDFPrint</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>          <servlet-name>UnattendedXMLClient</servlet-name>
>          <url-pattern>/UnattendedXMLClient</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>          <servlet-name>BatchServer</servlet-name>
>          <url-pattern>/BatchServer</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>         <servlet-name>ExternalCallReturn</servlet-name>
>         <url-pattern>/ufsreturn</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>         <servlet-name>UploaderServlet</servlet-name>
>         <url-pattern>/Uploader</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>         <servlet-name>BrowserAttributesCheck</servlet-name>
>         <url-pattern>/BrowserCheck</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>         <servlet-name>RedirectServlet</servlet-name>
>         <url-pattern>/Redirect</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>         <servlet-name>ScheduledTaskTriggerServlet</servlet-name>
>         <url-pattern>/ScheduledTaskTrigger</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>         <servlet-name>IntegrationServlet</servlet-name>
>         <url-pattern>/integration/*</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>         <servlet-name>WorkflowServlet</servlet-name>
>         <url-pattern>/WorkflowServlet</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>         <servlet-name>WorkflowAPIServlet</servlet-name>
>         <url-pattern>/WorkflowAPIServlet</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>         <servlet-name>LogonExitServlet</servlet-name>
>         <url-pattern>/LogonExitServlet</url-pattern>
>       </servlet-mapping>
>       <servlet-mapping>
>         <servlet-name>FormCacheLoader</servlet-name>
>         <url-pattern>/FormCacheLoader</url-pattern>
>       </servlet-mapping>
>       <session-config>
>          <session-timeout>30</session-timeout>
>       </session-config>
>       <welcome-file-list>
>         <welcome-file>index.htm</welcome-file>
>       </welcome-file-list>
>       <error-page id="ExceptionTypeErrorPage_1">
>          <exception-type>javax.servlet.ServletException</exception-type>
>          <location>/ufs_error_page.htm</location>
>       </error-page>
>       <error-page id="ExceptionTypeErrorPage_2">
>          <exception-type>java.lang.NullPointerException</exception-type>
>          <location>/ufs_error_page.htm</location>
>       </error-page>
>       <error-page id="ErrorCodeErrorPage_1">
>          <error-code>500</error-code>
>          <location>/ufs_error_page.htm</location>
>       </error-page>
>       <error-page id="ErrorCodeErrorPage_2">
>          <error-code>401</error-code>
>          <location>/ufs_authentication_error_page.htm</location>
>       </error-page>
>       <error-page id="ErrorCodeErrorPage_3">
>          <error-code>403</error-code>
>          <location>/ufs_authorisation_error_page.htm</location>
>       </error-page>
>       <resource-ref id="ResourceRef_1">
>          <description>Ufs repository</description>
>          <res-ref-name>jdbc/UFSREPOSITORY</res-ref-name>
>          <res-type>javax.sql.XADataSource</res-type>
>          <res-auth>CONTAINER</res-auth>
>       </resource-ref>
> </web-app>
>
>
> Eric Glass wrote:
> >
> > Can you post your web.xml?  It looks like there may be an error page set
> > for
> > 401 responses, which would likely cause issues.
> >
> > On 8/13/07, Vircos <info at vircos.nl> wrote:
> >>
> >>
> >> I'm new to JCIFS and servlets/JSP's. We want to use a web-application
> >> with
> >> single sign on on our corporate network. I managed to get JCIF working
> >> with
> >> tomcat. But when the authorisation fails, I get an
> IllegalStateException
> >> error in my log and if I'm unlucky the tomcat server crashes.
> >>
> >> I tried to find a solution on the internet, but I can't figure it out.
> I
> >> hope someone is able to help me with this.
> >>
> >> I'm using Apache/tomcat 5.0.18 with JCIFS 1.2.16
> >>
> >> The error from the logfile:
> >> ******
> >> 2007-08-13 08:42:33 org.apache.catalina.core.StandardHostValve at 183268e:
> >> Exception Processing ErrorPage[errorCode=401,
> >> location=/ufs_authentication_error_page.htm]
> >> java.lang.IllegalStateException
> >>         at org.apache.coyote.Response.reset(Response.java:340)
> >>         at org.apache.coyote.tomcat5.CoyoteResponse.reset(
> >> CoyoteResponse.java:640)
> >>         at org.apache.coyote.tomcat5.CoyoteResponse.reset(
> >> CoyoteResponse.java:896)
> >>         at
> >> org.apache.catalina.core.StandardHostValve.custom(
> StandardHostValve.java
> >> :443)
> >>         at
> >> org.apache.catalina.core.StandardHostValve.status(
> StandardHostValve.java
> >> :355)
> >>         at
> >> org.apache.catalina.core.StandardHostValve.invoke(
> StandardHostValve.java
> >> :205)
> >>         at
> >> org.apache.catalina.core.StandardValveContext.invokeNext(
> >> StandardValveContext.java:151)
> >>         at
> >> org.apache.catalina.valves.ErrorReportValve.invoke(
> ErrorReportValve.java
> >> :164)
> >>         at
> >> org.apache.catalina.core.StandardValveContext.invokeNext(
> >> StandardValveContext.java:149)
> >>         at
> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java
> >> :564)
> >>         at
> >> org.apache.catalina.core.StandardEngineValve.invoke(
> >> StandardEngineValve.java:156)
> >>         at
> >> org.apache.catalina.core.StandardValveContext.invokeNext(
> >> StandardValveContext.java:151)
> >>         at
> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java
> >> :564)
> >>         at org.apache.catalina.core.ContainerBase.invoke(
> >> ContainerBase.java:972)
> >>         at org.apache.coyote.tomcat5.CoyoteAdapter.service(
> >> CoyoteAdapter.java:206)
> >>         at
> >> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
> :828)
> >>         at
> >>
> >>
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection
> >> (Http11Protocol.java:700)
> >>         at
> >> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
> :584)
> >>         at
> >> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> >> ThreadPool.java:683)
> >>         at java.lang.Thread.run(Thread.java:534)
> >>
> >>
> >> --
> >> View this message in context:
> >>
> http://www.nabble.com/IllegalStateException%3A-Exception-Processing-ErrorPage-errorCode%3D401-tf4259661.html#a12122156
> >> Sent from the Samba - jcifs mailing list archive at Nabble.com.
> >>
> >>
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/IllegalStateException%3A-Exception-Processing-ErrorPage-errorCode%3D401-tf4259661.html#a12124130
> Sent from the Samba - jcifs mailing list archive at Nabble.com.
>
>
-------------- next part --------------
HTML attachment scrubbed and removed


More information about the jcifs mailing list