Got this piece of code from Andrzej Jan Taramina, Chaeron Consulting Co.
some time ago in this list. It allows polymorphic instantiation of EBeans
using the EJBHome JNDI name. It uses Reflection to find the right create
method.
I think this is what you need.

I modified it to support Helper classes to work with RMI/IIOP servers such
as IBM WebSphere.

I am very curious about your use of XML with EJB. Please let me know any
more  interesting details.

Best regards

    Javier Borrajo
    www.tid.es

>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".
>

EJBeanManager.java

Reply via email to