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

Vircos info at vircos.nl
Mon Aug 13 11:33:19 GMT 2007


I have removed this entry and tested it with some valid Active Directory
accounts which before gave me the 401 error. The result is that all those
accounts do authenticate and I don't get the error anymore and the tomcat
server does not crash anymore..

I am not sure if this is a right solution, because when a invalid account
tries to authenticate is doesn't give a 401 error page anymore.

Can you tell me if I'm right? 
Or maybe there is a workarround for it.


Eric Glass wrote:
> 
> 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.
>>
>>
> 
> 

-- 
View this message in context: http://www.nabble.com/IllegalStateException%3A-Exception-Processing-ErrorPage-errorCode%3D401-tf4259661.html#a12124689
Sent from the Samba - jcifs mailing list archive at Nabble.com.



More information about the jcifs mailing list