Назад | Перейти на главную страницу

Сбой приложения Java при запуске в сеансе Citrix

У нас есть java-приложение, опубликованное через citrix. Когда приложение запускается для нового пользователя, оно сразу вылетает при запуске.

Если мы войдем в систему с использованием 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;
 }

Этот параметр реестра не всегда доступен, что приводит к сбою.

Однако переменная env% APPDATA% есть, поэтому мы создали приложение для входа в систему, которое устанавливает реестр, если он недоступен.

Спасибо господину Занченко за то, что нашел причину и разрешил ее!

Похоже, это ошибка. Для получения дополнительных сведений перейдите по следующим 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