Сейчас я играю с этим. Попробуйте PersistentCookieStore , добавьте зависимости gradle для JavaNetCookieJar :
compile "com.squareup.okhttp3:okhttp-urlconnection:3.0.0-RC1"
и init
// init cookie manager
CookieHandler cookieHandler = new CookieManager(
new PersistentCookieStore(ctx), CookiePolicy.ACCEPT_ALL);
// init okhttp 3 logger
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
// init OkHttpClient
OkHttpClient httpClient = new OkHttpClient.Builder()
.cookieJar(new JavaNetCookieJar(cookieHandler))
.addInterceptor(logging)
.build();
`
These methods are suited for servers with a lot of java processes running, and where you need a quick way of finding the correct jvm (not using jps.) For applications, I suppose launch4j or another wrapper is the way to go.
On unix, If you are launching from a shell sript (at least for bash and possibly for other decent shells) you can use:
exec -a goodname java ...
to launch java
and pass "goodname" as the 0th argument, which will be shown as the process name in ps
etc.
A perhaps better alternative (that seems to work also for top
) is to create a symlink: ln -s /usr/bin/java /usr/local/bin/kallekula
.
Shortcuts in windows won't do the trick, but windows vista/7 supports symlinks using mklink
. That may work, but I haven't tested. I am not sure if exec -a
also works with cygwin bash on Windows.
Обратите внимание на launch4j , это исполняемая оболочка, которая позволяет вам назначать исполняемые имена.
Если вы не запускаете Java через JNI в своем собственном созданном исполняемом файле, имя процесса всегда будет java.exe.
Есть несколько программ запуска / оболочки Java, которые могут сгенерировать этот исполняемый файл для вас .
Если вы используете Sun JDK, вы также можете использовать инструмент командной строки jps, чтобы получить подробный список процессов Java, запущенных на компьютере.
Предполагая, что то, что вы действительно ищете, - это способ завершить правильный правильный процесс позже, тогда альтернативное решение:
Выполнить ps -ef | grep java
, и вы должны получить список, который выглядит примерно так:
mruser 7518 7505 4 11:37 pts/3 00:00:00 /usr/bin/java -classpath MRD3030_Linked.jar peralex.MyApp
Тогда pkill -f peralex.MyApp
завершит правильный процесс.
Не все разновидности exec поддерживают флаг -a. В противном случае программа argv0 делает нечто подобное.