Versions Compared

Key

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

Definition

Excerpt

The XML replacements option allows you to modify XML files of your container's configuration using XPath statements.

Info

This feature is only available for standalone local containers.

Explanation

In some cases, it is necessary to modify XML files of your container. This can be done using Cargo's xmlReplacements option, accessible via the Cargo APIs.

You might for example want to modify the defaultHost for your Tomcat instance.

Example using the Java API

Code Block
languagejava
LocalContainer container = ...;
StandaloneLocalConfiguration configuration = (StandaloneLocalConfiguration) getLocalContainer().getConfiguration();

XmlReplacement defaultHost = new XmlReplacement();
defaultHost.setFile("conf/server.xml");
defaultHost.setXpathExpression("//Server/Engine");
defaultHost.setAttributeName("defaultHost");
defaultHost.setValue("myhost");
configuration.addXmlReplacement(defaultHost);

Some notes:

  • The attributeName parameter is optional -if you don't specify it, then Cargo will replace directly the value of the node
  • If the value corresponds to an existing configuration property (such as cargo.hostname for example) then Cargo will reuse it from the configuration
  • Finally, there is another parameter ignoreIfNonExisting which, when set to TRUE, will make the XML replacement tool ignore if that specific XPath doesn't exist in the XML file

Example using the ANT tasks

Code Block
languagehtml/xml
<cargo containerId="@{containerId}" action="@{action}">
  <configuration home="${configuration.home}">
    <xmlreplacement file="conf/server.xml" xpathexpression="//Server/Engine" attributename="defaultHost" value="myhost"/>
  </configuration>
</cargo>

Example using the Maven 2 plugin

Code Block
languagehtml/xml
<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven2-plugin</artifactId>
  <configuration>
    <container>
      [...]
    </container>
    <configuration>
      <type>standalone</type>
      [...]
      <xmlReplacements>
        <xmlReplacement>
          <file>conf/server.xml</file>
          <xpathExpression>//Server/Engine</xpathExpression>
          <attributeName>defaultHost</attributeName>
          <value>myhost</value>
        </xmlReplacement>
      </xmlReplacements>
    </configuration>
  </configuration>
</plugin>