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.pollForMe
ssages
(DefaultBlockingServlet.java:90)<br/>org.jboss.errai.bus.server.servle
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.internalDo
Filter
(Unknown
Source)<br/>org.apache.catalina.core.ApplicationFilterChain.doFilter(U
nknown
Source)<br/>org.springframework.security.util.FilterChainProxy$Virtual
Filter
Chain.doFilter(FilterChainProxy.java:378)<br/>org.springframework.secu
rity.i
ntercept.web.FilterSecurityInterceptor.invoke(FilterSecurityIntercepto
r.java
:109)<br/>org.springframework.security.intercept.web.FilterSecurityInt
ercept
or.doFilter(FilterSecurityInterceptor.java:83)<br/>org.springframework
.secur
ity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:
390)<br/>org.springframework.security.ui.ExceptionTranslationFilter.do
Filter
Http(ExceptionTranslationFilter.java:101)<br/>org.springframework.secu
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.SecurityC
ontext
HolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareReques
tFilte
r.java:91)<br/>org.springframework.security.ui.SpringSecurityFilter.do
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(Abstrac
tProce
ssingFilter.java:278)<br/>org.springframework.security.ui.SpringSecuri
tyFilt
er.doFilter(SpringSecurityFilter.java:53)<br/>org.springframework.secu
rity.u
til.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java
:390)<
br/>org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSi
gnOutF
ilter.java:106)<br/>org.springframework.security.util.FilterChainProxy
$Virtu
alFilterChain.doFilter(FilterChainProxy.java:390)<br/>org.springframew
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$Virtua
lFilte
rChain.doFilter(FilterChainProxy.java:390)<br/>org.springframework.security.
context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionCo
ntextI
ntegrationFilter.java:235)<br/>org.springframework.security.ui.SpringS
ecurit
yFilter.doFilter(SpringSecurityFilter.java:53)<br/>org.springframework
.secur
ity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:
390)<br/>org.springframework.security.securechannel.ChannelProcessingFilter.
> doFilterHttp(ChannelProcessingFilter.java:116)<br/>org.springframework
> .secur
> ity.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)<br/
> >org.s
> pringframework.security.util.FilterChainProxy$VirtualFilterChain.doFil
> ter(Fi
> lterChainProxy.java:390)<br/>org.springframework.security.util.FilterC
> hainPr
> oxy.doFilter(FilterChainProxy.java:175)<br/>org.springframework.web.fi
> lter.D
elegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)<br/>org.
springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFi
lterPr
oxy.java:167)<br/>org.apache.catalina.core.ApplicationFilterChain.inte
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.doFi
lter(G
uiceFilter.java:110)<br/>org.apache.catalina.core.ApplicationFilterCha
in.int
ernalDoFilter(Unknown
Source)<br/>org.apache.catalina.core.ApplicationFilterChain.doFilter(U
nknown
Source)<br/>org.apache.catalina.core.StandardWrapperValve.invoke(Unkno
wn
Source)<br/>org.apache.catalina.core.StandardContextValve.invoke(Unkno
wn
Source)<br/>org.apache.catalina.core.StandardHostValve.invoke(Unknown
Source)<br/>org.apache.catalina.valves.ErrorReportValve.invoke(Unknown
Source)<br/>org.apache.catalina.core.StandardEngineValve.invoke(Unknow
n
Source)<br/>org.terracotta.modules.tomcat.tomcat_5_5.SessionValve55.tc
Invoke
(SessionValve55.java:63)<br/>org.terracotta.modules.tomcat.tomcat_5_5.
Sessio
nValve55.invoke(SessionValve55.java:50)<br/>org.apache.catalina.connec
tor.Co
yoteAdapter.service(Unknown
Source)<br/>org.apache.coyote.http11.Http11NioProcessor.process(Unknow
n
Source)<br/>org.apache.coyote.http11.Http11NioProtocol$Http11Connectio
nHandl
er.process(Unknown
Source)<br/>org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run
(Unkno
wn
Source)<br/>java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Thr
eadPoo
lExecutor.java:886)<br/>java.util.concurrent.ThreadPoolExecutor$Worker
.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.