You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jb...@apache.org on 2003/09/03 18:02:06 UTC
cvs commit: incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/model/j2ee JNDIEnvironmentRefs.java
jboynes 2003/09/03 09:02:06
Modified: modules/core/src/java/org/apache/geronimo/client
AppClientContainer.java Launcher.java
MainInvokerInterceptor.java
modules/core/src/java/org/apache/geronimo/deployment/model/appclient
ApplicationClient.java
Added: modules/core/src/java/org/apache/geronimo/naming/java
ComponentContextBuilder.java
modules/core/src/test/org/apache/geronimo/naming/java
ContextBuilderTest.java
modules/core/src/java/org/apache/geronimo/deployment/model/j2ee
JNDIEnvironmentRefs.java
Log:
Add component JNDI context support for Application Clients
Only env-entry values are supported at this time
Revision Changes Path
1.3 +19 -2 incubator-geronimo/modules/core/src/java/org/apache/geronimo/client/AppClientContainer.java
Index: AppClientContainer.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/client/AppClientContainer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AppClientContainer.java 1 Sep 2003 20:38:48 -0000 1.2
+++ AppClientContainer.java 3 Sep 2003 16:02:05 -0000 1.3
@@ -59,6 +59,8 @@
import java.net.URL;
import java.net.URLClassLoader;
+import javax.naming.Context;
+
import org.apache.geronimo.common.AbstractRPCContainer;
import org.apache.geronimo.deployment.DeploymentException;
import org.apache.geronimo.naming.java.ComponentContextInterceptor;
@@ -75,6 +77,7 @@
private String mainClassName;
private URL clientURL;
+ private Context compContext;
public AppClientContainer() throws DeploymentException {
}
@@ -107,6 +110,20 @@
this.clientURL = clientURL;
}
+ /**
+ * @jmx:managed-attribute
+ */
+ public Context getComponentContext() {
+ return compContext;
+ }
+
+ /**
+ * @jmx:managed-attribute
+ */
+ public void setComponentContext(Context compContext) {
+ this.compContext = compContext;
+ }
+
protected void doStart() throws Exception {
ClassLoader clientCL = new URLClassLoader(new URL[] { clientURL }, Thread.currentThread().getContextClassLoader());
Method mainMethod;
@@ -118,7 +135,7 @@
} catch (NoSuchMethodException e) {
throw new DeploymentException("Main-Class " + mainClassName + " does not have a main method", e);
}
- addInterceptor(new ComponentContextInterceptor(null));
+ addInterceptor(new ComponentContextInterceptor(compContext));
addInterceptor(new MainInvokerInterceptor(mainMethod));
}
1.3 +78 -24 incubator-geronimo/modules/core/src/java/org/apache/geronimo/client/Launcher.java
Index: Launcher.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/client/Launcher.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Launcher.java 23 Aug 2003 22:14:20 -0000 1.2
+++ Launcher.java 3 Sep 2003 16:02:05 -0000 1.3
@@ -77,14 +77,21 @@
import javax.management.ObjectName;
import javax.management.ReflectionException;
import javax.management.ServiceNotFoundException;
+import javax.naming.Context;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.impl.LogFactoryImpl;
import org.apache.geronimo.deployment.DeploymentException;
+import org.apache.geronimo.deployment.model.appclient.ApplicationClient;
import org.apache.geronimo.jmx.JMXKernel;
import org.apache.geronimo.jmx.JMXUtil;
import org.apache.geronimo.proxy.ProxyInvocation;
+import org.apache.geronimo.naming.java.ComponentContextBuilder;
+import org.apache.geronimo.xml.deployment.AppClientLoader;
+import org.apache.geronimo.common.InvocationResult;
+import org.apache.xerces.parsers.DOMParser;
+import org.xml.sax.SAXException;
/**
* Launcher for J2EE Application Clients.
@@ -95,7 +102,7 @@
static {
// Add our default Commons Logger that support the trace level
if (System.getProperty(LogFactoryImpl.LOG_PROPERTY) == null) {
- System.setProperty(LogFactoryImpl.LOG_PROPERTY, "org.apache.geronimo.core.log.Log4jLog");
+ System.setProperty(LogFactoryImpl.LOG_PROPERTY, "org.apache.geronimo.common.log.log4j.Log4jLog");
}
}
@@ -106,16 +113,29 @@
private JMXKernel kernel;
private MBeanServer mbServer;
private URL clientURL;
+ private URL deploymentURL;
private String[] appArgs;
private ObjectName controllerName;
private ObjectName clientName;
+ private ShutdownThread shutdownHook;
private Launcher(String[] args) throws IllegalArgumentException {
parseCommandLine(args);
}
private void deploy() throws DeploymentException {
- Runtime.getRuntime().addShutdownHook(new ShutdownThread("Geronimo-Shutdown", this));
+ shutdownHook = new ShutdownThread("Geronimo-Shutdown", this);
+ Runtime.getRuntime().addShutdownHook(shutdownHook);
+
+ if (clientURL.toString().endsWith("/")) {
+ deploymentURL = clientURL;
+ } else {
+ try {
+ deploymentURL = new URL("jar:" + clientURL + "!/");
+ } catch (MalformedURLException e) {
+ throw new DeploymentException("Unable to create deploymentURL", e);
+ }
+ }
kernel = new JMXKernel("Geronimo Client");
mbServer = kernel.getMBeanServer();
@@ -192,19 +212,42 @@
throw new DeploymentException(e);
}
+ String mainClassName = getMainClassName();
+ ApplicationClient appClient = loadAppClientDescriptor();
+
+ Context compContext = ComponentContextBuilder.buildContext(appClient);
+
+ try {
+ AttributeList attrs = new AttributeList(2);
+ attrs.add(new Attribute("MainClassName", mainClassName));
+ attrs.add(new Attribute("ClientURL", clientURL));
+ attrs.add(new Attribute("ComponentContext", compContext));
+ AttributeList setAttrs = mbServer.setAttributes(clientName, attrs);
+ assert (attrs.size() == setAttrs.size());
+ } catch (Exception e) {
+ throw new DeploymentException(e);
+ }
+
+ try {
+ mbServer.invoke(clientName, "start", null, null);
+ } catch (Exception e) {
+ throw new DeploymentException(e);
+ }
+ }
+
+ private String getMainClassName() throws DeploymentException {
String mainClassName;
try {
Manifest manifest;
- if (clientURL.toString().endsWith("/")) {
+ if ("jar".equals(deploymentURL.getProtocol())) {
+ JarURLConnection jarConn = (JarURLConnection) deploymentURL.openConnection();
+ manifest = jarConn.getManifest();
+ } else {
// unpacked
- URL manifestURL = new URL(clientURL, "META-INF/MANIFEST.MF");
+ URL manifestURL = new URL(deploymentURL, "META-INF/MANIFEST.MF");
InputStream is = manifestURL.openStream();
manifest = new Manifest(is);
is.close();
- } else {
- URL jarURL = new URL("jar:" + clientURL + "!/");
- JarURLConnection jarConn = (JarURLConnection) jarURL.openConnection();
- manifest = jarConn.getManifest();
}
Attributes attrs = manifest.getMainAttributes();
mainClassName = (String) attrs.get(Attributes.Name.MAIN_CLASS);
@@ -214,20 +257,18 @@
} catch (IOException e) {
throw new DeploymentException("Unable to get Main-Class from manifest for " + clientURL, e);
}
+ return mainClassName;
+ }
+ private ApplicationClient loadAppClientDescriptor() throws DeploymentException {
try {
- AttributeList attrs = new AttributeList(2);
- attrs.add(new Attribute("MainClassName", mainClassName));
- attrs.add(new Attribute("ClientURL", clientURL));
- mbServer.setAttributes(clientName, attrs);
- } catch (Exception e) {
- throw new DeploymentException(e);
- }
-
- try {
- mbServer.invoke(clientName, "start", null, null);
+ URL appClientURL = new URL(deploymentURL, "META-INF/application-client.xml");
+ DOMParser parser = new DOMParser();
+ parser.parse(appClientURL.toString());
+ AppClientLoader loader = new AppClientLoader();
+ return loader.load(parser.getDocument());
} catch (Exception e) {
- throw new DeploymentException(e);
+ throw new DeploymentException("Unable to load application-client.xml", e);
}
}
@@ -253,13 +294,19 @@
}
kernel.release();
}
+ try {
+ Runtime.getRuntime().removeShutdownHook(shutdownHook);
+ } catch (Exception e) {
+ // ignore
+ }
}
- public void run() {
+ public void run() throws Exception {
+ InvocationResult result;
try {
ProxyInvocation invocation = new ProxyInvocation();
ProxyInvocation.putArguments(invocation, new Object[] { appArgs });
- mbServer.invoke(clientName, "invoke", new Object[]{invocation}, new String[]{"org.apache.geronimo.common.Invocation"});
+ result = (InvocationResult) mbServer.invoke(clientName, "invoke", new Object[]{invocation}, new String[]{"org.apache.geronimo.common.Invocation"});
} catch (InstanceNotFoundException e) {
IllegalStateException ex = new IllegalStateException("Unable to invoke app client");
ex.initCause(e);
@@ -272,9 +319,12 @@
ex.initCause(e);
throw ex;
}
+ if (result.isException()) {
+ throw result.getException();
+ }
}
- public static void main(String[] args) {
+ public static void main(String[] args) throws Exception {
Launcher launcher;
try {
launcher = new Launcher(args);
@@ -292,7 +342,11 @@
return;
}
- launcher.run();
+ try {
+ launcher.run();
+ } finally {
+ launcher.undeploy();
+ }
}
private void parseCommandLine(String[] args) throws IllegalArgumentException {
1.3 +2 -3 incubator-geronimo/modules/core/src/java/org/apache/geronimo/client/MainInvokerInterceptor.java
Index: MainInvokerInterceptor.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/client/MainInvokerInterceptor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MainInvokerInterceptor.java 26 Aug 2003 22:11:23 -0000 1.2
+++ MainInvokerInterceptor.java 3 Sep 2003 16:02:05 -0000 1.3
@@ -80,7 +80,7 @@
assert (mainMethod.equals(ProxyInvocation.getMethod(invocation)));
Object[] args = ProxyInvocation.getArguments(invocation);
try {
- mainMethod.invoke(null, args);
+ return new SimpleInvocationResult(mainMethod.invoke(null, args));
} catch (InvocationTargetException e) {
Throwable cause = e.getCause();
if (cause instanceof Exception && cause instanceof RuntimeException == false) {
@@ -88,6 +88,5 @@
}
throw cause;
}
- return new SimpleInvocationResult(null);
}
}
1.2 +8 -2 incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/model/appclient/ApplicationClient.java
Index: ApplicationClient.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/model/appclient/ApplicationClient.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ApplicationClient.java 1 Sep 2003 22:12:17 -0000 1.1
+++ ApplicationClient.java 3 Sep 2003 16:02:05 -0000 1.2
@@ -63,13 +63,15 @@
import org.apache.geronimo.deployment.model.j2ee.ResourceEnvRef;
import org.apache.geronimo.deployment.model.j2ee.ResourceRef;
import org.apache.geronimo.deployment.model.j2ee.ServiceRef;
+import org.apache.geronimo.deployment.model.j2ee.JNDIEnvironmentRefs;
+import org.apache.geronimo.deployment.model.j2ee.EJBLocalRef;
/**
*
*
* @version $Revision$ $Date$
*/
-public class ApplicationClient extends Displayable {
+public class ApplicationClient extends Displayable implements JNDIEnvironmentRefs {
private String version;
private EnvEntry[] envEntry;
private EJBRef[] ejbRef;
@@ -102,6 +104,10 @@
public void setEJBRef(EJBRef[] ejbRef) {
this.ejbRef = ejbRef;
+ }
+
+ public EJBLocalRef[] getEJBLocalRef() {
+ return new EJBLocalRef[0];
}
public EnvEntry[] getEnvEntry() {
1.1 incubator-geronimo/modules/core/src/java/org/apache/geronimo/naming/java/ComponentContextBuilder.java
Index: ComponentContextBuilder.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Geronimo" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Geronimo", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
package org.apache.geronimo.naming.java;
import java.util.HashMap;
import java.util.Map;
import javax.naming.Context;
import org.apache.geronimo.deployment.DeploymentException;
import org.apache.geronimo.deployment.model.j2ee.EnvEntry;
import org.apache.geronimo.deployment.model.j2ee.JNDIEnvironmentRefs;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2003/09/03 16:02:05 $
*/
public class ComponentContextBuilder {
/**
* Build a component context from definitions contained in POJOs read from
* a deployment descriptor.
* @param refs the source reference definitions
* @return a Context that can be bound to java:comp
*/
public static Context buildContext(JNDIEnvironmentRefs refs) throws DeploymentException {
Map envMap = new HashMap();
buildEnvEntries(envMap, refs.getEnvEntry());
Map compMap = new HashMap();
compMap.put("env", new ReadOnlyContext(envMap));
return new ReadOnlyContext(compMap);
}
private static void buildEnvEntries(Map envMap, EnvEntry[] envEntries) throws DeploymentException {
for (int i=0; i < envEntries.length; i++) {
EnvEntry entry = envEntries[i];
String name = entry.getEnvEntryName();
String type = entry.getEnvEntryType();
String value = entry.getEnvEntryValue();
Object mapEntry;
try {
if (value == null) {
mapEntry = null;
} else if ("java.lang.String".equals(type)) {
mapEntry = value;
} else if ("java.lang.Character".equals(type)) {
mapEntry = new Character(value.charAt(0));
} else if ("java.lang.Boolean".equals(type)) {
mapEntry = Boolean.valueOf(value);
} else if ("java.lang.Byte".equals(type)) {
mapEntry = Byte.valueOf(value);
} else if ("java.lang.Short".equals(type)) {
mapEntry = Short.valueOf(value);
} else if ("java.lang.Integer".equals(type)) {
mapEntry = Integer.valueOf(value);
} else if ("java.lang.Long".equals(type)) {
mapEntry = Long.valueOf(value);
} else if ("java.lang.Float".equals(type)) {
mapEntry = Float.valueOf(value);
} else if ("java.lang.Double".equals(type)) {
mapEntry = Double.valueOf(value);
} else {
throw new AssertionError("Invalid class for env-entry "+name+", "+type);
}
} catch (NumberFormatException e) {
throw new DeploymentException("Invalid numeric value for env-entry "+name+", value="+value);
}
if (envMap.put(name, mapEntry) != null) {
throw new AssertionError("Duplicate entry for env-entry "+name);
}
}
}
}
1.1 incubator-geronimo/modules/core/src/test/org/apache/geronimo/naming/java/ContextBuilderTest.java
Index: ContextBuilderTest.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Geronimo" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Geronimo", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
package org.apache.geronimo.naming.java;
import javax.naming.Context;
import junit.framework.TestCase;
import org.apache.geronimo.deployment.model.appclient.ApplicationClient;
import org.apache.geronimo.deployment.model.j2ee.EnvEntry;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2003/09/03 16:02:06 $
*/
public class ContextBuilderTest extends TestCase {
private ApplicationClient client;
protected void setUp() throws Exception {
client = new ApplicationClient();
EnvEntry stringEntry = new EnvEntry();
stringEntry.setEnvEntryName("string");
stringEntry.setEnvEntryType("java.lang.String");
stringEntry.setEnvEntryValue("Hello World");
EnvEntry intEntry = new EnvEntry();
intEntry.setEnvEntryName("int");
intEntry.setEnvEntryType("java.lang.Integer");
intEntry.setEnvEntryValue("12345");
client.setEnvEntry(new EnvEntry[] { stringEntry, intEntry });
}
public void testEnvEntries() throws Exception {
Context compCtx = ComponentContextBuilder.buildContext(client);
assertEquals("Hello World", compCtx.lookup("env/string"));
assertEquals(new Integer(12345), compCtx.lookup("env/int"));
}
}
1.1 incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/model/j2ee/JNDIEnvironmentRefs.java
Index: JNDIEnvironmentRefs.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Geronimo" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Geronimo", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
package org.apache.geronimo.deployment.model.j2ee;
/**
* Interface for accessing the objects for a components JNDI context.
*
* @version $Revision: 1.1 $ $Date: 2003/09/03 16:02:06 $
*/
public interface JNDIEnvironmentRefs {
EnvEntry[] getEnvEntry();
EJBRef[] getEJBRef();
EJBLocalRef[] getEJBLocalRef();
ServiceRef[] getServiceRef();
ResourceRef[] getResourceRef();
ResourceEnvRef[] getResourceEnvRef();
MessageDestinationRef[] getMessageDestinationRef();
}