Hello all,

I am deploying an EJB application in multiple application servers.  For the
most part, portability has been very good to excellent, compared to the
alternative technologies.  I have encountered one huge problem, however.

One of the app servers performs an "optimization" that breaks the
application in many different ways.  This server optimizes intra-vm bean
invocations by changing the semantics of the bean method from pass-by-value
to pass-by-reference.  This quite predictably causes all kinds of problems
as parts of the application that were never intended to share state end up
walking all over each other's objects.

I know that this is implicitly prohibited by the 1.0 spec, and explicitly
prohibited in the 1.1 spec.  I know that the argument has been made here and
elsewhere that the performance improvement is "worth it".

I also know that to an application developer, whether a method has
pass-by-value semantics or pass-by-reference semantics is very important.
So important that other languages (besides Java) which support both sets of
semantics require the method declaration to indicate for each parameter and
the return value which semantics apply.  Saying that a particular method
sometimes has one set of semantics and sometimes the other, and there is no
way for the calling code to know which semantics apply on a given
invocation, causes predictable guffaws from the rank and file.

My questions:
*       How wide-spread is this "optimization"?
*       Do vendors have plans to deprecate this practice, or will it be
carried forward?
*       Will there be a certification program to determine and publicize
which servers are actually spec compliant?

Chip Wilson
ObjectSpace

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to