Adding Resources Examples

The add-resources goal allows you to add resources such as datsources etc to a running WildFly instance.

Adding datasources

This can be combined with the add-resource goal to automatically deploy the datasource drivers.

The example below shows how to add a datasource that uses the default h2 database:

<project>
    ...
    <build>
        ...
        <plugins>
            ...
            <plugin>
                <groupId>org.wildfly.plugins</groupId>
                <artifactId>wildfly-maven-plugin</artifactId>
                <version>1.2.1.Final</version>
                <executions>
                    <execution>
                        <id>add-datasource</id>
                        <phase>package</phase>
                        <goals>
                            <goal>add-resource</goal>
                        </goals>
                        <configuration>
                            <address>subsystem=datasources,data-source=java:jboss/myDs</address>
                            <resources>
                                <resource>
                                    <properties>
                                        <jndi-name>java:jboss/myDs</jndi-name>
                                        <enabled>true</enabled>
                                        <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
                                        <driver-class>org.h2.Driver</driver-class>
                                        <driver-name>h2</driver-name>
                                        <user-name>sa</user-name>
                                        <password>sa</password>
                                    </properties>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            ...
        </plugins>
        ...
    </build>
...
</project>

The example below shows how to configure a postgresql XA data source, including deploying the driver. The postgresql driver module must be listed in the dependencies section of the pom.

<project>
    ...
    <build>
        ...
        <plugins>
            ...
            <plugin>
                <groupId>org.wildfly.plugins</groupId>
                <artifactId>wildfly-maven-plugin</artifactId>
                <version>1.2.1.Final</version>
                <executions>
                    <execution>
                        <id>deploy-postgresql</id>
                        <phase>package</phase>
                        <goals>
                            <goal>deploy-artifact</goal>
                        </goals>
                        <configuration>
                            <groupId>postgresql</groupId>
                            <artifactId>postgresql</artifactId>
                            <name>postgresql.jar</name>
                        </configuration>
                    </execution>
                    <execution>
                        <id>add-datasource</id>
                        <phase>install</phase>
                        <goals>
                            <goal>add-resource</goal>
                        </goals>
                        <configuration>
                            <address>subsystem=datasources</address>
                            <resources>
                                <resource>
                                    <address>xa-data-source=java:jboss/datasources/postgresDS</address>
                                    <properties>
                                        <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
                                        <jndi-name>java:jboss/datasources/postgresDS</jndi-name>
                                        <enabled>true</enabled>
                                        <driver-name>postgresql.jar</driver-name>
                                    </properties>
                                    <resources>
                                        <resource>
                                            <address>
                                                xa-datasource-properties=DatabaseName
                                            </address>
                                            <properties>
                                                <value>myDatabase</value>
                                            </properties>
                                        </resource>
                                        <resource>
                                            <address>
                                                xa-datasource-properties=ServerName
                                            </address>
                                            <properties>
                                                <value>localhost</value>
                                            </properties>
                                        </resource>
                                        <resource>
                                            <address>
                                                xa-datasource-properties=User
                                            </address>
                                            <properties>
                                                <value>dbuser</value>
                                            </properties>
                                        </resource>
                                        <resource>
                                            <address>
                                                xa-datasource-properties=Password
                                            </address>
                                            <properties>
                                                <value>supersecret</value>
                                            </properties>
                                        </resource>
                                    </resources>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            ...
        </plugins>
        ...
    </build>
...
</project>

The xml tags in the properties element correspond directly to the DMR nodes in the corresponding management operation. If you need to use DMR nodes of a non-primitive type then you must prefix the value with the !! escape sequence, which will cause the value to be interpreted as a string representation of a DMR node. For example in the xa-data-source-properties element about xa-datasource-properties is a DMR property list.

Adding other resources

It is also possible to deploy resources other than datasources, the example below shows how to deploy a JMS queue:

<project>
    ...
    <build>
        ...
        <plugins>
            ...
            <plugin>
                <groupId>org.wildfly.plugins</groupId>
                <artifactId>wildfly-maven-plugin</artifactId>
                <version>1.2.1.Final</version>
                <executions>
                    <execution>
                        <id>add-jms-queue</id>
                        <phase>install</phase>
                        <goals>
                            <goal>add-resource</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <address>subsystem=messaging,hornetq-server=default,jms-queue=myJmsQueue</address>
                                    <properties>
                                        <durable>true</durable>
                                        <entries>!!["java:jboss/myJmsQueue", "java:jboss/myJmsQueueAlias"]</entries>
                                    </properties>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            ...
        </plugins>
        ...
    </build>
...
</project>

Adding resources in domain mode

Adding resources in domain mode works the same as the examples above, except you need to add the profiles property as well as specify at least one profile.

<project>
    ...
    <build>
        ...
        <plugins>
            ...
            <plugin>
                <groupId>org.wildfly.plugins</groupId>
                <artifactId>wildfly-maven-plugin</artifactId>
                <version>1.2.1.Final</version>
                <executions>
                    <execution>
                        <id>add-datasource</id>
                        <phase>package</phase>
                        <goals>
                            <goal>add-resource</goal>
                        </goals>
                        <configuration>
                            <profiles>
                                <profile>default</profile>
                            </profiles>
                            <address>subsystem=datasources,data-source=java:jboss/myDs</address>
                             <resources>
                                <resource>
                                    <properties>
                                        <jndi-name>java:jboss/myDs</jndi-name>
                                        <enabled>true</enabled>
                                        <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
                                        <driver-class>org.h2.Driver</driver-class>
                                        <driver-name>h2</driver-name>
                                        <user-name>sa</user-name>
                                        <password>sa</password>
                                    </properties>
                                </resource>
                             </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            ...
        </plugins>
        ...
    </build>
...
</project>