[jboss-cvs] JBossAS SVN: r73701 - in projects/ejb3/trunk/proxy/src/test: java/org/jboss/ejb3/test/proxy/remoteaccess and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue May 27 07:02:55 EDT 2008
Author: ALRubinger
Date: 2008-05-27 07:02:55 -0400 (Tue, 27 May 2008)
New Revision: 73701
Added:
projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/
projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/JndiPropertiesRedirectClassloader.java
projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/MockServer.java
projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/unit/
projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase.java
projects/ejb3/trunk/proxy/src/test/resources/jnpserver.properties
projects/ejb3/trunk/proxy/src/test/resources/org/jboss/ejb3/test/proxy/remoteaccess/
projects/ejb3/trunk/proxy/src/test/resources/org/jboss/ejb3/test/proxy/remoteaccess/unit/
projects/ejb3/trunk/proxy/src/test/resources/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase-beans.xml
Log:
[EJBTHREE-1345] Added remoteaccess tests to expose flaws in remote invocation
Added: projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/JndiPropertiesRedirectClassloader.java
===================================================================
--- projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/JndiPropertiesRedirectClassloader.java (rev 0)
+++ projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/JndiPropertiesRedirectClassloader.java 2008-05-27 11:02:55 UTC (rev 73701)
@@ -0,0 +1,64 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.test.proxy.remoteaccess;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Enumeration;
+
+import org.jboss.logging.Logger;
+
+/**
+ * JndiPropertiesRedirectClassloader
+ *
+ * Hacky classloader to use to prevent the JNP Server from
+ * loading jndi.properties (which should be used by clients
+ * only) and instead swapping for jnpserver.properties
+ *
+ * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
+ * @version $Revision: $
+ */
+public class JndiPropertiesRedirectClassloader extends ClassLoader
+{
+
+ private static final String TO_REPLACE = "jndi.properties";
+
+ private static final String REPLACE_WITH = "jnpserver.properties";
+
+ private static final Logger log = Logger.getLogger(JndiPropertiesRedirectClassloader.class);
+
+ /**
+ * Replaces a request to load "jndi.properties" with "jnpserver.properties"
+ */
+ @Override
+ public Enumeration<URL> getResources(String name) throws IOException
+ {
+ if (name.equals(JndiPropertiesRedirectClassloader.TO_REPLACE))
+ {
+ log.info("Replacing request for " + JndiPropertiesRedirectClassloader.TO_REPLACE + " with "
+ + JndiPropertiesRedirectClassloader.REPLACE_WITH);
+ name = JndiPropertiesRedirectClassloader.REPLACE_WITH;
+ }
+ return super.getResources(name);
+ }
+
+}
Added: projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/MockServer.java
===================================================================
--- projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/MockServer.java (rev 0)
+++ projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/MockServer.java 2008-05-27 11:02:55 UTC (rev 73701)
@@ -0,0 +1,263 @@
+package org.jboss.ejb3.test.proxy.remoteaccess;
+
+import org.jboss.ejb3.common.registrar.plugin.mc.Ejb3McRegistrar;
+import org.jboss.ejb3.common.registrar.spi.Ejb3RegistrarLocator;
+import org.jboss.ejb3.test.mc.bootstrap.EmbeddedTestMcBootstrap;
+import org.jboss.ejb3.test.proxy.common.Utils;
+import org.jboss.ejb3.test.proxy.common.container.StatelessContainer;
+import org.jboss.ejb3.test.proxy.common.ejb.slsb.MyStatelessBean;
+import org.jboss.logging.Logger;
+
+/**
+ * MockServer
+ *
+ * Launches a new MC Bootstrap, EJB Containers, and performs
+ * all initialization to mock a remote server environment
+ *
+ * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
+ * @version $Revision: $
+ */
+public class MockServer
+{
+
+ // --------------------------------------------------------------------------------||
+ // Class Members ------------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ private static final Logger log = Logger.getLogger(MockServer.class);
+
+ private static MockServer server;
+
+ // --------------------------------------------------------------------------------||
+ // Instance Members ---------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ private EmbeddedTestMcBootstrap bootstrap;
+
+ /**
+ * Name of the SLSB Container for these tests
+ */
+ private String containerName;
+
+ /**
+ * The Test Class using this launcher
+ */
+ private Class<?> testClass;
+
+ // --------------------------------------------------------------------------------||
+ // Constructor --------------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ /**
+ * Constructor
+ */
+ public MockServer(Class<?> testClass)
+ {
+ this.setTestClass(testClass);
+ }
+
+ // --------------------------------------------------------------------------------||
+ // Main ---------------------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ /**
+ * Runtime Entry Point
+ *
+ * @param args
+ */
+ public static void main(String... args)
+ {
+
+ // Assert test class passed in
+ assert args.length == 1 : "String fully-qualified name of test class is the required first argument";
+
+ // Get Test Class
+ String testClassname = args[0];
+ Class<?> testClass = null;
+ try
+ {
+ testClass = Class.forName(testClassname);
+ }
+ catch (ClassNotFoundException cnfe)
+ {
+ throw new RuntimeException("Specified Test Class, \"" + testClassname + "\" could not be found", cnfe);
+ }
+
+ // Create a new Launcher
+ MockServer launcher = new MockServer(testClass);
+ MockServer.setServer(server);
+
+ // Initialize the launcher in a new Thread
+ new Startup(launcher).start();
+
+ }
+
+ // --------------------------------------------------------------------------------||
+ // Functional Methods -------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ /**
+ * Initializes the instance by starting up an MC Bootstrap,
+ * deploying relevant *-beans.xml, creating and installing EJB Containers
+ */
+ protected void initialize() throws Throwable
+ {
+
+ // Switch up to the hacky CL so that "jndi.properties" is not loaded
+ ClassLoader olderLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(new JndiPropertiesRedirectClassloader());
+
+ // Create and set a new MC Bootstrap
+ this.setBootstrap(EmbeddedTestMcBootstrap.createEmbeddedMcBootstrap());
+
+ // Add a Shutdown Hook
+ Runtime.getRuntime().addShutdownHook(new ShutdownHook());
+
+ // Bind the Ejb3Registrar
+ Ejb3RegistrarLocator.bindRegistrar(new Ejb3McRegistrar(bootstrap.getKernel()));
+
+ // Deploy *-beans.xml
+ this.getBootstrap().deploy(this.getTestClass());
+
+ // Create a SLSB Container
+ StatelessContainer container = Utils.createSlsb(MyStatelessBean.class);
+ log.info("Created SLSB Container: " + container.getName());
+ this.setContainerName(container.getName());
+
+ // Install into MC
+ this.getBootstrap().installInstance(container.getName(), container);
+
+ // Restore old CL
+ Thread.currentThread().setContextClassLoader(olderLoader);
+
+ }
+
+ // --------------------------------------------------------------------------------||
+ // Inner Classes ------------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ protected static class Startup extends Thread implements Runnable
+ {
+
+ // --------------------------------------------------------------------------------||
+ // Instance Members ---------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ private MockServer launcher;
+
+ // --------------------------------------------------------------------------------||
+ // Constructor --------------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ /**
+ * Constructor
+ */
+ public Startup(MockServer launcher)
+ {
+ this.setLauncher(launcher);
+ }
+
+ // --------------------------------------------------------------------------------||
+ // Overridden Implementations -----------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ /**
+ * Starts the Remote Launcher
+ */
+ @Override
+ public void run()
+ {
+ // Initialize
+ try
+ {
+ this.getLauncher().initialize();
+ }
+ catch (Throwable e)
+ {
+ throw new RuntimeException("Could not initialize " + this.getLauncher(), e);
+ }
+
+ // Run
+ while (true);
+ }
+
+ // --------------------------------------------------------------------------------||
+ // Accessors / Mutators -----------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ public MockServer getLauncher()
+ {
+ return launcher;
+ }
+
+ public void setLauncher(MockServer launcher)
+ {
+ this.launcher = launcher;
+ }
+ }
+
+ /**
+ * Shutdown Hook for the MockServer
+ */
+ protected static class ShutdownHook extends Thread implements Runnable
+ {
+
+ // --------------------------------------------------------------------------------||
+ // Overridden Implementations -----------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ /**
+ * Shuts down the Bootstrap
+ */
+ @Override
+ public void run()
+ {
+ getServer().bootstrap.shutdown();
+ }
+ }
+
+ // --------------------------------------------------------------------------------||
+ // Accessors / Mutators -----------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ public String getContainerName()
+ {
+ return this.containerName;
+ }
+
+ public void setContainerName(String containerName)
+ {
+ this.containerName = containerName;
+ }
+
+ public EmbeddedTestMcBootstrap getBootstrap()
+ {
+ return this.bootstrap;
+ }
+
+ public void setBootstrap(EmbeddedTestMcBootstrap bootstrap)
+ {
+ this.bootstrap = bootstrap;
+ }
+
+ public Class<?> getTestClass()
+ {
+ return testClass;
+ }
+
+ public void setTestClass(Class<?> testClass)
+ {
+ this.testClass = testClass;
+ }
+
+ public static MockServer getServer()
+ {
+ return server;
+ }
+
+ public static void setServer(MockServer server)
+ {
+ MockServer.server = server;
+ }
+
+}
\ No newline at end of file
Added: projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase.java
===================================================================
--- projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase.java (rev 0)
+++ projects/ejb3/trunk/proxy/src/test/java/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase.java 2008-05-27 11:02:55 UTC (rev 73701)
@@ -0,0 +1,220 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.test.proxy.remoteaccess.unit;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+
+import javax.naming.InitialContext;
+
+import org.jboss.ejb3.common.thread.RedirectProcessOutputToSystemOutThread;
+import org.jboss.ejb3.test.proxy.common.ejb.slsb.MyStatelessLocal;
+import org.jboss.ejb3.test.proxy.common.ejb.slsb.MyStatelessRemote;
+import org.jboss.ejb3.test.proxy.remoteaccess.MockServer;
+import org.jboss.logging.Logger;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * RemoteAccessTestCase
+ *
+ * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
+ * @version $Revision: $
+ */
+
+public class RemoteAccessTestCase
+{
+ // --------------------------------------------------------------------------------||
+ // Class Members ------------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ private static final Logger log = Logger.getLogger(RemoteAccessTestCase.class);
+
+ private static final String ENV_VAR_JAVAHOME = "JAVA_HOME";
+
+ private static final String EXECUTABLE_JAVA = "bin" + File.separator + "java";
+
+ private static final String LOCATION_BASEDIR = System.getProperty("basedir");
+
+ private static final String LOCATION_TARGET = RemoteAccessTestCase.LOCATION_BASEDIR + File.separator + "target";
+
+ private static final String LOCATION_TEST_CLASSES = RemoteAccessTestCase.LOCATION_TARGET + File.separator
+ + "tests-classes";
+
+ private static final String LOCATION_CLASSES = RemoteAccessTestCase.LOCATION_TARGET + File.separator + "classes";
+
+ private static final String LOCATION_CONF = RemoteAccessTestCase.LOCATION_BASEDIR + File.separator + "conf";
+
+ private static final String FILENAME_DEPENDENCY_CP = RemoteAccessTestCase.LOCATION_TARGET + File.separator
+ + "cp.txt";
+
+ private static Process remoteProcess;
+
+ // --------------------------------------------------------------------------------||
+ // Instance Members ---------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ // --------------------------------------------------------------------------------||
+ // Tests --------------------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ @Test
+ public void testInvocation() throws Throwable
+ {
+ InitialContext ctx = new InitialContext();
+
+ Object bean = ctx.lookup("MyStatelessBean/remote");
+ assertTrue(bean instanceof MyStatelessLocal);
+
+ String result = ((MyStatelessRemote) bean).sayHi("testRemote");
+ assertEquals("Hi testRemote", result);
+
+ }
+
+ // --------------------------------------------------------------------------------||
+ // Lifecycle Methods --------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ /**
+ * Starts the MockServer
+ */
+ @BeforeClass
+ public static void beforeClass() throws Throwable
+ {
+ // Start Server
+ RemoteAccessTestCase.invokeRemoteMockServerProcess(RemoteAccessTestCase.class.getName());
+
+ // Wait for Server to start
+ Thread.sleep(3000);
+ }
+
+ /**
+ * Stops the MockServer
+ *
+ * @throws Throwable
+ */
+ @AfterClass
+ public static void afterClass() throws Throwable
+ {
+ /*
+ * This is far from a graceful shutdown, but hey, this is only for a test
+ */
+ Process p = RemoteAccessTestCase.getRemoteProcess();
+ p.getOutputStream().flush();
+ p.destroy();
+ }
+
+ // --------------------------------------------------------------------------------||
+ // Helper Methods -----------------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ /**
+ * Invokes on the MockServer, spinning up as a new Process
+ *
+ * @param argument
+ * @throws Throwable
+ */
+ protected static void invokeRemoteMockServerProcess(String argument) throws Throwable
+ {
+ // Get the current System Properties and Environment Variables
+ String javaHome = System.getenv(RemoteAccessTestCase.ENV_VAR_JAVAHOME);
+ String conf = RemoteAccessTestCase.LOCATION_CONF;
+ String testClasses = RemoteAccessTestCase.LOCATION_TEST_CLASSES;
+ String classes = RemoteAccessTestCase.LOCATION_CLASSES;
+
+ // Get the contents of the dependency classpath file
+ String dependencyClasspathFilename = RemoteAccessTestCase.FILENAME_DEPENDENCY_CP;
+ File dependencyClasspath = new File(dependencyClasspathFilename);
+ assert dependencyClasspath.exists() : "File " + dependencyClasspathFilename
+ + " is required to denote the dependency CP";
+ BufferedReader reader = new BufferedReader(new FileReader(dependencyClasspath));
+ StringBuffer contents = new StringBuffer();
+ String line = null;
+ while ((line = reader.readLine()) != null)
+ {
+ contents.append(line);
+ contents.append(System.getProperty("line.separator"));
+ }
+ String depCp = contents.toString().trim();
+
+ // Build the command
+ StringBuffer command = new StringBuffer();
+ command.append(javaHome); // JAVA_HOME
+ command.append(File.separatorChar);
+ command.append(RemoteAccessTestCase.EXECUTABLE_JAVA);
+ command.append(" -cp "); // Classpath
+
+ command.append(classes);
+ command.append(File.pathSeparatorChar);
+ command.append(testClasses);
+ command.append(File.pathSeparatorChar);
+ command.append(conf);
+ command.append(File.pathSeparatorChar);
+ command.append(depCp); // Dependency CP
+ command.append(" -ea "); // Enable Assertions
+ command.append(MockServer.class.getName());
+ command.append(' ');
+ command.append(argument); // Argument
+
+ // Create a Remote Launcher
+ String cmd = command.toString();
+ String[] cmds = cmd.split(" ");
+ ProcessBuilder builder = new ProcessBuilder();
+ builder.command(cmds);
+ builder.redirectErrorStream(true);
+ File pwd = new File(RemoteAccessTestCase.LOCATION_BASEDIR);
+ assert pwd.exists() : "Present working directory for execution of remote process, " + pwd.getAbsolutePath()
+ + ", could not be found.";
+ log.debug("Remote Process working directory: " + pwd.getAbsolutePath());
+ builder.directory(pwd);
+ log.info("Launching in separate process: " + cmd);
+ try
+ {
+ RemoteAccessTestCase.setRemoteProcess(builder.start());
+ // Redirect output from the separate process
+ new RedirectProcessOutputToSystemOutThread(RemoteAccessTestCase.getRemoteProcess()).start();
+ }
+ catch (Throwable t)
+ {
+ throw new RuntimeException("Could not execute remote process", t);
+ }
+ }
+
+ // --------------------------------------------------------------------------------||
+ // Accessors / Mutators -----------------------------------------------------------||
+ // --------------------------------------------------------------------------------||
+
+ public static Process getRemoteProcess()
+ {
+ return remoteProcess;
+ }
+
+ public static void setRemoteProcess(Process remoteProcess)
+ {
+ RemoteAccessTestCase.remoteProcess = remoteProcess;
+ }
+}
Added: projects/ejb3/trunk/proxy/src/test/resources/jnpserver.properties
===================================================================
--- projects/ejb3/trunk/proxy/src/test/resources/jnpserver.properties (rev 0)
+++ projects/ejb3/trunk/proxy/src/test/resources/jnpserver.properties 2008-05-27 11:02:55 UTC (rev 73701)
@@ -0,0 +1,2 @@
+java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
+java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
\ No newline at end of file
Added: projects/ejb3/trunk/proxy/src/test/resources/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase-beans.xml
===================================================================
--- projects/ejb3/trunk/proxy/src/test/resources/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase-beans.xml (rev 0)
+++ projects/ejb3/trunk/proxy/src/test/resources/org/jboss/ejb3/test/proxy/remoteaccess/unit/RemoteAccessTestCase-beans.xml 2008-05-27 11:02:55 UTC (rev 73701)
@@ -0,0 +1,57 @@
+<deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:bean-deployer:2.0 bean-deployer_2_0.xsd"
+ xmlns="urn:jboss:bean-deployer:2.0">
+
+ <!--
+
+ JNDI
+
+ The requisite Naming Server
+
+
+ <bean name="NameServer" class="org.jnp.server.NamingBeanImpl">
+ <property name="installGlobalService">true</property>
+ </bean> -->
+
+ <!-- JNDI -->
+ <bean name="NamingBeanImpl" class="org.jnp.server.NamingBeanImpl"/>
+
+ <bean name="Naming" class="org.jnp.server.Main">
+ <property name="namingInfo"><inject bean="NamingBeanImpl"/></property>
+ <property name="port">1099</property>
+ </bean>
+
+ <!--
+
+ JNDI Registrars
+
+
+ The JNDI Registrar is responsible for all JNDI Bindings for
+ an EJB. Its constructor takes the following arguments, in order:
+
+ javax.naming.Context (JNDI Context into which to bind objects)
+ org.jboss.ejb3.proxy.spi.registry.ProxyFactoryRegistry (Implementation of ProxyFactoryRegistry)
+ String statelessSessionProxyObjectFactoryType The JNDI ObjectFactory implementation to use for SLSB
+ ...more later when SFSB, @Service, MDB Implemented
+
+ -->
+
+ <!-- SLSB JNDI Registrar -->
+ <bean name="org.jboss.ejb3.JndiRegistrar.Session.SLSBJndiRegistrar"
+ class="org.jboss.ejb3.proxy.jndiregistrar.JndiStatelessSessionRegistrar">
+ <constructor>
+ <parameter>
+ <inject bean="org.jboss.ejb3.JndiContext" />
+ </parameter>
+ <parameter>
+ org.jboss.ejb3.proxy.objectfactory.session.stateless.StatelessSessionProxyObjectFactory
+ </parameter>
+ </constructor>
+ <depends>Naming</depends>
+ </bean>
+
+ <!-- JNDI Registrar Configuration -->
+ <bean name="org.jboss.ejb3.JndiContext"
+ class="javax.naming.InitialContext" />
+
+</deployment>
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list