Hello there! I'm experience some problems dealing with ajax + tapestry
4.0.2 (and I do know I'm the reason of the problems :) )

Ok, the scenario:

A page that polls at each 2 seconds using xmlhttprequest a tapestry page.

The problems:
1- number of HTTPSessions growing in a linear way to the number of
requests (I believe its because of my persistent properties)

2 - invocations to the business method seems to be multiplied by a
huge factor (not at every 2 seconds) I believe I misunderstanding the
whole lifecycle of services/components/pages here

3- Mozilla is closing after few seconds

So I've created a component, and a special service to handle all the
stuff: It's some amount of code, and I'll not post it here, if someone
gets interested I can send it in another message:

public void service(IRequestCycle cycle) throws IOException {
        String pageName = cycle.getParameter(ServiceConstants.PAGE);
       String componentId = cycle.getParameter(ServiceConstants.COMPONENT);

       IPage componentPage = cycle.getPage(pageName);
       IComponent component = componentPage.getNestedComponent(componentId);

       ChatListener chatListener = (ChatListener)component;
       String[] params = cycle.getParameters(ServiceConstants.PARAMETER);
       cycle.setListenerParameters(params);

       chatListener.trigger(cycle);

       Object[] args = cycle.getListenerParameters();
       Collection messages = (Collection)args[0];
       PrintWriter writer = response.getPrintWriter(new
ContentType("text/xml"));
       response.setHeader("Cache-Control", "no-cache");
       writer.write(generateMessageOutput(messages));
       writer.flush();
        }

on my page I have a listener:
public void onMessageReceive(IRequestCycle cycle){
                cycle.setListenerParameters(new
Object[]{getChatServer().deQueueMessage(getParticipante())});
                Participante participante = getParticipante();
                participante.setUltimaSolicitacao(Calendar.getInstance());
                setParticipante(participante);
        }

Ok, so the component has a javascrip that renders the correct url for
it. My idea was:

Service->PageListener->Service

As you can see, the listener is the one that does the trick (removing
messages from a queue), the problem is that its been called many times
more that once at each 2 seconds, is there another cycle here that I'm
missing?

The httpsession problem was detected on the tomcat manager. My Chat
page I have persistent properties (the user logged) which are injected
as state objects. It seems that when I call the setter, instead of
replacing the user it's adding a new one (equals and hash code are
implemented)

The third problem happens even if I take off tapestry as the url for
the component to query. I decided to create a simple servlet that
would handle the requests, there I noticed that calling the plain
servlet lead to only 1 invocation at each 2 seconds. But, the browser
is still closing abruptly. As said on other emails this was a JSF app
that is being migrated. The JSF version (that calls the servlet) does
not hangs the browser, also I've tried to create a simple web app with
the exact same javascript, a jsp and a servlet (a dumb one always
giving back the same message), I tried this just to see if the error
was on the javascript. I know this is very odd, and probably hard to
find out, but is there anything on tapestry lifecycle that could
interfere on a tapestry page invoking a servlet?

I'm sorry for so many stuff in such bad English :)

Hope to hear something from you guys :)

Best Regards

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to