sorry for the glacially slow response (holidays, work load and other excuses).
The org.mortbay.jetty.RetryRequest exception is part of the asynchronous
handling provided by jetty to allow cometd to scale.
The acegi filter must be catching that exception. It should allow that
exception to propagate to the container to be handled. Can you give me
some more information about the source and version of that filter
and I can chase up to see if we can get that modified.
Alternately, try jetty7 and the suspendable cometd servlet. That
does not use an exception for the asynchronous suspend and thus may
work immediately with acegi.
If that still fails, then try jetty7 with the continuation cometd servlet,
as that still uses the exception, but in a form less likely to be
caught by the filter.
cheers
However, it is in use on production sites already.
we'll have a quick look at the acegi filter. It should be
able to be modified to handle the continuations. We can talk
you through doing that on the list. We will also look at
it ourselves, but no guarantees when.
regards
Jigar Prajapati wrote:
> Hi Greg,
>
> Following is the filter config/
> /
I'm looking again at your stack trace, and I'm noticing a few other
things that could be an issue.
I've had a quick look at the acegi source code and I can't see
where it is catching the Retry exception. So it may not be acegi?
certainly not in $VirtualFilterChain.doFilter(FilterChainProxy.java:274)
I noticed also that you have
com.planetj.servlet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:
Can you try removing that? If you want compression Jetty comes with a
GzipFilter that is tested to work with continuations.
Other than that, we need to find who is catching the exception.
Candidates include
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java
net.sigmainfo.blackwells.filter.ChildFilterDispatcher.doFilter(ChildFilterDispatcher.java
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:
org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:
org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:
net.sigmainfo.blackwells.filter.ContextFilter.doFilter(ContextFilter.java:
Wow that is a lot of filters on the request path!!! and I've skipped a lot of duplicates.
So I would firstly remove as many of those as possible from the cometd request path.
I totally understand why you want/need acegi on cometd, but it would be good to remove
things like struts from the cometd path.
Can you look through the source of all those filters (ie walk the stack dump that
you have) and see which of them catch exceptions? once we've identified who
is catching RuntimeExceptions, the work around is pretty simple.
Although with the nature of continuations.... we may need to checkout
what org.springframework.web.filter.OncePerRequestFilter.doFilter is doing???
cheers
It doesn't look like the acegi filter is the cause of the problem (or at
least, not alone). I tested by setting up acegi using the config that
you provided, and put it in front of a normally configured cometd
servlet -- demo ran without any errors.
I'd suggest you try investigating/taking out the filters that Greg
suggested, to narrow down the culprit.
Cheers,
Athena