Wildfly setup

WildFly is application server where you deploy backend artefacts, frontend and GeoServer.

An alternative to use the below is to use prepared bundled unionvms with wildfly at UnionVms Wildfly dist .

Setup WildFly

  1. Download the WildFly version you like from: http://wildfly.org/downloads/
  2. Extract the downloaded file to any location.
  3. Replace the standalone-full.xml with the xml below ( ONLY TESTED WITH Wildfly 8.2 )
    1. Alternatively you can update the parts you want by adding the specified settings to your standalone-full-xml
      1. Active MQ
      2. Datasources
      3. SSL
      4. System properties

standalone-full.xml
<?xml version="1.0" ?>

<server xmlns="urn:jboss:domain:2.2">

    <extensions>
        <extension module="org.jboss.as.clustering.infinispan"/>
        <extension module="org.jboss.as.connector"/>
        <extension module="org.jboss.as.deployment-scanner"/>
        <extension module="org.jboss.as.ee"/>
        <extension module="org.jboss.as.ejb3"/>
        <extension module="org.jboss.as.jacorb"/>
        <extension module="org.jboss.as.jaxrs"/>
        <extension module="org.jboss.as.jdr"/>
        <extension module="org.jboss.as.jmx"/>
        <extension module="org.jboss.as.jpa"/>
        <extension module="org.jboss.as.jsf"/>
        <extension module="org.jboss.as.jsr77"/>
        <extension module="org.jboss.as.logging"/>
        <extension module="org.jboss.as.mail"/>
        <extension module="org.jboss.as.messaging"/>
        <extension module="org.jboss.as.naming"/>
        <extension module="org.jboss.as.pojo"/>
        <extension module="org.jboss.as.remoting"/>
        <extension module="org.jboss.as.sar"/>
        <extension module="org.jboss.as.security"/>
        <extension module="org.jboss.as.transactions"/>
        <extension module="org.jboss.as.webservices"/>
        <extension module="org.jboss.as.weld"/>
        <extension module="org.wildfly.extension.batch"/>
        <extension module="org.wildfly.extension.io"/>
        <extension module="org.wildfly.extension.undertow"/>
    </extensions>

    <system-properties>
        <property name="javax.net.ssl.keyStore" value="${jboss.server.config.dir}/server.keystore"/>
        <property name="javax.net.ssl.keyStorePassword" value="keypassword"/>
        <property name="javax.net.ssl.trustStore" value="${jboss.server.config.dir}/client.truststore"/>
        <property name="javax.net.ssl.trustStorePassword" value="keypassword"/>
        <property name="db.dialect" value="postgres"/>
    </system-properties>

    <management>
	
        <security-realms>
            <security-realm name="UndertowRealm">
                <server-identities>
                    <ssl>
                        <keystore path="server.keystore" relative-to="jboss.server.config.dir" keystore-password="keypassword" key-password="keypassword"/>
                    </ssl>
                </server-identities>
                <authentication>
                    <truststore path="client.truststore" relative-to="jboss.server.config.dir" keystore-password="keypassword"/>
                    <local default-user="$local" skip-group-loading="true"/>
                    <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
                </authentication>
            </security-realm>
            <security-realm name="ManagementRealm">
                <authentication>
                    <local default-user="$local" skip-group-loading="true"/>
                    <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
                </authentication>
                <authorization map-groups-to-roles="false">
                    <properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/>
                </authorization>
            </security-realm>
            <security-realm name="ApplicationRealm">
                <authentication>
                    <local default-user="$local" allowed-users="*" skip-group-loading="true"/>
                    <properties path="application-users.properties" relative-to="jboss.server.config.dir"/>
                </authentication>
                <authorization>
                    <properties path="application-roles.properties" relative-to="jboss.server.config.dir"/>
                </authorization>
            </security-realm>
        </security-realms>
        <audit-log>
            <formatters>
                <json-formatter name="json-formatter"/>
            </formatters>
            <handlers>
                <file-handler name="file" formatter="json-formatter" path="audit-log.log" relative-to="jboss.server.data.dir"/>
            </handlers>
            <logger log-boot="true" log-read-only="false" enabled="false">
                <handlers>
                    <handler name="file"/>
                </handlers>
            </logger>
        </audit-log>
        <management-interfaces>
            <http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">
                <socket-binding http="management-http"/>
            </http-interface>
        </management-interfaces>
        <access-control provider="simple">
            <role-mapping>
                <role name="SuperUser">
                    <include>
                        <user name="$local"/>
                    </include>
                </role>
            </role-mapping>
        </access-control>
    </management>

    <profile>
        <subsystem xmlns="urn:jboss:domain:logging:2.0">
            <console-handler name="CONSOLE">
                <level name="INFO"/>
                <formatter>
                    <named-formatter name="COLOR-PATTERN"/>
                </formatter>
            </console-handler>
            <periodic-rotating-file-handler name="FILE" autoflush="true">
                <formatter>
                    <named-formatter name="PATTERN"/>
                </formatter>
                <file relative-to="jboss.server.log.dir" path="server.log"/>
                <suffix value=".yyyy-MM-dd"/>
                <append value="true"/>
            </periodic-rotating-file-handler>
            <logger category="com.arjuna">
                <level name="WARN"/>
            </logger>
            <logger category="org.apache.tomcat.util.modeler">
                <level name="WARN"/>
            </logger>
            <logger category="org.jboss.as.config">
                <level name="DEBUG"/>
            </logger>
            <logger category="sun.rmi">
                <level name="WARN"/>
            </logger>
            <logger category="jacorb">
                <level name="WARN"/>
            </logger>
            <logger category="jacorb.config">
                <level name="ERROR"/>
            </logger>
            <root-logger>
                <level name="INFO"/>
                <handlers>
                    <handler name="CONSOLE"/>
                    <handler name="FILE"/>
                </handlers>
            </root-logger>
            <formatter name="PATTERN">
                <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
            </formatter>
            <formatter name="COLOR-PATTERN">
                <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
            </formatter>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:batch:1.0">
            <job-repository>
                <in-memory/>
            </job-repository>
            <thread-pool>
                <max-threads count="10"/>
                <keepalive-time time="30" unit="seconds"/>
            </thread-pool>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:datasources:2.0">
            <datasources>
                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                </datasource>
                <datasource jta="true" jndi-name="java:/jdbc/uvms_audit" pool-name="jdbc/uvms_audit" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://postgres:5432/db71u</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>audit</user-name>
                        <password>audit</password>
                    </security>
                </datasource>
                <datasource jta="true" jndi-name="java:/jdbc/uvms_mobterm" pool-name="jdbc/uvms_mobterm" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://postgres:5432/db71u</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>mobterm</user-name>
                        <password>mobterm</password>
                    </security>
                </datasource>
                <datasource jta="true" jndi-name="java:/jdbc/uvms_movement" pool-name="jdbc/uvms_movement" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://postgres:5432/db71u</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql</driver>
                    <transaction-isolation>TRANSACTION_REPEATABLE_READ</transaction-isolation>
                    <security>
                        <user-name>movement</user-name>
                        <password>movement</password>
                    </security>
                </datasource>
                <datasource jta="true" jndi-name="java:/jdbc/uvms_asset" pool-name="jdbc/uvms_asset" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://postgres:5432/db71u</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>asset</user-name>
                        <password>asset</password>
                    </security>
                </datasource>
                <datasource jta="true" jndi-name="java:jboss/datasources/uvms_vessel" pool-name="uvms" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://postgres:5432/db71u</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>uvms</user-name>
                        <password>uvms</password>
                    </security>
                </datasource>
                <datasource jta="true" jndi-name="java:/jdbc/uvms_exchange" pool-name="jdbc/uvms_exchange" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://postgres:5432/db71u</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>exchange</user-name>
                        <password>exchange</password>
                    </security>
                </datasource>
                <datasource jta="true" jndi-name="java:/jdbc/uvms_rules" pool-name="jdbc/uvms_rules" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://postgres:5432/db71u</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>rules</user-name>
                        <password>rules</password>
                    </security>
                </datasource>
                <datasource jta="true" jndi-name="java:jboss/datasources/uvms_usm" pool-name="uvms_usm" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://postgres:5432/db71u</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>usm</user-name>
                        <password>usm</password>
                    </security>
                </datasource>
                <datasource jta="true" jndi-name="java:/jdbc/USM2" pool-name="jdbc/USM2" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://postgres:5432/db71u</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>usm</user-name>
                        <password>usm</password>
                    </security>
                </datasource>
                <datasource jta="true" jndi-name="java:jboss/datasources/uvms_spatial" pool-name="uvms_spatial" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://postgres:5432/db71u</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>spatial</user-name>
                        <password>postgres</password>
                    </security>
                </datasource>
                <datasource jta="true" jndi-name="java:jboss/datasources/uvms_reporting" pool-name="uvms_reporting" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://postgres:5432/db71u</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>reporting</user-name>
                        <password>reporting</password>
                    </security>
                </datasource>
                <datasource jta="true" jndi-name="java:/jdbc/uvms_config" pool-name="jdbc/uvms_config" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://postgres:5432/db71u</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>config</user-name>
                        <password>config</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                    <driver name="postgresql" module="org.postgresql">
                        <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">
            <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:ee:2.0">
            <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>
            <concurrent>
                <context-services>
                    <context-service name="default" jndi-name="java:jboss/ee/concurrency/context/default" use-transaction-setup-provider="true"/>
                </context-services>
                <managed-thread-factories>
                    <managed-thread-factory name="default" jndi-name="java:jboss/ee/concurrency/factory/default" context-service="default"/>
                </managed-thread-factories>
                <managed-executor-services>
                    <managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-threshold="60000" core-threads="5" max-threads="25" keepalive-time="5000"/>
                </managed-executor-services>
                <managed-scheduled-executor-services>
                    <managed-scheduled-executor-service name="default" jndi-name="java:jboss/ee/concurrency/scheduler/default" context-service="default" hung-task-threshold="60000" core-threads="2" keepalive-time="3000"/>
                </managed-scheduled-executor-services>
            </concurrent>
            <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" jms-connection-factory="java:jboss/DefaultJMSConnectionFactory" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:ejb3:2.0">
            <session-bean>
                <stateless>
                    <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>
                </stateless>
                <stateful default-access-timeout="5000" cache-ref="simple" passivation-disabled-cache-ref="simple"/>
                <singleton default-access-timeout="5000"/>
            </session-bean>
            <mdb>
                <resource-adapter-ref resource-adapter-name="activemq-rar.rar"/>
                <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
            </mdb>
            <pools>
                <bean-instance-pools>
                    <strict-max-pool name="slsb-strict-max-pool" max-pool-size="32" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
                    <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
                </bean-instance-pools>
            </pools>
            <caches>
                <cache name="simple"/>
                <cache name="distributable" passivation-store-ref="infinispan" aliases="passivating clustered"/>
            </caches>
            <passivation-stores>
                <passivation-store name="infinispan" cache-container="ejb" max-size="10000"/>
            </passivation-stores>
            <async thread-pool-name="default"/>
            <timer-service thread-pool-name="default" default-data-store="default-file-store">
                <data-stores>
                    <file-data-store name="default-file-store" path="timer-service-data" relative-to="jboss.server.data.dir"/>
                </data-stores>
            </timer-service>
            <remote connector-ref="http-remoting-connector" thread-pool-name="default"/>
            <thread-pools>
                <thread-pool name="default">
                    <max-threads count="10"/>
                    <keepalive-time time="100" unit="milliseconds"/>
                </thread-pool>
            </thread-pools>
            <iiop enable-by-default="false" use-qualified-name="false"/>
            <default-security-domain value="other"/>
            <default-missing-method-permissions-deny-access value="true"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:io:1.1">
            <worker name="default"/>
            <buffer-pool name="default"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:infinispan:2.0">
            <cache-container name="web" default-cache="passivation" module="org.wildfly.clustering.web.infinispan">
                <local-cache name="passivation" batching="true">
                    <file-store passivation="true" purge="false"/>
                </local-cache>
                <local-cache name="persistent" batching="true">
                    <file-store passivation="false" purge="false"/>
                </local-cache>
            </cache-container>
            <cache-container name="ejb" default-cache="passivation" module="org.wildfly.clustering.ejb.infinispan" aliases="sfsb">
                <local-cache name="passivation" batching="true">
                    <file-store passivation="true" purge="false"/>
                </local-cache>
                <local-cache name="persistent" batching="true">
                    <file-store passivation="false" purge="false"/>
                </local-cache>
            </cache-container>
            <cache-container name="hibernate" default-cache="local-query" module="org.hibernate">
                <local-cache name="entity">
                    <transaction mode="NON_XA"/>
                    <eviction strategy="LRU" max-entries="10000"/>
                    <expiration max-idle="100000"/>
                </local-cache>
                <local-cache name="local-query">
                    <transaction mode="NONE"/>
                    <eviction strategy="LRU" max-entries="10000"/>
                    <expiration max-idle="100000"/>
                </local-cache>
                <local-cache name="timestamps">
                    <transaction mode="NONE"/>
                    <eviction strategy="NONE"/>
                </local-cache>
            </cache-container>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:jacorb:1.3">
            <orb socket-binding="jacorb" ssl-socket-binding="jacorb-ssl">
                <initializers security="identity" transactions="spec"/>
            </orb>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>
        <subsystem xmlns="urn:jboss:domain:jca:2.0">
            <archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/>
            <bean-validation enabled="true"/>
            <default-workmanager>
                <short-running-threads>
                    <core-threads count="50"/>
                    <queue-length count="50"/>
                    <max-threads count="50"/>
                    <keepalive-time time="10" unit="seconds"/>
                </short-running-threads>
                <long-running-threads>
                    <core-threads count="50"/>
                    <queue-length count="50"/>
                    <max-threads count="50"/>
                    <keepalive-time time="10" unit="seconds"/>
                </long-running-threads>
            </default-workmanager>
            <cached-connection-manager/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:jdr:1.0"/>
        <subsystem xmlns="urn:jboss:domain:jmx:1.3">
            <expose-resolved-model/>
            <expose-expression-model/>
            <remoting-connector/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:jpa:1.1">
            <jpa default-datasource="" default-extended-persistence-inheritance="DEEP"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:jsf:1.0"/>
        <subsystem xmlns="urn:jboss:domain:jsr77:1.0"/>
        <subsystem xmlns="urn:jboss:domain:mail:2.0">
            <mail-session name="default" jndi-name="java:jboss/mail/Default">
                <smtp-server outbound-socket-binding-ref="mail-smtp"/>
            </mail-session>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:naming:2.0">
            <remote-naming/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:pojo:1.0"/>
        <subsystem xmlns="urn:jboss:domain:remoting:2.0">
            <endpoint worker="default"/>
            <http-connector name="http-remoting-connector" connector-ref="default-http" security-realm="ApplicationRealm"/>
            <http-connector name="https-remoting-connector" connector-ref="default-https" security-realm="UndertowRealm"/>
        </subsystem>
        
		<subsystem xmlns="urn:jboss:domain:resource-adapters:2.0">
            <resource-adapters>                
                <resource-adapter id="activemq-rar.rar">
                    <archive>activemq-rar.rar</archive>
                    <transaction-support>XATransaction</transaction-support>
                    <config-property name="Password">defaultPassword</config-property>
                    <config-property name="UserName">defaultUser</config-property>
                    <config-property name="ServerUrl">tcp://activemq:61616?jms.rmIdFromConnectionId=true&amp;socketBufferSize=131072</config-property>
                    <connection-definitions>
                        <connection-definition class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" jndi-name="java:/ConnectionFactory" enabled="true" pool-name="ConnectionFactory">
                            <xa-pool>
                                <min-pool-size>1</min-pool-size>
                                <max-pool-size>20</max-pool-size>
                                <prefill>false</prefill>
                                <is-same-rm-override>false</is-same-rm-override>
                            </xa-pool>
                            <recovery>
                                <recover-credential>
                                    <user-name>defaultUser</user-name>
                                    <password>defaultPassword</password>
                                </recover-credential>
                            </recovery>
                        </connection-definition>
                    </connection-definitions>
                    <admin-objects>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSReportingEvent" use-java-context="true" pool-name="UVMSReportingEvent">
                            <config-property name="PhysicalName">
                                UVMSReportingEvent
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSConfig" use-java-context="true" pool-name="UVMSConfig">
                            <config-property name="PhysicalName">
                                UVMSConfig
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSAssetNational" use-java-context="true" pool-name="UVMSAssetNational">
                            <config-property name="PhysicalName">
                                UVMSAssetNational
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSRulesModel" use-java-context="true" pool-name="UVMSRulesModel">
                            <config-property name="PhysicalName">
                                UVMSRulesModel
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/DLQ" use-java-context="true" pool-name="DLQ">
                            <config-property name="PhysicalName">
                                DLQ
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSSpatial" use-java-context="true" pool-name="UVMSSpatial">
                            <config-property name="PhysicalName">
                                UVMSSpatial
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSConfigEvent" use-java-context="true" pool-name="UVMSConfigEvent">
                            <config-property name="PhysicalName">
                                UVMSConfigEvent
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSExchangeEvent" use-java-context="true" pool-name="UVMSExchangeEvent">
                            <config-property name="PhysicalName">
                                UVMSExchangeEvent
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSMovement" use-java-context="true" pool-name="UVMSMovement">
                            <config-property name="PhysicalName">
                                UVMSMovement
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSMobileTerminalEvent" use-java-context="true" pool-name="UVMSMobileTerminalEvent">
                            <config-property name="PhysicalName">
                                UVMSMobileTerminalEvent
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSAssetModel" use-java-context="true" pool-name="UVMSAssetModel">
                            <config-property name="PhysicalName">
                                UVMSAssetModel
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSRulesEvent" use-java-context="true" pool-name="UVMSRulesEvent">
                            <config-property name="PhysicalName">
                                UVMSRulesEvent
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSUser" use-java-context="true" pool-name="UVMSUser">
                            <config-property name="PhysicalName">
                                UVMSUser
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSAssetCache" use-java-context="true" pool-name="UVMSAssetCache">
                            <config-property name="PhysicalName">
                                UVMSAssetCache
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSExchangeModel" use-java-context="true" pool-name="UVMSExchangeModel">
                            <config-property name="PhysicalName">
                                UVMSExchangeModel
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/TestResponseQueue" use-java-context="true" pool-name="TestResponseQueue">
                            <config-property name="PhysicalName">
                                TestResponseQueue
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSMobileTerminal" use-java-context="true" pool-name="UVMSMobileTerminal">
                            <config-property name="PhysicalName">
                                UVMSMobileTerminal
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSActivityEvent" use-java-context="true" pool-name="UVMSActivityEvent">
                            <config-property name="PhysicalName">
                                UVMSActivityEvent
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSMobileTerminalNational" use-java-context="true" pool-name="UVMSMobileTerminalNational">
                            <config-property name="PhysicalName">
                                UVMSMobileTerminalNational
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSRules" use-java-context="true" pool-name="UVMSRules">
                            <config-property name="PhysicalName">
                                UVMSRules
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSUserEvent" use-java-context="true" pool-name="UVMSUserEvent">
                            <config-property name="PhysicalName">
                                UVMSUserEvent
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQTopic" jndi-name="java:/jms/topic/ConfigStatus" use-java-context="true" pool-name="ConfigStatus">
                            <config-property name="PhysicalName">
                                ConfigStatus
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQTopic" jndi-name="java:/jms/topic/EventBus" use-java-context="true" pool-name="EventBus">
                            <config-property name="PhysicalName">
                                EventBus
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSUpload" use-java-context="true" pool-name="UVMSUpload">
                            <config-property name="PhysicalName">
                                UVMSUpload
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSAssetEvent" use-java-context="true" pool-name="UVMSAssetEvent">
                            <config-property name="PhysicalName">
                                UVMSAssetEvent
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSExchange" use-java-context="true" pool-name="UVMSExchange">
                            <config-property name="PhysicalName">
                                UVMSExchange
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSSpatialEvent" use-java-context="true" pool-name="UVMSSpatialEvent">
                            <config-property name="PhysicalName">
                                UVMSSpatialEvent
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/USM4UVMS" use-java-context="true" pool-name="UVMS4UVMS">
                            <config-property name="PhysicalName">
                                USM4UVMS
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSMovementEvent" use-java-context="true" pool-name="UVMSMovementEvent">
                            <config-property name="PhysicalName">
                                UVMSMovementEvent
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/ExpiryQueue" use-java-context="true" pool-name="ExpiryQueue">
                            <config-property name="PhysicalName">
                                ExpiryQueue
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSUploadEvent" use-java-context="true" pool-name="UVMSUploadEvent">
                            <config-property name="PhysicalName">
                                UVMSUploadEvent
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSAssetXEU" use-java-context="true" pool-name="UVMSAssetXEU">
                            <config-property name="PhysicalName">
                                UVMSAssetXEU
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSAsset" use-java-context="true" pool-name="UVMSAsset">
                            <config-property name="PhysicalName">
                                UVMSAsset
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSAudit" use-java-context="true" pool-name="UVMSAudit">
                            <config-property name="PhysicalName">
                                UVMSAudit
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSReporting" use-java-context="true" pool-name="UVMSReporting">
                            <config-property name="PhysicalName">
                                UVMSReporting
                            </config-property>
                        </admin-object>
                        <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/jms/queue/UVMSAuditEvent" use-java-context="true" pool-name="UVMSAuditEvent">
                            <config-property name="PhysicalName">
                                UVMSAuditEvent
                            </config-property>
                        </admin-object>
                    </admin-objects>
                </resource-adapter>
            </resource-adapters>
        </subsystem>
		
        <subsystem xmlns="urn:jboss:domain:sar:1.0"/>
        <subsystem xmlns="urn:jboss:domain:security:1.2">
            <security-domains>
                <security-domain name="client_cert_domain" cache-type="default">
                    <authentication>
                        <login-module code="CertificateRoles" flag="required">
                            <module-option name="verifier" value="org.jboss.security.auth.certs.AnyCertVerifier"/>
                            <module-option name="securityDomain" value="client_cert_domain"/>
                            <module-option name="rolesProperties" value="file:${jboss.server.config.dir}/app-roles.properties"/>
                        </login-module>
                    </authentication>
                    <jsse keystore-password="keypassword" keystore-url="file:${jboss.server.config.dir}/server.keystore" truststore-password="keypassword" truststore-url="file:${jboss.server.config.dir}/client.truststore" client-auth="true"/>
                </security-domain>
                <security-domain name="other" cache-type="default">
                    <authentication>
                        <login-module code="Remoting" flag="optional">
                            <module-option name="password-stacking" value="useFirstPass"/>
                        </login-module>
                        <login-module code="RealmDirect" flag="required">
                            <module-option name="password-stacking" value="useFirstPass"/>
                        </login-module>
                    </authentication>
                </security-domain>
                <security-domain name="jboss-web-policy" cache-type="default">
                    <authorization>
                        <policy-module code="Delegating" flag="required"/>
                    </authorization>
                </security-domain>
                <security-domain name="jboss-ejb-policy" cache-type="default">
                    <authorization>
                        <policy-module code="Delegating" flag="required"/>
                    </authorization>
                </security-domain>
            </security-domains>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:transactions:2.0">
            <core-environment>
                <process-id>
                    <uuid/>
                </process-id>
            </core-environment>
            <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:undertow:1.2">
            <buffer-cache name="default"/>
            <server name="default-server">
                <http-listener name="default-http" socket-binding="http"/>
                <https-listener name="https" socket-binding="https" security-realm="UndertowRealm" verify-client="REQUIRED"/>
                <host name="default-host" alias="localhost">
                    <location name="/" handler="welcome-content"/>
                    <filter-ref name="server-header"/>
                    <filter-ref name="x-powered-by-header"/>
                </host>
            </server>
            <servlet-container name="default">
                <jsp-config/>
                <websockets/>
            </servlet-container>
            <handlers>
                <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
            </handlers>
            <filters>
                <response-header name="server-header" header-name="Server" header-value="WildFly/8"/>
                <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
            </filters>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:webservices:1.2">
            <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
            <endpoint-config name="Standard-Endpoint-Config"/>
            <endpoint-config name="Recording-Endpoint-Config">
                <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
                    <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
                </pre-handler-chain>
            </endpoint-config>
            <client-config name="Standard-Client-Config"/>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:weld:2.0"/>
    </profile>

    <interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address:127.0.0.1}"/>
        </interface>
        <interface name="unsecure">
            <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
        </interface>
    </interfaces>

    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
        <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
        <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
        <socket-binding name="http" port="${jboss.http.port:8080}"/>
        <socket-binding name="https" port="${jboss.https.port:8443}"/>
        <socket-binding name="jacorb" interface="unsecure" port="3528"/>
        <socket-binding name="jacorb-ssl" interface="unsecure" port="3529"/>
        <socket-binding name="messaging-group" port="0" multicast-address="${jboss.messaging.group.address:231.7.7.7}" multicast-port="${jboss.messaging.group.port:9876}"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="localhost" port="25"/>
        </outbound-socket-binding>
    </socket-binding-group>
</server>


Update the path to all the data sources


standalone-full ( datasource )
<datasource jta="true" jndi-name="java:/jdbc/[MODULE_JDBC_NAME]" pool-name="jdbc/[MODULE_JDBC_NAME]" enabled="true" use-ccm="true">
    <connection-url>jdbc:postgresql://[DATABASE_URL]:5432/[DATABASE_NAME]</connection-url>
    <driver-class>org.postgresql.Driver</driver-class>
    <driver>postgresql</driver>
    <security>
        <user-name>[DATABASE_USER]</user-name>
        <password>[DATABASE_USER_PASSWORD]</password>
    </security>
</datasource>

Add an admin User to Wildfly

  1. Start a command console. Navigate to folder bin <Your path to wildfly-8.2.0.Final>\bin. 
  • Run add-user.bat 
  • Choose option a) Manage User. Follow the instructions. Please remember the username and password you have set.


Add Modules to Wildfly

Download the following .jars

Hibernate Spatial module

  1. Go to following folder <Your path to wildfly-8.2.0.Final>\modules\system\layers\base\org\hibernate\main, and replace the module.xml with the modified xml below

    module.xml
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!--
      ~ JBoss, Home of Professional Open Source.
      ~ Copyright 2011, Red Hat, Inc., and individual contributors
      ~ as indicated by the @author tags. See the copyright.txt file in the
      ~ distribution for a full listing of individual contributors.
      ~
      ~ This is free software; you can redistribute it and/or modify it
      ~ under the terms of the GNU Lesser General Public License as
      ~ published by the Free Software Foundation; either version 2.1 of
      ~ the License, or (at your option) any later version.
      ~
      ~ This software is distributed in the hope that it will be useful,
      ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
      ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
      ~ Lesser General Public License for more details.
      ~
      ~ You should have received a copy of the GNU Lesser General Public
      ~ License along with this software; if not, write to the Free
      ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
      ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
      -->
    
    <!-- Represents the Hibernate 4.3.x module-->
    <module xmlns="urn:jboss:module:1.3" name="org.hibernate">
        <resources>
            <resource-root path="hibernate-core-4.3.7.Final.jar"/>
            <resource-root path="hibernate-envers-4.3.7.Final.jar"/>
            <resource-root path="hibernate-entitymanager-4.3.7.Final.jar"/>
            <resource-root path="hibernate-infinispan-4.3.7.Final.jar"/>
            <resource-root path="jipijapa-hibernate4-3-1.0.1.Final.jar"/>
            <resource-root path="hibernate-spatial-4.3.jar"/>
    		<resource-root path="jts-1.13.jar"/>
        </resources>
    
        <dependencies>
            <module name="asm.asm"/>
            <module name="com.fasterxml.classmate"/>
            <module name="javax.api"/>
            <module name="javax.annotation.api"/>
            <module name="javax.enterprise.api"/>
            <module name="javax.persistence.api"/>
            <module name="javax.transaction.api"/>
            <module name="javax.validation.api"/>
            <module name="javax.xml.bind.api"/>
            <module name="org.antlr"/>
            <module name="org.apache.commons.collections"/>
            <module name="org.dom4j"/>
            <module name="org.infinispan" services="import"/>
            <module name="org.javassist"/>
            <module name="org.jboss.as.clustering.common"/>
            <module name="org.jboss.as.clustering.jgroups"/>
            <module name="org.jboss.as.clustering.infinispan"/>
            <module name="org.jboss.as.jpa.spi"/>
            <module name="org.jboss.jandex"/>
            <module name="org.jboss.logging"/>
            <module name="org.jboss.vfs"/>
            <module name="org.hibernate.commons-annotations"/>
    		<module name="org.postgresql"/>
        </dependencies>
    </module>
  2. Copy the files hibernate-spatial-4.3.jar and jts-1.13.jar to <Your path to wildfly-8.2.0.Final>\modules\system\layers\base\org\hibernate\main. 

Postgres/Postgis module

  1. Create folders
    1. modules=>org=>postgres=>main
  2. You should now have a folder structure like $JBOSS_HOME/modules/org/postgresql/main
  3. Create a new file  module.xml and fill it with the contents below

    module.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.0" name="org.postgresql">
        <resources>
            <resource-root path="postgresql-9.3-1102-jdbc4.jar"/>
            <resource-root path="postgis-jdbc-1.5.3.jar"/>
        </resources>
        <dependencies>
            <module name="javax.api"/>
            <module name="javax.transaction.api"/>
        </dependencies>
    </module>



  4. Copy the downloaded file "postgresql-9.3-1102-jdbc4.jar" to $JBOSS_HOME/modules/org/postgresql/main

  5. Copy the downloaded file "postgis-jdbc-1.5.3.jar" to $JBOSS_HOME/modules/org/postgresql/main

Add ActiveMQ resource adapter


  • Copy the downloaded file activemq-rar.rar to <Your path to wildfly-8.2.0.Final>\standalone\deployments.

Start Wildfly application server


  1. Start a command console, navigate to folder <Your path wildfly-8.2.0.Final>\bin. To start WildFly server, run following command below. OBS! You must have started ActiveMQ before you start WildFly server. 

    Start wildfly
    ./standalone.bat --server-config=standalone-full.xml
  2. Open a web browser and navigate to WildFly administrator console with following URL: http://<URL to your wildfly server>:9990/console/App.html#home
    To login use the username and password you have set in step 6.

  3. Download the latest modules from Focus Nexus. Please deploy all the Database modules before you deploy the App modules. We also recomend deploying the Exchange module before deplouying any plugins. There are snapshot versions and release versions. Please visit the the links below for the modules you want to deploy for more information and links to the actual artifacts.
    1. Asset
    2. Movement
    3. Mobile Terminal
    4. Audit
    5. Config
    6. User
    7. Spatial
    8. Reporting
    9. Rules
    10. Exchange
  4. Download and install the latest frontend build. You can use it either as a standalone .war fila that you can deploy in the Wildfly application server or a .zip version that you can deploy to a http server of your choice.
    1. Releases as .zip or tar.gz
    2. Snapshots ( .war )
    3. Releases ( .war )
  5. Download and install the latest Geoserver modified to UnioVms standards.


geoserver 283.war(map provider)