----- Original Message -----
From: "Scott M Stark" <[EMAIL PROTECTED]>
Sent: Wednesday, July 16, 2003 3:11 PM
> This shows that the call is not going through the HA aware proxy. It is
going
> through the local invoker and bypassing the HA aware proxy because of the
> collocation of the caller and callee. The problem is occuring in the
stateful
> session cache replication though. How is the serverlet session and
reference to
> the stateful session bean being maintained across the server restart?
As I suspected, a problem related with collocation...
Well, the servlet is replicated because it's deployed with <distributable/>
and Jetty replication is enabled.
The references to ejb's is kept in httpSession. I'll show you the relevant
code:
public class web_counter extends HttpServlet {
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
HttpSession sessao = request.getSession();
if (sessao.isNew()) { // Ainda nao ha contadores nem ligacao ao EJB.
/* Lets create a remote reference to the bean I want to access. */
try { InitialContext jndiContext = new InitialContext();
Object ref1 = jndiContext.lookup("contador/ContadorStateless");
ContadorHome home1 = (ContadorHome) PortableRemoteObject.narrow(ref1,
ContadorHome.class);
Contador contadorStateless = home1.create();
Object ref2 = jndiContext.lookup("contador/ContadorStatefull");
ContadorHome home2 = (ContadorHome) PortableRemoteObject.narrow(ref2,
ContadorHome.class);
Contador contadorStatefull = home2.create();
/* Keeping references to remote counters in a session atribute */
sessao.setAttribute("contadorStateless", contadorStateless);
sessao.setAttribute("contadorStatefull", contadorStatefull);
}
catch(Exception e)
{
System.out.println("Servlet: OOPS! Apanhei excepcao na inicializacao dos
EJB's: " + e.toString());
}
}
// Every time the servlet runs, this code is executed.
Contador contadorStateless = (Contador)
sessao.getAttribute("contadorStateless");
Contador contadorStatefull = (Contador)
sessao.getAttribute("contadorStatefull");
// Invoque EJB's.
try {
// [SNIP] get a value that was also store inside httpSession and call is
"counter"
System.out.println("Servlet: StatelessEJB: Add 2 + "+counter.intValue()+"
= " + contadorStateless.CalculateAdd(2,counter.intValue()) );
System.out.println("Servlet: StatefullEJB: Add 2 e "+counter.intValue()+"
= " + contadorStatefull.CalculateAdd(2,counter.intValue()) );
RetornoContador contStateless =
contadorStateless.incrementaContador("stateless");
RetornoContador contStatefull =
contadorStatefull.incrementaContador("statefull");
request.setAttribute("contStateless",contStateless);
request.setAttribute("contStatefull",contStatefull);
}
catch(Exception e){ e.printStackTrace(); }
request.getRequestDispatcher("/output.jsp").forward(request, response);
}
"Contador" is an EJB that is deployed both as a stateless and as a statefull
ejb, with the names that you can see in the jndi lookup, and both deployed
as clustered.
That ejb has 2 methods: a "add" method and a "increment" method.
"RetornoContador" is a structure (a java class with no methods except for
the constructor) that contains a int and a string.
-------------------------------------------------------
This SF.net email is sponsored by: VM Ware
With VMware you can run multiple operating systems on a single machine.
WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the
same time. Free trial click here: http://www.vmware.com/wl/offer/345/0
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user