Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

The root XML element in the geronimo-application-2.0.xsd schema is the <application> element. The top-level XML elements of the <application> root element are described in the sections below. The deployment plan should always use the Web application namespace, and it typically requires elements from Geronimo System and Geronimo Security namespaces. Additionally, it has an attribute to identify its name. A typical deployment for geronimo-application.xml can be presented as follows:

Code Block
xml
xml
titlegeronimo-application.xml Example
borderStylesolidxml
<app:application xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0"
             xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2"
             xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0"
             application-name="SampleApplicationName"> 
             ...
</app:application>

...

An example geronimo-application.xml file is shown below using the <sys:environment> elements:

Code Block
xml
xml
borderStylesolid
title<sys:environment> examplexml
<app:application
  xmlns:conn="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2"
  xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2"
  xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0"
  application-name="SampleEAR">

    <dep:environment>

        <dep:moduleId>
            <dep:groupId>sampleear</dep:groupId>
            <dep:artifactId>sample-ear</dep:artifactId>
            <dep:version>1.0</dep:version>
            <dep:type>ear</dep:type>
        </dep:moduleId>

        <dep:dependencies>
            <dep:dependency>
                <dep:groupId>org.apache.geronimo.configs</dep:groupId>
                <dep:artifactId>tomcat6</dep:artifactId>
                <dep:version>2.2-SNAPSHOT</dep:version>
                <dep:type>car</dep:type>
            </dep:dependency>

            <dep:dependency>
                <dep:groupId>default</dep:groupId>
                <dep:artifactId>geronim-web-4</dep:artifactId>
                <dep:version>1.0</dep:version>
                <dep:type>car</dep:type>
            </dep:dependency>
        </dep:dependencies>

    </dep:environment>

</app:application>

...

The <module> element also contains an optional <alt-dd> element that specifies an optional URI to the post-assembly version of the deployment descriptor file for a particular Java EE module. If <alt-dd> is not specified, the deployer must read the deployment descriptor from the default location and file name required by the respective component specification.

Code Block
xml
xml
borderStylesolid
title<module> examplexml
<application 
  xmlns="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" 
  xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2" 
  application-name="MDBSampleEAR">

  <module>
    <ejb>example-ejb.jar</ejb>
    <alt-dd>dds/my-ejb-geronimo-plan.xml</alt-dd>
  </module>
  <module>
    <web>
      <web-uri>example-web.war</web-uri>
      <context-root>example</context-root>
    </web>
  </module>

</application>

Then the Geronimo deployment plan could include separate deployment plans for both modules like this:

Code Block
xml
xml
borderStylesolid
title<module> examplexml
<application 
  xmlns="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" 
  xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2" 
  application-name="MDBSampleEAR">

  <module>
    <ejb>example-ejb.jar</ejb>
    <alt-dd>dds/my-ejb-jar.xml</alt-dd>
  </module>
  <module>
    <web>
      <web-uri>example-web.war</web-uri>
      <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.0"
               xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.0">
        <naming:resource-ref>
          <naming:ref-name>jms/AConnectionFactory</naming:ref-name>
          <naming:resource-link>MyConnectionFactory</naming:resource-link>
        </naming:resource-ref>
      </web-app>
    </web>
  </module>

</application>

...

The <ext-module> element also contains either an <internal-path> or an <external-path>. <internal-path> indicates that the module is packaged in the EAR and the path specified is relative to the enterprise application package main directory. <external-path> indicates that the module is not part of the enterprise application and must be located by matching the supplied pattern in a Geronimo repository.

Code Block
xml
xml
borderStylesolid
title<ext-module> examplexml
<application 
  xmlns="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" 
  xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2" 
  application-name="MDBSampleEAR">

  <sys:environment>
    <sys:moduleId>
      <sys:groupId>default</sys:groupId>
      <sys:artifactId>MDBSampleEAR</sys:artifactId>
      <sys:version>1.0</sys:version>
      <sys:type>car</sys:type>
    </sys:moduleId>
  </sys:environment>
  
  <ext-module>
    <connector>TopicJMSSample</connector>
    <external-path>
     <sys:groupId>org.apache.geronimo.modules</sys:groupId>
     <sys:artifactId>geronimo-activemq-ra</sys:artifactId>
     <sys:version>2.1</sys:version>
    </external-path>
    <connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2">
     <resourceadapter>
      <!--how to connect to the JMS Server-->
      <resourceadapter-instance>
       <resourceadapter-name>TradeJMSResources</resourceadapter-name>
       <config-property-setting name="ServerUrl">tcp://localhost:61616</config-property-setting>
       <config-property-setting name="UserName">not needed</config-property-setting>
       <config-property-setting name="Password">not needed</config-property-setting>
       <workmanager>
        <gbean-link>DefaultWorkManager</gbean-link>
       </workmanager>
      </resourceadapter-instance>
        
      <!--defines a ConnectionFactory-->
      <outbound-resourceadapter>
       <connection-definition>
        <connectionfactory-interface>javax.jms.ConnectionFactory</connectionfactory-interface>
        <connectiondefinition-instance>
         <name>jms/TopicConnectionFactory</name>
         <implemented-interface>javax.jms.TopicConnectionFactory</implemented-interface>
         <connectionmanager>
          <xa-transaction>
           <transaction-caching/>
          </xa-transaction>
          <single-pool>
           <max-size>10</max-size>
           <min-size>0</min-size>
           <blocking-timeout-milliseconds>5000</blocking-timeout-milliseconds>
           <idle-timeout-minutes>0</idle-timeout-minutes>
           <match-one/>
          </single-pool>
         </connectionmanager>
        </connectiondefinition-instance>
       </connection-definition>
      </outbound-resourceadapter>
     </resourceadapter>
     <adminobject>
      <adminobject-interface>javax.jms.Topic</adminobject-interface>
      <adminobject-class>org.activemq.message.ActiveMQTopic</adminobject-class>
      <adminobject-instance>
       <message-destination-name>TextMessageTopic</message-destination-name>
       <config-property-setting name="PhysicalName">TextMessageTopic</config-property-setting>
      </adminobject-instance>
     </adminobject>
    </connector>
  </ext-module>
</application>

...

  • The <doas-current-caller> optional element may be set to true or false (default). If set to true, any work done by the application will be performed as the calling Subject, instead of "as the application server". This can be used to hook into the Java JVM security sandbox (for example, to only allow trusted users to access the server filesystem). It is not ususally necessary, as the application-level security features are typically sufficient. When it is enabled, you may want to adjust the security policy used for the server to control certain permissions by subject.

  • The <use-context-handler> optional element may be set to true or false (default). If set to true, the installed JACC policy contexts will use PolicyContextHandlers.

  • The <default-role> element is used by the the Deployer to assign method permissions for all of the unspecified methods, either by assigning them to security roles, or by marking them as unchecked. If the value of default-role is empty, then the unspecified methods are marked unchecked.

  • The <description> element holds the description.

  • The <credential-store-ref> element holds the pattern for matching a module.

  • The <default-subject> element provides a description, realm, and id.

  • The <role-mappings> element holds the information mapping roles declared in the application.xml deployment descriptor to specific principals present in the security realms available to Geronimo.
Code Block
xml
xml
borderStylesolid
title<sec:security> examplexml
<application xmlns="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" 
             xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2" 
             xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0"
             application-name="SampleSecurityEAR">

  <dep:environment>

    <dep:moduleId>
      <dep:groupId>sampleear</dep:groupId>
      <dep:artifactId>sample-ear</dep:artifactId>
      <dep:version>1.0</dep:version>
      <dep:type>ear</dep:type>
    </dep:moduleId>

    <dep:dependencies>
      <dep:dependency>
        <dep:groupId>org.apache.geronimo.configs</dep:groupId>
        <dep:artifactId>tomcat6</dep:artifactId>
        <dep:version>2.2-SNAPSHOT</dep:version>
        <dep:type>car</dep:type>
      </dep:dependency>

      <dep:dependency>
         <dep:groupId>default</dep:groupId>
         <dep:artifactId>geronim-web-4</dep:artifactId>
         <dep:version>1.0</dep:version>
         <dep:type>car</dep:type>
      </dep:dependency>
    </dep:dependencies>

  </dep:environment>

  <sec:security use-context-handler="false" doas-current-caller="true" default-role="admin1">
    <sec:role-mappings>
      <sec:role role-name="admin-role">
        <sec:description>ability to do everything</sec:description>
      </sec:role>
      <sec:role role-name="user-role">
        <sec:description>limited access</sec:description>
      </sec:role>
    </sec:role-mappings>
  </sec:security>

</application>

...