Author: rmannibucau
Date: Sat Oct 6 00:42:00 2012
New Revision: 1394874
URL: http://svn.apache.org/viewvc?rev=1394874&view=rev
Log:
TOMEE-445 OPENEJB-1910 handling asked interface for CdiEjbBeans + unregistring
MBeans when not already done + minor hack on OSGi to avoid to get
classcastexception registering on IvmProxy
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/managed/ManagedContainer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/monitoring/remote/RemoteResourceMonitor.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/JMXBasicDataSource.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java
openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java
openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
Sat Oct 6 00:42:00 2012
@@ -187,7 +187,11 @@ public class ReloadableEntityManagerFact
public void register() throws OpenEJBException {
final MBeanServer server = LocalMBeanServer.get();
try {
- server.registerMBean(mBeanify(), generateObjectName());
+ generateObjectName();
+ if (server.isRegistered(objectName)) {
+ server.unregisterMBean(objectName);
+ }
+ server.registerMBean(mBeanify(), objectName);
} catch (Exception e) {
throw new OpenEJBException("can't register the mbean for the
entity manager factory " + getPUname(), e);
} catch (NoClassDefFoundError ncdfe) {
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
Sat Oct 6 00:42:00 2012
@@ -39,6 +39,7 @@ import java.util.Set;
public class CdiEjbBean<T> extends BaseEjbBean<T> {
private final BeanContext beanContext;
+ private final ThreadLocal<Class<?>> askedType = new
ThreadLocal<Class<?>>();
public CdiEjbBean(BeanContext beanContext, WebBeansContext
webBeansContext) {
this(beanContext, webBeansContext, beanContext.getManagedClass());
@@ -84,7 +85,12 @@ public class CdiEjbBean<T> extends BaseE
@Override
@SuppressWarnings("unchecked")
protected T getInstance(CreationalContext<T> creationalContext) {
- return (T) webBeansContext.getBeanManagerImpl().getReference(new
RealEjbBean(this), getBeanClass(), creationalContext);
+ Type asked = askedType.get();
+ if (asked == null) {
+ askedType.remove();
+ asked = getBeanClass();
+ }
+ return (T) webBeansContext.getBeanManagerImpl().getReference(new
RealEjbBean(this), asked, creationalContext);
}
@Override
@@ -229,6 +235,14 @@ public class CdiEjbBean<T> extends BaseE
return toReturn;
}
+ public void setAskedType(final Class<?> askedType) {
+ this.askedType.set(askedType);
+ }
+
+ public void clearAskedType() {
+ askedType.remove();
+ }
+
private static class RealEjbBean<T> extends AbstractOwbBean<T> {
private final CdiEjbBean<T> delegate;
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
Sat Oct 6 00:42:00 2012
@@ -147,7 +147,17 @@ public class CdiPlugin extends AbstractO
final CreationalContext<Object> cc = (CreationalContext<Object>)
creationalContext;
final Contextual<Object> component = (Contextual<Object>) bean;
- return context.get(component, cc);
+ final boolean openejbBean = component instanceof CdiEjbBean;
+ if (openejbBean) {
+ ((CdiEjbBean) component).setAskedType(interfce);
+ }
+ try {
+ return context.get(component, cc);
+ } finally {
+ if (openejbBean) {
+ ((CdiEjbBean) component).clearAskedType();
+ }
+ }
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
Sat Oct 6 00:42:00 2012
@@ -95,7 +95,7 @@ public class TempClassLoader extends URL
// ( && !name.startsWith("javax.faces.") )||
String resourceName = name.replace('.', '/') + ".class";
InputStream in = getResourceAsStream(resourceName);
- if (!(in instanceof BufferedInputStream)) {
+ if (in != null && !(in instanceof BufferedInputStream)) {
in = new BufferedInputStream(in);
}
if (in == null) {
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/managed/ManagedContainer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/managed/ManagedContainer.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/managed/ManagedContainer.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/managed/ManagedContainer.java
Sat Oct 6 00:42:00 2012
@@ -286,6 +286,9 @@ public class ManagedContainer implements
// register the invocation stats interceptor
try {
ObjectName objectName = jmxName.set("j2eeType",
"Invocations").build();
+ if (server.isRegistered(objectName)) {
+ server.unregisterMBean(objectName);
+ }
server.registerMBean(new ManagedMBean(stats), objectName);
data.jmxNames.add(objectName);
} catch (Exception e) {
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java
Sat Oct 6 00:42:00 2012
@@ -169,6 +169,9 @@ public class MdbContainer implements Rpc
// register the invocation stats interceptor
try {
ObjectName objectName = jmxName.set("j2eeType",
"Invocations").build();
+ if (server.isRegistered(objectName)) {
+ server.unregisterMBean(objectName);
+ }
server.registerMBean(new ManagedMBean(stats), objectName);
endpointFactory.jmxNames.add(objectName);
} catch (Exception e) {
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java
Sat Oct 6 00:42:00 2012
@@ -313,9 +313,13 @@ public class SingletonInstanceManager {
jmxName.set("j2eeType", "Invocations");
// register the invocation stats interceptor
+ final MBeanServer server = LocalMBeanServer.get();
try {
ObjectName objectName = jmxName.build();
- LocalMBeanServer.get().registerMBean(new ManagedMBean(stats),
objectName);
+ if (server.isRegistered(objectName)) {
+ server.unregisterMBean(objectName);
+ }
+ server.registerMBean(new ManagedMBean(stats), objectName);
data.add(objectName);
} catch (Exception e) {
logger.error("Unable to register MBean ", e);
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
Sat Oct 6 00:42:00 2012
@@ -305,6 +305,9 @@ public class StatefulContainer implement
// register the invocation stats interceptor
try {
ObjectName objectName = jmxName.set("j2eeType",
"Invocations").build();
+ if (server.isRegistered(objectName)) {
+ server.unregisterMBean(objectName);
+ }
server.registerMBean(new ManagedMBean(stats), objectName);
data.jmxNames.add(objectName);
} catch (Exception e) {
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java
Sat Oct 6 00:42:00 2012
@@ -351,6 +351,9 @@ public class StatelessInstanceManager {
// register the invocation stats interceptor
try {
ObjectName objectName = jmxName.set("j2eeType",
"Invocations").build();
+ if (server.isRegistered(objectName)) {
+ server.unregisterMBean(objectName);
+ }
server.registerMBean(new ManagedMBean(stats), objectName);
data.add(objectName);
} catch (Exception e) {
@@ -361,6 +364,9 @@ public class StatelessInstanceManager {
// register the pool
try {
ObjectName objectName = jmxName.set("j2eeType", "Pool").build();
+ if (server.isRegistered(objectName)) {
+ server.unregisterMBean(objectName);
+ }
server.registerMBean(new ManagedMBean(data.pool), objectName);
data.add(objectName);
} catch (Exception e) {
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/monitoring/remote/RemoteResourceMonitor.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/monitoring/remote/RemoteResourceMonitor.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/monitoring/remote/RemoteResourceMonitor.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/monitoring/remote/RemoteResourceMonitor.java
Sat Oct 6 00:42:00 2012
@@ -31,6 +31,7 @@ import javax.management.MBeanInfo;
import javax.management.MBeanNotificationInfo;
import javax.management.MBeanOperationInfo;
import javax.management.MBeanParameterInfo;
+import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.ReflectionException;
import java.io.IOException;
@@ -75,8 +76,12 @@ public class RemoteResourceMonitor imple
jmxName.set("ObjectType", "Related Hosts");
objectName = jmxName.build();
+ final MBeanServer server = LocalMBeanServer.get();
try {
- LocalMBeanServer.get().registerMBean(this, objectName);
+ if (server.isRegistered(objectName)) {
+ server.unregisterMBean(objectName);
+ }
+ server.registerMBean(this, objectName);
} catch (Exception e) {
throw new OpenEJBRuntimeException(e);
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/JMXBasicDataSource.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/JMXBasicDataSource.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/JMXBasicDataSource.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/JMXBasicDataSource.java
Sat Oct 6 00:42:00 2012
@@ -20,6 +20,7 @@ import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import javax.management.Description;
+import javax.management.MBeanServer;
import javax.management.ManagedAttribute;
import javax.management.ManagedOperation;
import javax.management.ObjectName;
@@ -39,8 +40,12 @@ public class JMXBasicDataSource {
this.ds = ds;
objectName = ObjectNameBuilder.uniqueName("datasources", name, ds);
+ final MBeanServer server = LocalMBeanServer.get();
try {
- LocalMBeanServer.get().registerMBean(new
DynamicMBeanWrapper(this), objectName);
+ if (server.isRegistered(objectName)) {
+ server.unregisterMBean(objectName);
+ }
+ server.registerMBean(new DynamicMBeanWrapper(this), objectName);
} catch (Exception e) {
e.printStackTrace(); // TODO
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java
Sat Oct 6 00:42:00 2012
@@ -22,7 +22,7 @@ package org.apache.openejb.util.classloa
* without patching it.
*
*/
-public class MultipleClassLoader extends ClassLoader {
+public class MultipleClassLoader extends ClassLoader implements
ClassLoaderComparator {
private final ClassLoader second;
public MultipleClassLoader(ClassLoader first, ClassLoader second) {
@@ -64,4 +64,9 @@ public class MultipleClassLoader extends
public int hashCode() {
return getParent().hashCode();
}
+
+ @Override
+ public boolean isSame(final ClassLoader cl) {
+ return equals(cl);
+ }
}
Modified:
openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java
(original)
+++
openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java
Sat Oct 6 00:42:00 2012
@@ -247,13 +247,18 @@ public class SystemInstance {
try {
conf = system.getBase().getDirectory("conf");
} catch (IOException e) {
+ // no-op
+ }
+
+ if (conf == null || !conf.exists()) {
try {
conf = system.getBase().getDirectory("etc");
- } catch (IOException ie) {
+ } catch (IOException e) {
// no-op
}
}
- if (conf == null) {
+
+ if (conf == null || !conf.exists()) {
return new File(system.getBase().getDirectory(), "conf");
}
if (subPath == null) {
Modified: openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml (original)
+++ openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml Sat Oct 6 00:42:00
2012
@@ -333,6 +333,9 @@
org.quartz.impl;resolution:=optional,
org.quartz.spi;resolution:=optional,
org.slf4j;resolution:=optional;version="[1.6,4)",
+ org.slf4j.helpers;resolution:=optional;version="[1.6,4)",
+ org.slf4j.spi;resolution:=optional;version="[1.6,4)",
+ org.slf4j.impl;resolution:=optional;version="[1.6,4)",
org.w3c.dom,
org.w3c.dom.ls,
org.xml.sax,
Modified:
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java
(original)
+++
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java
Sat Oct 6 00:42:00 2012
@@ -61,6 +61,7 @@ public class Activator implements Bundle
env.setProperty("openejb.loader", "context");
env.setProperty("openejb.deployments.classpath", "false");
env.setProperty("openejb.nobanner", "true");
+ env.setProperty("openejb.classloader.forced-skip", "org.slf4j"); //
otherwise we'll get a ClassNotFound on org.slf4j.impl.StaticLoggerBinder
env.setProperty("openejb.modulename.useHash", "true");
env.setProperty(CdiScanner.OPENEJB_CDI_FILTER_CLASSLOADER, "false");
// TODO: improve it reactivating it
Modified:
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
(original)
+++
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
Sat Oct 6 00:42:00 2012
@@ -27,6 +27,7 @@ import org.apache.openejb.config.AppModu
import org.apache.openejb.config.ConfigurationFactory;
import org.apache.openejb.config.DeploymentLoader;
import org.apache.openejb.config.UnknownModuleTypeException;
+import org.apache.openejb.core.ivm.IntraVmProxy;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.util.proxy.ProxyEJB;
import org.osgi.framework.Bundle;
@@ -59,7 +60,6 @@ public class Deployer implements BundleL
private final Map<Bundle, List<ServiceRegistration>> registrations = new
ConcurrentHashMap<Bundle, List<ServiceRegistration>>();
private final Map<Bundle, String> paths = new ConcurrentHashMap<Bundle,
String>();
- private final Map<Bundle, BundleContext> contexts = new
ConcurrentHashMap<Bundle, BundleContext>();
private final Activator openejbActivator;
@@ -79,15 +79,11 @@ public class Deployer implements BundleL
case BundleEvent.STARTED:
final BundleContext context =
event.getBundle().getBundleContext();
if (context != null) {
- contexts.put(event.getBundle(), context);
deploy(event.getBundle());
}
break;
case BundleEvent.STOPPED:
case BundleEvent.UNINSTALLED:
- if (contexts.containsKey(event.getBundle())) {
- contexts.remove(event.getBundle());
- }
undeploy(event.getBundle());
break;
case BundleEvent.UPDATED:
@@ -111,14 +107,6 @@ public class Deployer implements BundleL
try {
try {
try {
- BundleContext context = bundle.getBundleContext();
- if (context == null && contexts.containsKey(bundle)) {
- context = contexts.get(bundle);
- } else if (context == null) {
- LOGGER.warn("can't get bundle context of bundle {0}",
bundle.getBundleId());
- return;
- }
-
// equinox? found in aries
File bundleDump =
bundle.getBundleContext().getDataFile(bundle.getSymbolicName() + "/" +
bundle.getVersion() + "/");
// TODO: what should happen if there is multiple versions?
@@ -258,8 +246,13 @@ public class Deployer implements BundleL
}
}
- private void registerService(final BeanContext beanContext, final
BundleContext context, final List<Class> interfaces) {
- if (!interfaces.isEmpty()) {
+ private void registerService(final BeanContext beanContext, final
BundleContext context, final List<Class> rawItf) {
+ if (!rawItf.isEmpty()) {
+ final List<Class> interfaces = new ArrayList<Class>(rawItf);
+ if (interfaces.contains(IntraVmProxy.class)) {
+ interfaces.remove(IntraVmProxy.class);
+ }
+
final Class<?>[] itfs = interfaces.toArray(new
Class<?>[interfaces.size()]);
try {
final Object service = ProxyEJB.proxy(beanContext, itfs);
Modified:
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java?rev=1394874&r1=1394873&r2=1394874&view=diff
==============================================================================
---
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
(original)
+++
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
Sat Oct 6 00:42:00 2012
@@ -184,7 +184,11 @@ public abstract class ServiceManager {
public static void register(String serviceName, ServerService service,
MBeanServer server) {
try {
- server.registerMBean(new ManagedMBean(service),
getObjectName(serviceName));
+ final ObjectName on = getObjectName(serviceName);
+ if (server.isRegistered(on)) {
+ server.unregisterMBean(on);
+ }
+ server.registerMBean(new ManagedMBean(service), on);
} catch (Exception e) {
logger.error("Unable to register MBean ", e);
}