No output folder

816 views
Skip to first unread message

Thomas Schröder

unread,
Jun 13, 2014, 6:41:05 AM6/13/14
to waffle...@googlegroups.com
Hi,

If I try to use waffle on an Windows Server 2012 with Tomcat 7 (as a service) I am always getting this error

Jun 13, 2014 12:25:20 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [/Waffel] threw exception [java.lang.IllegalStateException: No output folder] with root cause
java.lang.IllegalStateException: No output folder
    at org.apache.jasper.JspCompilationContext.createOutputDir(JspCompilationContext.java:749)
    at org.apache.jasper.JspCompilationContext.getOutputDir(JspCompilationContext.java:198)
    at org.apache.jasper.JspCompilationContext.getClassFileName(JspCompilationContext.java:592)
    at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:461)
    at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:425)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:650)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at waffle.servlet.NegotiateSecurityFilter.doFilter(NegotiateSecurityFilter.java:160)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

I am a little bit surprised why it is mentioning a valve, because I am using a filter.

On a test system it works ok, but there the Tomcat is running under a SystemUser; but here I have a specific user for running the Tomcat service.
Other simple JSP / Servlet apps are working without problem. So I am wondering where the NegotiateSecurityFilter tries to write something??

Any help would be appreciated.

Daniel Doubrovkine

unread,
Jun 13, 2014, 9:53:22 AM6/13/14
to waffle...@googlegroups.com
The valve thing is an implementation detail of Tomcat I bet (uses their valve stack to call filters), so I wouldn't worry about it.

The filter doesn't try to write anything. However, is it impersonating a user? In which case a filter downstream (JSP compiler) may be trying to use some folder as output and is failing because of access.


--
You received this message because you are subscribed to the Google Groups "waffle" group.
To unsubscribe from this group and stop receiving emails from it, send an email to waffle-users...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--

dB. | Moscow - Geneva - Seattle - New York
code.dblock.org - @dblockdotorg - artsy.net - github/dblock

Pike, Ed

unread,
Jun 13, 2014, 10:19:02 AM6/13/14
to waffle...@googlegroups.com

Looks like you misspelled Waffle as Waffel. Also, maybe the service use does not have permissions for “the output folder”.

Good Luck,

Ed

--

Thomas Schröder

unread,
Jun 16, 2014, 3:02:57 AM6/16/14
to waffle...@googlegroups.com

Hi Daniel,

Thanks for your answer but it does not help to solve my problem.

I am not sure how to impersonate a user, but as I said before the only difference I can see between my test server (there it is working) and my real server (does not work - or more precise sometimes after a redeploy / restart it is asking me for a password and is failing after that) is the user under which the Tomcat is running: test server - System User vs real server - normal active directory user

So there must be some writing rights that the normal active directory user is missing.

The normal active directory user has all rights on the Tomcat folder and a normal servlet / JSP application is running without problems.

Cheers,
Thomas


On Friday, 13 June 2014 15:53:22 UTC+2, Daniel Doubrovkine wrote:
The valve thing is an implementation detail of Tomcat I bet (uses their valve stack to call filters), so I wouldn't worry about it.

The filter doesn't try to write anything. However, is it impersonating a user? In which case a filter downstream (JSP compiler) may be trying to use some folder as output and is failing because of access.



Daniel Doubrovkine

unread,
Jun 16, 2014, 11:13:19 AM6/16/14
to waffle...@googlegroups.com
You really need to find what folder the exception is for, it clearly tries to write to somewhere and fails, right?

That folder needs to be writable by the user under which your Tomcat is running. LocalSystem can write just about everywhere, but not your domain user.


--
You received this message because you are subscribed to the Google Groups "waffle" group.
To unsubscribe from this group and stop receiving emails from it, send an email to waffle-users...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Daniel Doubrovkine

unread,
Jun 16, 2014, 11:14:15 AM6/16/14
to waffle...@googlegroups.com
I think the reason why this fails intermittently is that the error is caused by the JSP compiler, which may already have the generated output in the temporary folder location most of the time as you start/restart as localsystem. Then you restart with the user and it works. But then the pages need to be re-generated and it fails again.
Reply all
Reply to author
Forward
0 new messages