DPML
DPML Metro Component Categories Datatype
HomeUtilitiesStationMetroDepotTransit
Parts
Description

A <parts> elements enables the declaration of 0..n nested components.

Part Nested Elements
component 0..n nested components.
Example

The following component defines an HHTP server deployment profile made up of a collection in internal parts.

<component xmlns="link:xsd:dpml/lang/dpml-component#1.0" 
    type="net.dpml.http.Server" 
    alias="true">
    
  <parts>
  
    <!-- 
    Add a select channel connector to 8080.
    -->
    <component key="plain" type="net.dpml.http.SelectChannelConnector">
      <context>
        <entry key="port" value="8080"/>
        <entry key="maxIdleTime" value="50000"/>
        <entry key="acceptors" value="10"/>
      </context>
    </component>
    
    <!--
    Add a SSL connector to 8443.
    -->
    <component key="ssl" type="net.dpml.http.SslSocketConnector">
      <context>
        <entry key="port" value="8443"/>
        <entry key="maxIdleTime" value="30000"/>
        <entry key="keystore" value="local:keystore:dpml/planet/http/jetty"/>
        <entry key="password" value="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/>
        <entry key="keyPassword" value="OBF:1u2u1wml1z7s1z7a1wnl1u2g"/>
      </context>
    </component>
    
    <!--
    Add a user realm.
    -->
    <component key="realm" type="net.dpml.http.HashUserRealm">
      <context>
        <entry key="name" value="Test Realm"/>
        <entry key="URI" value="local:properties:dpml/planet/http/realm"/>
      </context>
    </component>
    
    <!--
    Add a web application.
    -->
    <component key="webapp" type="net.dpml.http.WebAppContextHandler">
      <context>
        <entry key="contextPath" value="/"/>
        <entry key="war" value="link:war:dpml/planet/http/dpml-http-app"/>
      </context>
    </component>
    
    <!--
    Creation of a HTTP server configured to present static content in 
    the ${dpml.share}/docs directory.
    -->
    <component key="context" type="net.dpml.http.ResourceContextHandler">
      <context>
        <entry key="resourceBase" value="${dpml.share}/docs"/>
        <entry key="contextPath" value="/docs"/>
      </context>
    </component>
    
    <!--
    Add an experimental servlet context.
    (Need to add context cloassloader configuration but this requires 
    per-component threads - currently limited to classes declared within
    the part classloader).
    -->
    <component key="servlets" type="net.dpml.http.ServletContextHandler">
      <context>
        <entry key="resourceBase" value="${dpml.data}"/>
        <entry key="contextPath" value="/data"/>
        <entry key="servletHolders">
          <param class="net.dpml.http.ServletHolder">
            <param value="data"/>
            <param value="org.mortbay.jetty.servlet.DefaultServlet"/>
          </param>
        </entry>
        <entry key="servletEntries">
          <param class="net.dpml.http.ServletEntry">
            <param value="data"/>
            <param value="/"/>
          </param>
        </entry>
      </context>
    </component>
    
  </parts>
  
</component>