Java 版


Java 版


Java 版には組み込みJetty Web サーバーが含まれ、外部サーバー構成なしでSync を実行できます。In addition, the installation includes a .WAR file that can be deployed to any Java servlet container like Tomcat, Jetty, JBoss, WebLogic, or WebSphere.

The embedded Jetty server requires that JDK 1.8 or later is installed on the machine.Deploying to an external Java servlet requires Servlet 3.0 (Jetty 8+, Tomcat 7+, JBoss EAP 6/7, Glassfish 3, WebLogic 12+, WebSphere 8+, etc).

組み込みJetty サーバーの使用

組み込みJetty サーバを起動するには、Sync インストールディレクトリにあるsync.jar を実行するだけです。このディレクトリには、Unix システム上でsystemd またはinit.d サービスを設定するために使用できるservice スクリプトも含まれています。

デフォルトでは、組み込みサーバーはポート8181でSync をホストし、プレーンテキスト接続のみを許容します(HTTPS ではなくHTTP)。

サーバーを起動したら、ブラウザをhttp://localhost:8181 に誘導してWeb UI にアクセスします。The application will prompt for creating the username/password credentials for the first user of the application (which will have the role of ‘admin’).

ポートの変更

組み込みサーバーがリッスンするポートを設定するには、インストールディレクトリにあるsync.xml ファイルを見つけ、テキストエディタで開きます。このXML で示されているHTTP コネクタの定義を見つけます:

<New id="httpConnector" class="org.eclipse.jetty.server.ServerConnector">

この定義内で、以下の行を変更して設定済みのポートを変更します。

<Set name="port">8181</Set>

SSL/TLS の有効化

SSL/TLS 接続(HTTPS)を有効にするには、インストールディレクトリのsync.xml ファイルを変更する必要もあります。HTTP コネクタの定義を見つけます:

<New id="httpConnector" class="org.eclipse.jetty.server.ServerConnector">

この定義内で(上記のNew エレメントの直接の子として)、次のXML ブロックを追加してsslContextFactory 引数を指定します:

<Arg name="sslContextFactory">
  <New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
    <Set name="KeyStorePath"><SystemProperty name="sync.home" default"." />/keystore</Set>
    <Set name="KeyStorePassword">mypassword</Set>
  </New>
</Arg>

Note: The Arg element shown above must be adjacent to other Arg elements at the beginning of the connector definition.This block must not be placed after the Set element that defines the server port, for example.

KeyStorePath 要素は、SSL/TLS サーバーをホストするときに使用されるSSL/TLS 証明書の場所を定義します。上記の例では、Sync インストールディレクトリに’keystore’ フォルダが作成され、このフォルダに’mycert’ というPFX 証明書が含まれていることを前提としています。KeyStorePassword 要素は、構成された証明書に対応するパスワードに設定する必要があります。

サーバーの起動と停止

If the service script has been used to set up a CData Sync service, please reference the Running as a Service section below.Otherwise, the Running In-Process section is applicable.

インプロセスで実行

The embedded Jetty server is started by executing the sync.jar file extracted from the application download during setup.Standard Java syntax can be used to execute this file and start the server:

java -jar sync.jar

To stop the server, simply pass an additional parameter to this command:

java -jar sync.jar -stop

サービスとして実行

The Sync service can be manipulated using standard system service commands, referencing ‘sync’ as the name of the service.

To start the service:

systemctl start sync

To stop the service:

systemctl stop sync

To restart the service:

systemctl restart sync

Tomcat での設定

WAR ファイルの配布

Tomcat にWAR ファイルを配布するにはいくつかのオプションがあります。

  • Webapps フォルダにWAR ファイルをコピーする。
  • Tomcat の管理コンソールの中でWAR ファイルの配布を行う。Tomcat のドキュメントには、この方法のさらに詳しい説明があります。

WAR ファイルがTomcat のファイルアップロードに許可されているデフォルトの最大サイズを超えている可能性があります。デプロイメント中のエラーを解決するために、Manager アプリケーションのWEB.XML ファイルを変更して、より大きなファイルを許可することができます。Tomcat の設定に応じて、このファイルは’/usr/share/tomcat7-admin/manager/WEB-INF’、または別の類似ディレクトリにあります。このファイルでは、許容される最大ファイルサイズをビット単位で変更できます。例えば、200MB のWAR ファイルのデプロイメントを許容するには、次の値を変更して許容される最大ファイルサイズを変更します。

<multipart-config>
	<!-- 200MB max -->
	<max-file-size>209715200</max-file-size>
	<max-request-size>209715200</max-request-size>
	<file-size-threshold>0</file-size-threshold>
</multipart-config>

JAAS Configuration

In order for Sync to dynamically manage users within the application, JAAS must be configured as described in the following subsections.

Login Module

Create a JAAS configuration file with the name jaas.config located here: $CATALINA_BASE/conf/jaas.config

The content for this file should be as follows:

Sync {
    sync.LoginModule required debug=true;
};

JAASRealm Module

Create the context for sync by adding the sync.xml file located here: $CATALINA_BASE/conf/Catalina/localhost/sync.xml

Within the Context block, add a Realm element as follows:

<Context>
	<Realm className="org.apache.catalina.realm.JAASRealm" appName="Sync"
    userClassNames="sync.SimplePrincipal"
    roleClassNames="sync.GroupPrincipal" />
</Context>

Update the Host element in server.xml by setting the copyXML attribute to true. For example:

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true" copyXML="true">

Make the Login Module Visible

The JVM must be pointed towards the Login Module (jaas.config) in order for the configuration to be visible. Set an environmental variable within $CATALINA_BASE/bin/catalina.bat as follows:

set "JAVA_OPTS=%JAVA_OPTS% -Djava.security.auth.login.config=%CATALINA_BASE%\\conf\\jaas.config"

データディレクトリ権限の設定

Java Servlet コンテナを実行するプロセスのユーザーに、データディレクトリへの読み/書きのアクセス権限を許可:

  • Windows: C:\\ProgramData\\CData\\sync\\
  • Unix or Mac OS X: ~/cdata/sync/

Tomcat サーバーを再起動して、変更を反映します。これでアプリケーションにログインすることができます。

JBoss での設定

Note that JBoss AS is not supported.

WAR ファイルの配布

WAR ファイルをJBoss に配布するにはいくつか方法があります。

  • JBOSS_HOME/standalone/deployments サブフォルダにWAR ファイルをコピーすることができます。
  • JBoss の管理コンソールを使ってWAR ファイルをインストールすることもできます。

JAAS Configuration

In order for Sync to dynamically manage users within the application, JAAS must be configured as described in the following subsections.

Login Module

Edit the standalone.xml configuration file (located here: standalone/configuration/standalone.xml) with a login module as follows:

<subsystem xmlns="urn:jboss:domain:security:2.0">
  <security-domain name="SyncRealm" cache-type="default">
      <authentication>
          <login-module code="sync.LoginModule" flag="required">
              <module-option name="isJBoss" value="true"/>
          </login-module>
      </authentication>
  </security-domain>
</subsystem>

JBoss Web File

Create a jboss-web.xml file in the WEB-INF folder of the deployment. Set the contents of the file to the following:

<jboss-web>
    <security-domain>java:/jaas/SyncRealm</security-domain>
</jboss-web>

データディレクトリ権限の設定

Java Servlet コンテナを実行するプロセスのユーザーに、データディレクトリへの読み/書きのアクセス権限を許可:

  • Windows: C:\\ProgramData\\CData\\sync\\
  • Unix or Mac OS X: ~/cdata/sync/

サーバーを再起動して、アプリケーションにログインします。

WebSphere での設定

データディレクトリ権限の設定

Java Servlet コンテナを実行するプロセスのユーザーに、データディレクトリへの読み/書きのアクセス権限を許可:

  • Windows: C:\\ProgramData\\CData\\sync\\
  • Unix or Mac OS X: ~/cdata/sync/

サーバーを再起動して、アプリケーションにログインします。

Configure the WebSphere Class Loader

In order for WebSphere to load the application resources correctly, the following steps are required:

  1. Within WebSphere, navigate to: Application -> Application Types -> WebSphere enterprise applications
  2. Select Sync
  3. Select ‘Class loading and update detection’
  4. Choose ‘Classes loaded with local class loader first (parent last)’
  5. Choose ‘Single class loader for application’
  6. Select OK -> Save

JAAS Configuration

The following process is required to allow Sync to dynamically manage users in WebSphere Application Server:

  • Deploy CData Sync
  • Enable application security
    • Security → Global security → Enable application security
  • Add custom login module to System Login
    • Security → Global security → Java Authentication and Authorization Service → System logins → WEB_INBOUND → New → sync.LoginModule
    • Check the “Use login module proxy”
    • Select OPTIONAL under Authentication strategy
    • Add isWebSphere under Custom properties, set it to true
    • The sync.LoginModule must be prior to the com.ibm.ws.security.server.lm.ltpaLoginModule.
  • Create groups
    • Users and Groups → Manage Groups → Create
    • Create sync_admin_, sync_standard, sync_operator groups
  • Map groups to roles
    • Applications → Application Types → WebSphere enterprise applications → <sync_war\> Security role to user/group mapping
    • Map sync_admin group to sync_admin role
    • Map sync_standard group to sync_standard role
    • Map sync_support group to sync_operator role
    • Map “All Authenticated in Application’s Realm” to sync_user_ role
  • Restart WebSphere

WebLogic での設定

WAR ファイルの配布

WebLogic の配布ウィザードを使ってWAR ファイルを配布するには:

  1. [デプロイメント]をクリックします。
  2. [デプロイメント]テーブルで、[インストール]をクリックします。
  3. WAR ファイルのパスを入力し、リストからWAR ファイルを選択します。
  4. [デプロイメントをアプリケーションとしてインストールする]を選択します。
  5. [カスタムロール]を選択:管理コンソールで定義されたロールを使います。デプロイメントディスクリプターで定義されたポリシーを使います。このオプションを選択することで、WebLogic の管理コンソールでロールとユーザーの管理ができるようになります。一方、WebLogic は、アプリケーションで定義されたロールとポリシーをロードします。

データディレクトリ権限の設定

Java Servlet コンテナを実行するプロセスのユーザーに、データディレクトリへの読み/書きのアクセス権限を許可:

  • Windows: C:\\ProgramData\\CData\\sync\\
  • Unix or Mac OS X: ~/cdata/sync/

サーバーを再起動して、アプリケーションにログインします。

Jetty での設定

CData Sync にはJetty Web サーバーが組み込まれていますが、アプリケーションを外部のJetty 設定で使用することもできます。

WAR ファイルの配布

WAR ファイルをJetty のwebapps フォルダにコピーします。

Java レルムのログインサービスの設定

また、アプリケーションへのログインサービスの設定をCDataSyncRealm という名前で行わなれければなりません。以下は、HashLoginService の例です:

<Call name="addBean">
  <Arg>
    <New class="org.eclipse.jetty.security.HashLoginService">
      <Set name="name">CDataSyncRealm</Set>
      <Set name="config"><Property name="jetty.home" default="."/>/etc/realm.properties</Set>
    </New>
  </Arg>
</Call>

Configure JAAS

The following steps are required to configure JAAS and allow Sync to manage application users.

Add JAAS Module

Run the following command to install the JAAS module:

java -jar {JETTY_HOME}/start.jar --add-to-start=jaas

Create Login Module

Create a login configuration file with the name login.config located here: etc/login.conf

The content for this file should be as follows:

Sync {
    sync.LoginModule required debug=true;
};

Update the Security Handler

The Security Handler configuration can be found in the sync.xml configuration file. Modify the securityHandler block as follows:

<Set name="securityHandler">
  <New class="org.eclipse.jetty.security.ConstraintSecurityHandler">
   <Set name="loginService">
     <New class="org.eclipse.jetty.jaas.JAASLoginService">
       <!-- This name is the same as **login-config -> realm-name** in web.xml  -->
       <Set name="name">SyncRealm</Set>
       <!-- The LoginModuleName must match the name of your LoginModule as declared in your login module configuration file -->
       <Set name="loginModuleName">Sync</Set>
       <!-- Set custom role principal class name -->
       <Set name="roleClassNames">
           <Array type="java.lang.String">
             <Item>sync.GroupPrincipal</Item>
           </Array>
         </Set>
     </New>
   </Set>
  </New>
</Set>

データディレクトリ権限の設定

Java Servlet コンテナを実行するプロセスのユーザーに、データディレクトリへの読み/書きのアクセス権限を許可:

  • Windows: C:\\ProgramData\\CData\\sync\\
  • Unix or Mac OS X: ~/cdata/sync/

サーバーを再起動して、アプリケーションにログインします。

ユーザー管理

Upon first starting, Sync will prompt for the creation of a user with username/password credentials.After this first user is created, users can be added, deleted, and managed via the Settings page of the application, under the Users tab.

When deploying Sync to an external Java servlet (i.e. when not using the embedded server included with the application), JAAS configuration is required to allow Sync to manage users. The sections above detail the process of JAAS configuration for each specific external servlet.

Find and Configure the Application Directory

Sync’s Application Directory holds all of the data used by the application: configuration data, application data, logging data, certificates, etc.The default location of the Application Directory depends on whether Sync is hosted via the embedded web server or an external Java servlet container.

For the embedded web server, the Application Directory is the same as the installation directory, which by default is the following:

/opt/cdata/sync

When hosting Sync in an external Java servlet container, the Application Directory is relative to the home directory of the user running the server:

~/cdata/sync (where ‘~’ resolves to the home directory of the user running the server hosting the application)

The Application Directory can be configured to be a different folder.Changing the Application Directory will move the application’s data files but will not move other application resources like .exe’s, .jar’s, etc.These resources are held in the Installation Directory, which may be the same as the Application Directory but will not change if the Application Directory is changed.

組み込みJava サーバー

When using the Java edition with the embedded Jetty server, the application database is configured in the sync.xml file found in the Installation Directory.Within this server configuration file, the AppDirectory environment variable must be set to the path to the desired directory.The following example demonstrates what this might look like when setting the data directory to a shared folder on a mounted drive:

<Call name="setInitParameter">
  <Arg>AppDirectory</Arg>
  <Arg>/mnt/shared/sync</Arg>
</Call>

If Sync can find the path, and has the appropriate permissions to read and write at the given path, it will create the data folder within the specified directory.

External Java Server

When using the Java 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 used.Using the syntax appropriate for the specific servlet, the AppDirectory environment variable must be set to the path to the desired directory.

If Sync can find the AppDirectory path, and has the appropriate permissions to read and write at the given path, it will create the data folder within the specified directory.

Configure the Application Database

Sync’s Application Database stores several tables of application data, including:

  • Jobs
  • Tasks
  • Connections
  • History (both Jobs and Tasks)
  • Application Settings
  • Application Log (application-level errors and events)
  • Audit Log (user-made changes to Sync’s configuration)

By default, Sync uses a Derby database located in the Application Directory as the Application Database, but this can be configured to use an enterprise database like SQL Server, PostgreSQL, or MySQL.

組み込みJava サーバー

When using the Java edition with the embedded Jetty server, the application database is configured in the sync.xml file found in the installation directory.Within this server configuration file, the APP_DB environment variable must be set to a JDBC connection string containing the appropriate connection parameters for the desired database.次に例を示します:

<Call name="setInitParameter">
  <Arg>APP_DB</Arg>
  <Arg>jdbc:mysql:Server=MySQLServer;Port=3306;Database=mysql;User=user;Password=password</Arg>
</Call>

If Sync can successfully establish a connection with the APP_DB connection string, it will use that database as the application database.

外部Java サーバー

When using the Java 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 database depend upon the specific servlet used.Using the syntax appropriate for the specific servlet, one of the following approaches should be used when configuring the server:

  • Define a JNDI datasource to include the connection properties for the target database.
  • Set the APP_DB environment variable to a JDBC connection string.

If Sync can use the JDNI datasource or APP_DB connection string to connect to a database, it will use that database as the application database.

Login Lockouts

Sync will automatically lock out users who enter incorrect passwords too many times in order to prevent brute force attacks.By default, a user who enters 6 incorrect passwords within 5 minutes will be locked out for 30 minutes.

These settings can be modified by editing the XML configuration file that governs the web server behavior.There are 3 settings relevant to lockouts:

  • LockoutFailedAttempts - the number of incorrect passwords that will trigger a lockout (set this to 0 to disable lockouts)
  • LockoutMinutes - the duration of the lockout (default 30 minutes)
  • LockoutTimeCheckPeriod - the period after which the number of failed attempts is reset to 0 (default 5 minutes)

Embedded Jetty Server

The syntax for editing these settings within the sync.xml file for the embedded web server is the following:

<Call name="setInitParameter">
  <Arg>LockoutFailedAttempts</Arg>
  <Arg>0</Arg>
 </Call>

Tomcat

The syntax for editing these settings within Tomcat’s server.xml is the following:

<Context>
   <Parameter name="LockoutFailedAttempts" value="0" />
</Context>