geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gianny Damour <gianny.dam...@optusnet.com.au>
Subject Re: Dynamically adding ModuleBuilderExtensions and NamingBuilders
Date Fri, 14 Nov 2008 08:40:34 GMT
Hi,

The definition of mark-up interfaces may require the definition of a  
specific mark-up interface for each deployer type. For instance, a  
MBE may be specific to Tomcat and not to Jetty. Hence we may need  
WebMBE, TomcatMBE amd JettyMBE.

Also for kind of the same reason than giving a deployer reference to  
the MBE does not work, the mark-up interface is not the silver-bullet  
as it is not flexible enough: you may have two deployers and you may  
only want to add the MBE to one of them.

The explicit addition of a reference pattern provides the best  
flexibility. As pointed out, it requires some explicit configuration.  
However it is already supported through two mechanisms: manual update  
of config.xml or script deployment.

Thanks,
Gianny

On 14/11/2008, at 4:58 AM, Vamsavardhana Reddy wrote:

> I agree that we need a general solution to dynamically add MBEs.  
> The trick that Gianny showed does got me going with the Tuscany  
> plugin work that I am doing.
>
> On Thu, Nov 13, 2008 at 11:21 PM, David Jencks  
> <david_jencks@yahoo.com> wrote:
> These solutions certainly work but don't address the fundamental  
> problem of adding MBE's dynamically to some builders and not  
> others.  For instance we can just modify the tomcat6-deployer plan  
> right now to include the tuscany MBE and guess that eventually  
> we'll have a jetspeed MBE and try to think of some more.  But when  
> someone comes up with a new one we didn't imagine -- jspwiki MBE or  
> something -- they'll have to update the list again.  I would like  
> to solve the problem once and for all so that no specific  
> configuration for particular MBE's is needed.
>
> Making the reference go the other way -- giving the MBE a reference  
> to the web deployer -- won't work well for the same reason, we  
> don't know how many web deployers there will be next week, even if  
> we only have two this week.
>
> thanks
> david jencks
>
> On Nov 13, 2008, at 3:21 AM, Vamsavardhana Reddy wrote:
>
>> Thanks Gianny.  I could add the MBE to TomcatBuilder by modifying  
>> config.xml.  I have added the following gbean under  
>> "org.apache.geronimo.configs/tomcat6-deployer/2.1.3/car" to modify  
>> the reference to include a new MBE:
>>
>>         <gbean name="TomcatWebBuilder">
>>             <reference name="ModuleBuilderExtensions">
>>                 <pattern>
>>                     <name>PersistenceUnitBuilder</name>
>>                 </pattern>
>>                 <pattern>
>>                     <name>JspModuleBuilderExtension</name>
>>                 </pattern>
>>                 <pattern>
>>                     <name>MyFacesModuleBuilderExtension</name>
>>                 </pattern>
>>                 <pattern>
>>                     <name>TuscanyModuleBuilderExtension</name>
>>                 </pattern>
>>             </reference>
>>         </gbean>
>>
>>
>> On Thu, Nov 13, 2008 at 4:10 PM, Gianny Damour  
>> <gianny.damour@optusnet.com.au> wrote:
>> On 13/11/2008, at 10:08 AM, David Jencks wrote:
>>
>>
>> On Nov 12, 2008, at 1:07 PM, Vamsavardhana Reddy wrote:
>>
>> As part of deploying SCA enhanced Web Applications in Geronimo  
>> with Tuscany Plugin, I am looking to add a ModuleBuilderExtension  
>> (MBE) to TomcatModuleBuilder and a NamingBuilder.  The purpose of  
>> the MBE is to add SCA related EmbeddedRuntimeGBean to the web  
>> application config which will deploy the application composite to  
>> the SCA domain.  The purpose of the NamingBuilder is to add SCA  
>> Domain and other objects (required for injection of SCA references  
>> in servlets etc.) into the WebAppContext.  I am seeing that the  
>> MBE and NamingBuilder GBeans which are added as part of the  
>> Tuscany Plugin can not get dynamically added to the MBEs  
>> configured in tomcat6-builder config and NamingBuilders configured  
>> in j2ee-deployer config.  The one option I see is to update the  
>> plan.xml files in tomcat6-builder and j2ee-deployer configs and  
>> rebuild the server.  But this won't be like the MBE and  
>> NamingBuilder is getting added as part of Tuscany-plugin  
>> installation.  The other option is to add (don't know if it is  
>> easy to do this hack) the MBE and NamingBuilder to the  
>> corresponding collections in TomcatModuleBuilder and NamingBuilder  
>> GBeans.  I appreciate any suggestions/comments or inputs on any  
>> alternate approach that I am not seeing.
>>
>> Yup, this is a problem.  So far we've sidestepped it by just  
>> adding all the known desired MBE's to the appropriate *-deployer  
>> plan, and as you have found this is non-extensible.
>>
>> I do not understand why overriding the relevant  
>> TomcatModuleBuilder GBean pattern in config.xml does not work.  
>> This is better than having to redeploy the tomcat6-builder plugin.
>>
>> If the problem is to provide a way to update the tomcat6-builder  
>> plugin when the Tuscany Plugin is installed, then an approach is  
>> to package within the Tuscany plugin a script to update the  
>> reference patterns of the GBean TomcatWebBuilder. For instance, by  
>> dropping a file named
>>
>> GBeansTuscanyEnhancer.groovy
>>
>> in the folder
>>
>> repository/org/apache/geronimo/configs/tomcat6-deployer/2.*/ 
>> tomcat6-deployer-2.*.car/
>>
>> which kind of looks like (indicative...)
>>
>> import org.apache.geronimo.gbean.AbstractNameQuery
>>
>> def tomcatWebBuilderGBean = gbeanDatas.find  
>> { it.gbeanInfo.className ==  
>> 'org.apache.geronimo.tomcat.deployment.TomcatModuleBuilder' }
>> def moduleBuilderExtensionsPatterns =  
>> tomcatWebBuilderGBean.getReferencePatterns('ModuleBuilderExtensions')
>> Set newPatterns = []
>> newPatterns.addAll(moduleBuilderExtensionsPatterns.patterns)
>> newPatterns.add(new AbstractNameQuery(new URI 
>> (PUT_YOUR_TUSCANY_MBE_PATTERN_NAME_HERE)))
>> tomcatWebBuilderGBean.setReferencePatterns(newPatterns)
>>
>>
>> You should be done.
>>
>> Thanks,
>> Gianny
>>
>>
>>
>> One possiblitly would be to define marker interfaces such as  
>> WebMBE, EjbMBE, etc that the appropriate MBE's could implement and  
>> use the interface in the references pattern.
>>
>> Anyone have a better idea?
>>
>> thanks
>> david jencks
>>
>>
>>
>> Thanks,
>> Vamsi
>>
>>
>>
>>
>>
>> -- 
>> Vamsi
>
>
>
>
> -- 
> Vamsi


Mime
View raw message