LINUX.ORG.RU
ФорумAdmin

[java][stonegate manager][java web start]


0

0

привет лор. Трабла в следующем: есть некий StoneGate Management Client который работает через java web start (на страничке ссылка на хмл файл в котором описание приложение, что откуда качать и тд). Вот вводная информация:

Сам файл

<?xml version="1.0" encoding="utf-8"?>

<jnlp spec="1.0+"

codebase="http://192.168.160.100:8080/"

href="smcclient.jnlp">

<information>

<title>StoneGate Management Center 4.3.6 [7949]</title>

<vendor>Stonesoft Corp.</vendor>

<homepage href="http://www.stonegate.com"/> 

<description>StoneGate Management Center 4.3.6 [7949]</description>

<icon href="images/32_app.gif"/>

<icon kind="splash" href="images/splash.gif"/>

<offline-allowed/>

</information>

<security>

<all-permissions/>

</security>

<resources>

<j2se version="1.5+" initial-heap-size="10m" max-heap-size="400m"/>

<property name="SG_ROOT_DIR" value="${user.home}/.stonegate"/>

<property name="app.id" value="WEB_CLIENT"/>

<jar href="lib/smc.jar"/>

<jar href="lib/smc_resources.jar"/>

<jar href="lib/config.jar"/>

<jar href="lib/batik.jar"/>

<jar href="lib/jai_codec.jar"/>

<jar href="lib/jai_core.jar"/>

<jar href="lib/jlfgr-1_0.jar"/>

<jar href="lib/ldapjdk.jar"/>

<jar href="lib/ldapsp.jar"/>

<jar href="lib/log4j.jar"/>

<jar href="lib/mlibwrapper_jai.jar"/>

<jar href="lib/postgresql-jdbc3.jar"/>

<jar href="lib/xalan.jar"/>

<jar href="lib/xml.jar"/>

<jar href="lib/TableLayout.jar"/>

<extension name="itext" href="itext.jnlp"/>

<extension name="Bouncy Castle" href="bouncycastle.jnlp"/>

<extension name="Java Help" href="javahelp.jnlp"/>

<extension name="Java Help" href="smcclienthelp.jnlp"/>

</resources>

<application-desc main-class="com.stonesoft.h2a.gui.StartWindow"/>

</jnlp>

вот что происходит при запуске этого поделья

17:34 test@debian /home/test % javaws "http://192.168.160.100:8080/smcclient.jnlp"
Exception in thread "StoneGate Management Center 4.3.6 [7949]" java.lang.ExceptionInInitializerError
        at com.stonesoft.util.log.c.<clinit>(c.java:34)
        at com.stonesoft.util.x.g.<clinit>(g.java:179)

при этом вылезает окошко со сплешскрином после чего успешно валится с этой бякой.

У наших местных арчеводов все работает, у меня на генту оно с начала не работало на сановской жабе (как ни странно) версии 1.6.21, жаба процесс просто повисал и ничего не происходило. Диагностировал strace - оно ждало futex и не могло дождаться - в итоге я его прибивал. Потом поставил icedtea-1.8.1 и под этой жабой все кагбе заработало.

Теперь собсно где оно не работает - это дебиан под любой джавой, под любым пользователем (даже рут ага) поделка валится с вышеуказанным высером. Алсо вот вывод strace:

open("/usr/lib/gcc/i486-pc-linux-gnu/4.2.4/tls/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/gcc/i486-pc-linux-gnu/4.2.4/tls", 0xbf870c1c) = -1 ENOENT (No such file or directory)
open("/usr/lib/gcc/i486-pc-linux-gnu/4.2.4/i686/sse2/cmov/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/gcc/i486-pc-linux-gnu/4.2.4/i686/sse2/cmov", 0xbf870c1c) = -1 ENOENT (No such file or directory)
open("/usr/lib/gcc/i486-pc-linux-gnu/4.2.4/i686/sse2/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)

....

....

....

и последние 50 строк

readlink("/proc/self/exe", "/usr/lib/jvm/java-6-openjdk/jre/bin/javaws.real", 4096) = 47
access("/usr/lib/jvm/java-6-openjdk/jre/lib/i386/libjava.so", F_OK) = 0
open("/usr/lib/jvm/java-6-openjdk/jre/lib/i386/jvm.cfg", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1725, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76e3000
read(3, "# Copyright 2001-2004 Sun Micros"..., 4096) = 1725
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb76e3000, 4096)                = 0
open("/proc/meminfo", O_RDONLY)         = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76e3000
read(3, "MemTotal:         513804 kB\nMemF"..., 1024) = 1024
close(3)                                = 0
munmap(0xb76e3000, 4096)                = 0
stat64("/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so", {st_mode=S_IFREG|0644, st_size=4298904, ...}) = 0
getgid32()                              = 1001
getegid32()                             = 1001
getuid32()                              = 1001
geteuid32()                             = 1001
futex(0xb76a206c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`r\3\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=4298904, ...}) = 0
mmap2(NULL, 8624932, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d1c000
mmap2(0xb7114000, 143360, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3f7) = 0xb7114000
mmap2(0xb7137000, 4320036, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7137000
close(3)                                = 0
open("/usr/lib/jvm/java-6-openjdk/jre/bin/../lib/i386/jli/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/jvm/java-6-openjdk/jre/lib/i386/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=61065, ...}) = 0
mmap2(NULL, 61065, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb76d5000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`4\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=149392, ...}) = 0
mmap2(NULL, 151680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6cf6000
mmap2(0xb6d1a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23) = 0xb6d1a000
close(3)                                = 0
mprotect(0xb6d1a000, 4096, PROT_READ)   = 0
munmap(0xb76d5000, 61065)               = 0
umask(077)                              = 022
mmap2(NULL, 331776, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0xb6ca5000
mprotect(0xb6ca5000, 4096, PROT_NONE)   = 0
clone(child_stack=0xb6cf5494, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0xb6cf5bd8, {entry_number:6, base_addr:0xb6cf5b70, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}, child_tidptr=0xb6cf5bd8) = 11086
futex(0xb6cf5bd8, FUTEX_WAIT, 11086, NULL) = 0
exit_group(0)                           = ?

размер сообщения подходит к максимальному внимание вопрос: как еще диагностировать ?

а если пускать не через openjdk, а сановскую джаву?

leave ★★★★★ ()
Ответ на: комментарий от JFreeM

Вовово. Если пускать через сановую жабу на генте - то виснет ожидая футекса, а под icedtea все шикарно. На стабильном дебиане стабильно не работает под любой джавой.

Сейчас возможности посчупать нету (не на работе уже). а вот если не секрет как мне декомпилировать приложение которое запускается через java web start ?

s9gf4ult ★★ ()
Ответ на: комментарий от s9gf4ult

jnlp - это просто ссылка на джарку и либы. Разархивируйте jar, декомпилируйте .class файлы (будут корявые сырцы, ибо обфускатор) и найдите ту строчку, где вываливается.

JFreeM ★★★☆ ()
Ответ на: комментарий от JFreeM

Расскажу о своих приключениях. Декомпилировать не получилось. Там туева хуча jar файлов тянется (за пост jnlp сори я уже потом увидел что оно джары с локального адреса тянет а не с http://www.sotnesoft.com). Вот список файлов

tmp/stonegate % ls *.jar 
batik.jar      jai_core.jar   log4j.jar             smc_resources.jar
bcprov.jar     jh.jar         mlibwrapper_jai.jar   TableLayout.jar
config.jar     jlfgr-1_0.jar  postgresql-jdbc3.jar  welcome.jar
itext.jar      ldapjdk.jar    smc_help.jar          xalan.jar
jai_codec.jar  ldapsp.jar     smc.jar               xml.jar

Я их как пологается распаковал и паытался декомпилировать где-то так

for clf in **/*.class;do
jad -f -ff -d $(dirname $clf) $clf
done

но декомпилятор повисает на файле jh.jar.d/javax/help/Map$ID.class. Да и даже если бы я это все декомпилировал как бы я потом это собирал обратно и запускал ?

Далее, пробовал обойтись без javaws и запустить это добро руками где-то так

tmp/stonegate % java -cp "batik.jar:bcprov.jar:config.jar:itext.jar:jai_codec.jar:jai_core.jar:jh.jar:jlfgr-1_0.jar:ldapjdk.jar:ldapsp.jar:log4j.jar:mlibwrapper_jai.jar:postgresql-jdbc3.jar:smc_help.jar:smc.jar:smc_resources.jar:TableLayout.jar:welcome.jar:xalan.jar:xml.jar" class com.stonesoft.h2a.gui.StartWindow
Exception in thread "main" java.lang.NoClassDefFoundError: class
Caused by: java.lang.ClassNotFoundException: class
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: class. Program will exit.

Согласно ману указал параметру -cp указал пути к джарам разлеленные двоеточием, потом слово class и за ним имя класса для запуска. Как не трудно заметить jar файлов не мало а *.class файлов в них овер 9000. Однако, жабка не нашла нужный класс.

Далее, запуск поделки в отладчике вот так:

в одной консоли

jdb -listen 8000

в другой

javaws -J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=8000 "http://192.168.160.100:8080/smcclient.jnlp"

честно говоря, ожидал что дебагер расскажет мне подробности ексепшна. Но он этого не сделал он просто завершил работу вместе с упавшим приложением. Пробовал trace go methods чтобы получить стек трейс (я же правильно мыслю да ?), но обнаружил что поделка запускает около 5 потоков и не понятно в каком потоке мне смотреть стек трейс и вообще как это сделать, когда после запуска программа валится через ~15 скунд. Если на лоре есть опытные сантехники помогите пожалуйста. Я от отчаяния даже на нульче запостил это

s9gf4ult ★★ ()
Ответ на: комментарий от s9gf4ult

где бы это поделие скачать?
Патчить его, вы правы, действительно не получится. Надо просто создать ему условия для работы. Декомпилировать надо только джарку с классом, где exceptin вываливается.
Подскажите хотя бы номер версии этого StoneGate Management Client

JFreeM ★★★☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.