tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeremy Crosbie <>
Subject Re: Can cached EJB HomeHandles be invalidated?
Date Mon, 14 Nov 2005 15:48:01 GMT
You are experiencing the same problem I am. Yes, Tomcat caches the home
handle. The problem is there is no way to indicate that the handle is
invalid because it is not until the home interface is received and the
create() method called that you have this problem.

I am in the process of doing some research into the code and will post a
query to the development list to see if there is interest in a feature
forcing Tomcat to always use the ObjectFactory to retrieve the home
interface rather than retrieving it from the cached HomeHandle.

On 11/11/05 2:32 AM, "Santosh Asbe" <> wrote:

> Hi ,
>  I have faces similar problem with tomcat & websphere. Problem i have
> descirbed in detail. Do inform if any solution is there for this problem.
> I have tomcat 4.1.30 on Linux. It servers as a web server and contains only
> JSP & Servlets. We make a remote call to Websphere Application Server ( on
> AIX) using corbaloc like 'corbaloc::ip1:2809:ip2:2809'. Now when i one of my
> App server fails, the other App Server server should take over. This work
> when i use a simple java client on the Linux machine, the failover occurs.
> But when i use my application in tomcat, this does not work.
> Well we have log4j and debugging in our code.
> We thought the singleton might be an issue. so we tried the following
> without the singleton.
> I am using a Service locator ( singleton) which makes the initial call to
> App Server and stores in the ip cache. initially we that the issue was with
> the Service locator, but then even if i don't use this Service Locator, the
> problem persists.
> we made a single servlet call without the singleton.We make a remote call to
> Websphere Application Server ( on AIX) using corbaloc like
> 'corbaloc::ip1:2809:ip2:2809'. Now when i one of my App server fails, the
> other App Server server should take over.
> But stil the take over was not done.
> We have talked to IBM and they say that the tomcat does some caching and the
> problem is not with the App Server. Has anyone faced this issue? Can anyone
> help regarding this and how can i know how and where the caching is done?
> Can this issue be resolved.
> We have alsofound the following information:
> the tomcat websphere connection is done via the following ports:
> bootstrap port ( which is 2809 for us) and ORB listner port ( 41999 for our
> application)
> The tomcat opens socket to connect to the bootstrap port (2809) first and
> then ORB listner port (41999) later when the first call is made. Now when
> the subsequent calls are made connection is made via the ORB listner port
> only.
> When one of the App Server fails... it still tries to connect to bootstrap
> port (2809) of first app server. ideally it shoulde try to connect to the
> new app server bootstrap port.
> Can anyone help me reg this problem. If any other information is required, i
> will be glad to provide with the same.
> On 11/10/05, Jeremy Crosbie <> wrote:
>> I am using Tomcat 5.5.9 with WebLogic 8.1 as the EJB server/container.
>> I am configuring EJB references in the servlet context in my server.xmllike
>> so:
>> <Context ...>
>> <Ejb name="ejb/name" type="Session" home="ejb.home" remote="ejb.remote"
>> factory="my.custom.weblogic.factory" />
>> </Context>
>> The behavior I observe when the EJBs are first requested is the
>> getObjectInstance() method of my custom factory is invoked and the
>> getHomeHandle() method invoked on that return object. In subsequent
>> requests
>> for the EJB I see the getEJBHome() method of the handle being invoked (I
>> created proxies to see what exactly was happening) and the create() method
>> then being called.
>> Under ideal conditions this is fine. But what I observe when the WebLogic
>> server has been shutdown is that calls to HomeHandle.getEJBHome() succeed
>> but then the call to create() fails. The problem is the HomeHandle never
>> gets invalidated and I am required to restart Tomcat in order for things
>> to
>> start working again.
>> I am hoping that there is a way to instruct Tomcat to not cache the
>> HomeHandle but instead always delegate Home interface creation to my
>> object
>> factory. I could handle the caching and any retry logic in a
>> ServiceLocator.
>> Is this possible?
>> Thank you!
>> --jeremy
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail:
>> For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message