geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: shared libraries in the OAS way
Date Mon, 13 Oct 2008 18:39:26 GMT

On Oct 13, 2008, at 10:56 AM, Juan David wrote:

>
> Hi David
>
> I think that solution is what I needs.
>
> Are there any examples in how to implement and deploy the classloader
> plugins and of course define dependencies among them

First of all you should be using geronimo 2.1.x or if you are really  
daring 2.2-SNAPSHOT, plugins don't work all that well before 2.1.

Second you should use maven as it is by far the simplest way to  
construct plugins, especially in a reproducible way.

The most prominent examples in 2.1 of "classloader" plugins are the  
jee-specs and xmlbeans configs under framework/configs.

The way you can tell it's a "classloader" plugin is that there are no  
gbeans specified in the plan:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="http://geronimo.apache.org/xml/ns/deployment-1.2">

</module>

The pom should list the plugin parents (parent classloaders) and jars  
you need in your classloader as maven dependencies.  The packaging  
should be:

     <packaging>car</packaging>

You need to list the geronimo-gbean-deployer as a "provided"  
dependency so the car-maven-plugin can find it:

         <dependency>
             <groupId>org.apache.geronimo.framework</groupId>
             <artifactId>geronimo-gbean-deployer-bootstrap</artifactId>
             <version>${version}</version>
             <type>car</type>
             <scope>provided</scope>
         </dependency>

and finally you need the c-m-p configuration:

     <build>
         <plugins>
             <plugin>
                 <groupId>org.apache.geronimo.buildsupport</groupId>
                 <artifactId>car-maven-plugin</artifactId>
                 <configuration>
                     <deploymentConfigs>
                         <deploymentConfig>${gbeanDeployer}</ 
deploymentConfig>
                     </deploymentConfigs>
                     <useMavenDependencies>
                         <value>true</value>
                     </useMavenDependencies>
                     <category>MyCo</category>
                 </configuration>
             </plugin>
         </plugins>
     </build>

Related to your other question related to executing some code before  
your apps start, you might be able to include the service gbean you  
need in one of these plugins.

hope this helps, please ask if you need more hints

david jencks

>
>
> Thank you very much
>
> Juan David Perez
>
>
> djencks wrote:
>>
>>
>> On Oct 13, 2008, at 9:51 AM, Juan David wrote:
>>
>>>
>>> Hi All
>>>
>>> I would like to know how to accomplish shared libraries in the OAS
>>> way on
>>> Geronimo.
>>>
>>> What I mean by OAS way is the possibility to define a shared library
>>> that
>>> holds some jars and also can define dependencies with some other
>>> libraries.
>>> It is also possible to define a default set of dependencies for the
>>> applications (by adding a dependency to the default application), so
>>> every
>>> application deployed will have a set of dependent jars by default.  
>>> The
>>> application can remove any dependency on the deployment plan and the
>>> administrator can change de dependency for all application without
>>> the need
>>> to have new deployments plans for every application and redeploy.
>>
>> While sharedlib might give you a quick solution it won't help track
>> what depends on what.  I'd be leery of having classpath changes not
>> reflected in the deployed artifacts.
>>
>> You can define "classloader" plugins that simply have a list of
>> dependencies and no services.  These dependencies can be jars or  
>> other
>> plugins: the classloaders (and plugins) form a directed acyclic
>> graph.  Your app can depend on one of these "classloader" plugins and
>> get this classloader as a parent.
>>
>> I'd recommend changing the version on such a plugin every time you
>> change the contents and using artifact-aliases and the "obsoletes"
>> element to have each new version replace its predecessors.  This will
>> give you fairly transparent auditing of exactly what jars your apps
>> are using.
>>
>> thanks
>> david jencks
>>
>>>
>>>
>>> Thanks in advance
>>>
>>> JuanDa
>>>
>>> -- 
>>> View this message in context:
>>> http://www.nabble.com/shared-libraries-in-the-OAS-way-tp19958574s134p19958574.html
>>> Sent from the Apache Geronimo - Users mailing list archive at
>>> Nabble.com.
>>>
>>
>>
>>
>
> -- 
> View this message in context: http://www.nabble.com/shared-libraries-in-the-OAS-way-tp19958574s134p19959646.html
> Sent from the Apache Geronimo - Users mailing list archive at  
> Nabble.com.
>


Mime
View raw message