geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Blevins <dblev...@gluecode.com>
Subject Re: References to Beans (EJBContainers...)
Date Wed, 02 Feb 2005 21:33:04 GMT
Oh, I'm hanging out on IRC if you want to pop in and say hello (server:  
irc.freenode.net, channel #geronimo).  I'd love to give you an overview  
on how to adapt a protocol for use in OpenEJB and the architecture for  
network services.  There is plenty of work to be done there.

-David

On Feb 2, 2005, at 8:04 AM, Mark wrote:

> To all, most likely Alan,
>
> A little confusion on my end.  I was trying to use the  
> ReferenceCollectionListern to handle adding and removing of  
> EJBContainers.   Originally I was thinking of uisng the ContainerIndex  
> like the EJBServer does.  I have a GBean with the following:
>
> 1. I suppose the kernel creates a collection of containers during  
> server startup and passes them to my gbean.
> 2. During runtime as ejbs are deployed (started) the kernel will end  
> up calling memberAdded. (Likewise with the stop/undeploy an ejb with  
> memberRemoved)
>
>    public static final GBeanInfo GBEAN_INFO;
>
>    static {
>        GBeanInfoBuilder infoFactory = new  
> GBeanInfoBuilder(RmiIiopServerGBean.class);
>
>        infoFactory.addInterface(SocketService.class);
>
>        infoFactory.addAttribute("classLoader", ClassLoader.class,  
> false);
>        infoFactory.addAttribute("args", ArrayList.class, true);
>        infoFactory.addAttribute("props", Properties.class, true);
>        infoFactory.addAttribute("ip", String.class, true);
>        infoFactory.addAttribute("port", int.class, true);
>        infoFactory.addReference("AdapterManager",  
> AdapterManager.class);
>        infoFactory.addReference("Containers", EJBContainer.class); //  
> Use this?
>        infoFactory.addReference("ContainerIndex",  
> ContainerIndex.class);  // or Use this?
>
>        infoFactory.setConstructor(new String[]{"classLoader",  
> "AdapterManager", "ContainerIndex"});
>
>        GBEAN_INFO = infoFactory.getBeanInfo();
>    }
>
>    public static GBeanInfo getGBeanInfo() {
>        return GBEAN_INFO;
>    }
>
>    public void memberAdded(ReferenceCollectionEvent event) {
>        EJBContainer container = (EJBContainer) event.getMember();
>
>        // TODO: How does this method differ from setContainers()???
>
>        log.debug( "RmiIiopServerGBean.memberAdded(): container = " +  
> container );
>        log.debug( "RmiIiopServerGBean.memberAdded(): containerID = " +  
> container.getContainerID() );
>
> ............
>    }
>
>    public void memberRemoved(ReferenceCollectionEvent event) {
>        EJBContainer container = (EJBContainer) event.getMember();
>
>        log.debug( "RmiIiopServerGBean.memberRemoved(): container = " +  
> container );
>        log.debug( "RmiIiopServerGBean.memberRemoved(): containerID = "  
> + container.getContainerID() );
>
> ...........
>    }
>
>    public void setContainers(Collection containers) {
>        log.debug( "RmiIiopServerGBean.setContainers(): containers = "  
> + containers );
>        ReferenceCollection ref = (ReferenceCollection) containers;
>        ref.addReferenceCollectionListener(this);
>
>        this.containers = containers;
>    }
>
>
> In my plan, I have:
>
> 1. In the reference for Contains, I have a name pattern for EJBs.   
> However, I don't seem to be able to add a wildcard to represent  
> any/all containers.  I have tried various settings all result in  
> either a Malformed exception or other.
> 2. I suspect that I shouldn't use ContainerIndex, but rather  
> Containers.
> 3. I have also observed that when using ContainerIndex, the kernel is  
> able to start my GBean since there is a valid object reference for  
> ContainerIndex.  I have seen messages on the console that indicate  
> that the kernel is awaiting an object reference for ContainerIndex.   
> This is probably due to the fact that I don't currently have an ejb  
> deployed.
>
>    <gbean name="interop:type=AdapterManager,name=AdapterManager"  
> class="org.apache.geronimo.interop.adapter.AdapterManagerGBean"/>
>
>    <gbean name="interop:type=NetworkService,name=RMIIIOP"  
> class="org.openejb.server.StandardServiceStackGBean">
>        <attribute name="name">RMIIIOP</attribute>
>        <attribute name="port">9000</attribute>
>        <attribute name="address">127.0.0.1</attribute>
>        <attribute name="allowHosts">127.0.0.1</attribute>
>        <attribute name="priority">5</attribute>
>        <attribute name="threads">20</attribute>
>        <attribute  
> name="logOnSuccess">HOST,NAME,THREADID,USERID</attribute>
>        <attribute name="logOnFailure">HOST,NAME</attribute>
>        <reference  
> name="Server">interop:type=Server,name=RMIIIOP</reference>
>    </gbean>
>
>    <gbean name="interop:type=Server,name=RMIIIOP"  
> class="org.apache.geronimo.interop.rmi.iiop.server.RmiIiopServerGBean">
>        <reference  
> name="ContainerIndex">openejb:type=ContainerIndex</reference>
>        <reference  
> name="Containers">openejb.server:EJBModule=ejbhw,*</reference>
>        <reference  
> name="AdapterManager">interop: 
> type=AdapterManager,name=AdapterManager</reference>
>    </gbean>


Mime
View raw message