Hi!

We are doing some minor stresstesting on Orion, and are finding that the
environment context implementation may not be threadsafe.

Here's what we're actually doing:
We have built a mobile agent system on top of Orion. We're using
servlets to transfer agents between servers (two in our simple tests)
and EntityBeans to host the agents on each server. Once we send an
agent(=a rather complex Java object) away it "lives" on its own jumping
around between the servers. That means that if we send away 10 agents at
once (as we do in our tests) there will be 10 objects that
"concurrently" does some rather magic things on the Orion server.

If we only use one agent at a time it all works well. When we unleash 10
agents at once we see the following trace a number of times:
javax.naming.NameNotFoundException: java:comp/env/services not found
        at em.lookup(JAX)
        at javax.naming.InitialContext.lookup(InitialContext.java:349)
        at
strawberry.ejb.beans.AgentBean.setEntityContext(AgentBean.java:416)
        at
EntityHomeWrapper1.findExistingEntity(EntityHomeWrapper1.java:44)
        at EntityBeanWrapper0.reActivate(EntityBeanWrapper0.java:852)
        at
EntityBeanWrapper0.firePostArrivalEvent(EntityBeanWrapper0.java:198)
        at strawberry.web.AgentServlet$2.run(AgentServlet.java:207)
        at java.lang.Thread.run(Thread.java:479)
javax.ejb.EJBException: java:comp/env/services not found
        at
strawberry.ejb.beans.AgentBean.setEntityContext(AgentBean.java:429)
        at
EntityHomeWrapper1.findExistingEntity(EntityHomeWrapper1.java:44)
        at EntityBeanWrapper0.reActivate(EntityBeanWrapper0.java:852)
        at
EntityBeanWrapper0.firePostArrivalEvent(EntityBeanWrapper0.java:198)
        at strawberry.web.AgentServlet$2.run(AgentServlet.java:207)
        at java.lang.Thread.run(Thread.java:479)

As you can see we're looking up a deployment setting in our
setEntityContext method by doing:
new InitialContext().lookup("java:comp/env/services") (which is a
java.lang.String). Sometimes this exception occurs, sometimes not. Any
ideas? :-)

My guess is that the context is not threadsafe somehow.

/Rickard

-- 
Rickard Öberg

@home: +46 13 177937
Email: [EMAIL PROTECTED]
Homepage: http://www-und.ida.liu.se/~ricob684

Reply via email to