Categories

Versions

You are viewing the RapidMiner Legacy documentation for version 9.8 - Check here for latest version

Using JBoss EAP 6.4 GA version

RapidMiner Server is bundled with JBoss EAP Alpha versions due to licensing restrictions. If you have the necessary license to run the JBoss EAP 6.4 GA version then you can also use it to run RapidMiner Server. The following steps are required to use the JBoss EAP 6.4 GA version:

Setting up the application server

RapidMiner Server requires configuration changes to the default JBoss EAP configuration. Normally the RapidMiner Server installer takes care of these changes but because of licensing restrictions the installer is shipped with the JBoss EAP Alpha version. As a result to run RapidMiner Server on a JBoss EAP GA instance you will need to manually perform the necessary configurations. The following sections will guide you step by step how to do so.

JBoss boot modules

Regardless of whether you are running the JBoss EAP under Windows, OS X or Linux the respective bootstrap scripts located in the bin folder need to be modified by adding the jboss-modules jar to the bootstrap class path with the following JVM option: -Xbootclasspath/a:\"$JBOSS_HOME/jboss-modules.jar\"

 if [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "x" ]; then 
  # Execute the JVM in the foreground
  eval \"$JAVA\" -D\"[Standalone]\" $JAVA_OPTS \
      \"-Dorg.jboss.boot.log.file="$JBOSS_LOG_DIR"/server.log\" \
      \"-Dlogging.configuration=file:"$JBOSS_CONFIG_DIR"/logging.properties\" \
     -Xbootclasspath/a:\"$JBOSS_HOME/jboss-modules.jar\" \
     -jar \""$JBOSS_HOME"/jboss-modules.jar\" \
     $MODULE_OPTS \
     -mp \""${JBOSS_MODULEPATH}"\" \
     -jaxpmodule "javax.xml.jaxp-provider" \
     org.jboss.as.standalone \
     -Djboss.home.dir=\""$JBOSS_HOME"\" \
     -Djboss.server.base.dir=\""$JBOSS_BASE_DIR"\" \
     "$SERVER_OPTS"
     JBOSS_STATUS=$?     
else
  # Execute the JVM in the background
  eval \"$JAVA\" -D\"[Standalone]\" $JAVA_OPTS \
      \"-Dorg.jboss.boot.log.file="$JBOSS_LOG_DIR"/server.log\" \
      \"-Dlogging.configuration=file:"$JBOSS_CONFIG_DIR"/logging.properties\" \
      -Xbootclasspath/a:\"$JBOSS_HOME/jboss-modules.jar\" \
      -jar \""$JBOSS_HOME"/jboss-modules.jar\" \
      $MODULE_OPTS \
      -mp \""${JBOSS_MODULEPATH}"\" \
      -jaxpmodule "javax.xml.jaxp-provider" \
      org.jboss.as.standalone \
      -Djboss.home.dir=\""$JBOSS_HOME"\" \
      -Djboss.server.base.dir=\""$JBOSS_BASE_DIR"\" \
      "$SERVER_OPTS" "&"
      JBOSS_PID=$!
:RESTART
if x%XLOGGC% == x (
  "%JAVA%" %JAVA_OPTS% ^
  "-Dorg.jboss.boot.log.file=%JBOSS_LOG_DIR%\server.log" ^
  "-Dlogging.configuration=file:%JBOSS_CONFIG_DIR%/logging.properties" ^
  -Xbootclasspath/a:"%JBOSS_HOME%\jboss-modules.jar" ^
  -jar "%JBOSS_HOME%\jboss-modules.jar" ^
  %MODULE_OPTS% ^
  -mp "%JBOSS_MODULEPATH%" ^
  -jaxpmodule "javax.xml.jaxp-provider" ^
  org.jboss.as.standalone ^
  "-Djboss.home.dir=%JBOSS_HOME%" ^
  %SERVER_OPTS%
) else (
  "%JAVA%" -Xloggc:%XLOGGC% %JAVA_OPTS% ^
  "-Dorg.jboss.boot.log.file=%JBOSS_LOG_DIR%\server.log" ^
  "-Dlogging.configuration=file:%JBOSS_CONFIG_DIR%/logging.properties" ^
 -Xbootclasspath/a:"%JBOSS_HOME%\jboss-modules.jar" ^
  -jar "%JBOSS_HOME%\jboss-modules.jar" ^
  %MODULE_OPTS% ^
  -mp "%JBOSS_MODULEPATH%" ^
  -jaxpmodule "javax.xml.jaxp-provider" ^
  org.jboss.as.standalone ^
  "-Djboss.home.dir=%JBOSS_HOME%" ^
  %SERVER_OPTS%  
)   

RapidMiner Server home directory

The RapidMiner Server home directory is where your RapidMiner Server configuration and data are stored. The folder needs to be created manually and we recommend to choose a location outside of the application server structure. In the following article the RapidMiner Server home is referred to RM_HOME and should not be confused with the JBoss home directory JBOSS_HOME. As every configuration should be stored within RM_HOME move the folder JBOSS_HOME/standalone/configuation to RM_HOME/configuration. Please also make sure to create the following directories:

  • RM_HOME/data
  • RM_HOME/log
  • RM_HOME/resources/licenses

JBoss JVM options configuration

JBoss EAP needs to be started with specific JVM options for RapidMiner Server to work as expected. Apply the highlighted changes to bin/standalone.conf.bat file for Windows platforms or the /bin/standalone.conf file in the case of Linux and OS X platforms. The JVM maximum memory can be adjusted by creating the RM_HOME/configuration/max-memory.conf file.

8192M

The expected value in the file is a number followed by letter ‘M’ which signifies the size of memory in MB. In this example the maximum amount of memory that RapidMiner Server may allocate is 8192 MB.

The amount set in the max-memory.conf file MUST be greater than the Xms option specified in /bin/standalone.conf or /bin/standalone.conf.bat depending on your platform.

Change place holder "%%%%%JAVA_LOCATION%%%%%" to the path of your jre/jdk installation and make sure that it’s version is compatible with the RapidMiner Server version you want to install.

Change place holder "%%%%%RM_HOME_LOCATION%%%%%" to a path of your choice. We recommend a location outside of the application server.

   ## -*- shell-script -*- ######################################################
   ##                                                                          ##
   ##  JBoss Bootstrap Script Configuration                                    ##
   ##                                                                          ##
   ##############################################################################
    
   #
   # This file is optional; it may be removed if not needed.
   #
    
   #
   # Specify the maximum file descriptor limit, use "max" or "maximum" to use
   # the default, as queried by the system.
   #
   # Defaults to "maximum"
   #
   #MAX_FD="maximum"

   #
   # Specify the profiler configuration file to load.
   #
   # Default is to not load profiler configuration file.
   #
   #PROFILER=""
    
   #
   # Specify the location of the Java home directory.  If set then $JAVA will
   # be defined to $JAVA_HOME/bin/java, else $JAVA will be "java".
   #
   JAVA_HOME="%%%%%JAVA_LOCATION%%%%%"
    
   #
   # Specify the exact Java VM executable to use.
   #
   #JAVA=""
    
   if [ "x$JBOSS_MODULES_SYSTEM_PKGS" = "x" ]; then
       JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman"
   fi
    
   # Uncomment the following line to prevent manipulation of JVM options
   # by shell scripts.
   #
   #PRESERVE_JAVA_OPTS=true

   #
   # Use Xmx settings file introduced in RapidMiner Server 7.2
   #
   MAX_MEMORY_CONFIG_FILE="$DIRNAME/../standalone/configuration/max-memory.conf"
   if [ -r "$MAX_MEMORY_CONFIG_FILE" ]; then
      MAX_MEMORY_CONFIG=$(cat "$MAX_MEMORY_CONFIG_FILE")
   else
      MAX_MEMORY_CONFIG="2048m"
   fi   
   #
   # Specify options to pass to the Java VM.
   #
  if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms1303m -Xmx$MAX_MEMORY_CONFIG -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true"      
   JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=50"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.policy-permissions=true"
   JAVA_OPTS="$JAVA_OPTS -Duser.country=US -Duser.language=en"
   # Set pooled JNDI connection timeout in milliseconds
   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.jndi.ldap.connect.pool.timeout=300000"
  else
    echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS"
  fi
    
  # Sample JPDA settings for remote socket debugging
  #JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"
    
  # Sample JPDA settings for shared memory debugging
  #JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_shmem,server=y,suspend=n,address=jboss"
    
  # Uncomment to not use JBoss Modules lockless mode
  #JAVA_OPTS="$JAVA_OPTS -Djboss.modules.lockless=false"
    
  # Uncomment to gather JBoss Modules metrics
  #JAVA_OPTS="$JAVA_OPTS -Djboss.modules.metrics=true"
    
  # Uncomment this to run with a security manager enabled
  # SECMGR="true"
  # Specify the RapidMiner Server home directory.
  RAPIDMINER_SERVER_HOME="%%%%%RM_HOME_LOCATION%%%%%"
  
  JAVA_OPTS="$JAVA_OPTS -Drmserver.home.dir=$RAPIDMINER_SERVER_HOME"
  JAVA_OPTS="$JAVA_OPTS -Djboss.server.log.dir=$RAPIDMINER_SERVER_HOME/log"
  JAVA_OPTS="$JAVA_OPTS -Djboss.server.config.dir=$RAPIDMINER_SERVER_HOME/configuration"
  JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

Change place holder "%%%%%JAVA_LOCATION%%%%%" to the path of your jre/jdk installation and make sure that it’s version is compatible with the RapidMiner Server version you want to install.

Change place holder "%%%%%RM_HOME_LOCATION%%%%%" to a path of your choice. We recommend a location outside of the application server.

   rem ### -*- batch file -*- ######################################################
   rem #                                                                          ##
   rem #  JBoss Bootstrap Script Configuration                                    ##
   rem #                                                                          ##
   rem #############################################################################
    
   rem # $Id: run.conf.bat 88820 2009-05-13 15:25:44Z dimitris@jboss.org $
    
   rem #
   rem # This batch file is executed by run.bat to initialize the environment
   rem # variables that run.bat uses. It is recommended to use this file to
   rem # configure these variables, rather than modifying run.bat itself.
   rem #
    
   rem Uncomment the following line to disable manipulation of JAVA_OPTS (JVM parameters)
   rem set PRESERVE_JAVA_OPTS=true
    
   rem # removed because when installing RA necessary options are defined; -xrs parameter of service would trigger skip
   rem if not "x%JAVA_OPTS%" == "x" (
   rem   echo "JAVA_OPTS already set in environment; overriding default settings with values: %JAVA_OPTS%"
   rem   goto JAVA_OPTS_SET
   rem )
    
   rem #
   rem # Specify the JBoss Profiler configuration file to load.
   rem #
   rem # Default is to not load a JBoss Profiler configuration file.
   rem #
   rem set "PROFILER=%JBOSS_HOME%\bin\jboss-profiler.properties"
    
   rem #
   rem # Specify the location of the Java home directory (it is recommended that
   rem # this always be set). If set, then "%JAVA_HOME%\bin\java" will be used as
   rem # the Java VM executable; otherwise, "%JAVA%" will be used (see below).
   rem #
   set "JAVA_HOME=%%%%%JAVA_LOCATION%%%%%"
   rem #
   rem # Specify the exact Java VM executable to use - only used if JAVA_HOME is
   rem # not set. Default is "java".
   rem #
   rem set "JAVA=C:\opt\jdk1.6.0_23\bin\java"
   
   rem #
   rem # Specify options to pass to the Java VM. Note, there are some additional
   rem # options that are always passed by run.bat.
   rem #
   
   rem # Use Xmx settings file introduced in RapidMiner Server 7.2
   if exist %DIRNAME%\..\standalone\configuration\max-memory.conf (
    set /p MAX_MEMORY_CONFIG=<%DIRNAME%\..\standalone\configuration\max-memory.conf
   ) else (
    set MAX_MEMORY_CONFIG=2048m
   )
   
   rem # JVM memory allocation pool parameters - modify as appropriate.
   set "JAVA_OPTS=%JAVA_OPTS% -Xms1303M -Xmx%MAX_MEMORY_CONFIG% -XX:MaxPermSize=256M"
   set "JAVA_OPTS=%JAVA_OPTS% -XX:+UseG1GC -XX:MaxGCPauseMillis=50"
    
   rem # Prefer IPv4
   set "JAVA_OPTS=%JAVA_OPTS% -Djava.net.preferIPv4Stack=true"
   rem # Set pooled JNDI connection timeout in milliseconds
   set "JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.jndi.ldap.connect.pool.timeout=300000"
   rem # Set the jboss.modules.policy-permissions property to true by default.
   set "JAVA_OPTS=%JAVA_OPTS%  -Djboss.modules.policy-permissions=true "
       
   rem # Make Byteman classes visible in all module loaders
   rem # This is necessary to inject Byteman rules into AS7 deployments
   set "JAVA_OPTS=%JAVA_OPTS% -Djboss.modules.system.pkgs=org.jboss.byteman"
    
   rem # Set to english logging
   set "JAVA_OPTS=%JAVA_OPTS% -Duser.country=US -Duser.language=en"
    
   rem # Sample JPDA settings for remote socket debugging
   rem set "JAVA_OPTS=%JAVA_OPTS% -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"
    
   rem # Sample JPDA settings for shared memory debugging
   rem set "JAVA_OPTS=%JAVA_OPTS% -agentlib:jdwp=transport=dt_shmem,address=jboss,server=y,suspend=n"
    
   rem # Use JBoss Modules lockless mode
   rem set "JAVA_OPTS=%JAVA_OPTS% -Djboss.modules.lockless=true"
    
   rem # Uncomment this to run with a security manager enabled
   rem set "SECMGR=true"

   :JAVA_OPTS_SET
   rem # Set home folder
   set "JAVA_OPTS=%JAVA_OPTS% -Drmserver.home.dir=%%%%%RM_HOME_LOCATION%%%%%"
    
   rem # Set log folder
   set "JAVA_OPTS=%JAVA_OPTS% -Djboss.server.log.dir=%%%%%RM_HOME_LOCATION%%%%%\log"
    
   rem # Set configuration folder
   set "JAVA_OPTS=%JAVA_OPTS% -Djboss.server.config.dir=%%%%%RM_HOME_LOCATION%%%%%\configuration"
    
   rem # Set UTF-8 file encoding
   set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8"

JDBC driver configuration

Configure the JDBC driver to allow connection to your repository database. JBoss GA does not come with bundled JDBC drivers so you will need to download the driver and store it to the appropriate location under modules/system/layers/base folder. Depending on the underlying database you are using the full path will differ:

  • Microsoft SQL Server: create the com/mssql/main subfolder structure inside the base folder and copy the driver library (for example mssql-jdbc-6.4.0.jre8.jar) into it.
  • MySQL: create the com/mysql/main subfolder structure inside the base folder and copy the driver library (for example mysql-connector-java-8.0.11.jar) into it.
  • Oracle: create the oracle/main subfolder structure inside the base folder and copy the driver library (for example ojdbc7-12.1.0.2.jar) into it.
  • PostgreSQL: create the org/postgresql/main subfolder structure inside the base folder and copy the driver library (for example postgresql-42.2.2.jar) into it.

You also need to register the JDBC driver library by creating a module.xml file in the same folder the driver is stored. Depending on the driver and version you will need to modify the name="..." and path="..." attributes.

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com/mssql">
    <resources>
        <resource-root path="mssql-jdbc-6.4.0.jre8.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.xml.bind.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com/mysql">
    <resources>
        <resource-root path="mysql-connector-java-8.0.11.jar"/>
        </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="oracle">
    <resources>
        <resource-root path="ojdbc7-12.1.0.2.jar"/>
        </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="org/postgresql">
    <resources>
        <resource-root path="postgresql-42.2.2.jar"/>
        </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

Modify JBoss database configuration

Now that JBoss is able to use the JDBC driver you need to add a data source and register the JDBC driver in standalone/configuration/standalone.xml.

The data source describes the connection to the RapidMiner Server repository database while the driver defines the Java class that implements the JDBC driver class. Data source and driver definition may vary depending on the type of database you use.

You need to add the datasource and the driver tags under datasources tag. Also do not forget to change:

  • the <connection-url>...<connection-url> according to your JDBC driver,
  • the <driver-class>...</driver-class> and <xa-datasource-class>...</xa-datasource-class> depending on the JDBC driver class,
  • the <driver>...</driver>, the <driver name="..." module="..."> depending on the JDBC driver library you configured.
  • within the new datasource element, update the security element with the correct user-name and password.
<datasource jta="true" jndi-name="java:/jdbc/RapidAnalyticsDS"
    pool-name="RapidAnalyticsDS" enabled="true" use-java-context="false"
    use-ccm="true">
    <connection-url>jdbc:sqlserver://dbhost:1433;databaseName=dbschema;SelectMethod=cursor;</connection-url>
    <driver>mssql-jdbc-6.4.0.jre8.jar</driver>
    <pool>
        <min-pool-size>5</min-pool-size>
        <max-pool-size>50</max-pool-size>
        <prefill>false</prefill>
        <use-strict-min>false</use-strict-min>
        <flush-strategy>FailingConnectionOnly</flush-strategy>
    </pool>
    <security>
        <user-name>dbuser</user-name>
        <password>dbpassword</password>
    </security>
    <validation>
        <!-- Ensure that a DB outage is detected and Server is able to restore DB connections afterwards again -->
        <validate-on-match>false</validate-on-match>
        <background-validation>true</background-validation>
        <background-validation-millis>5000</background-validation-millis>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"></valid-connection-checker>
    </validation>
</datasource>
<drivers>
    <driver name="mssql-jdbc-6.4.0.jre8.jar" module="com/mssql">
        <xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</xa-datasource-class>
        <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
    </driver>
</drivers>
<datasource jta="true" jndi-name="java:/jdbc/RapidAnalyticsDS"
    pool-name="RapidAnalyticsDS" enabled="true" use-java-context="false"
    use-ccm="true">
    <connection-url>jdbc:mysql://dbhost:3306/dbschema</connection-url>
    <connection-property name="rewriteBatchedStatements">true</connection-property>
    <driver>mysql-connector-java-8.0.11.jar</driver>
    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
    <pool>
        <min-pool-size>0</min-pool-size>
        <max-pool-size>20</max-pool-size>
        <prefill>true</prefill>
        <use-strict-min>false</use-strict-min>
        <flush-strategy>FailingConnectionOnly</flush-strategy>
    </pool>
    <security>
        <user-name>dbuser</user-name>
        <password>dbpassword</password>
    </security>
    <validation>
        <!-- Ensure that a DB outage is detected and Server is able to restore DB connections afterwards again -->
        <validate-on-match>false</validate-on-match>
        <background-validation>true</background-validation>
        <background-validation-millis>5000</background-validation-millis>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"></valid-connection-checker>
    </validation>
    <statement>
        <prepared-statement-cache-size>0</prepared-statement-cache-size>
        <share-prepared-statements>false</share-prepared-statements>
    </statement>
</datasource>
<drivers>
    <driver name="mysql-connector-java-8.0.11.jar" module="com/mysql">
        <xa-datasource-class>com.mysql.jdbc.Driver</xa-datasource-class>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
    </driver>
</drivers>
<datasource jta="true" jndi-name="java:/jdbc/RapidAnalyticsDS"
    pool-name="RapidAnalyticsDS" enabled="true" use-java-context="false"
    use-ccm="true">
    <connection-url>jdbc:oracle:thin:@dbhost:1521:dbschema</connection-url>
    <driver>ojdbc7-12.1.0.2.jar</driver>
    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
    <pool>
        <min-pool-size>5</min-pool-size>
        <max-pool-size>100</max-pool-size>
        <prefill>true</prefill>
        <use-strict-min>false</use-strict-min>
        <flush-strategy>FailingConnectionOnly</flush-strategy>
    </pool>
    <security>
        <user-name>dbuser</user-name>
        <password>dbpassword</password>
    </security>
    <validation>
        <!-- Ensure that a DB outage is detected and Server is able to restore DB connections afterwards again -->
        <validate-on-match>false</validate-on-match>
        <background-validation>true</background-validation>
        <background-validation-millis>5000</background-validation-millis>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"></valid-connection-checker>
    </validation>
</datasource>
<drivers>
    <driver name="ojdbc7-12.1.0.2.jar" module="oracle">
        <xa-datasource-class>oracle.jdbc.driver.OracleDriver</xa-datasource-class>
        <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
</drivers>
</driver>
<datasource jta="true" jndi-name="java:/jdbc/RapidAnalyticsDS"
    pool-name="RapidAnalyticsDS" enabled="true" use-java-context="false"
    use-ccm="true">
    <connection-url>jdbc:postgresql://dbhost:5432/dbschema</connection-url>
    <driver>postgresql-42.2.2</driver>
    <security>
        <user-name>dbuser</user-name>
        <password>dbpassword</password>
    </security>
    <validation>
        <!-- Ensure that a DB outage is detected and Server is able to restore DB connections afterwards again -->
        <validate-on-match>false</validate-on-match>
        <background-validation>true</background-validation>
        <background-validation-millis>5000</background-validation-millis>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"></valid-connection-checker>
    </validation>
</datasource>
<drivers>
    <driver name="postgresql-42.2.2" module="org/postgresql">
        <xa-datasource-class>org.postgresql.Driver</xa-datasource-class>
        <driver-class>org.postgresql.Driver</driver-class>
    </driver>
</drivers>

Disable Subdeployment Class Loader Isolation

To disable Subdeployment class loader Isolation within an ear file locate the <subsystem xmlns="urn:jboss:domain:ee:1.2"> element within the standalone/configuration/standalone.xml and replace the <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement> element with <ear-subdeployments-isolated>false</ear-subdeployments-isolated>.

Modify JBoss security configuration

The standalone/configuration/standalone.xml file needs to be adjusted with an additional security-domain element with attribute name="RapidAnalyticsEJBDomain" that defines the security domain used by RapidMiner Server for authentication and access control. This element needs to be placed within the security-domains element:

<security-domains>
    <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="RapidAnalyticsEJBDomain" cache-type="default">
        <authorization>
            <policy-module code="Delegating" flag="required"/>
        </authorization>
    </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>

If you want to use Radoop on RapidMiner Server as well, you will also need to add the security group radoop-kerberos to the security-domains element. The security domains hadoop_default, Client_simple and Client are only necessary if you want to connect to a MapR cluster.

<security-domain name="radoop-kerberos" cache-type="default">
    <authentication>
        <login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="required">
            <module-option name="storeKey" value="true"/>
        </login-module>
    </authentication>
</security-domain>
<security-domain name="hadoop_default" cache-type="default">
    <authentication>
        <login-module code="org.apache.hadoop.security.login.GenericOSLoginModule" flag="required">
        </login-module>
        <login-module code="com.mapr.security.maprsasl.MaprSecurityLoginModule" flag="required">
            <module-option name="checkUGI" value="false"/>
        </login-module>
        <login-module code="org.apache.hadoop.security.login.HadoopLoginModule" flag="required">
            <module-option name="principalPriority" value="com.mapr.security.MapRPrincipal"/>
        </login-module>
    </authentication>
</security-domain>
<security-domain name="Client_simple" cache-type="default">
    <authentication>
        <login-module code="com.mapr.security.simplesasl.GenericLoginModule" flag="required">
            <module-option name="authMech" value="SIMPLE-SECURITY"/>
        </login-module>
    </authentication>
</security-domain>
<security-domain name="Client" cache-type="default">
    <authentication>
        <login-module code="com.mapr.security.maprsasl.MaprSecurityLoginModule" flag="required">
            <module-option name="checkUGI" value="false"/>
            <module-option name="authMech" value="MAPR-SECURITY"/>
            <module-option name="debug" value="true"/>
        </login-module>
    </authentication>
</security-domain>

In order to enable LDAP authentication you will need to create the local-security.properties and store it in the /standalone/configuration folder. Then follow the steps as explained in Changing LDAP settings guide

JBoss virtual server configuration

RapidMiner Server additionally requires changes to virtual server configuration in standalone/configuration/standalone.xml file. Locate the virtual server subsystem with attribute xmlns="urn:jboss:domain:web:2.2". There be sure to make the following changes:

  • change default-virtual-server attribute to have the value "ra-host"
  • add a virtual-server element with the following attributes and its values: name="ra-host", enable-welcome-root="false" and default-web-module="ROOT"
  • inside the virtual-server element create an alias element with an attribute name whose value is the host name RapidMiner server will be accessible, for example <alias name="www.rapidminer.com"/>
Change place holder "%%%%%SERVER_HOST%%%%%" to the address RapidMiner Server should be accessible from.
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="ra-host" native="false">
        <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>          
    <virtual-server name="default-host" enable-welcome-root="false">
        <alias name="example.com"/>
    </virtual-server>
    <virtual-server name="ra-host" enable-welcome-root="false" default-web-module="ROOT">
        <alias name="%%%%%SERVER_HOST%%%%%"/>
    </virtual-server>
</subsystem>

JBoss interface configuration

The JBoss application server needs to be configured on which address the application as well as the management endpoints of the server should be accessed. To do this the interfaces and <socket-binding-group> elements need to be adapted in the standalone/configuration/standalone.xml configuration file. Specifically:

  • adjust the nested interface elements with name attribute values management, public, unsecure to contain an inet-address element as follows: <inet-address value="${jboss.bind.address.management:%%%%%SERVER_HOST%%%%%}"/>.

    Be sure to change %%%%%SERVER_HOST%%%%% placeholder to the address you set previously as alias name when configuring the virtual server element

  • add an additional interface element of which the attribute name is any and has a nested <any-ipv4-address/> element
  • locate the <socket-binding-group> element and change it's default-interface attribute value to "any".
<interfaces>
        <interface name="management">
        <inet-address value="${jboss.bind.address.management:%%%%%SERVER_HOST%%%%%}"/>
        </interface>
   <interface name="public">
        <inet-address value="${jboss.bind.address:%%%%%SERVER_HOST%%%%%}"/>
        </interface>
   <interface name="unsecure">
       <inet-address value="${jboss.bind.address.unsecure:%%%%%SERVER_HOST%%%%%}"/>
    </interface>
    <interface name="any">
        <any-ipv4-address/>
    </interface>
</interfaces>

Configure the WSDL SOAP address

To configure the soap:address element which the RapidMiner Server WSDL lists you will need to update the <wsdl-host> element in the standalone/configuration/standalone.xml with the address %%%%%SERVER_HOST%%%%% you set during the JBoss interface configuration step.

Bind RapidMiner Server to a specific address (Optional)

It is possible to bind the Rapidminer Server access to specific address. To do this you need first to configure a virtual server address and assign it to an interface. Once you have completed these steps locate the <socket-binding-group> element in the standalone/configuration/standalone.xml file and change it's default-interface attribute value to "public".

Change the default http port (Optional)

The default port for the http requests directed to RapidMiner Server (currently 8080) can be changed via the standalone/configuration/standalone.xml. Locate the <socket-binding-group> and the nested <socket-binding> element of which the attribute name has "http" value. Change the port attribute accordingly.

JBoss virtual SMTP configuration (Optional)

To be able to send automated e-mails from RadpidMiner Server, the JBoss virtual SMTP configuration needs to be adjusted. This step is optional and can be skipped if you do not require the e-mail functionality of RapidMiner Server.

Locate the mail-session tag within standalone/configuration/standalone.xml and change the following:

  • update the jndi-name attribute to value "java:/Mail"
  • add the debug attribute with value "false"
  • add the from attribute with the value you want to appear as the sender of the e-mail, for example no-reply@rapidminer.com
  • change the nested smtp-server element from empty element tag to an element with start and end tags. Within the element add a login-name element with the attributes name and password for the smtp server user that will be used to send the e-mail.
Change place holders "%%%%%MAIL_SENDER%%%%%" to the email address you want to appear as the sender of the e-mail, and placeholders %%%%%MAIL_USER%%%%%,%%%%%MAIL_PASSWORD%%%%% to the credentials of the user that will be used to send the e-mail by the smtp server.
<mail-session jndi-name="java:/Mail" debug="false" from="%%%%%MAIL_SENDER%%%%%">
    <custom-server name="smtp" outbound-socket-binding-ref="mail-smtp">
        <login name="%%%%%MAIL_USER%%%%%" password="%%%%%MAIL_PASSWORD%%%%%"/>
    </custom-server>
</mail-session>
Change place holders "%%%%%MAIL_SENDER%%%%%" to the email address you want to appear as the sender of the e-mail, and placeholders %%%%%MAIL_USER%%%%%,%%%%%MAIL_PASSWORD%%%%% to the credentials of the user that will be used to send the e-mail by the smtp server.
<mail-session jndi-name="java:/Mail" debug="false" from="%%%%%MAIL_SENDER%%%%%">
    <custom-server name="smtp" outbound-socket-binding-ref="mail-smtp">
        <login name="%%%%%MAIL_USER%%%%%" password="%%%%%MAIL_PASSWORD%%%%%"/>
        <property name="mail.smtp.starttls.enable" value="true"/>
    </custom-server>
</mail-session>
Change place holders "%%%%%MAIL_SENDER%%%%%" to the email address you want to appear as the sender of the e-mail, and placeholders %%%%%MAIL_USER%%%%%,%%%%%MAIL_PASSWORD%%%%% to the credentials of the user that will be used to send the e-mail by the smtp server.
<mail-session jndi-name="java:/Mail" debug="false" from="%%%%%MAIL_SENDER%%%%%">
    <custom-server name="smtp" outbound-socket-binding-ref="mail-smtp">
        <login name="%%%%%MAIL_USER%%%%%" password="%%%%%MAIL_PASSWORD%%%%%"/>
        <property name="mail.smtp.starttls.enable" value="true"/>
        <property name="mail.smtp.starttls.required" value="true"/>
    </custom-server>
</mail-session>
Change place holders "%%%%%MAIL_SENDER%%%%%" to the email address you want to appear as the sender of the e-mail, and placeholders %%%%%MAIL_USER%%%%%,%%%%%MAIL_PASSWORD%%%%% to the credentials of the user that will be used to send the e-mail by the smtp server.
<mail-session jndi-name="java:/Mail" debug="false" from="%%%%%MAIL_SENDER%%%%%">
    <custom-server name="smtp" outbound-socket-binding-ref="mail-smtp">
        <login name="%%%%%MAIL_USER%%%%%" password="%%%%%MAIL_PASSWORD%%%%%"/>
        <property name="mail.smtp.starttls.enable" value="true"/>
        <property name="mail.smtp.starttls.required" value="true"/>
        <property name="mail.smtp.ssl.protocols" value="TLSv1.2"/>
        <property name="mail.smtp.ssl.ciphersuites" value="TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"/>
        <property name="mail.smtp.ssl.checkserveridentity" value="true"/>
    </custom-server>
</mail-session>
Change place holders "%%%%%MAIL_SENDER%%%%%" to the email address you want to appear as the sender of the e-mail, and placeholders %%%%%MAIL_USER%%%%%,%%%%%MAIL_PASSWORD%%%%% to the credentials of the user that will be used to send the e-mail by the smtp server.
<mail-session jndi-name="java:/Mail" debug="false" from="%%%%%MAIL_SENDER%%%%%">
    <custom-server name="smtp" outbound-socket-binding-ref="mail-smtp">
        <login name="%%%%%MAIL_USER%%%%%" password="%%%%%MAIL_PASSWORD%%%%%"/>
        <property name="mail.smtp.ssl.enable" value="true"/>
        <property name="mail.smtp.ssl.protocols" value="TLSv1 TLSv1.1 TLSv1.2"/>
    </custom-server>
</mail-session>
Change place holders "%%%%%MAIL_SENDER%%%%%" to the email address you want to appear as the sender of the e-mail, and placeholders %%%%%MAIL_USER%%%%%,%%%%%MAIL_PASSWORD%%%%% to the credentials of the user that will be used to send the e-mail by the smtp server.
<mail-session jndi-name="java:/Mail" debug="false" from="%%%%%MAIL_SENDER%%%%%">
    <custom-server name="smtp" outbound-socket-binding-ref="mail-smtp">
        <login name="%%%%%MAIL_USER%%%%%" password="%%%%%MAIL_PASSWORD%%%%%"/>
        <property name="mail.smtp.ssl.enable" value="true"/>
        <property name="mail.smtp.ssl.protocols" value="TLSv1.2"/>
        <property name="mail.smtp.ssl.ciphersuites" value="TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"/>
        <property name="mail.smtp.ssl.checkserveridentity" value="true"/>
    </custom-server>
</mail-session>

Deploying the application

Check the Downloading RapidMiner Server section on how you can download the latest RapidMiner Server installer and follow the instructions as described in the Installing the full server package section. After the installation is completed, copy the files from the recently installed RapidMiner Server instance to the JBoss GA version:

  • RM_HOME/configuration/execution.properties
  • JBOSS_HOME/standalone/deployments/rapidminer-server-*.ear
  • JBOSS_HOME/standalone/deployments/rapidminer-execution-jobservice-*.war

The next step is to startup RapidMiner Server.
After the successful login you may be prompted to take a series of configuration steps and finally to add a RapidMiner Server license. Copy your RapidMiner Server license key and click on Submit. The installation is now completed and the RapidMiner Server home page should be displayed.