Hello members,
I hope you can provide me a solution to my question. We are using XML to
support client conversation with EJB (via IIOP). The client would pass an
XML string containing the class name and method invocation parameters. A
singleton Session Bean (Factory bean) will parse the XML string and extract
the class name and invocation parameters and call the appropriate EJBean(the
EJBean does whatever and returns the result back to the Factory Bean as an
XML string which then passes to the client). There are many EJBeans register
in the same container. My question is how to invoke the appropriate EJBean
dynamically. An example will explain what I mean:
Client will pass the following XML to the Factory Bean:
<QUERY>
<APPHOME>Jndi_CheckingAcct</APPHOME>
<USERINPUT>
<account_id>1002</account_id>
</USERINPUT>
</QUERY>
The Factory bean will parse the XML string to get the Home interface and
would like to do the following (somewhat achieving polymorphism):
String home_str = Parser().getHomeStr;
// home_str = "Jndi_CheckingAcct"
BaseAccount acctHome = jndiContext.lookup(home_str);
String acct_id = Parser().getAcctId;
// invoke the appropriate bean, in this case the
// CheckingAcct bean
acctHome.create(acct_id);
We don't want to have to do this:
if (home_str == "Jndi_CheckingAcct") {
CheckingAcct acctHome =
(CheckingAcct)jndiContext.lookup(home_str);
acctHome.create(acct_id);
}
if (home_str == "Jndi_SavingAcct") {
SavingAcct acctHome =
(SavingAcct)jndiContext.lookup(home_str);
acctHome.create(acct_id);
}
if (...) // you get the idea
Using XML between client/server shields us from interface changes in the
future. So later if we decide to add dirrerent account beans later we don't
have to change the interface. The client can't call the CheckingAcctHome to
get the reference directly because everthing is funnel through the Factory
bean (thus, using XML).
I know the CORBA services provide the interface repository where you can do
dynamic lookup and construction of a server object and its methods. I'm
looking for something similar in EJB. How do I achieve this?
Please comment.
Thanks,
Thong Le
===========================================================================
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".