反饋已提交

網絡繁忙

遠端設計

1. 概述

1.1 版本

報表伺服器版本功能變動
11.0.9

新增「限制存取IP」配置,詳情見本文第 6 

11.0.24HTTPS 憑證支援熱載入,配置HTTPS後,若無需匯入到JRE中,則無需重啟設計器

1.2 應用場景

FineReport 報表正式工程一般都部署在遠端伺服器上,當需要對工程裏面的範本進行設計修改時,可直接透過本地設計器連結到遠端伺服器上的工作區間進行範本設計。

1.3 功能簡介

1.png

2.1 遠端設計功能點

場景描述:遠端設計連結前,需要先確認遠端的工程是否支援遠端設計功能點。

解決方案:登入數據決策系統後,瀏覽器存取http://IP:port/webroot/decision/remote/design/vt得到傳回值,若傳回{"data":"success"},代表支援,否則請聯系銷售增購遠端設計功能點。

2.2 遠端設計權限

場景描述:非超管賬戶預設沒有遠端設計權限,遠端設計連結失敗。

解決方案:超管登入數據決策系統,查看是否為使用者分配了遠端設計的相關權限,詳情請參見本文第四章。

2.3 JAR包版本

場景描述:本地設計器版本和遠端伺服器工程的JAR包版本不一緻,會導緻很多問題。

解決方案:遠端連結時,若版本不匹配,會提示版本不一緻,遠端設計時部分功能將受影響。建議即時更新,保證伺服器和設計器JAR包版本一緻。

2.4 插件版本

場景描述:本地設計器和遠端伺服器工程的插件版本不一緻,會導緻很多問題。

解決方案:遠端連結時,建議確定遠端伺服器和本地設計器安裝了相同插件,且插件版本一緻。

注:若遠端連結的工程整合了 FineBI,請先判斷工程上的插件是否為 FineBI 特有功能,請勿在本地設計器安裝純 FineBI 功能的插件,否則可能會導緻遠端設計無法正常使用。

3. 配置遠端伺服器

開啟本地設計器,點選「檔案>切換工作區間>其它」,可建立遠端伺服器目錄。如下圖所示:

開啟本地設計器:

  • 進入【檔案】→【切換工作區間】→【其它】。

  • 選擇【遠端伺服器】,建立遠端伺服器目錄。如下圖所示。

1638534407595151.png

3.1 遠端伺服器

1638534416741992.png

本地主機位置是報表伺服器工程的本地主機名、埠、Web應用、Servlet的組合。

本地主機位置是進入報表伺服器對應的數據決策系統的 URL,形如http://IP:port/webroot/decision。

1)使用者可填寫本地主機名、埠、Web應用、Servlet後自動生成本地主機位置,或輸入本地主機位置後自動生成其他四項。

2)若報表工程配置了外網映射,或者配置了短域名存取(形如http://IP,或http://域名/decision)。

填寫【本地主機位置】資訊後,需要確認【Servlet】資訊是否為空,若為空需要手動填寫。

管理者登入數據決策系統,進入【管理系統】→【系統管理】→【標準】,即可查看本工程的Servlet路徑名,一般為【decision】。

31.jpg

3.2 啟用https

1638534433174361.png

當遠端報表伺服器使用了 https 認證時,登入到該遠端伺服器時,需要勾選啟動https,然後再填寫詳細資訊。

  • 如果伺服器所用證件是從 CA 機構正式簽發,遠端設計時一般無需填寫證件路徑和https金鑰。

  • 如果伺服器所用證件為自簽章證件,則需要填寫證件路徑和https金鑰。

注1:若啟動 https 或修改 https 配置(證件路徑、https 金鑰),若無需匯入到JRE中則無需重啟設計器;若匯入到JRE中則必須重啟設計器才能生效。

注2:證件路徑和 https 金鑰如何生成可參考: 配置SSL  

證件路徑:

點選右側按鈕選擇證件在本地的位置,根據實際情況選擇 .keysotre 或者 .jks 等其他證件。

jks 證件可以複制到本地,對應的證件路徑可以為本地路徑,金鑰使用 jks 生成時使用的金鑰。

證件和金鑰可從 Tomcat 根目錄/conf/server.xml 檔案的 SSLHostConfig 標簽中找到,certificateKeystoreFile 是 jks 證件儲存路徑,certificateKeystorePassword 是 jks 證件金鑰。

https 金鑰:

填寫 ssl 認證中設定的 keystore 密碼。

3.3 決策系統帳號

1638534442836172.png

連結遠端伺服器時,輸入數據決策系統中的帳號、密碼,驗證,連結成功即可切換到相應的遠端伺服器。如下圖1所示。

登入優先說明:遠端設計登入的使用者,按照瀏覽器平台登入的權限進行繼承。例如:Web 端登入是 a 使用者,遠端設計是 b 使用者,預覽時按照 a 使用者處理。

1)登入驗證

若帳號密碼輸入錯誤,或輸入被禁用的平台使用者帳號密碼,點選【測試連結】時,跳出提示【連結失敗,遠端設計帳號密碼錯誤,錯誤程式碼11300105】,此時點選【顯示錯誤堆疊】,可查看詳細報錯。

1638534451707701.png

2)密碼策略

除驗證帳號密碼之外,還支援登入鎖定、弱密碼校驗、定期修改密碼、初始密碼強制更新等密碼安全策略。各功能的效果如表格所示。

注:若想使用新增的密碼安全策略功能,伺服器和設計器二者都要滿足 JAR 包版本要求。

開啟的功能

效果

登入鎖定

遠端設計中進行【測試連結】或【目錄切換】時,如果密碼錯誤,將對錯誤次數計數。 當錯誤次數達到系統設定鎖定次數時,彈窗顯示:【密碼錯誤次數已達上限,已被鎖定 XX 分鐘,請交握管理者或在決策平台中修改密碼】。 其中密碼錯誤次數和鎖定時間,在決策平台中設定。且錯誤次數與平台累計計數,即平台輸入錯誤 i 次,此處輸入錯誤 j 次,總計輸入錯誤 i+j 次。 點選【修改密碼】超連結即可跳轉到平台登入入口修改密碼。

密碼強度限制 

參見:密碼策略設定 第 4 章

數據決策系統中若開啟了【密碼強度限制】功能,遠端連結時,輸入帳號密碼,密碼正確但不符合【密碼強度限制】,彈窗顯示:【當前密碼不符合密碼強度要求,請交握管理者或在決策登平台中修改密碼】。 點選【修改密碼】超連結即可跳轉到平台登入入口修改密碼。

密碼定期更新 

參見:密碼策略設定 第 3 章

數據決策系統中若開啟【密碼定期更新】功能,更新週期到後使用者忘記更新密碼,遠端連結時,輸入帳號密碼,彈窗顯示:【當前密碼已失效,請交握管理者或在決策登平台中修改密碼】。 點選【修改密碼】超連結即可跳轉到平台登入入口修改密碼。

初始密碼強制修改 

參見:密碼策略設定 第 6 章

數據決策系統中若開啟【初始密碼強制修改】功能,遠端連結時,使用者輸入帳號密碼,若密碼正確且為初始密碼,彈窗顯示:【當前密碼已失效,請交握管理者或在決策登平台中修改密碼】。 點選【修改密碼】超連結即可跳轉到平台登入入口修改密碼。

四、分配遠端設計權限

報表工程的超級管理者預設可遠端連結報表工程,非超管使用者預設不允許遠端連結報表工程,必須由超管使用者統一分配權限後方可遠端連結。遠端設計權限分為三種,如表格所示。

注:本文僅介紹權限分配的功能,超管為使用者分配遠端設計權限的具體操作範例請參見:遠端設計範本權限管理 。

權限類型

簡介

注意事項

遠端連結權限

將遠端連結的權限分配給使用者,使得使用者可以透過本地設計器遠端連結伺服器工程。

  • 該權限僅支援超管使用者分配。

  • 支援按照使用者和角色進行分配,不支援按照部門職務分配。

  • 權限分配操作需在設計器端進行。

遠端設計範本權限

將指定範本的編輯設計權限分配給不同的使用者,使不同使用者只能編輯其職責範圍內的範本。

  • 該權限僅支援超管使用者分配。

  • 僅支援分配給有【遠端連結權限】的使用者和角色,不支援分配給無【遠端連結權限】。的使用者和角色,不支援按照部門職務分配。

  • 權限分配操作需在設計器端進行。

資料連結權限

分配普通使用者在製作報表時可以使用的資料連結權限,限制使用者可呼叫的資料連結和伺服器資料集範圍。

  • 該權限支援管理者使用者分配。

  • 支援按照使用者、部門、角色進行分配。

  • 權限分配操作需在數據決策系統中進行。

4.1 遠端連結權限

分配遠端連結權限:

點選【伺服器】→【遠端設計權限管理】,超管可為某個使用者/某個角色分配遠端連結權限,本範例選擇使用者eoco。點選【8.png】。勾選使用者【eoco】,點選【確定】,即代表將使用者eoco新增到了支援遠端連結的使用者列表中。

1638534481829456.png

若無遠端連結權限的使用者試圖遠端連結該工程,提示【連結失敗,遠端設計無權限,錯誤程式碼:11300112】。

32.jpg

4.2 遠端設計範本權限

分配遠端設計範本權限:

超管點選【伺服器】→【遠端設計權限管理】,超管可為已經擁有遠端連結權限的某個使用者/某個角色分配範本設計權限,本範例選擇使用者eoco。選中使用者eoco。勾選需要讓eoco編輯的範本【決策報表入門.frm】,點選【確定】,即代表使用者eoco擁有了該範本的查看、編輯、刪除、重新命名權限。

1638534499929949.png

該使用者遠端連結工程後,能看到的範本只有自己有權限的範本。

1638534508949795.png

4.3 資料連結權限

該權限需在數據決策系統中分配,詳情請參見:資料連結使用權限伺服器資料集使用權限 。

若範本中使用了對應的資料連結/伺服器資料集,則必須要為使用者配置相應的資料連結使用權限和伺服器資料集使用權限,否則編輯後無法儲存範本。

1)開啟資料連結控制

超級管理者登入遠端報表工程的數據決策系統,點選「管理系統>權限管理>全局設定」,開啟「資料連結控制」按鈕,點選「儲存」。如下圖所示:

33.jpg

2)分配資料連結使用權限

管理者登入遠端報表工程的數據決策系統,點選「管理系統>權限管理>普通權限配置」。 

選擇權限載體「部門/角色/使用者」,為其分配資料連結使用權限和伺服器資料集使用權限,如下圖所示:

34.jpg

普通使用者切換至遠端伺服器下,若管理者沒有為其分配資料連結權限,在製作報表時,將看不到資料連結,無法使用對應資料庫的資料,如下圖所示:

1638534538631709.png

若遠端連結時,儲存/預覽的範本中存在無權限的資料連結/伺服器資料集,則報錯「儲存失敗,當前操作者缺失X個資料連結權限/伺服器資料集權限:XXXX」 

5. 遠端連結效果

5.1 超級管理者

超級管理者使用設計器遠端連結伺服器成功後。

1)遠端設計時,不支援在設計器端使用「插件管理」功能 ,必須在數據決策系統中管理插件,詳情請參見:A11-18 伺服器-插件管理  。

2)遠端設計時,在菜單欄「伺服器」新增「遠端設計權限管理」,可透過該功能為普通使用者配置遠端設計權限。 

1638534548942542.png

2)遠端設計時,在菜單欄「伺服器」新增「遠端設計權限管理」,可透過該功能為普通使用者配置遠端設計權限。 

5.2 非超管使用者

注:次級管理者如果在遠端設計時出現卡頓、資料載入慢等情況,應開啟資料庫二級快取。詳情請參考:指定ehcache快取路徑 中 2.1 節檔案配置。

非超管使用者使用設計器遠端連結伺服器成功後。

1)遠端設計時,在設計器菜單欄無「伺服器」Tab,對應功能均不支援設定。

2)遠端設計時,在檔案區顯示使用者有權限使用的範本。

代表使用者有該資料夾和資料夾下所有範本的使用權限。

代表使用者僅有該資料夾中部分範本的使用權限,不完全擁有該資料夾的使用權限。


建立資料夾:使用者只可在完全有權限的資料夾下建立資料夾。不可在根目錄/不完整權限資料夾中建立資料夾,提示「沒有權限」。

                    注意:對於非超管使用者來說,reportles和reportles下的一級目錄,均為根目錄。

刪除資料夾:使用者只可刪除完全有權限的資料夾,資料夾下的範本將會一併被刪除。不可刪除不完整權限的資料夾,提示「沒有權限」。

重新命名資料夾:使用者只可重新命名完全有權限的資料夾。不可重新命名不完整權限的資料夾,提示「沒有權限」。

建立範本:使用者建立的範本,只能儲存在完全有權限的資料夾下。不可儲存在根目錄/不完整權限資料夾中,提示「沒有權限!」。

若使用者想將範本儲存到根目錄reportlets下,需要擁有所有目錄資料夾和範本的使用權限,建議使用者把自己權限的範本放到一個資料夾中,只開放一個資料夾的權限就行。


3)若多個使用者擁有同一資料夾的權限,如果使用者 A 和使用者 B 同時連結遠端目錄,A 刪除了範本 M,使用者 B 在不知情的情況下開啟 M 範本,會提示範本被刪除,無法開啟,重新整理範本面板後可以看到該範本已經不存在。

4)無論使用者有沒有資料連結的使用、管理權限,遠端連結時,非超管使用者在設計器端不可「定義資料連結」。


5)非超管使用者遠端設計時,所有涉及選擇資料連結的地方,使用者只能使用自己權限下的資料連結,比如新增資料集時「資料庫查詢」、「儲存程式」等。


6. 限制存取IP

問題背景:

針對 channel API反序列化漏洞對遠端設計可能的影響,可透過配置限制存取 IP 來防止惡意輸入行為

解決方案:

修改 FineDB 中 FINE_CONF_ENTITY 表中相關欄位,修改表的方法見:fine_conf_entity視覺化配置

具體設定如下:

1)將欄位 RemoteConnectionConfig.enableWhitelistVerify 值設定為:true

2)然後給欄位 RemoteConnectionConfig.ipWhiteList 指派,值為 IP 段,且為陣列形式


設定好後,除配置的 IP 外,其他 IP 均不可存取遠端設計,不在白名單的 IP 存取時會彈出如下報錯:



報錯對應的堆棧資訊如下:

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

注:欄位 RemoteConnectionConfig.enableWhitelistVerify 值設定為 false 時不限制 IP 存取。


附件列表


主題: 數據決策系統
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉