You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by kristian meier <kr...@jentro.com> on 2003/06/17 10:16:59 UTC

[patch]merlin and pooled services

Hi,

although the pooled lifestyle is already in the documentation, but was 
not completly integrated.

the attached patch fixes some issues with the pool. apparently the 
appliance is not assembled inside the initialize-method, so that is not 
the right place for initializing the pool. thus I shifted the pool 
initliaization to the access-method and made it lazy.

the configure method is still unused, I just don't know from where to 
get the configruration object. anyway the question for me would be:
is the pool size part of the xconfig file or part of the xtype file (as 
attribute similar to the lifestyle attribute) ?

hope the patch helps as it is

with best wishes Kristian



Re: [patch]merlin and pooled services

Posted by Stephen McConnell <mc...@apache.org>.

kristian meier wrote:

> please use this attached file, there was a little mistake in the  
> first file 


OK.


-- 

Stephen J. McConnell
mailto:mcconnell@apache.org
http://www.osm.net

Sent via James running under Merlin as an NT service.
http://avalon.apache.org/sandbox/merlin




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org


Re: [patch]merlin and pooled services

Posted by Stephen McConnell <mc...@apache.org>.

kristian meier wrote:

> please use this attached file, there was a little mistake in the  
> first file


Applied - thanks.
Steve.

-- 

Stephen J. McConnell
mailto:mcconnell@apache.org
http://www.osm.net

Sent via James running under Merlin as an NT service.
http://avalon.apache.org/sandbox/merlin




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org


Re: [patch]merlin and pooled services

Posted by kristian meier <kr...@jentro.com>.
please use this attached file, there was a little mistake in the  first file

Kristian

Stephen McConnell wrote:

>
>
> kristian meier wrote:
>
>> Hi,
>>
>> although the pooled lifestyle is already in the documentation, but 
>> was not completly integrated.
>>
>> the attached patch fixes some issues with the pool. apparently the 
>> appliance is not assembled inside the initialize-method, so that is 
>> not the right place for initializing the pool. thus I shifted the 
>> pool initliaization to the access-method and made it lazy. 
>
>
>
> Cool - I havn't used the pool lifestyle for anything important todate 
> - focus has been much more of the other three flavours.  I'll apply 
> the patch later today.
>
>> the configure method is still unused, I just don't know from where to 
>> get the configruration object. anyway the question for me would be:
>> is the pool size part of the xconfig file or part of the xtype file 
>> (as attribute similar to the lifestyle attribute) ? 
>
>
>
> The pool should be setup by the kernel and passed as a context value.  
> I'll check into what is happening after I've taken a look at the patch.
>
> Cheers, Steve.
>
>>
>>
>> hope the patch helps as it is
>>
>> with best wishes Kristian
>>
>>
>> ------------------------------------------------------------------------
>>
>> Index: 
>> src/java/org/apache/avalon/assembly/lifestyle/impl/DefaultLifestyleService.java
>> ===================================================================
>> RCS file: 
>> /home/cvspublic/avalon-sandbox/merlin/assembly/src/java/org/apache/avalon/assembly/lifestyle/impl/DefaultLifestyleService.java,v
>> retrieving revision 1.3
>> diff -u -r1.3 DefaultLifestyleService.java
>> --- 
>> src/java/org/apache/avalon/assembly/lifestyle/impl/DefaultLifestyleService.java    
>> 8 May 2003 03:02:39 -0000    1.3
>> +++ 
>> src/java/org/apache/avalon/assembly/lifestyle/impl/DefaultLifestyleService.java    
>> 17 Jun 2003 06:33:15 -0000
>> @@ -232,6 +232,21 @@
>>                   "Internal error while attempting to establish the 
>> transient lifestyle handler.";
>>                 throw new LifestyleRuntimeException( error, e );
>>             }
>> +        } else if( policy.equals( "pooled" ) )
>> +        {
>> +            try
>> +            {
>> +                PooledLifestyleHandler pooled = new 
>> PooledLifestyleHandler();
>> +                pooled.enableLogging( getLogger() );
>> +                pooled.contextualize( context );
>> +                pooled.initialize();
>> +                return pooled;
>> +            } catch( Throwable e )
>> +            {
>> +                final String error =
>> +                  "Internal error while attempting to establish the 
>> pooled lifestyle handler.";
>> +                throw new LifestyleRuntimeException( error, e );
>> +            }
>>         } else
>>         {
>>             final String error =
>> Index: 
>> src/java/org/apache/avalon/assembly/lifestyle/impl/PooledLifestyleHandler.java
>> ===================================================================
>> RCS file: 
>> /home/cvspublic/avalon-sandbox/merlin/assembly/src/java/org/apache/avalon/assembly/lifestyle/impl/PooledLifestyleHandler.java,v
>> retrieving revision 1.2
>> diff -u -r1.2 PooledLifestyleHandler.java
>> --- 
>> src/java/org/apache/avalon/assembly/lifestyle/impl/PooledLifestyleHandler.java    
>> 9 Jun 2003 01:11:17 -0000    1.2
>> +++ 
>> src/java/org/apache/avalon/assembly/lifestyle/impl/PooledLifestyleHandler.java    
>> 17 Jun 2003 06:33:15 -0000
>> @@ -107,7 +107,7 @@
>>     /**
>>      * The object pool size.
>>      */
>> -    private int m_size;
>> +    private int m_size = 5;
>>
>>     /**
>>      * The class of object managed by the pool.
>> @@ -127,9 +127,9 @@
>>     {
>>         if( config == null )
>>         {
>> -            throw new NullPointerException( "config" );
>> +        throw new NullPointerException( "config" );
>>         }
>> -        m_size = config.getAttributeAsInteger( "size", 5 );
>> +        else m_size = config.getAttributeAsInteger( "size", 5 );
>>     }
>>
>>     //==============================================================
>> @@ -161,7 +161,6 @@
>>     public void initialize() throws Exception
>>     {
>>         super.initialize();
>> -        m_pool = m_poolManager.getManagedPool( this, m_size );
>>         m_appliance = (Appliance) m_context.get( 
>> "urn:assembly:appliance.target" );
>>         ClassLoader classloader = (ClassLoader) m_context.get( 
>> "urn:avalon:classloader" );
>>         m_class = classloader.loadClass( 
>> m_appliance.getType().getInfo().getClassname() );
>> @@ -190,9 +189,19 @@
>>      */
>>     private Object access() throws LocatorException
>>     {
>> -        try
>> +    try
>>         {
>> -            Object object = m_pool.acquire();
>> +            if( m_pool == null )
>> +        {
>> +        synchronized( m_pool )
>> +        {
>> +            if( m_pool == null )
>> +            {
>> +            m_pool = m_poolManager.getManagedPool( this, m_size );
>> +            }
>> +        }
>> +        }
>> +        Object object = m_pool.acquire();
>>             super.processAccessStage( object );
>>             return object;
>>         }
>>  
>>
>> ------------------------------------------------------------------------
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
>> For additional commands, e-mail: dev-help@avalon.apache.org
>>
>

Re: [patch]merlin and pooled services

Posted by Stephen McConnell <mc...@apache.org>.

kristian meier wrote:

> Hi,
>
> although the pooled lifestyle is already in the documentation, but was 
> not completly integrated.
>
> the attached patch fixes some issues with the pool. apparently the 
> appliance is not assembled inside the initialize-method, so that is 
> not the right place for initializing the pool. thus I shifted the pool 
> initliaization to the access-method and made it lazy. 


Cool - I havn't used the pool lifestyle for anything important todate - 
focus has been much more of the other three flavours.  I'll apply the 
patch later today.

> the configure method is still unused, I just don't know from where to 
> get the configruration object. anyway the question for me would be:
> is the pool size part of the xconfig file or part of the xtype file 
> (as attribute similar to the lifestyle attribute) ? 


The pool should be setup by the kernel and passed as a context value.  
I'll check into what is happening after I've taken a look at the patch.

Cheers, Steve.

>
>
> hope the patch helps as it is
>
> with best wishes Kristian
>
>
>------------------------------------------------------------------------
>
>Index: src/java/org/apache/avalon/assembly/lifestyle/impl/DefaultLifestyleService.java
>===================================================================
>RCS file: /home/cvspublic/avalon-sandbox/merlin/assembly/src/java/org/apache/avalon/assembly/lifestyle/impl/DefaultLifestyleService.java,v
>retrieving revision 1.3
>diff -u -r1.3 DefaultLifestyleService.java
>--- src/java/org/apache/avalon/assembly/lifestyle/impl/DefaultLifestyleService.java	8 May 2003 03:02:39 -0000	1.3
>+++ src/java/org/apache/avalon/assembly/lifestyle/impl/DefaultLifestyleService.java	17 Jun 2003 06:33:15 -0000
>@@ -232,6 +232,21 @@
>                   "Internal error while attempting to establish the transient lifestyle handler.";
>                 throw new LifestyleRuntimeException( error, e );
>             }
>+        } else if( policy.equals( "pooled" ) )
>+        {
>+            try
>+            {
>+                PooledLifestyleHandler pooled = new PooledLifestyleHandler();
>+                pooled.enableLogging( getLogger() );
>+                pooled.contextualize( context );
>+                pooled.initialize();
>+                return pooled;
>+            } catch( Throwable e )
>+            {
>+                final String error =
>+                  "Internal error while attempting to establish the pooled lifestyle handler.";
>+                throw new LifestyleRuntimeException( error, e );
>+            }
>         } else
>         {
>             final String error =
>Index: src/java/org/apache/avalon/assembly/lifestyle/impl/PooledLifestyleHandler.java
>===================================================================
>RCS file: /home/cvspublic/avalon-sandbox/merlin/assembly/src/java/org/apache/avalon/assembly/lifestyle/impl/PooledLifestyleHandler.java,v
>retrieving revision 1.2
>diff -u -r1.2 PooledLifestyleHandler.java
>--- src/java/org/apache/avalon/assembly/lifestyle/impl/PooledLifestyleHandler.java	9 Jun 2003 01:11:17 -0000	1.2
>+++ src/java/org/apache/avalon/assembly/lifestyle/impl/PooledLifestyleHandler.java	17 Jun 2003 06:33:15 -0000
>@@ -107,7 +107,7 @@
>     /**
>      * The object pool size.
>      */
>-    private int m_size;
>+    private int m_size = 5;
> 
>     /**
>      * The class of object managed by the pool.
>@@ -127,9 +127,9 @@
>     {
>         if( config == null )
>         {
>-            throw new NullPointerException( "config" );
>+	    throw new NullPointerException( "config" );
>         }
>-        m_size = config.getAttributeAsInteger( "size", 5 );
>+        else m_size = config.getAttributeAsInteger( "size", 5 );
>     }
> 
>     //==============================================================
>@@ -161,7 +161,6 @@
>     public void initialize() throws Exception
>     {
>         super.initialize();
>-        m_pool = m_poolManager.getManagedPool( this, m_size );
>         m_appliance = (Appliance) m_context.get( "urn:assembly:appliance.target" );
>         ClassLoader classloader = (ClassLoader) m_context.get( "urn:avalon:classloader" );
>         m_class = classloader.loadClass( m_appliance.getType().getInfo().getClassname() );
>@@ -190,9 +189,19 @@
>      */
>     private Object access() throws LocatorException
>     {
>-        try
>+	try
>         {
>-            Object object = m_pool.acquire();
>+            if( m_pool == null )
>+	    {
>+		synchronized( m_pool )
>+		{
>+		    if( m_pool == null )
>+		    {
>+			m_pool = m_poolManager.getManagedPool( this, m_size );
>+		    }
>+		}
>+	    }
>+	    Object object = m_pool.acquire();
>             super.processAccessStage( object );
>             return object;
>         } 
>
>  
>
>------------------------------------------------------------------------
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
>For additional commands, e-mail: dev-help@avalon.apache.org
>

-- 

Stephen J. McConnell
mailto:mcconnell@apache.org
http://www.osm.net

Sent via James running under Merlin as an NT service.
http://avalon.apache.org/sandbox/merlin




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org