[Jboss-cvs] JBossAS SVN: r57005 - in trunk/ejb3/src: main/org/jboss/ejb3 main/org/jboss/ejb3/service test/org/jboss/ejb3/test test/org/jboss/ejb3/test/ejbthree655 test/org/jboss/ejb3/test/ejbthree655/unit test/org/jboss/ejb3/test/service test/org/jboss/ejb3/test/service/unit
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Sep 20 09:10:31 EDT 2006
Author: wolfc
Date: 2006-09-20 09:10:12 -0400 (Wed, 20 Sep 2006)
New Revision: 57005
Added:
trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/
trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/AbstractStateChecker.java
trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyManagedServiceBean.java
trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyService.java
trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyServiceBean.java
trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyServiceManagement.java
trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/unit/
trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/unit/ServiceManagementUnitTestCase.java
Modified:
trunk/ejb3/src/main/org/jboss/ejb3/EJBContainer.java
trunk/ejb3/src/main/org/jboss/ejb3/service/ServiceContainer.java
trunk/ejb3/src/main/org/jboss/ejb3/service/ServiceMBeanDelegate.java
trunk/ejb3/src/test/org/jboss/ejb3/test/service/TestResourceInjectionService.java
trunk/ejb3/src/test/org/jboss/ejb3/test/service/TestResourceInjectionServiceIF.java
trunk/ejb3/src/test/org/jboss/ejb3/test/service/unit/ServiceUnitTestCase.java
Log:
EJBTHREE-655: fosil
Modified: trunk/ejb3/src/main/org/jboss/ejb3/EJBContainer.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/EJBContainer.java 2006-09-20 12:44:12 UTC (rev 57004)
+++ trunk/ejb3/src/main/org/jboss/ejb3/EJBContainer.java 2006-09-20 13:10:12 UTC (rev 57005)
@@ -445,11 +445,7 @@
public void create() throws Exception
{
- }
-
- // Everything must be done in start to make sure all dependencies have been satisfied
- public void start() throws Exception
- {
+ // EJBTHREE-655: we need an instance after create
initializeClassContainer();
for (int i = 0; i < constructors.length; i++)
{
@@ -459,6 +455,11 @@
break;
}
}
+ }
+
+ // Everything must be done in start to make sure all dependencies have been satisfied
+ public void start() throws Exception
+ {
initializePool();
for (EncInjector injector : encInjectors.values())
Modified: trunk/ejb3/src/main/org/jboss/ejb3/service/ServiceContainer.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/service/ServiceContainer.java 2006-09-20 12:44:12 UTC (rev 57004)
+++ trunk/ejb3/src/main/org/jboss/ejb3/service/ServiceContainer.java 2006-09-20 13:10:12 UTC (rev 57005)
@@ -31,9 +31,11 @@
import javax.management.Attribute;
import javax.management.AttributeList;
import javax.management.AttributeNotFoundException;
+import javax.management.InstanceNotFoundException;
import javax.management.InvalidAttributeValueException;
import javax.management.MBeanException;
import javax.management.MBeanInfo;
+import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.ReflectionException;
@@ -78,6 +80,7 @@
ObjectName delegateObjectName;
private TimerService timerService;
+ @SuppressWarnings("unused")
private static final Logger log = Logger.getLogger(ServiceContainer.class);
public ServiceContainer(MBeanServer server, ClassLoader cl, String beanClassName, String ejbName,
@@ -126,6 +129,14 @@
public void create() throws Exception
{
super.create();
+
+ // EJBTHREE-655: fire up an instance for use as MBean delegate
+ singleton = super.construct();
+
+ // won't work, before starting the management interface MBean injection must have been done.
+ //registerManagementInterface();
+
+ invokeOptionalMethod("create");
}
@@ -135,8 +146,6 @@
try
{
- singleton = super.construct();
-
initBeanContext();
// make sure the timer service is there before injection takes place
@@ -144,9 +153,12 @@
injectDependencies(beanContext);
+ // TODO: EJBTHREE-655: shouldn't happen here, but in create
registerManagementInterface();
TimerServiceFactory.getInstance().restoreTimerService(timerService);
+
+ invokeOptionalMethod("start");
}
catch (Exception e)
{
@@ -157,19 +169,24 @@
public void stop() throws Exception
{
+ invokeOptionalMethod("stop");
+
if (timerService != null) TimerServiceFactory.getInstance().removeTimerService(timerService);
+ // TODO: EJBTHREE-655: shouldn't happen here, but in destroy
+ unregisterManagementInterface();
+
super.stop();
- if (delegate != null)
- {
- getDeployment().getKernelAbstraction().uninstallMBean(delegateObjectName);
- }
injected = false;
}
public void destroy() throws Exception
{
+ invokeOptionalMethod("destroy");
+
+ //unregisterManagementInterface();
+
super.destroy();
}
@@ -189,6 +206,46 @@
return timerService;
}
+ /**
+ * Invoke a method on the singleton without a specific security or transaction context.
+ *
+ * @param methodName
+ */
+ private void invokeOptionalMethod(String methodName)
+ {
+ /* EJBTHREE-655 has been postponed
+ ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+ try
+ {
+ Thread.currentThread().setContextClassLoader(classloader);
+ Class parameterTypes[] = { };
+ Method method = clazz.getMethod(methodName, parameterTypes);
+ Object args[] = { };
+ method.invoke(singleton, args);
+ }
+ catch(NoSuchMethodException e)
+ {
+ // ignore
+ }
+ catch (IllegalArgumentException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (InvocationTargetException e)
+ {
+ throw new RuntimeException(e.getCause());
+ }
+ finally
+ {
+ Thread.currentThread().setContextClassLoader(oldLoader);
+ }
+ */
+ }
+
public void invokePostConstruct(BeanContext beanContext)
{
//Ignore
@@ -429,7 +486,6 @@
Object securityDomainAnnotation = resolveAnnotation(org.jboss.annotation.security.SecurityDomain.class);
getDeployment().getKernelAbstraction().installMBean(delegateObjectName, getDependencyPolicy(), delegate);
-
}
}
catch (Exception e)
@@ -438,6 +494,14 @@
}
}
+ private void unregisterManagementInterface() throws InstanceNotFoundException, MBeanRegistrationException
+ {
+ if (delegate != null)
+ {
+ getDeployment().getKernelAbstraction().uninstallMBean(delegateObjectName);
+ }
+ }
+
protected void removeHandle(Handle handle)
{
throw new RuntimeException("Don't do this");
Modified: trunk/ejb3/src/main/org/jboss/ejb3/service/ServiceMBeanDelegate.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/service/ServiceMBeanDelegate.java 2006-09-20 12:44:12 UTC (rev 57004)
+++ trunk/ejb3/src/main/org/jboss/ejb3/service/ServiceMBeanDelegate.java 2006-09-20 13:10:12 UTC (rev 57005)
@@ -29,6 +29,7 @@
import javax.management.AttributeList;
import javax.management.AttributeNotFoundException;
import javax.management.DynamicMBean;
+import javax.management.InstanceNotFoundException;
import javax.management.InvalidAttributeValueException;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanException;
@@ -40,6 +41,8 @@
import javax.management.ReflectionException;
import javax.management.StandardMBean;
import javax.management.NotCompliantMBeanException;
+
+import org.jboss.logging.Logger;
import org.jboss.util.Classes;
/**
@@ -48,6 +51,8 @@
*/
public class ServiceMBeanDelegate implements DynamicMBean
{
+ private static final Logger log = Logger.getLogger(ServiceMBeanDelegate.class);
+
MBeanServer server;
ServiceContainer container;
ObjectName serviceOn;
@@ -162,9 +167,19 @@
public Object invoke(String actionName, Object params[], String signature[])
throws MBeanException, ReflectionException
{
- Method operation = getOperation(actionName, signature);
+ if(log.isTraceEnabled())
+ log.trace("invoke: " + actionName);
+
try
{
+ // EJBTHREE-655: intercept lifecycle methods
+// if(isMagicLifecycleMethod(actionName))
+// {
+// invokeMagicLifecycleMethod(actionName);
+// return null;
+// }
+
+ Method operation = getOperation(actionName, signature);
return container.localInvoke(operation, params);
}
catch (Throwable t)
@@ -390,4 +405,33 @@
return operation;
}
+
+ /* EJBTHREE-655 has been postponed
+ protected void invokeMagicLifecycleMethod(String operationName) throws Exception
+ {
+ if(operationName.equals("create"))
+ container.create();
+ else if(operationName.equals("start"))
+ container.start();
+ else if(operationName.equals("stop"))
+ container.stop();
+ else if(operationName.equals("destroy"))
+ container.destroy();
+ else
+ throw new IllegalArgumentException("can't invoke " + operationName);
+ }
+
+ protected boolean isMagicLifecycleMethod(String methodName)
+ {
+ if(methodName.equals("create"))
+ return true;
+ if(methodName.equals("start"))
+ return true;
+ if(methodName.equals("stop"))
+ return true;
+ if(methodName.equals("destroy"))
+ return true;
+ return false;
+ }
+ */
}
Added: trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/AbstractStateChecker.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/AbstractStateChecker.java 2006-09-20 12:44:12 UTC (rev 57004)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/AbstractStateChecker.java 2006-09-20 13:10:12 UTC (rev 57005)
@@ -0,0 +1,91 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.ejbthree655;
+
+import org.jboss.logging.Logger;
+
+/**
+ * Comment
+ *
+ * FIXME: This is thing might be useless because all the lifecycle methods are optional.
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public abstract class AbstractStateChecker
+{
+ private static final Logger log = Logger.getLogger(AbstractStateChecker.class);
+
+ public static enum State { INITIATED, CREATED, STARTED, STOPPED, DESTROYED };
+
+ private State currentState = State.INITIATED;
+
+ public void create()
+ {
+ log.info("create called on " + this);
+
+ setState(State.INITIATED, State.CREATED);
+ }
+
+ public void destroy()
+ {
+ log.info("destroy called on " + this);
+
+ setState(State.STOPPED, State.DESTROYED);
+ }
+
+ public State getState()
+ {
+ return currentState;
+ }
+
+ private void setState(State expectedState, State newState)
+ {
+ //log.info("setState expected = " + expectedState + ", current = " + getState() + ", new = " + newState);
+ if(!this.currentState.equals(expectedState))
+ {
+ // the exception is gobled up somewhere
+ log.warn("state should be " + expectedState + ", not " + currentState);
+ throw new IllegalStateException("state should be " + expectedState + ", not " + currentState);
+ }
+
+ this.currentState = newState;
+ }
+
+ public void start()
+ {
+ log.info("start called on " + this);
+
+ if(currentState.equals(State.STOPPED))
+ setState(State.STOPPED, State.STARTED);
+ else
+ setState(State.CREATED, State.STARTED);
+ }
+
+ public void stop()
+ {
+ //new Throwable().printStackTrace();
+ log.info("stop called on " + this);
+
+ setState(State.STARTED, State.STOPPED);
+ }
+}
Added: trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyManagedServiceBean.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyManagedServiceBean.java 2006-09-20 12:44:12 UTC (rev 57004)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyManagedServiceBean.java 2006-09-20 13:10:12 UTC (rev 57005)
@@ -0,0 +1,68 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.ejbthree655;
+
+import javax.ejb.Remote;
+
+import org.jboss.annotation.ejb.Management;
+import org.jboss.annotation.ejb.Service;
+import org.jboss.logging.Logger;
+
+/**
+ * Comment
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at Service
+ at Remote(MyService.class)
+ at Management(MyServiceManagement.class)
+public class MyManagedServiceBean extends AbstractStateChecker implements MyServiceManagement
+{
+ @SuppressWarnings("unused")
+ private static final Logger log = Logger.getLogger(MyManagedServiceBean.class);
+
+// public void create()
+// {
+// log.info("create called");
+// }
+//
+// public void destroy()
+// {
+// log.info("destroy called");
+// }
+
+ public String sayHelloTo(String name)
+ {
+ return "Hi " + name;
+ }
+
+// public void start()
+// {
+// log.info("start called");
+// }
+//
+// public void stop()
+// {
+// log.info("stop called");
+// }
+}
Added: trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyService.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyService.java 2006-09-20 12:44:12 UTC (rev 57004)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyService.java 2006-09-20 13:10:12 UTC (rev 57005)
@@ -0,0 +1,35 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.ejbthree655;
+
+/**
+ * Comment
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public interface MyService
+{
+ AbstractStateChecker.State getState();
+
+ String sayHelloTo(String name);
+}
Added: trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyServiceBean.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyServiceBean.java 2006-09-20 12:44:12 UTC (rev 57004)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyServiceBean.java 2006-09-20 13:10:12 UTC (rev 57005)
@@ -0,0 +1,66 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.ejbthree655;
+
+import javax.ejb.Remote;
+
+import org.jboss.annotation.ejb.Service;
+import org.jboss.logging.Logger;
+
+/**
+ * This service bean tests the magic lifecycle methods. (EJBTHREE-655)
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at Service
+ at Remote(MyService.class)
+public class MyServiceBean extends AbstractStateChecker
+{
+ @SuppressWarnings("unused")
+ private static final Logger log = Logger.getLogger(MyServiceBean.class);
+
+// public void create()
+// {
+// log.info("create called");
+// }
+//
+// public void destroy()
+// {
+// log.info("destroy called");
+// }
+
+ public String sayHelloTo(String name)
+ {
+ return "Hi " + name;
+ }
+
+// public void start()
+// {
+// log.info("start called");
+// }
+//
+// public void stop()
+// {
+// log.info("stop called");
+// }
+}
Added: trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyServiceManagement.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyServiceManagement.java 2006-09-20 12:44:12 UTC (rev 57004)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/MyServiceManagement.java 2006-09-20 13:10:12 UTC (rev 57005)
@@ -0,0 +1,38 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.ejbthree655;
+
+/**
+ * Comment
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public interface MyServiceManagement
+{
+ void create();
+ void start();
+ void stop();
+ void destroy();
+
+ AbstractStateChecker.State getState();
+}
Added: trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/unit/ServiceManagementUnitTestCase.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/unit/ServiceManagementUnitTestCase.java 2006-09-20 12:44:12 UTC (rev 57004)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/ejbthree655/unit/ServiceManagementUnitTestCase.java 2006-09-20 13:10:12 UTC (rev 57005)
@@ -0,0 +1,103 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.ejbthree655.unit;
+
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+import javax.naming.NameNotFoundException;
+
+import junit.framework.Test;
+
+import org.jboss.ejb3.test.ejbthree655.AbstractStateChecker;
+import org.jboss.ejb3.test.ejbthree655.MyService;
+import org.jboss.test.JBossTestCase;
+
+/**
+ * Comment
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class ServiceManagementUnitTestCase extends JBossTestCase
+{
+ public ServiceManagementUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testHasCreateBeenCalled() throws Exception
+ {
+ MyService session = (MyService) getInitialContext().lookup("MyServiceBean/remote");
+ session.sayHelloTo("me");
+
+ AbstractStateChecker.State expected = AbstractStateChecker.State.STARTED;
+ assertEquals(expected, session.getState());
+ }
+
+ public void test2() throws Exception
+ {
+ MyService session = (MyService) getInitialContext().lookup("MyManagedServiceBean/remote");
+ session.sayHelloTo("me");
+
+ AbstractStateChecker.State expected = AbstractStateChecker.State.STARTED;
+ assertEquals(expected, session.getState());
+ }
+
+ public void testRestartContainer() throws Exception
+ {
+ MBeanServerConnection server = getServer();
+ ObjectName name = new ObjectName("jboss.j2ee:jar=ejbthree655.jar,name=MyManagedServiceBean,service=EJB3,type=ManagementInterface");
+ Object params[] = { };
+ String signature[] = { };
+ server.invoke(name, "stop", params, signature);
+
+ {
+ AbstractStateChecker.State expected = AbstractStateChecker.State.STOPPED;
+ assertEquals(expected, server.getAttribute(name, "State"));
+ }
+
+ try
+ {
+ MyService session = (MyService) getInitialContext().lookup("MyManagedServiceBean/remote");
+ session.sayHelloTo("me");
+
+ fail("should have failed");
+ }
+ catch(NameNotFoundException e)
+ {
+ String expected = "MyManagedServiceBean not bound";
+ assertEquals(expected, e.getMessage());
+ }
+
+ server.invoke(name, "start", params, signature);
+
+ {
+ AbstractStateChecker.State expected = AbstractStateChecker.State.STARTED;
+ assertEquals(expected, server.getAttribute(name, "State"));
+ }
+ }
+
+ public static Test suite() throws Exception
+ {
+ return getDeploySetup(ServiceManagementUnitTestCase.class, "ejbthree655.jar");
+ }
+}
Modified: trunk/ejb3/src/test/org/jboss/ejb3/test/service/TestResourceInjectionService.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/service/TestResourceInjectionService.java 2006-09-20 12:44:12 UTC (rev 57004)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/service/TestResourceInjectionService.java 2006-09-20 13:10:12 UTC (rev 57005)
@@ -9,6 +9,8 @@
import org.jboss.logging.Logger;
/**
+ * Test EJBTHREE-587
+ *
* @version <tt>$Revision$</tt>
* @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
*/
@@ -18,7 +20,7 @@
private static Logger log = Logger.getLogger(TestResourceInjectionService.class);
- public boolean testedSuccessful = true;
+ public boolean testedSuccessful = false;
@Resource(mappedName = "topic/testTopic")
private Topic testTopic;
@@ -30,15 +32,32 @@
return testedSuccessful;
}
+ public boolean getTestedSuccessfulNow() {
+ boolean success = true;
+ if(testTopic == null)
+ {
+ log.warn("Dependent resource injection 'testTopic' failed");
+ success = false;
+ }
+
+ if(topicConnectionFactory == null)
+ {
+ log.warn("Dependent resource injection 'topicConnectionFactory' failed");
+ success = false;
+ }
+ return success;
+ }
+
// - Service life cycle --------------------------------------------------------
public void create() throws Exception {
log.info("TestResourceInjectionService.create()");
- testedSuccessful = testTopic != null && topicConnectionFactory != null;
+ // EJBTHREE-655: resource injection isn't done yet
}
public void start() throws Exception {
log.info("TestResourceInjectionService.start()");
+ testedSuccessful = true;
if(testTopic == null)
{
log.warn("Dependent resource injection 'testTopic' failed");
Modified: trunk/ejb3/src/test/org/jboss/ejb3/test/service/TestResourceInjectionServiceIF.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/service/TestResourceInjectionServiceIF.java 2006-09-20 12:44:12 UTC (rev 57004)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/service/TestResourceInjectionServiceIF.java 2006-09-20 13:10:12 UTC (rev 57005)
@@ -11,6 +11,8 @@
public boolean getTestedSuccessful();
+ public boolean getTestedSuccessfulNow();
+
// - Service life cycle --------------------------------------------------------
public void create() throws Exception;
Modified: trunk/ejb3/src/test/org/jboss/ejb3/test/service/unit/ServiceUnitTestCase.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/service/unit/ServiceUnitTestCase.java 2006-09-20 12:44:12 UTC (rev 57004)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/service/unit/ServiceUnitTestCase.java 2006-09-20 13:10:12 UTC (rev 57005)
@@ -138,6 +138,9 @@
assertEquals("Wrong number of remote method calls", count * count, test.getRemoteMethodCalls());
}
+ /**
+ * Was injection successful after start?
+ */
public void testEJB3_587() throws Exception
{
MBeanServerConnection server = getServer();
@@ -146,6 +149,17 @@
assertTrue(success);
}
+ /**
+ * Is injection successful when getting a management attribute?
+ */
+ public void testEJB3_587_2() throws Exception
+ {
+ MBeanServerConnection server = getServer();
+ ObjectName testerName = new ObjectName("jboss.ejb3.bugs:service=TestResourceInjectionService");
+ boolean success = (Boolean)server.getAttribute(testerName, "TestedSuccessfulNow");
+ assertTrue(success);
+ }
+
public void testServiceWithDefaultLocalJNDIName() throws Exception
{
MBeanServerConnection server = getServer();
@@ -457,10 +471,11 @@
for (int i = 0 ; i < expectedLength ; i++)
{
- int create = Integer.parseInt((String)creates.get(i));
+ // EJBTHREE-655: it's no use checking the creation order
+// int create = Integer.parseInt((String)creates.get(i));
int start = Integer.parseInt((String)starts.get(i));
int expected = (i == 0) ? i + 1 : i + 2;
- assertEquals("Creation of Service" + create + "appears at the wronmg place" + createAll, expected, create);
+// assertEquals("Creation of Service" + create + "appears at the wronmg place" + createAll, expected, create);
assertEquals("Start of Service" + start + "appears at the wronmg place" + startAll, expected, start);
}
}
More information about the jboss-cvs-commits
mailing list