Java

Java 應用程序在 citrix 會話中啟動時崩潰

  • January 11, 2011

我們有一個通過 citrix 發布的 java 應用程序。當為新使用者啟動應用程序時,它會在啟動時立即崩潰。

如果我們使用 RDP 登錄,然後註銷(不啟動應用程序),它就會開始工作。

我們發布了另一個較小的 Java 應用程序,它適用於新使用者,無需先使用 RDP 登錄。

腳步:

- Publish java app
- create new user
- run published app in citrix -> crash
- log on user using rdp, log out
- run published app in citrix -> works fine

將每個新使用者登錄到每個 citrix 伺服器變得非常煩人:-P

該問題與特定程式碼有關,該程式碼從系統資料庫中讀取 AppData 設置。

這是來自 netbeans 啟動器(可能在以後的版本中更改)

char* getUserHomeFromRegistry(char* userhome)
{
   HKEY key;

   if (RegOpenKeyEx(
           HKEY_CURRENT_USER,
           "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",
           0,
           KEY_READ,
           &key) != 0)
       return NULL;

   char *path = GetStringValue(key, "AppData");
   RegCloseKey(key);

   strcpy(userhome, path);
   return userhome;
}

此系統資料庫設置並非始終可用,這會導致崩潰。

但是,%APPDATA% 環境變數是,所以我們製作了登錄應用程序,如果它不可用,它會設置系統資料庫。

感謝 Zanchenko 先生找到原因並解決它!

這似乎是一個錯誤,請參閱以下 URL 了解更多詳細資訊。

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4787931

http://www.citrixtools.net/en/Articles/articleType/ArticleView/articleId/49/Publish-an-Application-that-needs-a-parent-process.aspx

引用自:https://serverfault.com/questions/144039