Javaws
Материал из BiTel WiKi
(→Примечания) |
|||
| (1 промежуточная версия не показана) | |||
| Строка 76: | Строка 76: | ||
bgclient_javawebstart_user.sh : | bgclient_javawebstart_user.sh : | ||
| - | < | + | <pre> |
#!/bin/sh | #!/bin/sh | ||
| Строка 113: | Строка 113: | ||
fi | fi | ||
done | done | ||
| - | </ | + | </pre> |
bgclient.jnlp: | bgclient.jnlp: | ||
| Строка 145: | Строка 145: | ||
</jnlp> | </jnlp> | ||
</source> | </source> | ||
| + | |||
=== Примечания === | === Примечания === | ||
| - | * Если в пользовательском классе переопределяются ресурсы или классы из client.jar или, ''простихоспаде'', client_libs.jar, то | + | * Если в пользовательском классе переопределяются ресурсы или классы из client.jar или, ''простихоспаде'', client_libs.jar, то в bgclient.jnlp пользовательский файл должен в списке стоять раньше соответствующей библиотеки, а также необходимо убрать атрибут 'main="true"' у client.jar. |
Текущая версия на 05:34, 9 апреля 2013
Содержание |
Описание
Технология Java Web Start позволяет загружать и запускать приложения Java по сети. В случае с биллингом это выглядит следующим образом:
- Клиент вводит URL в браузере или запускает .bat(.sh)-файл
- Запускается java, с локального сервера биллинга скачиваются актуальные клиентские библиотеки и настройки подключения и JVM
- Запускается привычный BGBillingClient
Java Web Start также кэширует библиотеки локально, если они не изменились. Кэш можно посмотреть через Java Control Panel -> Temporary Internet Files -> View...
В составе сервера биллинга идут следующие файлы для работы клиента через Java Web Start:
- bgclient_javawebstart.sh
- Создаёт подписанные клиентские библиотеки client.jar и client_libs.jar в директории webroot/client/
- webroot/client/bgclient.jnlp
- Файл с настройками подключения и указанием файлов библиотек для скачивания клиентом
- .bgclient_keystore
- Стандартное хранилище ключей для подписи клиентских библиотек. Можно использовать собственное хранилище. Подробнее про работу с SSL-ключами - в документации к модулю mps: http://bgbilling.ru/v5.2/doc/ch21s03.html
Если у вас нет этих файлов - нужно взять из последней версии BGBillingServer
HOWTO
- Запускаем bgclient_javawebstart.sh на сервере (В стандартном update.sh )
- Редактируем webroot/client/bgclient.jnlp - прописываем настройки сервера и клиентской jvm
- Выполняем на клиентской машине в командной строке:
javaws http://192.168.0.100:8080/bgbilling/client/bgclient.jnlp
Пример настройки bgclient.jnlp :
<?xml version="1.0" encoding="utf-8"?> <jnlp spec="1.0+" codebase="http://192.168.0.100:8080/bgbilling/client" href="bgclient.jnlp" > <information> <title>BGBilling GUI client</title> <vendor>BiTel, Ltd.</vendor> <description>BGBilling GUI client</description> </information> <resources> <j2se version="1.6+" java-vm-args="-Xmx256m -Dlocal.setting.file.name=config_test"/> <jar href="client.jar" main="true"/> <jar href="client_libs.jar"/> <property name="db.server.0.title" value="BGBilling - test"/> <property name="db.server.0.url" value="http://192.168.0.100:8080/bgbilling/executer"/> <property name="db.server.0.proxy.host" value=""/> <property name="db.server.0.proxy.port" value=""/> <property name="look.and.feel.default" value="javax.swing.plaf.metal.MetalLookAndFeel"/> <property name="look.and.feel.default.theme" value="OceanTheme"/> <property name="user.country" value="RU"/> <property name="user.language" value="ru"/> </resources> <security><all-permissions/></security> <application-desc main-class="bitel.billing.ShellFrame" /> </jnlp>
Готово! Должно открыться обычное окно клиента биллинга.
Использование собственных клиентских библиотек
Допустим, у нас есть jar-библиотеки, которые мы хотим использовать на стороне клиента. Для этого их нужно:
- Прописать в bgclient.jnlp
- Подписать тем же ключом, что и стандартные и положить в webroot/client/
Если посмотреть в bgclient_javawebstart.sh, можно увидеть, что в конце там проверяется наличие пользовательского файла bgclient_javawebstart_user.sh и он по возможности выполняется
HOWTO
Пусть у нас есть файл my_client.jar
- Создаём директорию client_lib_user
- Кладём туда my_client.jar
- Пишем скрипт bgclient_javawebstart_user.sh (ниже)
- Запускаем bgclient_javawebstart.sh
- Прописываем my_client.jar в bgclient.jnlp
- PROFIT!
bgclient_javawebstart_user.sh :
#!/bin/sh
cd ${0%${0##*/}}.
. ./setenv.sh
KEYSTORE=".bgclient_keystore"
USER_LIBS=./client_lib_user/*.jar
checkJar_user()
{
if [ -e $1 ]; then
FNAME=`basename $1`
#new file hash
A=`sha1sum $1 | cut -c1-40`
B=""
#old file hash
if [ -e "webroot/client/${FNAME}.sha" ]; then
B=`cat webroot/client/${FNAME}.sha`
fi
if [ "$A" != "$B" ]; then
echo "$(tput setaf 2)${FNAME}$(tput sgr0) has changed!"
${JAVA_HOME}/bin/jarsigner -keystore ${KEYSTORE} -storepass "${PASSWORD-123456}" -signedjar webroot/client/${FNAME} $1 bgbilling
echo "${A}" > webroot/client/${FNAME}.sha
else
echo "$(tput setaf 6)${FNAME}$(tput sgr0) hasn't changed"
fi
fi
}
for f in ${USER_LIBS}
do
if [ -e $f ]; then
checkJar_user $f
fi
done
bgclient.jnlp:
<?xml version="1.0" encoding="utf-8"?> <jnlp spec="1.0+" codebase="http://192.168.0.100:8080/bgbilling/client" href="bgclient.jnlp" > <information> <title>BGBilling GUI client</title> <vendor>BiTel, Ltd.</vendor> <description>BGBilling GUI client</description> </information> <resources> <j2se version="1.6+" java-vm-args="-Xmx256m -Dlocal.setting.file.name=config_test"/> <jar href="my_client.jar"/> <jar href="client.jar"/> <jar href="client_libs.jar"/> <property name="db.server.0.title" value="BGBilling - test"/> <property name="db.server.0.url" value="http://192.168.0.100:8080/bgbilling/executer"/> <property name="db.server.0.proxy.host" value=""/> <property name="db.server.0.proxy.port" value=""/> <property name="look.and.feel.default" value="javax.swing.plaf.metal.MetalLookAndFeel"/> <property name="look.and.feel.default.theme" value="OceanTheme"/> <property name="user.country" value="RU"/> <property name="user.language" value="ru"/> </resources> <security><all-permissions/></security> <application-desc main-class="bitel.billing.ShellFrame" /> </jnlp>
Примечания
- Если в пользовательском классе переопределяются ресурсы или классы из client.jar или, простихоспаде, client_libs.jar, то в bgclient.jnlp пользовательский файл должен в списке стоять раньше соответствующей библиотеки, а также необходимо убрать атрибут 'main="true"' у client.jar.
