We need some widespread thought about the new xml schema we're getting in 1.1. Dain and I are not particularly thrilled with the element names but haven't thought of improvements. We also thought of an alternate way of presenting the info and would like opinions on which is better.

The schema currently in svn in the configid branch results in plans that start like this:

<configuration xmlns="http://geronimo.apache.org/xml/ns/deployment-1.1";>
  <environment>
    <configId>
      <groupId>geronimo</groupId>
      <type>car</type>
      <artifactId>geronimo-gbean-deployer</artifactId>
      <version>1.0.1-SNAPSHOT</version>
    </configId>
<!-- name-key elements are very unlikely to be used by anything except "root" system plans
such as j2ee-system.  Included here only to show what they look like -->
    <name-key>
      <key>domain</key>
      <value>geronimo.maven</value>
    </name-key>
    <name-key>
      <key>J2EEServer</key>
      <value>geronimo</value>
    </name-key>
    <classloader>
      <import>
        <groupId>geronimo</groupId>
        <type>car</type>
        <artifactId>geronimo-system</artifactId>
        <version>1.0.1-SNAPSHOT</version>
      </import>
      <dependency>
        <groupId>geronimo</groupId>
        <artifactId>geronimo-common</artifactId>
        <version>1.0.1-SNAPSHOT</version>
      </dependency>
      <include>
        <groupId>geronimo</groupId>
        <artifactId>geronimo-deployment</artifactId>
        <version>1.0.1-SNAPSHOT</version>
      </include>
    </classloader>
<!--reference is a new element, the meaning is that the configuration must be loaded and started before this one, but the classloader of the config is not a parent -->
    <reference>
      <groupId>geronimo</groupId>
      <type>car</type>
      <artifactId>geronimo-j2ee</artifactId>
      <version>1.0.1-SNAPSHOT</version>
    </reference>
  </environment>
  <!--Deployer used to process modules and plans-->
<gbean name="Deployer" class="org.apache.geronimo.deployment.Deployer">


An alternate layout is more similar to m2 with the idea of different functions for a dependency shown by a "scope" element. Scope doesn't seem like the right element name for us. (sorry about the lousy indenting)

<configuration xmlns="http://geronimo.apache.org/xml/ns/deployment-1.1";>
  <environment>
    <configId>
      <groupId>geronimo</groupId>
      <type>car</type>
      <artifactId>geronimo-gbean-deployer</artifactId>
      <version>1.0.1-SNAPSHOT</version>
    </configId>
<!-- name-key elements are very unlikely to be used by anything except "root" system plans
such as j2ee-system.  Included here only to show what they look like -->
    <name-key>
      <key>domain</key>
      <value>geronimo.maven</value>
    </name-key>
    <name-key>
      <key>J2EEServer</key>
      <value>geronimo</value>
    </name-key>
      < dependency>
        <groupId>geronimo</groupId>
        <type>car</type>
        <artifactId>geronimo-system</artifactId>
        <version>1.0.1-SNAPSHOT</version>
        <scope>full</scope>
      </dependency>
      <dependency>
        <groupId>geronimo</groupId>
        <artifactId>geronimo-common</artifactId>
        <version>1.0.1-SNAPSHOT</version>
        <scope>class</scope>
      </dependency>
      < dependency>
        <groupId>geronimo</groupId>
        <artifactId>geronimo-deployment</artifactId>
        <version>1.0.1-SNAPSHOT</version>
        <scope>include</scope>
      </dependency>
    < dependency>
      <groupId>geronimo</groupId>
      <type>car</type>
      <artifactId>geronimo-j2ee</artifactId>
      <version>1.0.1-SNAPSHOT</version>
      <scope>service</scope>
   </dependency>
  </environment>
  <!--Deployer used to process modules and plans-->
<gbean name="Deployer" class="org.apache.geronimo.deployment.Deployer">

Here, the scopes have meaning as follows:

both -- both classes and services (gbeans), like import
classes -- only classes, if a car don't start the gbeans for us, like dependency services -- only gbeans, don't add classes to our classpath, like reference (new element shown in first example) include -- copy the artifact into the current configuration. This seems like a separate dimension not related to the previous scopes.

Again, please study these and comment.

Many thanks
david jencks

Reply via email to