Well, I disabled everything else in my web.xml just in case it was something
in there. This is the stack trace of when it gets into the service()
method:
java.lang.Exception: Stack tracing...
at
org.jboss.errai.bus.server.servlet.TomcatCometServlet.service(TomcatCometSer
vlet.java:133)
at javax.servlet.http.HttpServlet.service(Unknown Source)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown
Source)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown
Source)
at org.apache.catalina.core.StandardWrapperValve.invoke(Unknown
Source)
at org.apache.catalina.core.StandardContextValve.invoke(Unknown
Source)
at org.apache.catalina.core.StandardHostValve.invoke(Unknown Source)
at org.apache.catalina.valves.ErrorReportValve.invoke(Unknown
Source)
at org.apache.catalina.core.StandardEngineValve.invoke(Unknown
Source)
at org.apache.catalina.connector.CoyoteAdapter.service(Unknown
Source)
at org.apache.coyote.http11.Http11NioProcessor.process(Unknown
Source)
at
org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(U
nknown Source)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(Unknown Source)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.ja
va:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:9
08)
at java.lang.Thread.run(Thread.java:619)
From: Mike Brock [mailto:cbrock@redhat.com]
Sent: Friday, January 22, 2010 2:08 PM
To: Kevin Jordan
Cc: errai-users(a)lists.jboss.org
Subject: Re: [errai-users] Trouble sending messages
Yeah, if Tomcat is correctly detecting the CometProcessor interface, than
the service() method should never be called.
http://tomcat.apache.org/tomcat-6.0-doc/aio.html
On 2010-01-22, at 3:06 PM, Kevin Jordan wrote:
Updated to the latest trunk and still have the same problem. I notice that
the error comes in the service() method. I assume that's not supposed to
get called if it's set up correctly, but what should I look for that would
make it get called?
From: errai-users-bounces(a)lists.jboss.org
[mailto:errai-users-bounces@lists.jboss.org] On Behalf Of Kevin Jordan
Sent: Friday, January 22, 2010 1:50 PM
To: 'Mike Brock'
Cc: errai-users(a)lists.jboss.org
Subject: Re: [errai-users] Trouble sending messages
Not the latest, I'm currently on about revision 1112. I see some more
changes have been made to the servlet. I'll try updating and see if it
changes anything.
From: Mike Brock [mailto:cbrock@redhat.com]
Sent: Friday, January 22, 2010 1:48 PM
To: Kevin Jordan
Cc: errai-users(a)lists.jboss.org
Subject: Re: [errai-users] Trouble sending messages
This is the latest trunk of Errai?
On 2010-01-22, at 2:46 PM, Kevin Jordan wrote:
No, I still get the error. Config for non-secure is:
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
scheme="http"
connectionTimeout="20000" /
From: Mike Brock [mailto:cbrock@redhat.com]
Sent: Friday, January 22, 2010 1:40 PM
To: Kevin Jordan
Cc: errai-users(a)lists.jboss.org
Subject: Re: [errai-users] Trouble sending messages
Does it work over the non-secure connector?
On 2010-01-22, at 2:19 PM, Kevin Jordan wrote:
Yeah, and I'm still having trouble getting the TomcatCometServlet to go
through. My connector is set up as:
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150" scheme="https"
secure="true"
keystoreFile="/etc/tomcat-6/.keystore"
truststoreFile="/etc/tomcat-6/truststore"
proxyName="demo.xteconline.com"
proxyPort="443"
clientAuth="false" sslProtocol="TLS" /
And then I used the TomcatCometServlet segment from the error, but I still
get it no matter what. Is there something that I have configured
incorrectly or need to add?
From: Mike Brock [mailto:cbrock@redhat.com]
Sent: Friday, January 22, 2010 1:08 PM
To: Kevin Jordan
Cc: errai-users(a)lists.jboss.org
Subject: Re: [errai-users] Trouble sending messages
Well, if you're using the DefaultBlockingServlet, then it holds the thread
until there is a message. The TomcatCometServlet on the other hand uses the
AIO API in Tomcat to prevent any thread blocking. I'm not sure if that
could be the problem.
On 2010-01-22, at 1:04 PM, Kevin Jordan wrote:
And just so everyone knows, the culprit is Terracotta. Even with Spring
Security disabled, it somehow blocks the connections. I'm not sure if it's
locking something that everything else needs or what and it's not released
due to the long running connection.
From: errai-users-bounces(a)lists.jboss.org
[mailto:errai-users-bounces@lists.jboss.org] On Behalf Of Kevin Jordan
Sent: Thursday, January 21, 2010 4:24 PM
To: 'Mike Brock'
Cc: errai-users(a)lists.jboss.org
Subject: Re: [errai-users] Trouble sending messages
Well, good news is that I got the connection blocking solved. It seemed to
either be Spring Security (which if so, an upgrade fixed) or Terracotta
(which seems to have trouble with my CAS install now, so that's no longer in
there). But I suppose the good news is that you can run Errai from behind
Apache.
From: Mike Brock [mailto:cbrock@redhat.com]
Sent: Thursday, January 21, 2010 11:12 AM
To: Kevin Jordan
Cc: errai-users(a)lists.jboss.org
Subject: Re: [errai-users] Trouble sending messages
I just deployed onto Tomcat using the TomcatCometServlet and it seems to be
working fine...
On 2010-01-21, at 11:15 AM, Kevin Jordan wrote:
Even just connecting to Tomcat directly, I still seem to get that error.
From: Mike Brock [mailto:cbrock@redhat.com]
Sent: Thursday, January 21, 2010 10:06 AM
To: Kevin Jordan
Cc: errai-users(a)lists.jboss.org
Subject: Re: [errai-users] Trouble sending messages
You still get that error? I'm pretty sure I fixed it.
On 2010-01-21, at 10:54 AM, Kevin Jordan wrote:
Yeah, although I get that error about the misconfiguration I posted a while
back. I figured out how to get rid of the errors at least, using
ProxyPreserveHost On in Apache to pass theHost: line from the incoming
request gets rid of any errors, however, it still seems to hit some
connection limit. Hopefully that at least helps someone who gets errors
from Errai while backended behind Apache.
-----Original Message-----
From: Mike Brock [mailto:cbrock@redhat.com]
Sent: Thursday, January 21, 2010 9:31 AM
To: Kevin Jordan
Cc: errai-users(a)lists.jboss.org
Subject: Re: [errai-users] Trouble sending messages
Have you tried using the TomcatCometServlet, which using non-blocking I/O?
On 2010-01-20, at 5:56 PM, Kevin Jordan wrote:
Some messages go through correctly, like the ones at the beginning.
And if the GET connection times out, it will get a heartbeat json
reply. Although it will usually get one in between with the error
json
below immediately.
Regular messages like subscribing and sending a message manually will
take a while (like 30 seconds or longer) and usually come back with
the error json below as well. Even with one connection it seems to
block
everything else.
I'm going to try more configuration parameters on the Apache side
to
see if it's something on there, but something is definitely
blocking
anything else from going through.
Also, I know we had talked about this before, but will the
conversation messages have a direct callback ability instead of
having
another subject that needs to be listened to? I'm creating an
Errai
Proxy for loading data for GXT stores which in turn is used by
components to get data, but having a secondary subject to listen
doesn't quite fit into the design of this and I think I'd
prefer to
keep it to one method of transport rather than using RPC or SOAFaces
UniversalClient. Not to mention a direct callback seems to fit more
into the conversation design since otherwise data could reach more
than one callback if you had the same component more than once on a
page listening to that reply subject and didn't have an increment
counter
or something to differentiate them.
-----Original Message-----
From: Mike Brock [mailto:cbrock@redhat.com]
Sent: Wednesday, January 20, 2010 4:27 PM
To: Kevin Jordan
Cc: errai-users(a)lists.jboss.org
Subject: Re: [errai-users] Trouble sending messages
Interesting. Errai is designed to only use a single connection /
single queue by default with the server in order to prevent
interfering
with image
loading, etc.
We have not tested Errai in any load balancing scenarios such as with
Terracotta.
You're saying all the actual messages are eventually delivered in
both
directions, albeit slowly?
On 2010-01-20, at 1:33 PM, Kevin Jordan wrote:
> Do you have any experience running this behind Apache? I'm
trying to
> use it to load balance two Tomcat servers, but it doesn't
seem to be
> working too well. The connections seem to take forever to
terminate
> and when they do they usually get this error back:
>
[{"ClientBusErrors":{ErrorMessage:"null",AdditionalDetails:"org.jboss.errai.
>
bus.server.ServerMessageBusImpl.nextMessage(ServerMessageBusImpl.java:
> 363)<b
>
r/>org.jboss.errai.bus.server.servlet.DefaultBlockingServlet.pollForM
> e
> ssages
>
(DefaultBlockingServlet.java:90)<br/>org.jboss.errai.bus.server.servl
> e
> t.Defa
>
ultBlockingServlet.doPost(DefaultBlockingServlet.java:84)<br/>javax.servlet.
> http.HttpServlet.service(Unknown
> Source)<br/>javax.servlet.http.HttpServlet.service(Unknown
>
Source)<br/>org.apache.catalina.core.ApplicationFilterChain.internalD
> o
> Filter
> (Unknown
>
Source)<br/>org.apache.catalina.core.ApplicationFilterChain.doFilter(
> U
> nknown
>
Source)<br/>org.springframework.security.util.FilterChainProxy$Virtua
> l
> Filter
>
Chain.doFilter(FilterChainProxy.java:378)<br/>org.springframework.sec
> u
> rity.i
>
ntercept.web.FilterSecurityInterceptor.invoke(FilterSecurityIntercept
> o
> r.java
>
:109)<br/>org.springframework.security.intercept.web.FilterSecurityIn
> t
> ercept
>
or.doFilter(FilterSecurityInterceptor.java:83)<br/>org.springframewor
> k
> .secur
>
ity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:
>
390)<br/>org.springframework.security.ui.ExceptionTranslationFilter.d
> o
> Filter
>
Http(ExceptionTranslationFilter.java:101)<br/>org.springframework.sec
> u
> rity.u
>
i.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)<br/>org.
> spring
>
framework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(
> F
> ilterC
>
hainProxy.java:390)<br/>org.springframework.security.wrapper.Security
> C
> ontext
>
HolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareReque
> s
> tFilte
>
r.java:91)<br/>org.springframework.security.ui.SpringSecurityFilter.d
> o
> Filter
>
(SpringSecurityFilter.java:53)<br/>org.springframework.security.util.
> F
> ilterC
>> hainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)<br/
> o
> rg.spr
>
ingframework.security.ui.AbstractProcessingFilter.doFilterHttp(Abstra
> c
> tProce
>
ssingFilter.java:278)<br/>org.springframework.security.ui.SpringSecur
> i
> tyFilt
>
er.doFilter(SpringSecurityFilter.java:53)<br/>org.springframework.sec
> u
> rity.u
>
til.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.jav
> a
> :390)<
>
br/>org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleS
> i
> gnOutF
>
ilter.java:106)<br/>org.springframework.security.util.FilterChainProx
> y
> $Virtu
>
alFilterChain.doFilter(FilterChainProxy.java:390)<br/>org.springframe
> w
> ork.se
>> curity.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)<br/
> o
> rg.spr
>
ingframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.
>
java:53)<br/>org.springframework.security.util.FilterChainProxy$Virtu
> a
> lFilte
>
rChain.doFilter(FilterChainProxy.java:390)<br/>org.springframework.security.
>
context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionC
> o
> ntextI
>
ntegrationFilter.java:235)<br/>org.springframework.security.ui.Spring
> S
> ecurit
>
yFilter.doFilter(SpringSecurityFilter.java:53)<br/>org.springframewor
> k
> .secur
>
ity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:
>
390)<br/>org.springframework.security.securechannel.ChannelProcessingFilter.
>
doFilterHttp(ChannelProcessingFilter.java:116)<br/>org.springframewor
> k
> .secur
>
ity.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)<br
> /
>> org.s
>
pringframework.security.util.FilterChainProxy$VirtualFilterChain.doFi
> l
> ter(Fi
>
lterChainProxy.java:390)<br/>org.springframework.security.util.Filter
> C
> hainPr
>
oxy.doFilter(FilterChainProxy.java:175)<br/>org.springframework.web.f
> i
> lter.D
>
elegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)<br/>org.
>
springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingF
> i
> lterPr
> e
> rnalDo
> Filter(Unknown
>
Source)<br/>org.apache.catalina.core.ApplicationFilterChain.doFilter(
> U
> nknown
>
Source)<br/>com.google.inject.servlet.DefaultFilterPipeline.dispatch(
> D
> efault
>
FilterPipeline.java:43)<br/>com.google.inject.servlet.GuiceFilter.doF
> i
> lter(G
>
uiceFilter.java:110)<br/>org.apache.catalina.core.ApplicationFilterCh
> a
> ernalDoFilter(Unknown
>
Source)<br/>org.apache.catalina.core.ApplicationFilterChain.doFilter(
> U
> nknown
>
Source)<br/>org.apache.catalina.core.StandardWrapperValve.invoke(Unkn
> o
> wn
>
Source)<br/>org.apache.catalina.core.StandardContextValve.invoke(Unkn
> o
> wn
>
Source)<br/>org.apache.catalina.core.StandardHostValve.invoke(Unknown
>
Source)<br/>org.apache.catalina.valves.ErrorReportValve.invoke(Unknow
> n
>
Source)<br/>org.apache.catalina.core.StandardEngineValve.invoke(Unkno
> w
> n
>
Source)<br/>org.terracotta.modules.tomcat.tomcat_5_5.SessionValve55.t
> c
> Invoke
>
(SessionValve55.java:63)<br/>org.terracotta.modules.tomcat.tomcat_5_5.
> Sessio
>
nValve55.invoke(SessionValve55.java:50)<br/>org.apache.catalina.conne
> c
> tor.Co
> yoteAdapter.service(Unknown
>
Source)<br/>org.apache.coyote.http11.Http11NioProcessor.process(Unkno
> w
> n
>
Source)<br/>org.apache.coyote.http11.Http11NioProtocol$Http11Connecti
> o
> nHandl
> er.process(Unknown
>
Source)<br/>org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.ru
> n
> (Unkno
> wn
>
Source)<br/>java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Th
> r
> eadPoo
>
lExecutor.java:886)<br/>java.util.concurrent.ThreadPoolExecutor$Worke
> r
> .run(T
>
hreadPoolExecutor.java:908)<br/>java.lang.Thread.run(Thread.java:619)
> <
> br/>"}
> }]
>
> I've got Terracotta running to tie the memory between the two
> instances together and mod_proxy on Apache going to the HTTPS
port.
> The only change I seem to have to make in Tomcat is the proxyName
and
> proxyPort so redirects are handled correctly. Everything else
seems
> to work fine, except for images loaded later seem to take a
while,
> possibly because of the Comet connections Errai is making.
I'm not
> sure if the issue is with Errai or the request is getting
rewritten
incorrectly or something.
>
> If I take away Apache and run it just on a single node,
everything
> works fine.
>