001: /**
002: * JOnAS: Java(TM) Open Application Server
003: * Copyright (C) 1999 Bull S.A.
004: * Contact: jonas-team@objectweb.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: * Initial developer(s): Philippe Coq
022: *
023: * --------------------------------------------------------------------------
024: * $Id: Container.java 7981 2006-02-07 14:32:45Z durieuxp $
025: * --------------------------------------------------------------------------
026: */package org.objectweb.jonas_ejb.container;
027:
028: import org.objectweb.jonas_lib.naming.ContainerNaming;
029:
030: import org.objectweb.jonas_jms.api.JmsManager;
031: import org.objectweb.transaction.jta.TransactionManager;
032:
033: /**
034: * A Container is what a JOnAS Server can see of a JOnAS Container.
035: * It holds all beans coming from a same ejbjar file.
036: * There is no possibility to add or remove dynamically beans in
037: * a Container since it is build with all its beans.
038: * JMX can use this interface, but no specific Jmx classes should
039: * be inside the Container. Its management is done outside jonas_ejb.
040: * @author Philippe Coq
041: * @author Jeff Mesnil (security)
042: * @author Christophe Ney (PrincipalFactory)
043: * @author Philippe Durieux (add missing methods)
044: * @author Benjamin Bonnet (max size for thread pool)
045: * @author Florent Benoit : JACC
046: */
047: public interface Container {
048:
049: /**
050: * @return List of beans hosted in this Container
051: */
052: String[] listBeanNames();
053:
054: /**
055: * @return name of this Container
056: */
057: String getName();
058:
059: /**
060: * @return the file name of the container (.xml or .jar)
061: */
062: String getFileName();
063:
064: /**
065: * @return the external(user) file name of the container
066: */
067: String getExternalFileName();
068:
069: /**
070: * @return the classloader used for this Container
071: */
072: ClassLoader getClassLoader();
073:
074: /**
075: * Set the PrincipalFactory. This factory can be JOnAS Server dependant.
076: * The Container makes no assumption on how to get the Principal.
077: * @param pf the PrincipalFactory
078: */
079: void setPrincipalFactory(PrincipalFactory pf);
080:
081: /**
082: * @return the PrincipalFactory of the Container
083: */
084: PrincipalFactory getPrincipalFactory();
085:
086: /**
087: * set the ContainerNaming object
088: * @param naming the ContainerNaming object
089: */
090: void setContainerNaming(ContainerNaming naming);
091:
092: /**
093: * @return the ContainerNaming object
094: */
095: ContainerNaming getContainerNaming();
096:
097: /**
098: * Synchronize all entity beans
099: * @param passivate true if bean instances will be released after
100: * having been written on storage.
101: */
102: void syncAll(boolean alwaysStore, boolean passivate);
103:
104: /**
105: * set the Transaction Manager.
106: * @param tm the Transaction Manager.
107: */
108: void setTransactionManager(TransactionManager tm);
109:
110: /**
111: * @return the Transaction Manager
112: */
113: TransactionManager getTransactionManager();
114:
115: /**
116: * set the JmsManager object
117: * @param jms the JmsManager
118: */
119: void setJmsManager(JmsManager jms);
120:
121: /**
122: * @return the JmsManager object
123: */
124: JmsManager getJmsManager();
125:
126: /**
127: * set the name of the ear application containing this container.
128: * @param fileName the name of the ear application containing this
129: * container.
130: */
131: void setEarFileName(String fileName);
132:
133: /**
134: * get the name of the ear application containing this container.
135: * @return the name of the ear application containing this
136: * container.
137: */
138: String getEarFileName();
139:
140: /**
141: * Remove the JOnAS container and unregister all beans.
142: */
143: void remove();
144:
145: /**
146: * Set the security flag to enable or disable security
147: * @param b true or false to enable/disable security
148: */
149: void setSecurity(boolean b);
150:
151: /**
152: * Set the permission manager object
153: * @param permissionManager permission manager object
154: */
155: void setPermissionManager(PermissionManager permissionManager);
156:
157: /**
158: * Gets the permission manager
159: * @return the permission manager
160: */
161: PermissionManager getPermissionManager();
162:
163: /**
164: * Gets the context ID of this container (for jacc)
165: * @return contextID used for JACC
166: */
167: String getContextId();
168:
169: BeanFactory getBeanFactory(String beanName);
170: }
|