I like the idea of getting database as much to do as possible in terms of
persistence. And I have a question in that regard. I'm currently in the
process of evaluating Oracle JServer which is EJB 1.0 application server
embedded in 8i database. The idea is to put entity beans (even though in
fact current version of JServer doesn't support them) or some O/R layer into
Jserver which would get the persistence logic as close as it can get to the
data. On the other hand, I can still have my session beans with the business
logic running outside of the database in some other application server which
is supposedly more scalable. So, has anybody on the board happened to
implement similar architecture? What do experts here think about the
usability of "embedded" as I call them application servers (I know that
other vendors are also putting JVMs inside their databases) ? And the last
question: would there be a problem to propagate transaction context between
containers from different vendors?
Alexander "Sasha" Ananiev
PricewaterhouseCoopers
-----Original Message-----
From: Louth, William (Exchange) [SMTP:[EMAIL PROTECTED]]
Sent: Monday, April 10, 2000 3:56 PM
To: [EMAIL PROTECTED]
Subject: Re: 'local' entity beans vs dependent objects
Hi all,
Are we advocating that the business interface, that is used for
local
objects, have RemoteExceptions listed for all methods. It will have
to if it
is also to be used for the RemoteInterface. This seems strange
considering
that we are now dealing with local state/details objects are
implying that
they are remote. This really is going to cause confusion for the
client side
developer. Maybe I am reading this wrong. Maybe what people are
really
saying is that the bean and state objects are implementing the
common
business interface.
One thing to consider before moving totally away from entity beans
and to
session beans with OO databases. Entity beans should not be just
data
holders they should do some useful work on their internal state and
help
reduce the amount of the data sent across the network. This comes
back to a
previous post I made on the inprise newsgroup about this area:
======================================================
Subject: Re: Design questions
Date: Fri, 4 Feb 2000 10:52:25 +0100
From: "William Louth" <[EMAIL PROTECTED]>
Newsgroups: inprise.public.appserver
My last post was not so clear so let me try again.
A good starting point is the following pyramid:
/ User \
/ GUI \
/ Session Beans \
/ Entity Beans \
/ Database \
====================
What the above diagram is showing is a layered architecture. I use
this
diagram with new recruits to help them understand how to allocate
processing
over components. In terms of designing most business systems we
should try
to do as much work (processing) at each of the lower layers. The
larger the
layer the more data held. The following is also based on the
Locality
Principle which means moving processing closer to the data or
objects that
play together should stay together. So with this we see that we
should get
the database to do as much as possible since it has most of the
data,
actually all of the persistent data. What this mean, well getting
the
database to do the filtering (selection), sorting, computation
(computed
fields) .etc of the data before moving it up to the entity bean
layer. The
more work this layer does the less the entity beans have to do since
less
data is possibly passed.
Note: I am not advocating building alot of business logic into the
DB layer
in fact this is something I am not in favour of.
At the entity bean layer we should then provide some methods in our
interface which provide bulk processing of our internal data for
clients
(session beans). For example the premium calculations of some
insurance
policy object, our state returned in one method call, etc.. In terms
of good
OO design this is better. What we are trying to do is reduce the
amount of
data we pass up the pyramid i.e. to our clients, by processing more
of it.
At the session bean level we should try to do as much as possible to
the
entity data we have extracted before returning to the client. This
in our
case manifests itself in returning objects which represent customs
views of
our entity data, in most cases these views do not include all the
objects
processed and their properties.
At the user interface layer we should do better tasks analysis to
refine the
information that is displayed to the user, looking at what objects
are
involved, what information on these objects needs to be displayed
and at
what point in the task is it best to provide the information. In
many
interface designs too much data is usually given to the user which
requires
them to do more processing (mind) before they can get the
information they
need to peform their task efficiently.
....
With distributed computing we should be logical designers who are
reluctant
physical designers.
.........
Basically the motto is telling us all that though we should strive
to build
OO models that reflect the domain model we should bear in mind that
this is
a distributed computing system and hence our designs must also
reflect this
remoteness in some ways or we will suffer performance problems which
leads
to a failed project. For example the getDetails method on most of
our beans
just does not seem to fit with our initial model since we assume we
can just
call getName, getAddress.....
kind regards
William
AT&T
============================================================================
===
kind regards
William Louth
> -----Original Message-----
> From: Marcus Ahnve [SMTP:[EMAIL PROTECTED]]
> Sent: Monday, April 10, 2000 7:44 PM
> To: [EMAIL PROTECTED]
> Subject: Re: 'local' entity beans vs dependent objects
>
> > Miscellany
> > ----------
> > We are using what we call "state objects" to pass entity bean
state to
> clients
> > to avoid what would otherwise be an incredible amount of getter
traffic
> on the
> > net. We also have developed "business interfaces" that both the
state
> objects
> > and remote interfaces implement. This allows us the flexibility
to
> change our
> > minds about whether a client should deal with remote interfaces
or state
> > objects. However, when it comes to life cycle stuff, we're
using the
> stock
> > standard entity bean interfaces provided by EJB.
>
> Stock standard = just the regular, right? I reread your post and I
think
> I understood it this time. If so I believe that the last part of
my last
> post did not address your question, sorry about that.
>
> What do you get by having the state objects implementing the same
> interface as the remote interface does inherit, apart of the
> changability between them and remote interfaces? To me this seems
like
> creating a proxy instead of the adapter which would allow for
greater
> flexibility.
>
> As far as life cycle goes I have this idea about having the a bean
> returning a object by value for modification on the client and
then
> updating it to the persistent storage, as I mentioned in my last
post.
> This was what we did in a non EJB environment (NetDynamics 4) when
I was
> involved in a large travel booking service where the business
rules were
> ridiculously complex. However after following what the people from
> Gemstone and Versant has had to say about this topic I'm not
certain
> that I want the entity beans at all, I'm right now more into
having it
> their suggested way with a session bean accessing a object
database.
>
> And I really think you can do the most awesome things if you put
Jini
> into the mix, for the appropriate systems of course.
>
> These are just vague thoughts though, I hope to be able to try
them out
> later.
>
> Regards,
>
> /Marcus
>
> Marcus Ahnve
> Sun Java Center
> Sweden
>
>
==========================================================================
> =
> 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".
***********************************************************************
Bear Stearns is not responsible for any recommendation,
solicitation,
offer or agreement or any information about any transaction,
customer
account or account activity contained in this communication.
***********************************************************************
===========================================================================
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".
===========================================================================
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".