You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hivemind.apache.org by hl...@apache.org on 2005/12/07 18:08:48 UTC
svn commit: r354805 - in /jakarta/hivemind/trunk: ./
framework/src/java/org/apache/hivemind/impl/
framework/src/java/org/apache/hivemind/impl/servicemodel/
framework/src/test/org/apache/hivemind/impl/servicemodel/
Author: hlship
Date: Wed Dec 7 09:08:30 2005
New Revision: 354805
URL: http://svn.apache.org/viewcvs?rev=354805&view=rev
Log:
HIVEMIND-162: Performance bottleneck with threaded services
Modified:
jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/ConstructableServicePoint.java
jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/RegistryInfrastructureImpl.java
jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/ServicePointImpl.java
jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/AbstractServiceModelImpl.java
jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/PooledServiceModel.java
jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/PrimitiveServiceModel.java
jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/SingletonServiceModel.java
jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/ThreadedServiceModel.java
jakarta/hivemind/trunk/framework/src/test/org/apache/hivemind/impl/servicemodel/ShutdownListenerServices.xml
jakarta/hivemind/trunk/status.xml
Modified: jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/ConstructableServicePoint.java
URL: http://svn.apache.org/viewcvs/jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/ConstructableServicePoint.java?rev=354805&r1=354804&r2=354805&view=diff
==============================================================================
--- jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/ConstructableServicePoint.java (original)
+++ jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/ConstructableServicePoint.java Wed Dec 7 09:08:30 2005
@@ -16,14 +16,14 @@
import java.util.List;
-import org.apache.hivemind.*;
-import org.apache.hivemind.internal.ServicePoint;
+import org.apache.hivemind.events.RegistryShutdownListener;
import org.apache.hivemind.internal.ServiceImplementationConstructor;
+import org.apache.hivemind.internal.ServicePoint;
/**
- * "Private" interface used by a {@link org.apache.hivemind.internal.ServiceModel}s to access
- * non-public information about a {@link org.apache.hivemind.internal.ServicePoint}, such as its
- * instance builder and interceptors.
+ * "Private" interface used by a {@link org.apache.hivemind.internal.ServiceModel}s to access non-
+ * information about a {@link org.apache.hivemind.internal.ServicePoint}, such as its instance
+ * builder and interceptors.
*
* @author Howard Lewis Ship
*/
@@ -35,11 +35,11 @@
* comes from the <service-point> itself; other modules can override this default using an
* <implementation> element.
*/
- public ServiceImplementationConstructor getServiceConstructor();
+ ServiceImplementationConstructor getServiceConstructor();
/**
- * Returns a list of {@link org.apache.hivemind.internal.ServiceInterceptorContribution}s, ordered
- * according to their dependencies. May return null or an empty list.
+ * Returns a list of {@link org.apache.hivemind.internal.ServiceInterceptorContribution}s,
+ * ordered according to their dependencies. May return null or an empty list.
* <p>
* Note that the order is tricky! To keep any error messages while ordering the interceptors
* understandable, they are ordered according into runtime execution order. Example: If we want
@@ -47,8 +47,8 @@
* following in the descriptor:
*
* <pre>
- * <interceptor service-id="hivemind.LoggingInterceptor" before="*"/>
- * <interceptor service-id="somepackage.SecurityInterceptor"/>
+ * <interceptor service-id="hivemind.LoggingInterceptor" before="*"/>
+ * <interceptor service-id="somepackage.SecurityInterceptor"/>
* </pre>
*
* The <code>before</code> value for the first interceptor contribution will be assigned to
@@ -65,18 +65,27 @@
* interceptor ... but that's an issue that applies when building the interceptor stack around
* the core service implementation.
*/
- public List getOrderedInterceptorContributions();
+ List getOrderedInterceptorContributions();
/**
* Invoked by the ServiceModel when constuction information (the builder and interceptors) is no
* longer needed.
*/
- public void clearConstructorInformation();
+ void clearConstructorInformation();
/**
- * Returns the {@link ShutdownCoordinator}, used by the service model to inform proxies that
- * the service has shutdown.
+ * Adds a shutdown listener; HiveMind uses two coordinators; the first is the
+ * hivemind.ShutdownCoordinator service, which is the coordinator used for service
+ * implementations. The second coordinator is used by the HiveMind infrastructure directly; this
+ * method adds a listener to that coordinator. Why two? It's about order of operations during
+ * registry shutdown; the hivemind.ShutdownCoordinator service's listeners are all invoked
+ * first, the the internal coordinator, to shutdown proxies and the like. This allows services
+ * to communicate during shutdown.
+ *
+ * @param listener
+ * the listener to be added to the infrastructure's shutdown coordinator
+ * @since 1.2
*/
- public ShutdownCoordinator getShutdownCoordinator();
+ void addRegistryShutdownListener(RegistryShutdownListener listener);
}
Modified: jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/RegistryInfrastructureImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/RegistryInfrastructureImpl.java?rev=354805&r1=354804&r2=354805&view=diff
==============================================================================
--- jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/RegistryInfrastructureImpl.java (original)
+++ jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/RegistryInfrastructureImpl.java Wed Dec 7 09:08:30 2005
@@ -14,6 +14,7 @@
package org.apache.hivemind.impl;
+import java.beans.Introspector;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
@@ -25,6 +26,7 @@
import org.apache.commons.logging.LogFactory;
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.ErrorHandler;
+import org.apache.hivemind.HiveMind;
import org.apache.hivemind.HiveMindMessages;
import org.apache.hivemind.Location;
import org.apache.hivemind.ShutdownCoordinator;
@@ -368,9 +370,9 @@
ShutdownCoordinator.class,
null);
- coordinatorService.shutdown();
+ coordinatorService.shutdown();
- // TODO: Shoudl this be moved earlier?
+ // TODO: Should this be moved earlier?
_shutdown = true;
@@ -391,6 +393,11 @@
// and reload in some servlet containers (such as Tomcat); this should clear that up.
PropertyUtils.clearCache();
+
+ synchronized (HiveMind.INTROSPECTOR_MUTEX)
+ {
+ Introspector.flushCaches();
+ }
}
/**
Modified: jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/ServicePointImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/ServicePointImpl.java?rev=354805&r1=354804&r2=354805&view=diff
==============================================================================
--- jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/ServicePointImpl.java (original)
+++ jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/ServicePointImpl.java Wed Dec 7 09:08:30 2005
@@ -24,6 +24,7 @@
import org.apache.hivemind.HiveMind;
import org.apache.hivemind.Occurances;
import org.apache.hivemind.ShutdownCoordinator;
+import org.apache.hivemind.events.RegistryShutdownListener;
import org.apache.hivemind.internal.ServiceImplementationConstructor;
import org.apache.hivemind.internal.ServiceInterceptorContribution;
import org.apache.hivemind.internal.ServiceModel;
@@ -289,14 +290,14 @@
return orderer.getOrderedObjects();
}
- public ShutdownCoordinator getShutdownCoordinator()
+ public void setShutdownCoordinator(ShutdownCoordinator coordinator)
{
- return _shutdownCoordinator;
+ _shutdownCoordinator = coordinator;
}
- public void setShutdownCoordinator(ShutdownCoordinator coordinator)
+ public void addRegistryShutdownListener(RegistryShutdownListener listener)
{
- _shutdownCoordinator = coordinator;
+ _shutdownCoordinator.addRegistryShutdownListener(listener);
}
/**
Modified: jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/AbstractServiceModelImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/AbstractServiceModelImpl.java?rev=354805&r1=354804&r2=354805&view=diff
==============================================================================
--- jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/AbstractServiceModelImpl.java (original)
+++ jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/AbstractServiceModelImpl.java Wed Dec 7 09:08:30 2005
@@ -21,6 +21,7 @@
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.HiveMind;
import org.apache.hivemind.ShutdownCoordinator;
+import org.apache.hivemind.events.RegistryShutdownListener;
import org.apache.hivemind.impl.ConstructableServicePoint;
import org.apache.hivemind.impl.InterceptorStackImpl;
import org.apache.hivemind.impl.ProxyBuilder;
@@ -128,8 +129,8 @@
/**
* Constructs the service implementation; this is invoked from
- * {@link org.apache.hivemind.internal.ServicePoint#getService(Class)} (for singletons),
- * or from the generated deferrable proxy (for most service models). Primarily, invokes
+ * {@link org.apache.hivemind.internal.ServicePoint#getService(Class)} (for singletons), or from
+ * the generated deferrable proxy (for most service models). Primarily, invokes
* {@link #constructNewServiceImplementation()} from within a block that checks for recursive
* builds.
*/
@@ -179,13 +180,26 @@
*
* @since 1.1
*/
- protected synchronized Object constructBridgeProxy(Object service)
+ protected Object constructBridgeProxy(Object service)
+ {
+ Class bridgeProxyClass = getBridgeProxyClass(service);
+
+ return ConstructorUtils.invokeConstructor(bridgeProxyClass, new Object[]
+ { service });
+ }
+
+ /**
+ * Factored out of {@link #constructBridgeProxy(Object)} to keep the synchronized block as small
+ * as possible.
+ *
+ * @since 1.2
+ */
+ private synchronized Class getBridgeProxyClass(Object service)
{
if (_bridgeProxyClass == null)
_bridgeProxyClass = constructBridgeProxyClass(service);
- return ConstructorUtils.invokeConstructor(_bridgeProxyClass, new Object[]
- { service });
+ return _bridgeProxyClass;
}
/**
@@ -212,9 +226,25 @@
return cf.createClass();
}
- protected ShutdownCoordinator getShutdownCoordinatorService()
+ /**
+ * Invoked after creating a service implementation object; if the object implements
+ * {@link org.apache.hivemind.events.RegistryShutdownListener}, then the object is added as a
+ * listener.
+ *
+ * @param service
+ * the service implementation
+ * @see ShutdownCoordinator
+ * @since 1.2
+ */
+ protected void registerWithShutdownCoordinator(Object service)
{
- return ( ( ShutdownCoordinator )getServicePoint().getModule().getService( ShutdownCoordinator.class ) );
- }
+ if (service instanceof RegistryShutdownListener)
+ {
+ ShutdownCoordinator coordinator = ((ShutdownCoordinator) getServicePoint().getModule()
+ .getService(ShutdownCoordinator.class));
+ RegistryShutdownListener asListener = (RegistryShutdownListener) service;
+ coordinator.addRegistryShutdownListener(asListener);
+ }
+ }
}
Modified: jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/PooledServiceModel.java
URL: http://svn.apache.org/viewcvs/jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/PooledServiceModel.java?rev=354805&r1=354804&r2=354805&view=diff
==============================================================================
--- jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/PooledServiceModel.java (original)
+++ jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/PooledServiceModel.java Wed Dec 7 09:08:30 2005
@@ -161,9 +161,7 @@
RegistryShutdownListener outerProxy = ProxyUtils
.createOuterProxy(intercepted, servicePoint);
- ShutdownCoordinator coordinator = servicePoint.getShutdownCoordinator();
-
- coordinator.addRegistryShutdownListener(outerProxy);
+ servicePoint.addRegistryShutdownListener(outerProxy);
return outerProxy;
}
@@ -226,10 +224,9 @@
if (!_serviceInterface.isInstance(core))
core = constructBridgeProxy(core);
- if( core instanceof RegistryShutdownListener )
- {
- getShutdownCoordinatorService().addRegistryShutdownListener( ( RegistryShutdownListener )core );
- }
+
+ registerWithShutdownCoordinator(core);
+
return new PooledService(core);
}
catch (Exception ex)
Modified: jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/PrimitiveServiceModel.java
URL: http://svn.apache.org/viewcvs/jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/PrimitiveServiceModel.java?rev=354805&r1=354804&r2=354805&view=diff
==============================================================================
--- jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/PrimitiveServiceModel.java (original)
+++ jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/PrimitiveServiceModel.java Wed Dec 7 09:08:30 2005
@@ -40,17 +40,15 @@
if (_constructedService == null)
{
_constructedService = constructServiceImplementation();
- if( _constructedService instanceof RegistryShutdownListener )
- {
- getShutdownCoordinatorService().addRegistryShutdownListener( ( RegistryShutdownListener )_constructedService );
- }
+
+ registerWithShutdownCoordinator(_constructedService);
}
// Note: if the service's declared interface is a class AND
// the service has interceptors, then it will not be possible
// to cast the result (since the returned interceptor will implement
// the synthetic service interface).
-
+
return _constructedService;
}
Modified: jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/SingletonServiceModel.java
URL: http://svn.apache.org/viewcvs/jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/SingletonServiceModel.java?rev=354805&r1=354804&r2=354805&view=diff
==============================================================================
--- jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/SingletonServiceModel.java (original)
+++ jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/SingletonServiceModel.java Wed Dec 7 09:08:30 2005
@@ -27,9 +27,9 @@
import org.apache.hivemind.service.MethodSignature;
/**
- * Subclass of {@link org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl} which
- * supports creation of a singleton service proxy (deferring the actual construction of the service
- * until absolutely necessary). This is used with the singleton service type, which is the default.
+ * Subclass of {@link org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl} which supports
+ * creation of a singleton service proxy (deferring the actual construction of the service until
+ * absolutely necessary). This is used with the singleton service type, which is the default.
*
* @author Howard Lewis Ship
*/
@@ -65,12 +65,11 @@
public synchronized Object getActualServiceImplementation()
{
if (_constructedService == null)
- _constructedService = constructServiceImplementation();
-
- if( _constructedService instanceof RegistryShutdownListener )
{
- getShutdownCoordinatorService().addRegistryShutdownListener( ( RegistryShutdownListener )_constructedService );
+ _constructedService = constructServiceImplementation();
+ registerWithShutdownCoordinator(_constructedService);
}
+
// The inner proxy needs the service to implement the service interface.
// For bean services (not interface services) with no interceptors,
// the implementation may be the bean provided by the factory ... which
@@ -78,7 +77,7 @@
// So we introduce a "bridge" between the two.
Class serviceInterface = getServicePoint().getServiceInterface();
-
+
if (!serviceInterface.isInstance(_constructedService))
_constructedService = constructBridgeProxy(_constructedService);
@@ -120,8 +119,9 @@
_innerProxy = (SingletonInnerProxy) c.newInstance(new Object[]
{ result, this });
- getServicePoint().getShutdownCoordinator().addRegistryShutdownListener(
- (RegistryShutdownListener) result);
+ RegistryShutdownListener asListener = (RegistryShutdownListener) result;
+
+ getServicePoint().addRegistryShutdownListener(asListener);
return result;
}
@@ -153,12 +153,12 @@
classFab.addField("_inner", serviceInterface);
classFab.addField("_shutdown", boolean.class);
- if( !RegistryShutdownListener.class.isAssignableFrom( serviceInterface ) )
+ if (!RegistryShutdownListener.class.isAssignableFrom(serviceInterface))
{
classFab.addInterface(RegistryShutdownListener.class);
classFab.addMethod(Modifier.PUBLIC | Modifier.FINAL, new MethodSignature(void.class,
- "registryDidShutdown", null, null), "{ _shutdown = true; }");
+ "registryDidShutdown", null, null), "{ _shutdown = true; }");
}
classFab.addMethod(
Modifier.PUBLIC | Modifier.SYNCHRONIZED | Modifier.FINAL,
Modified: jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/ThreadedServiceModel.java
URL: http://svn.apache.org/viewcvs/jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/ThreadedServiceModel.java?rev=354805&r1=354804&r2=354805&view=diff
==============================================================================
--- jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/ThreadedServiceModel.java (original)
+++ jakarta/hivemind/trunk/framework/src/java/org/apache/hivemind/impl/servicemodel/ThreadedServiceModel.java Wed Dec 7 09:08:30 2005
@@ -26,10 +26,10 @@
import org.apache.hivemind.service.ThreadEventNotifier;
/**
- * Like {@link org.apache.hivemind.impl.servicemodel.SingletonServiceModel}, this method returns a proxy
- * (implementing the service interface); unlike SingletonServiceModel, it <em>always</em> returns
- * the proxy. Invoking a service method on the proxy constructs a service implementation and binds
- * it to the current thread.
+ * Like {@link org.apache.hivemind.impl.servicemodel.SingletonServiceModel}, this method returns a
+ * proxy (implementing the service interface); unlike SingletonServiceModel, it <em>always</em>
+ * returns the proxy. Invoking a service method on the proxy constructs a service implementation and
+ * binds it to the current thread.
*
* @author Howard Lewis Ship
*/
@@ -43,15 +43,15 @@
private Object _serviceProxy;
private ThreadEventNotifier _notifier;
-
+
/** @since 1.1 */
-
+
private Class _serviceInterface;
public ThreadedServiceModel(ConstructableServicePoint servicePoint)
{
super(servicePoint);
-
+
_serviceInterface = servicePoint.getServiceInterface();
}
@@ -138,9 +138,7 @@
RegistryShutdownListener outerProxy = ProxyUtils
.createOuterProxy(intercepted, servicePoint);
- ShutdownCoordinator coordinator = servicePoint.getShutdownCoordinator();
-
- coordinator.addRegistryShutdownListener(outerProxy);
+ servicePoint.addRegistryShutdownListener(outerProxy);
return outerProxy;
}
@@ -154,12 +152,12 @@
Object result = _activeService.get();
if (result == null)
- result = constructServiceForCurrentThread();
+ result = constructInstanceForCurrentThread();
return result;
}
- private synchronized Object constructServiceForCurrentThread()
+ private Object constructInstanceForCurrentThread()
{
try
{
@@ -176,7 +174,7 @@
if (!_serviceInterface.isInstance(core))
core = constructBridgeProxy(core);
-
+
_activeService.set(core);
return core;
Modified: jakarta/hivemind/trunk/framework/src/test/org/apache/hivemind/impl/servicemodel/ShutdownListenerServices.xml
URL: http://svn.apache.org/viewcvs/jakarta/hivemind/trunk/framework/src/test/org/apache/hivemind/impl/servicemodel/ShutdownListenerServices.xml?rev=354805&r1=354804&r2=354805&view=diff
==============================================================================
--- jakarta/hivemind/trunk/framework/src/test/org/apache/hivemind/impl/servicemodel/ShutdownListenerServices.xml (original)
+++ jakarta/hivemind/trunk/framework/src/test/org/apache/hivemind/impl/servicemodel/ShutdownListenerServices.xml Wed Dec 7 09:08:30 2005
@@ -15,56 +15,56 @@
limitations under the License.
-->
-<module id="hivemind.lib.test" version="1.0.0">
+<module id="hivemind.lib.test" version="1.0.0" package="org.apache.hivemind.impl.servicemodel">
- <service-point id="singletonManualSimple" interface="org.apache.hivemind.impl.servicemodel.Simple">
+ <service-point id="singletonManualSimple" interface="Simple">
<invoke-factory model="singleton">
- <construct class="org.apache.hivemind.impl.servicemodel.SimpleImpl" />
+ <construct class="SimpleImpl" />
</invoke-factory>
</service-point>
- <service-point id="primitiveManualSimple" interface="org.apache.hivemind.impl.servicemodel.Simple">
+ <service-point id="primitiveManualSimple" interface="Simple">
<invoke-factory model="primitive">
- <construct class="org.apache.hivemind.impl.servicemodel.SimpleImpl" />
+ <construct class="SimpleImpl" />
</invoke-factory>
</service-point>
- <service-point id="pooledManualSimple" interface="org.apache.hivemind.impl.servicemodel.Simple">
+ <service-point id="pooledManualSimple" interface="Simple">
<invoke-factory model="pooled">
- <construct class="org.apache.hivemind.impl.servicemodel.SimpleImpl" />
+ <construct class="SimpleImpl" />
</invoke-factory>
</service-point>
- <service-point id="singletonAutoSimple" interface="org.apache.hivemind.impl.servicemodel.Simple">
+ <service-point id="singletonAutoSimple" interface="Simple">
<invoke-factory model="singleton">
- <construct class="org.apache.hivemind.impl.servicemodel.SimpleImpl" autowire-services="false"/>
+ <construct class="SimpleImpl" autowire-services="false"/>
</invoke-factory>
</service-point>
- <service-point id="primitiveAutoSimple" interface="org.apache.hivemind.impl.servicemodel.Simple">
+ <service-point id="primitiveAutoSimple" interface="Simple">
<invoke-factory model="primitive">
- <construct class="org.apache.hivemind.impl.servicemodel.SimpleImpl" autowire-services="false"/>
+ <construct class="SimpleImpl" autowire-services="false"/>
</invoke-factory>
</service-point>
- <service-point id="pooledAutoSimple" interface="org.apache.hivemind.impl.servicemodel.Simple">
+ <service-point id="pooledAutoSimple" interface="Simple">
<invoke-factory model="pooled">
- <construct class="org.apache.hivemind.impl.servicemodel.SimpleImpl" autowire-services="false"/>
+ <construct class="SimpleImpl" autowire-services="false"/>
</invoke-factory>
</service-point>
- <service-point id="registryShutdownBeanSingleton" interface="org.apache.hivemind.impl.servicemodel.RegistryShutdownBean">
+ <service-point id="registryShutdownBeanSingleton" interface="RegistryShutdownBean">
<invoke-factory>
- <construct class="org.apache.hivemind.impl.servicemodel.RegistryShutdownBean" />
+ <construct class="RegistryShutdownBean" />
</invoke-factory>
</service-point>
- <service-point id="registryShutdownBeanPooled" interface="org.apache.hivemind.impl.servicemodel.RegistryShutdownBean">
+ <service-point id="registryShutdownBeanPooled" interface="RegistryShutdownBean">
<invoke-factory model="pooled">
- <construct class="org.apache.hivemind.impl.servicemodel.RegistryShutdownBean" />
+ <construct class="RegistryShutdownBean" />
</invoke-factory>
</service-point>
- <service-point id="registryShutdownBeanPrimitive" interface="org.apache.hivemind.impl.servicemodel.RegistryShutdownBean">
+ <service-point id="registryShutdownBeanPrimitive" interface="RegistryShutdownBean">
<invoke-factory model="primitive">
- <construct class="org.apache.hivemind.impl.servicemodel.RegistryShutdownBean" />
+ <construct class="RegistryShutdownBean" />
</invoke-factory>
</service-point>
- <service-point id="registryShutdownBeanThreaded" interface="org.apache.hivemind.impl.servicemodel.RegistryShutdownBean">
+ <service-point id="registryShutdownBeanThreaded" interface="RegistryShutdownBean">
<invoke-factory model="threaded">
- <construct class="org.apache.hivemind.impl.servicemodel.RegistryShutdownBean" />
+ <construct class="RegistryShutdownBean" />
</invoke-factory>
</service-point>
</module>
Modified: jakarta/hivemind/trunk/status.xml
URL: http://svn.apache.org/viewcvs/jakarta/hivemind/trunk/status.xml?rev=354805&r1=354804&r2=354805&view=diff
==============================================================================
--- jakarta/hivemind/trunk/status.xml (original)
+++ jakarta/hivemind/trunk/status.xml Wed Dec 7 09:08:30 2005
@@ -31,6 +31,7 @@
</todo>
<changes>
<release version="1.2-alpha-1" date="unreleased">
+ <action type="fix" dev="HLS" fixes-bug="HIVEMIND-162">Performance bottleneck with threaded services</action>
</release>
<release version="1.1" date="unreleased">
<action type="update" dev="HLS">Change project web site navigation</action>
---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-cvs-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-cvs-help@jakarta.apache.org