Successfully!

Error!

Remote Design

  • Last update:  2024-02-20
  • Overview

    Version

    Report Server Version
    Functional Change

    11.0.9

    Added the configuration of the IP address access limitation. For details, see section "IP Address Access Limitation."

    11.0.24

    Supported the HTTPS certificate hot loading. If the configured HTTPS does not need to be imported into JRE, you do not need to restart the designer.

    Application Scenario

    FineReport reports are usually deployed on remote servers. When you need to modify templates in the project, you can directly connect the local designer to the working directory of the remote server for template designs.

    Function Description

    On the designer menu bar, you can choose File > Switch Working Directory to switch to a remote server. To connect the local designer to the remote server, you can enter the server information, the username, and the password in the report project.

    The super admin of the report project can connect the local designer to the remote server by default. Non-super admin users cannot perform this operation by default unless they are assigned permissions by the super admin.

    Remote Design Prerequisites

    Remote Design Function Point

    You have confirmed that the remote design function point is supported in the remote project before connecting the local designer to the remote server.

    Log in to the decision-making platform and access http://IP address:Port number/webroot/decision/remote/design/vt through a browser to obtain the return value. If {"data":"success"} is returned, this function point is supported. If not, you need to contact our salesmen to purchase the remote design function point.

    Remote Design Permission

    You have assigned the remote design permissions to non-super admin users (without the permissions by default) who need to perform remote designs. If not, the remote design connection will fail.

    Log in to the decision-making platform as the super admin and assign relevant permissions of the remote design to relevant users. For details, see section "Remote Design Permission Assignment."

    JAR Package Version

    The versions of the JAR package between the local designer and the remote server project should be consistent during the remote connection. If not, a prompt (indicating an inconsistent version) will occur and some functions will be affected during remote design.

    Update the JAR packages timely.

    Plugin Version

    The plugin versions between the local designer and the remote server project should be consistent during the remote connection. If not, many problems will occur.

    Ensure that plugins with consistent versions are installed both in the local designer and on the remote server.

    iconNote:
    If the remotely connected project integrates FineBI, you need first to determine whether plugins in the project are exclusive to FineBI. Do not install plugins (that are only for FineBI) in the local designer, otherwise, the remote design function may be abnormal.

    Remote Server Configuration

    Open the local designer and choose File > Switch Working Directory > Others to create a remote server directory, as shown in the following figure.

     1.png

    Remote Server

     2.png

    Host Location, which is the combination of Host Name/IP, Port, Web App, and Servlet, specifies the URL (such as http://IP address:Port number/webroot/decision) of the decision-making system corresponding to the report server.

    1. You can enter the hostname, port number, Web app, and Servlet to automatically generate a host location. Alternatively, you can enter a host location to automatically generate the above four items.

    2. If the report project is configured with an external network mapping or a short domain name access (such as http://IP address or http://Domain name/decision), you need to check whether Servlet is automatically entered after entering Host Location. If not, you need to enter Servlet manually.

    Log in to the decision-making platform as the admin and choose System Management > System Setting > General to check the Servlet path name (which is decision usually) of this project, as shown in the following figure.

     3.png

    HTTPS Enabling

     4.png

    If the remote report server uses the HTTPS authentication, you need first to tick Enable HTTPS when logging in to the remote server and then enter the detailed information.

    • If the server's certificate is formally issued by a certificate authority, you do not need to enter the certificate path and the HTTPS key during the remote design.

    • If the server's certificate is a self-signed one, you need to enter the certificate path and the HTTPS key.

    iconNote:

    1. If you have ticked Enable HTTPS or modified HTTPS configurations (Certificate Path and HTTPS Key), you can determine whether the designer needs to be restarted. If the certificate and the key do not need to be imported into JRE, you do not need to restart the designer. If the certificate and the key need to be imported into JRE, you must restart the designer for modifications to take effect.

    2. For details about how to generate a certificate path and an HTTPS key, see HTTPS Access by Configuring the SSL Certificate in Tomcat.

    Certificate Path

    Click the  icon on the right to select a certificate (in formats such as .keysotre and .jks) from the local computer.

    The JKS certificate can be copied and pasted to the local computer. The certificate path corresponding to the JKS certificate can be a local one. The key is the same as the one used when the JKS certificate is generated.

    You can search for the certificate and the key from the SSLHostConfig tag of the Tomcat root directory /conf/server.xml. certificateKeystoreFile is the path for the JKS certificate storage. certificateKeystorePassword is the JKS certificate key.

    HTTPS Key

    Enter the keystore password set in the SSL authentication.

    Decision-making Platform Account

     5.png

    You need to enter the username and password of the decision-making platform when connecting to a remote server. If the verification is successful, you can switch to the corresponding remote server.

    Login priority: Users who log in for remote designs inherit permissions of the browser platform login account. For example, if user A logs in to the Web and user B performs remote designs, content in the preview mode will be displayed based on the permissions of user A.

    1. Login Verification

    If the username and password are incorrect or disabled, a prompt displaying "Connection Failed. The password corresponding to the username for remote design is incorrect. Error Code: 11300105" will occur when you click Test Connection, as shown in the following figure.

     6.png

    2. Password Policy

    In addition to verifying the username and password, you can also set password security policies such as login lock, weak password validation, regular password update, and forced initial password change during remote design switchover.

    Enabled Function
    Effect

    Login Lock

    If the password is incorrect when you perform connection tests or directory switchover in remote designs, the number of incorrect password attempts will be limited.

    If the number of incorrect password attempts reaches the locking number set in the system, a popup window will occur, displaying "The times you consecutively enter incorrect passwords has reached the upper limit. The account has been locked for {} minute(s). Contact the administrator or access the platform to change the password."

    The number of incorrect password attempts and the locking time can be set on the decision-making platform. What's more, the number of incorrect password attempts in the remote design and on the platform is counted accumulatively. That is, if you enter incorrect passwords i times on the platform and j times in the remote design, the total number of incorrect password attempts is i+j times.

    You can click the hyperlink "change the password" to jump to the platform login page and change your password.

    Password Strength Limit

     

    If you have enabled Password Strength Limit on the decision-making platform, a popup window displaying "The current password does not meet the password strength requirement. Contact the administrator or access the platform to change the password." will occur when you enter the correct username and password (but not meet the password strength limit) during the remote connection.

    You can click the hyperlink "change the password" to jump to the platform login page and change your password.

    Regular Password Update

    If you have enabled Regular Password Update on the decision-making platform, a popup window displaying "The current password has expired. Contact the administrator or access the platform to change the password." will occur when you enter the username and password during the remote connection after the update period is expired.

    You can click the hyperlink "change the password" to jump to the platform login page and change your password.

    Forced Initial Password Change

    If you have enabled Forced Initial Password Change on the decision-making platform, a popup window displaying "The current password has expired. Contact the administrator or access the platform to change the password." will occur when you enter the correct username and password (initial password) during the remote connection.

    You can click the hyperlink "change the password" to jump to the platform login page and change your password.

    Remote Design Permission Assignment

    The super admin of the report project can connect the local designer to the remote server by default. Non-super admin users cannot perform this operation by default unless they are assigned permissions by the super admin.

    The following figure shows three remote design permissions.

    iconNote:
    This document only describes the permission assignment function.

    Permission Type
    DescriptionNote

    Remote Connection Permission

    Assign the remote connection permission to users so that they can remotely connect to server projects through the local designer.

    1. This permission can only be assigned by the super admin.

    2. This permission can be assigned based on users and roles, rather than departments and positions.

    3. This permission needs to be assigned in the designer.

    Remote Design Template Permission

    Assign the edit permissions of specified templates to different users, so that they can only edit templates within their permissions.

    1. This permission can only be assigned by the super admin.

    2. This permission can only be assigned to users/roles who have remote connection permissions and cannot be assigned based on departments and positions.

    3. This permission needs to be assigned in the designer.

    Data Connection Permission

    Assign the data connection permission (that can be used during report creation) to common users. Limit the range of data connections and server datasets that can be called.

    1. This permission can be assigned by admins.

    2. This permission can be assigned based on users, departments, and roles.

    3. This permission needs to be assigned on the decision-making platform.

    Remote Connection Permission

    After remotely connecting to the report server through the local designer, choose Server > Remote Design Permission Management as the super admin to assign the remote connection permission to a user/role.

    Click the + icon, select a user/role, and click OK. Then the user/role is successfully added to the user list in which the remote design is supported.

     7.jpg

    If users (who do not have remote connection permissions) remotely connect to this project, a prompt will occur, displaying "Connection Failed. No permission for remote design. Error Code: 11300112", as shown in the following figure.

     8.png

    Remote Design Template Permission

    After remotely connecting to the report server through the local designer, choose Server > Remote Design Permission Management as the super admin to assign the template edit permission to users/roles who have remote connection permissions.

    Select users/roles, tick the templates and folders that need to be assigned for users/roles to edit and manage, and click OK. Then the edit permissions of specific templates are successfully assigned to users/roles.

     9.jpg

    After the users/roles remotely connect to the project, they can only view the templates for which they have permissions.

     10.png

    Data Connection Permission

    This permission needs to be assigned on the decision-making platform. For details, see Data Connection Using Permission and Use Permission of Server Datasets.

    If the corresponding data connection/server dataset is used in the template, the corresponding use permissions of data connections and server datasets must be assigned to users, otherwise, the template cannot be saved after being edited.

    1. Data Connection Control Enabling

    Log in to the decision-making platform as the super admin, choose System Management > Permission Management > Global Setting, enable Data Connection Control, and click Save, as shown in the following figure.

     11.png

    2. Data Connection Use Permission Assignment

    Log in to the decision-making platform as the admin and choose System Management > Permission Management > Common Permission Configuration.

    Select the permission carrier department/role/user and assign the use permissions of data connections and server datasets, as shown in the following figure.

     12.png

    Switch to the remote server as a common user. If the common user is not assigned to the data connection permission by the admin, the user will not be able to view the data connection and use data in the corresponding database during report creation, as shown in the following figure.

     13.jpg

    If the template saved/previewed by the user during the remote design contains data connections/server datasets for which the user has no permission, an error message will occur, displaying "Saving failed. The current operator lacks permissions on x data connection(s)/server dataset(s): XXXX", as shown in the following figure.

     14.png

    Remote Connection Effect

    Super Admin

    After remotely connecting to the server through the designer successfully, the super admin can:

    1. Manage plugins on the decision-making platform, rather than in Plugin Management of the designer, during the remote design. For details, see Server Plugin Management.

     15.png

    2. Assign the remote design permission to common users through Server (on the menu bar) > Remote Design Permission Management during the remote design.

     16.jpg

    Non-super Admin User

    iconNote:
    If subordinate admins encounter lags or slow data loading during the remote design, the secondary database cache should be enabled. For details, see section "Modification of the Database Level-2 Cache Path" in Specifying the Ehcache Cache Path.

    1. After remotely connecting to the server through the designer successfully, the non-super admin users cannot configure relevant functions in Server during the remote design, because in this case, the Server tab does not appear on the menu bar.

     17.png

    2. During the remote design, templates for which non-super admin users have permissions are displayed in the file area.

    The  icon represents that non-super admin users have the use permissions of this folder and all templates in this folder.

    The  icon represents that non-super admin users only have the use permission of some templates in this folder.

     18.png

    Non-super admin users can only create folders in folders for which they have complete permissions. They cannot create folders in the root directory/folders for which they do not have complete permissions, otherwise, a prompt "No Permission" will occur.

    iconNote:
    For non-super admin users, both reportles and the first-level directory in reportles belong to the root directory.

    Non-super admin users can only delete folders for which they have complete permissions. Once folders are deleted, the templates in the folders will also be deleted. They cannot delete folders for which they do not have complete permissions, otherwise, a prompt "No Permission" will occur.

    Non-super admin users can only rename folders for which they have complete permissions. They cannot rename folders for which they do not have complete permissions, otherwise, a prompt "No Permission" will occur.

    Templates created by non-super admin users can only be saved in folders for which they have complete permissions. Templates cannot be saved in the root directory/folders for which non-super admin users do not have complete permissions, otherwise, a prompt "No Permission!" will occur.

    If non-super admin users want to save templates to the root directory reportlets, they need to have the use permissions of all directory folders and templates. Non-super admin users are advised to place templates (for which they have permissions) into a folder. By doing so, only the permission of one folder needs to be assigned.

     19.png

    3. Both user A and user B (both have permissions for the same folder) connect to the remote directory at the same time. If user A deletes template M and user B (not knowing the situation) wants to open template M, a prompt (indicating that the template has been deleted and cannot be opened) will occur. After refreshing the template panel, user B will view that template M no longer exists.

    4. Non-super admin users cannot use the Define Data Connection function in the designer during the remote design, no matter whether they have the use and management permissions of data connections.

     20.png

    5. During the remote design, non-super admin users can only use data connections (for which they have permissions) when they need to select data connections in some operations (for example, in Database Query and Stored Procedure during dataset adding).

     21.png

    IP Address Access Limitation

    Problem

    The channel interface deserialization vulnerability may pose threats to remote designs.

    Solution:

    You can limit the IP address access to prevent malicious input by modifying relevant fields in the FINE_CONF_ENTITY table in FineDB. For details about how to modify the table, see FINE_CONF_ENTITY Visual Configuration.

    You can refer to the following specific setting.

    1. Set the value of the field RemoteConnectionConfig.enableWhitelistVerify to true.

    2. Assign a value (an array of IP address segments) to the field RemoteConnectionConfig.ipWhiteList.

     22.png

    After completion, except for the configured IP address, you cannot access the remote design through other IP addresses. If you access the remote design through an IP address that is not on the whitelist, an error message will pop up, as shown in the following figure.

     23.png

    The stack information corresponding to the error is as follows:

    com.fr.workspace.engine.exception.RemoteDesignUnknownException: java.lang.reflect.UndeclaredThrowableException
        at com.fr.workspace.engine.convert.UnknownErrorConverter.convert(UnknownErrorConverter.java:17)
        at com.fr.workspace.engine.convert.UnknownErrorConverter.convert(UnknownErrorConverter.java:13)
        at com.fr.workspace.engine.convert.ExceptionConverter.convert(ExceptionConverter.java:34)
        at com.fr.env.handler.impl.UnexpectedHandler.handle(UnexpectedHandler.java:22)
        at com.fr.env.handler.impl.UnexpectedHandler.handle(UnexpectedHandler.java:16)
        at com.fr.env.handler.WorkspaceExceptionHandler.handle(WorkspaceExceptionHandler.java:58)
        at com.fr.env.handler.WorkspaceExceptionHandler.handleInTest(WorkspaceExceptionHandler.java:94)
        at com.fr.env.RemoteEnvPane$7.done(RemoteEnvPane.java:601)
        at javax.swing.SwingWorker$5.run(SwingWorker.java:737)
        at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832)
        at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
        at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842)
        at javax.swing.Timer.fireActionPerformed(Timer.java:313)
        at javax.swing.Timer$DoPostEvent.run(Timer.java:245)
        at java.awt.event.InvocationEvent.dispatch$$$capture(InvocationEvent.java:311)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
        at java.awt.EventQueue.access$500(EventQueue.java:97)
        at java.awt.EventQueue$3.run(EventQueue.java:709)
        at java.awt.EventQueue$3.run(EventQueue.java:703)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
        at org.swingexplorer.edt_monitor.EDTDebugQueue.dispatchEvent(EDTDebugQueue.java:252)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
        at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
        at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
        at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
        at java.awt.Dialog.show(Dialog.java:1084)
        at java.awt.Component.show(Component.java:1671)
        at java.awt.Component.setVisible(Component.java:1623)
        at java.awt.Window.setVisible(Window.java:1014)
        at java.awt.Dialog.setVisible(Dialog.java:1005)
        at com.fr.env.RemoteEnvPane.tryConnectRemoteEnv(RemoteEnvPane.java:631)
        at com.fr.env.RemoteEnvPane.access$1100(RemoteEnvPane.java:69)
        at com.fr.env.RemoteEnvPane$4.actionPerformed(RemoteEnvPane.java:303)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
        at java.awt.Component.processMouseEvent(Component.java:6539)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
        at java.awt.Component.processEvent(Component.java:6304)
        at java.awt.Container.processEvent(Container.java:2239)
        at java.awt.Component.dispatchEventImpl(Component.java:4889)
        at java.awt.Container.dispatchEventImpl(Container.java:2297)
        at java.awt.Component.dispatchEvent(Component.java:4711)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
        at java.awt.Container.dispatchEventImpl(Container.java:2283)
        at java.awt.Window.dispatchEventImpl(Window.java:2746)
        at java.awt.Component.dispatchEvent(Component.java:4711)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
        at java.awt.EventQueue.access$500(EventQueue.java:97)
        at java.awt.EventQueue$3.run(EventQueue.java:709)
        at java.awt.EventQueue$3.run(EventQueue.java:703)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
        at java.awt.EventQueue$4.run(EventQueue.java:733)
        at java.awt.EventQueue$4.run(EventQueue.java:731)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
        at org.swingexplorer.edt_monitor.EDTDebugQueue.dispatchEvent(EDTDebugQueue.java:252)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
        at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
        at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
        at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
        at java.awt.Dialog.show(Dialog.java:1084)
        at java.awt.Component.show(Component.java:1671)
        at java.awt.Component.setVisible(Component.java:1623)
        at java.awt.Window.setVisible(Window.java:1014)
        at java.awt.Dialog.setVisible(Dialog.java:1005)
        at com.fr.design.EnvChangeEntrance.chooseEnv(EnvChangeEntrance.java:392)
        at com.fr.design.EnvChangeEntrance.chooseEnv(EnvChangeEntrance.java:360)
        at com.fr.design.actions.file.EditEnvAction.actionPerformed(EditEnvAction.java:20)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
        at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:842)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:886)
        at java.awt.Component.processMouseEvent(Component.java:6539)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
        at java.awt.Component.processEvent(Component.java:6304)
        at java.awt.Container.processEvent(Container.java:2239)
        at java.awt.Component.dispatchEventImpl(Component.java:4889)
        at java.awt.Container.dispatchEventImpl(Container.java:2297)
        at java.awt.Component.dispatchEvent(Component.java:4711)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
        at java.awt.Container.dispatchEventImpl(Container.java:2283)
        at java.awt.Window.dispatchEventImpl(Window.java:2746)
        at java.awt.Component.dispatchEvent(Component.java:4711)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
        at java.awt.EventQueue.access$500(EventQueue.java:97)
        at java.awt.EventQueue$3.run(EventQueue.java:709)
        at java.awt.EventQueue$3.run(EventQueue.java:703)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
        at java.awt.EventQueue$4.run(EventQueue.java:733)
        at java.awt.EventQueue$4.run(EventQueue.java:731)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
        at org.swingexplorer.edt_monitor.EDTDebugQueue.dispatchEvent(EDTDebugQueue.java:252)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    Caused by: java.lang.reflect.UndeclaredThrowableException
        at com.sun.proxy.$Proxy216.beat(Unknown Source)
        at com.fr.workspace.engine.client.FineWorkspaceTestClient.beatOnce(FineWorkspaceTestClient.java:27)
        at com.fr.workspace.engine.channel.WorkspaceChannelFactory.testForRpc(WorkspaceChannelFactory.java:65)
        at com.fr.workspace.engine.channel.WorkspaceChannelFactory.testConnection(WorkspaceChannelFactory.java:35)
        at com.fr.workspace.engine.client.FineWorkspaceConnector.testConnection(FineWorkspaceConnector.java:31)
        at com.fr.env.RemoteEnvPane$7.doInBackground(RemoteEnvPane.java:588)
        at com.fr.env.RemoteEnvPane$7.doInBackground(RemoteEnvPane.java:584)
        at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
        at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
        at java.util.concurrent.FutureTask.run(FutureTask.java)
        at javax.swing.SwingWorker.run(SwingWorker.java:334)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
    Caused by: java.util.zip.ZipException: Not in GZIP format
        at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:165)
        at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:79)
        at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:91)
        at com.fr.serialization.GZipSerializerWrapper.deserialize(GZipSerializerWrapper.java:38)
        at com.fr.serialization.SerializerHelper.deserialize(SerializerHelper.java:39)
        at com.fr.workspace.engine.rpc.WorkspaceInvoker.invoke(WorkspaceInvoker.java:50)
        at com.fr.workspace.engine.rpc.WorkspaceProxyPool$1.invoke(WorkspaceProxyPool.java:74)
        ... 14 more

    iconNote:
    When the value of the field RemoteConnectionConfig.enableWhitelistVerify is set to false, IP address access is not limited.


    Attachment List


    Theme: Decision-making Platform
    • Helpful
    • Not helpful
    • Only read

    Doc Feedback