No matter how you choose to deploy , the files and folders in
AppDirectory must be readable and writable by the user who runs the application. The service installer that is included with the Java Edition setup uses cdatarc as this user.If the application was run previously as a different user and you want to restore the necessary permissions for a cdatarc user to run the application, you should use a command similar to this example:sudo chown -R cdatarc:cdatarc /opt/arcWindows
In Windows, is installed as a service by default. To access the application, you must first ensure that the service is running. Once the service is running, you can access the admin console by opening a web browser and entering http://localhost:8080/ in the URL field. You can also run the application without the service through ajava command. recommends using the service, but this method can be useful for certain configurations.
Starting and Stopping the Service
You can start and stop the service in any of the following ways:- Start menu shortcuts (recommended)
- The Services Management Console
- Command prompt commands
Start Menu Shortcuts
The installer creates start menu shortcuts that allow you to easily use the application. To access these shortcuts, open the Start menu and expand the folder. These shortcuts are available:- Launch Admin Console: Opens a web browser window in your default web browser to the admin console URL, http://localhost:8080/. If the service is not running, the web browser returns an error.
- Start : Starts the service. By default, this service runs when Windows starts so you do not need to run this command every time you run the application.
- Stop : Stops the service. This action is necessary when you upgrade .
Services Management Console
To open the Services Management Console, open the start menu and type services. Select the Services application that appears. Scroll down to the service called . If that service is running, the Status column says Running. Right-click the service to access options to Start, Stop, and Restart it.Command Prompt
Advanced users can use a Windows command prompt to issue commands manually to the service. Open a command prompt and change the directory to the installation folder (by default,C:\Program Files\CData\CData Arc).
You can also use a Microsoft PowerShell window to issue these commands, but the syntax is slightly different. Modify the commands accordingly if you use PowerShell.
Launching Without the Service
To run without starting the service, open a command prompt in the installation folder. Issue the following command to start the application:Linux
After you install to a location of your choice, you can run as a service or run the application manually. recommends using a service if you use for critical applications.Running as a Service
Running as a service enables the application to run independently from any user process and to restart automatically upon rebooting. This is the preferred method for critical applications. recommends creating a daemon to manage the application on Linux. A script that is included in the installation package can do this automatically. You can also create the daemon manually if necessary. The safest way to configure the daemon is to run the script that is included in the installation package, provided that the system uses the systemd daemon manager:arc.service. You can then use systemctl to manage the daemon:
Running the Standalone Application
To start without creating a service, use the terminal to open the arc.jar file in the installation directory with a configuration file argument, as shown here:Configuring the Embedded Jetty Server
comes pre-configured to work immediately in any environment. However, you can customize the way you access the data that is exposed in by generating the arc.properties file in the installation directory (for Windows, this isC:\Program Files\CData\CData Arc by default).
For details on all of the arc.properties configuration options, see arc.properties Configuration.
Generating the arc.properties File
Before you can make any customizations to the embedded Jetty server, you must create thearc.properties file. Run the following command in the installation directory where arc.jar is located:
arc.properties file in the installation directory. The file contains parameters that you can modify to change the port or to enable TLS/SSL.
Once you have generated this file, upgrades to do not overwrite it.
Changing the Port
To change the port on which the embedded server listens:-
Locate the
arc.propertiesfile inInstallationDirectoryand open it in a text editor. -
Locate the following line where the port is set:
cdata.http.port=8080 - Change this value to the port number that you want.
Enabling TLS/SSL
To enable TLS/SSL connections (HTTPS), you also need to modify thearc.properties file in InstallationDirectory, as follows:
-
Set the
cdata.tls.keyStoreTypesetting to the type of keystore to use. Valid values include jks, pkcs12, and jceks. -
Set the
cdata.tls.keyStorePathsetting to the path of the keystore to use. Note that${cdata.home}might be used to refer toInstallationDirectory. -
Set the
cdata.tls.keyStorePasswordsetting to the password for the keystore. -
Set the
cdata.tls.portsetting to the port that should be used to host the server. -
(Optional) Set the
cdata.http.portsetting to an empty string to disable plaintext connections.
If you obtain an external private key for configuration in , be sure to change the owner of the certificate to the service account that is used to host (cdatarc:cdatarc).
Pointing to a Different .properties File
Use the-config parameter to point to a configuration file other than the default arc.properties file. For example, if you run the following command, looks for a test.properties file:
Generating a Jetty XML File
In most deployments, thearc.properties file provides the full range of necessary configuration options for the embedded Jetty server. However, if you require a more complex deployment, you can generate a Jetty XML file that serves as a starting point for further modifications. To generate this file, run the following command in the installation directory where arc.jar is located:
webapp folder. As long as it remains in that folder, it is used to start the application.
Starting and Stopping the Server
If you use theservice.sh script to set up an service, see Running as a Service. Otherwise, the Running In-Process section is applicable.
Running In-Process
Start the embedded Jetty server by executing the arc.jar file that is extracted from the application download during setup. You can use standard Java syntax, as shown below, to execute this file and start the server:-stop parameter to this command:
Running as a Service
You can manipulate the service by using standard system service commands, referencing arc as the name of the service. To start the service, submit this command:Configuring LDAP Authentication
The following steps configure to use LDAP to authenticate users if you use the embedded Jetty web server.Configure arc.properties
If it doesn’t already exist, generate the default arc.properties file with the following command:java -jar arc.jar -GenerateProperties
The following mandatory setting instructs the embedded Jetty server to use LDAP for authentication:
cdata.loginService.ldap.enabled=true
You might want to section this off inside the file in the same way as other sections:
arc.properties might look like:
Create LDAP Users in
In order for users to log into via your LDAP server, you must add each LDAP user to . This allows to cross-reference the user trying to log in with the configured LDAP server. Follow these steps to create each user (see User Management and Roles for more details on managing users):- Start and log in as a admin user.
- Create all LDAP users who need access to . Click the gear icon in the navbar and choose Users. The users must be identical to the LDAP users. For example, if your LDAP users are
user01anduser02, you must use the same usernames in .
Test the Configuration
Once you have created thearc.properties file with the necessary LDAP settings, added your LDAP users to , and confirmed that their configuration is correct based on your LDAP server’s requirements, you are ready to test the functionality.
Start using java -jar arc.jar or by starting the service. When you are presented with the login screen, try to log in using one of your LDAP users. Enter the username and password as it exists on the LDAP server (which must be identical to how you entered it in the Users section of ).
The login process checks the logged-in user against the users configured in and then against the LDAP server to ensure that the user is present and allowed to access the application. If the configuration was successful, you will be logged into the application as that user.
Troubleshooting LDAP Configurations
If you have trouble authenticating to your LDAP server, recommends that you test the LDAP connection and filter with Apache Directory Studio. You can apply the same connection settings and search filter to thearc.properties or login.config files.
Creating a Debug Log for Failed Authentication Attempts
You can enable debugging in thearc.properties file with this setting: cdata.loginService.ldap.debug.
You can also direct additional logging information to the console output and webserver logs. Create a file called arc.logging.properties in the same location as the arc.properties file and the webapps folder in your application installation directory with the following contents:
Configuration in Tomcat
Deploy the WAR File
You have two options for deploying a WAR file to Tomcat.- Copy the WAR file into the
webappsfolder. - Deploy the WAR file from within the management console in Tomcat. The Apache Tomcat documentation covers this method in more detail. See the documentation for your version of Tomcat.
web.xml file of the manager application to allow larger files. Depending on your Tomcat configuration, this file might reside in /usr/share/tomcat7-admin/manager/WEB-INF or in a similar directory. In this file, you can change the size, in bytes, of the maximum allowed file size. For example, to allow deployment of a 200MB WAR file, edit the following values to change the maximum allowed file size:
Configure the Java Authentication and Service (JAAS)
To enable to manage users dynamically within the application, you must configure the JAAS as described in the following guide. This guide usesarc.xml to control the configuration of Tomcat and define any context overrides. recommends that you use arc.xml instead of server.xml to control the Tomcat configuration. We also recommend that you relocate any application context overrides, such as APP_DIRECTORY or APP_DB, to arc.xml where the JAASRealm module is defined.
This is a required first step for any Tomcat setup with .
Create the Login Module
Create a JAAS configuration file with the namejaas.config in this folder: $CATALINA_BASE/conf/.
Include the following content in jaas.config to use standard authentication:
If you want to use LDAP, continue with the standard login module setup. Once that’s complete, follow the steps in Using LDAP to Authenticate Users.
Create (or Modify) the JAASRealm Module
-
Check to see whether you have an
arc.xmlfile in$CATALINA_BASE/conf/Catalina/localhost/. If you do, editarc.xmland add the XML context block below. Ifarc.xmldoes not exist at that path, you need to create it, then add the XML context block below. This should be the only content inarc.xml.Depending on how your Tomcat instance is configured, this path might be slightly different. In this example,Catalinarefers to the engine name, andlocalhostis the host name defined inserver.xml. -
Update the
<Host/>element in yourserver.xmlconfiguration file for the Tomcat server by setting thecopyXMLattribute to true, as shown below:If an application-specific context is present inserver.xml, it takes precedence overarc.xml. recommends usingarc.xmloverserver.xmlfor any context overrides. For example:
Make the Login Module Visible
The Java virtual machine (JVM) must be directed to the login module (jaas.config) for the configuration to be visible. Set the java.security.auth.login.config system property on the JVM to the path of the jaas.config file by appending the following line to the $CATALINA_BASE/conf/catalina.properties file:
Use LDAP to Authenticate Users
Before you can configure to use LDAP with Tomcat, follow the Configure the Java Authentication and Service (JAAS) instructions so that you can create your admin user, which is required before you can add LDAP users to . Once you have configured the login module and can successfully log into as the admin user, follow these steps to configure LDAP support.-
Log in to as the admin user. To create all LDAP users who need access to , click the Settings gear icon on the navbar and choose Users. The users must be identical to the LDAP users. For example, if your LDAP users are
user01anduser02, you must use the same usernames in . -
Modify the
$CATALINA_BASE/conf/jaas.configfile that you created in Create the Login Module to work with your LDAP server. You must add some configuration options tojaas.config. a. Ensure that the LDAP login module is required by addingcom.sun.security.auth.module.LdapLoginModule REQUIRED. You also need to make the login module you created previously optional. To do this, setarc.LoginModule optional;. b. Add the required LDAP module configuration options. At a minimum, the following options are needed:userProvider,authIdentity,userFilteranduseSSL. The values that you provide for these options are specific to your LDAP server and requirements: consult your server admin and/or your LDAP documentation to determine the values. Here is an example of what you can expect it to look like — notice thatarc.loginModuleis set tooptionalandcom.sun.security.auth.module.LdapLoginModuleis set toREQUIRED:If any value contains the special token{USERNAME}, that token is replaced with the supplied username value at login.
Configure Data Directory Permissions
Give the user of the process that runs the Java servlet container Read/Write access to the data directory in the appropriate location, as follows:- Windows:
C:\ProgramData\CData\Arc\ - Linux:
~/cdata/arc
Configuration in WebSphere Liberty
To configure in WebSphere Liberty, follow these steps.Create the Application in WebSphere Liberty
This guide describes a basic installation of in Liberty. If you need more of a custom Liberty installation, consult with your internal team to understand what additional settings or options might need to be included.
- Download Liberty from Open Liberty or WebSphere Application Server Liberty 24.0.0.12. expects the Web Profile 8 package.
-
Run this command to create a server named
arc:- Windows:
.\bin\server.bat create arc - Linux:
./bin/server create arc
- Windows:
-
Copy the arc.war file to the
./usr/servers/arc/appsdirectory. -
If necessary, change the HTTP and HTTPS ports in the
httpEndpointelement in./usr/servers/arc/server.xml(a sample server.xml file is below). - Make any additional configuration application updates by editing the server.xml file.
-
Run this command to start the server:
- Windows:
.\bin\server.bat start arc - Linux:
./bin/server start arc
- Windows:
Sample server.xml File
The following is a sample server.xml file that contains settings that needs to run in Liberty. It also contains the settings required for JAAS configuration. The following sections provide more detail on portions of this file.Configure the Java Authentication and Service (JAAS)
The following settings in server.xml configure the JAAS and enable to manage users dynamically in the Liberty application server. If you copied the server.xml sample file above, these elements are already present. Otherwise, follow these steps:-
Configure the login module for JAAS authentication by adding the following elements to server.xml:
-
Configure user groups and role mappings in the
webApplicationelement of server.xml.Theapplication-bndsection maps ‘s security roles to user groups, controlling what permissions different users have in the application. Eachsecurity-roleelement defines one of ‘s permission levels and associates it with a corresponding user group. Make sure you have asecurity-roleelement for cdata_admin, cdata_standard, cdata_support, and cdata_user. -
Enable query parameters without equal signs (=) by adding the
AllowQueryParamWithNoEqualproperty to thewebContainerelement. This setting allows to properly handle certain URL query parameters that don’t include an equal sign. - Restart Liberty.
Use LDAP to Authenticate Users
Before you can configure to use LDAP with Liberty, follow the Configure the Java Authentication and Service (JAAS) instructions to create your local admin user. That user is required before you can add LDAP users to . Once you have configured the login module and can successfully log into as the admin user, follow these steps to configure LDAP support.-
Edit server.xml to add the LDAP repository to Liberty.
-
In the
featureManagerelement, add a new feature:ldapRegistry-3.0. -
Add the details for your LDAP registry after the
webContainerelement. -
Change the
arc.LoginModulecontrol flag toOPTIONAL.
-
In the
-
Log in to as the local admin user. To create your LDAP users in , click the Settings gear icon in the navbar and choose Users. The users must be identical to the users in your LDAP server. For example, if your LDAP users are
user01anduser02, you must use the same usernames in . - Save your changes and restart Liberty to complete the process. Once successfully configured, users signing into are authenticated via LDAP.
Debug Settings
The sample server.xml file includes a comprehensive logging configuration that captures detailed trace information for security, authentication, web container operations, and -specific components. This can be useful if you are having configuration issues with LDAP or other settings.traceSpecification attribute is set to all for several key component groups including security bindings, authorization, JAAS authentication, web container operations, and all and RSSBus modules. This configuration provides thorough diagnostic information useful for troubleshooting authentication issues, authorization problems, and application-specific errors. The logs are written to the ${server.config.dir}/logs directory with separate files for messages (messages.log) and trace data (trace.log).
For production environments, you might want to reduce the logging verbosity to improve performance and minimize log file growth. To do this, change specific trace specifications from all to info or remove components you do not need to monitor. For example, if you are not troubleshooting security issues, you could simplify the configuration to traceSpecification="arc.*=all:rssbus.*=all" to focus only on -specific logging. Conversely, if you need even more detailed diagnostics during troubleshooting, you can temporarily set traceSpecification="*=all" to enable comprehensive logging across all Liberty components. Be aware this generates large log files quickly and should only be used for short-term debugging.
Configure Data Directory Permissions
Give the user of the process that runs the Java servlet container read and write access to the data directory:- Windows:
C:\ProgramData\CData\Arc\ - Linux:
~/cdata/arc
Configuration in Jetty
Although comes with an embedded Jetty web server, you can also use the application with an external Jetty setup.Deploy the WAR File and arc.xml
Copy arc.war into thewebapps folder of ${JETTY_BASE}. Also place the arc.xml file in the same ${JETTY_BASE} folder. If you do not have arc.xml you need to create it. At a minimum, for a standard configuration of Jetty your arc.xml file needs to contain the following content:
Configure the Java Authentication and Service (JAAS)
To configure the JAAS and to enable to manage application users, you must perform the steps described in the following sections.Add the JAAS Module
Submit the following command to install the JAAS module:Create the Login Module
Create a login configuration file called login.config and place it at this path:{JETTY_BASE}/etc/login.conf. Place the following content in the login.config file:
Update the Security Handler
The Security Handler configuration is in the arc.xml configuration file. If you created the arc.xml file using the content in Deploy the WAR File and arc.xml, you can skip this step because this change is already present in that content. Otherwise, modify thesecurityHandler block as follows:
LDAP in Jetty
In order to configure LDAP when running in Jetty, you need to configure to run in Jetty using the standard login module. Once is up and running in Jetty using the login module, follow these steps to configure Jetty to use LDAP for user authentication.-
Add LDAP Users to .
- Login as your Admin user to add LDAP users to . To create your LDAP users in , click the settings gear icon in the navbar and choose Users. The users must be identical to the users in your LDAP server. For example, if your LDAP users are
user01anduser02, you must use the same usernames in . - When you have finished, stop .
- Login as your Admin user to add LDAP users to . To create your LDAP users in , click the settings gear icon in the navbar and choose Users. The users must be identical to the users in your LDAP server. For example, if your LDAP users are
-
Create the JAAS configuration for the Jetty LDAP login module in login.conf.
-
Open the login.conf file located at
${JETTY_BASE}/etc/login.confand add a JAAS configuration for the Jetty LDAP module. A number of configuration settings are available, but the configuration of your JAAS depends on your specific requirements and your LDAP server configuration. Find the list of available JAAS configuration settings in the Jetty documentation, as well as below: -
Here is an example of a login.conf file that is configured with an LDAP server. Remember, the required settings and values are dependent on your specific requirements and your LDAP server configuration. To determine the settings and values required for your setup, consult with your LDAP administrator or the documentation for your LDAP server.
Notice that the
arc.LoginModuleand theorg.eclipse.jetty.jaas.spi.LdapLoginModuleare both set to optional. This allows both login modules to be used when trying to authenticate a user. If one login module fails to authenticate a user, the login falls back to the second module. If both login modules fail to authenticate a user, the login fails altogether. - Once login.conf has been updated with the necessary LDAP configuration, restart . If it is configured correctly, your LDAP users can now log into .
-
Open the login.conf file located at
Configure Data Directory Permissions
Give the user of the process that runs the Java servlet container Read/Write access to the data directory:- Windows:
C:\ProgramData\CData\Arc\ - Linux:
~/cdata/arc
User Management
Upon initial startup, prompts you for the creation of a user with username and password credentials. After the first user is created, you can add, delete, and manage users on the Users tab of the Settings page in the application. When you deploy to an external Java servlet (that is, when you are not using the embedded server that is included with the application), JAAS configuration is required in order to allow to manage users. The previous sections detail the process of JAAS configuration for each specific external servlet.Find and Configure the Application Directory
TheApplicationDirectory folder contains all the data that is used by the application: configuration data, application data, logging data, certificates, and so on. The default location of ApplicationDirectory depends on whether is hosted via the embedded web server or via an external Java servlet container.
For the embedded web server, ApplicationDirectory is the same as InstallationDirectory. By default, that location is the following:
ApplicationDirectory is relative to the home directory of the user who is running the server:
~/arc
In this path, ’~’ resolves to the home directory of the user who is running the server that hosts the application.
You can configure the ApplicationDirectory folder, which is useful in a variety of scenarios:
- clustering multiple instances of
- using a shared network drive for application data
- embedding within other systems that access the same folders
ApplicationDirectory moves the application’s data files. However, it does not move other application resources like EXE files, JAR files, and so on. These resources are held in the InstallationDirectory folder, which might be the same as ApplicationDirectory, but the location of those resources does not change if ApplicationDirectory is changed.
Embedded Java Server
When you use the Cross-Platform Edition with the embedded Jetty server, by default theApplicationDirectory is the InstallationDirectory. To modify this, generate the arc.properties file. Open the file in a text editor, then set the cdata.app.directory setting to the path of the desired directory. The following example demonstrates what this might look like when you set the data directory to a shared folder on a mounted drive:
cdata.app.directory path and it has the appropriate permissions to read and write at that path, it creates the data folder in the specified directory.
External Java Server
When you use the Cross-Platform Edition with an external Java servlet (any server other than the Jetty server that is included with the application), the details of configuring the application data directory depend upon the specific servlet that is used. Using the syntax that is appropriate for the specific servlet, theAppDirectory environment variable must be set to the path of the directory that you want.
If can locate the AppDirectory path and it has the appropriate permissions to read and write at that path, it creates the data folder in the specified directory.
Configure the Application Database
The application database stores several tables of application data, including the following:- Transaction Log: metadata for each transaction that is processed by the application
- Application Log: application-level errors and events
- Access Log: requests to the application’s web endpoint
- Audit Log: user-made changes to the configuration
ApplicationDirectory as the application database. This database is recommended for up to 100,000 transactions. Once you hit that number, recommends moving to an external database. You can configure the application to use an enterprise database like SQL Server, PostgreSQL, or MySQL.
For security reasons, if you ever switch to a different application database, you must run the integrityResetTampering operation to reset the hash chain.
Embedded Java Server
When you use the Cross-Platform Edition with the embedded Jetty server, the default application database is an H2 database in theApplicationDirectory. To modify this, generate the arc.properties file. Open the file in a text editor, then set the cdata.app.db setting to a Java Database Connectivity (JDBC) connection string that contains the appropriate connection parameters for the database that you want. The following examples illustrate this setting for MySQL, PostgreSQL, and SQL Server:
MySQL
PostgreSQL
SQL Server
cdata.app.db connection string, it uses that database as the application database.
To reduce the possibility of deadlocks when using SQL Server as your application database, recommends that you ensure that READ_COMMITTED_SNAPSHOT is enabled.
Generating an Encrypted Database Connection String
provides the ability to generate an encrypted connection string for your application database connection. You can use this encrypted connection string to specify the application database without storing your login credentials in plain text in the configuration files. To generate an encrypted connection string, issue the following command in the installation directory where arc.jar is located, substituting your connection information for the example string in quotation marks:cdata.app.db as shown above.
External Java Server
When you use the Cross-Platform Edition with an external Java servlet (any server other than the Jetty server that is included with the application), the details for configuring the application database depend upon the specific servlet that is used. Using the syntax that is appropriate for the specific servlet, choose one of the following approaches when you configure the server:- Define a JNDI data source to include the connection properties for the target database.
- Set the
APP_DBenvironment variable to a JDBC connection string.
APP_DB connection string to connect to a database, it uses that database as the application database.
Specifying the Default Character Set (MySQL only)
For MySQL versions such as MySQL 8.0 and later, the default character set (charset) for the database and its tables is UTF8 (specificallyutf8mb4). However, in versions of MySQL prior to 8.0, the default charset is typically Latin1, which can cause issues with data that includes characters outside the basic Latin alphabet.
If you use an older version of MySQL you can avoid these problems by configuring the database to use utf8mb4 instead. You have two ways to make this change: update the existing database directly, or use MySQL’s export and import tools to migrate the data to a new UTF8-encoded database.
Update the Database Directly
-
Backup the database:
mysqldump -u root -p --default-character-set=latin1 --databases [database name] > backup.sql -
Change the default charset to UTF8:
ALTER DATABASE [database name] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -
Generate SQL statements to change the default charset to UTF8 for all database tables:
- Execute the SQL statements generated in the previous step.
-
Export the Data Definition Language (DDL) and data:
-
Change the default charset in schemas.sql from
CHARSET=latin1toCHARSET=utf8mb4. -
Create a new database with UTF8 as the default charset:
CREATE DATABASE [new database name] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -
Import to the new database:
Login Lockouts
automatically locks out users who enter incorrect passwords too many times in order to prevent brute-force attacks. By default, a user who enters six incorrect passwords within five minutes is locked out for thirty minutes. You can modify the lockout settings by editing the XML configuration file that governs the web-server behavior. These three settings are relevant to lockouts:- LockoutFailedAttempts: the number of incorrect passwords that trigger a lockout. Set LockoutFailedAttempts to 0 to disable lockouts.
- LockoutMinutes: the duration of the lockout. The default duration is thirty minutes.
- LockoutTimeCheckPeriod: the period after which the number of failed attempts is reset to 0. The default period is five minutes.
Embedded Jetty Server
You can modify lockout settings by generating the arc.properties file and adding a comma-separated list of name:value pairs toinitParameters, as shown below:
Tomcat
The syntax for editing the lockout settings in the Tomcat arc.xml file is the following:Common Issues and Solutions
This section lists common issues that you can encounter when you deploy in a Java environment. The recommended solution for each issue is included. For additional help, contact Technical Support at arcsupport@cdata.com.Issue
Fails to Start, or It Starts Using an AppDirectory Other Than Expected
This error might indicate that does not have the permissions that are required to accessApplicationDirectory. (ApplicationDirectory is a folder that stores critical information regarding the configuration of jobs, connections, transformations, and so on.) One possible cause for this error is running as a local user before you set it up as a service. In this case, it is possible that certain resources created by the application were created under the local user. As a result, those resources are not available when you run as a service.
Recommended Solution
In a Linux operating environment, the easiest way to ensure that the service account (or any other account that you want to use to run ) can accessApplicationDirectory is to use the chown command. For example, if ApplicationDirectory is in the default Linux location and should run under the service account, the following command should resolve the error: