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 <[EMAIL PROTECTED]
> 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