|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
Привет. Возникает проблема. Есть Single Sign On модуль, которые используется для парсинга тикета SAP-а. Потом результат работы этого модуля используется для авторизации в другой системе. Модуль представляет собой класс SSO2Ticket: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
Модуль завернут в сервелт, который принимает в параметры ticket, парсит его и выводит в поток логин авторизированного пользователя. Другая система вызывает сервлет с параметром ticket, в поток получает логин, авторизированного пользователя. GetTicketServlet выгядит примерно следующим образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
В общем схема такова (исходники писал на коленках). Это все работает под tomcat. Но периодически при нагрузке все слетает. То есть при каждом запуске данного сервлета память занимаемая JVM наростает и доходит до придела и слетает. Все работает под linux ubuntu 64 разряда, jdk sun 1.6. Я не понимаю в чем может быть проблема. Библиотека вроде грузить один раз, а потом только отрабатывает функция evalLogonTicket. Работоспособность функции как бы тоже внушает доверие JNI SAP все-таки. Что можно сделать с данной проблемой. Может быть какие-то настройки или параметры жава машины или томката? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 23:06 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
Отделите System.loadLibrary(SSO2TICKETLIBRARY); от класса SSO2Ticket и делайте загрузку библиотеки на событие onStart для web-приложения ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 23:15 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
Kachalov, Не получиться, библиотека очень чувствительна к названию класса в котором грузиться, то есть функция System.loadLibrary(SSO2TICKETLIBRARY), отрабатывает успешно только в классе с названием SSO2Ticket. Это конечно странно, но это факт. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 23:18 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
Ну проверяйте загружена она уже или нет (хотя бы флаг какой-нибудь заведите) и если не загружена то System.loadLibrary. Очевидно что происходит утечка памяти и скорее всего именно при загрузке библиотеки. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 23:32 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
Kachalov, И с флагом делал, выносил загрузку в отдельную функцию класса SSO2Ticket в котором фиксировался флаг и каждый раз проверялся при повторной загрузки (загрузка происходит один раз). Очень сложно это оттестировать, оно вроде работает, но когда покрутится на сервере недельку, то падает. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 23:37 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
_chaos_, возможно память течет в натив коде, но если с ним ничего сделать нельзя, то делайте ежедневный (в зависимости от нагрузки возможно чаще или реже) перезапуск Tomcat :( ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 23:44 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
Kachalov, Возможно, просто к эта проблема всех так запарила уже. Второй раз уже возвращаюсь к ней. Сначала делали через Java-Php-Bridge, но там модуль тоже отваливался по многим причинам (думали проблема с бриджом). Переделал по простому, проблема оказалась в библиотеке. Томкат перезапускать не вариант, так как основное нагрузочное тестирование еще не проводилось и придется его перезапускать очень часто :), а пользователей 5000. То есть нагрузка серьёзная. Объяснить что проблема в саповской натив библиотеке, будет сложно :). Начальству главное что б работало, не будет вникать в такие подробности. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 23:54 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
_chaos_, Да и на офф форуме сапа, есть несколько бредовый статей от ихних консультантов, которые реально рекомендуют такое подход, хотя примеры которые они там выложили даже не работают, только показывают основную идею. Это говорит о том, что это все работает только теоретически, а на практике нормально оттестировать свои поделки они не удосужились. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2009, 23:58 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
_chaos_а пользователей 5000. То есть нагрузка серьёзная. - согласен, но это можно компесировать увеличением доступной JVM памяти. Такие аргументы как "дайте денег на память" обычно доступны "начальству". _chaos_Объяснить что проблема в саповской натив библиотеке, будет сложно :). Начальству главное что б работало, не будет вникать в такие подробности. - можно исхитриться, типа нативная библиотека живет в отдельной JVM откуда дергается через RMI, а уж отдельную JVM можно перезапускать хоть каждые 15 минут ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 00:05 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
Kachalov, Ну это очень извратно :). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 19:21 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
_chaos_, Код: plaintext 1.
Возможно это массив не освобождается. И стоит его добавить результат в WeakReference, а потом очистить и обнулить и вызвать gc. Кстати, а вариант с JNA? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 19:46 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
Хотя нет JNA, только под Win32 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2009, 20:36 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
Все тема закрыта. У меня все работает :), это они так решили съехать на мою часть, что быть точно уверенными что проблема у них. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2009, 19:22 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
_chaos_, добрый день! Появилась задача по этому классу. Вопрос по использованию его в php-bridge. Может помните, у вас не было проблем с обнаружением библиотек libsapcrypto.so и libsapssoext.so? У нас ошибка, с которой не знаем что делать. Библиотеки скопированы куда только можно. Также есть внутри jar файла, который скопирован внутрь /usr/share/tomcat/webapps/JavaBridge/WEB-INF/lib Logon ticket available Warning: Unchecked exception detected: [[o:Response$UndeclaredThrowableErrorMarker]:"FATAL: Undeclared java.lang.RuntimeException detected. java.lang.Exception: Invoke failed: [[o:SSO2Ticket]]->getStringVersion. Cause: java.lang.UnsatisfiedLinkError: SSO2Ticket.getStringVersion()Ljava/lang/String; VM: 1.6.0_41@ http://java.sun.com/" at: #-11 SSO2Ticket.getStringVersion(Native Method) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 12:07 |
|
Проблемы с JNI
|
|||
---|---|---|---|
#18+
wilhel76, Может вам технологию поменять с 2009 года? Например, у ГОСУСЛУГИ либы SSO, просто всё делают в фильтрах запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 12:22 |
|
|
start [/forum/topic.php?fid=59&fpage=31&tid=2121442]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
others: | 322ms |
total: | 479ms |
0 / 0 |