Red Hat Training

A Red Hat training course is available for Red Hat Fuse

7.2. Deploy a WAR file for SwitchYard

To prepare a WAR file for deployment to SwitchYard, the SwitchYard component dependencies (switchyard-*.jar) must be excluded as they are provided by the Fuse Service Works container. There are two methods of excluding the SwitchYard dependencies:
  1. Mark the SwitchYard dependencies as provided.
    To do this, edit the pom.xml file for the WAR file. Mark the switchyard-*.jar dependiencies as provided.
    <dependency>
      <groupId>org.switchyard</groupId>
      <artifactId>switchyard-api</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.switchyard.components</groupId>
      <artifactId>switchyard-component-bean</artifactId>
      <scope>provided</scope>
    </dependency>
    ...
    Next, configure switchyard-plugin in the pom.xml file:
    <plugin>
      <groupId>org.switchyard</groupId>
      <artifactId>switchyard-plugin</artifactId>
      <configuration>
        ...
        <!-- Output to war directory -->
        <outputFile>${project.build.directory}/${project.build.finalName}/WEB-INF/switchyard.xml</outputFile>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>configure</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  2. Configure the Maven WAR plugin to exclude SwitchYard dependencies
    An alternative to marking the SwitchYard dependencies as provided, is to use the Maven WAR plugin to exclude SwitchYard dependencies. Edit the pom.xml file to include the following entry:
    <plugin>
      <artifactId>maven-war-plugin</artifactId>
      <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        <packagingExcludes>
          WEB-INF/lib/*.jar,
          WEB-INF/classes/META-INF/switchyard.xml
        </packagingExcludes>
        <webResources>
          <resource>
            <directory>target/classes/META-INF</directory>
            <targetPath>WEB-INF</targetPath>
            <includes>
              <include>switchyard.xml</include>
            </includes>
          </resource>
        </webResources>
      </configuration>
    </plugin>
Note
The preferred method is option 1, Mark the SwitchYard dependencies as provided.