Интеграция апплета в веб-приложение. Изучаем Java
Привет, любимый читатель.
Сегодня ты узнаешь как подписать JAVA апплет. Для начала скажу, что JAVA апплеты имеют ограниченную функциональность, пока они не подписаны. Например, неподписанные апплеты не могут:
- взаимодействовать с локальной файловой системой клиента;
- устанавливать сетевые соединения с другими серверами;
- взаимодействовать с буфером обмена клиента;
- некоторые другие.
1. Разрешить выполнение на каждой локальной машине клиентов. Для этого можно отредактировать файл java.policy, который находится в папке с установленным JRE (по умолчанию в C:\Program Files\Java\jre6\lib\security). И добавить необходимые разрешения. Например, чтобы разрешить все, что можно, нужно вставить строчку:
Grant { ... permission java.security.AllPermission; }
А если нужно разрешить только работу с буфером обмена для сайта hackmeplease.com :
Grant codeBase "http://hackmeplease.com/*" { permission java.awt.AWTPermission "accessClipboard"; };
Этот способ будет удобен только в том случае, если кол-во конечных пользователей твоего сайта ограничено и тебе не в лом на каждом компьютере править этот файл. Кроме того безопасность этого решения не очень высока.
2. Подписать свой Java-апплет. Итак, что имеем на входе:
- установленные JDK и JRE;
- jar-файл своего апплета (есть некоторые особенности написания исходного кода, см. ниже);
- желание работать с буфером обмена. Для этого нужно, чтобы корректно работала строчка:
Toolkit toolkit = Toolkit.getDefaultToolkit();
Clipboard clipboard = toolkit.getSystemClipboard();
В случае вызова этих строчек, из неподписанного апплета получим следующее исключение:
java.security.AccessControlException: access denied (java.awt.AWTPermission accessClipboard)
Итак, приступим:
0. Переходим в папку BIN нашего JDK (например, C:\Program Files\Java\jdk1.6.0_23\bin).
I. Создаем локальное хранилище нашего сертификата (keystore):
keytool -genkey -keystore .keystore -alias «Terrasoft» -validity 99999
99999 - срок в месяцах валидности сертификата;
.keystore - имя файла создаваемого хранилища.
В случае успешного запуска команды, система спросит нас пароль нашего хранилища, а также некоторую информацию о сертификате (твои ФИО, название компании, город, страну и группу крови)
В результате будем иметь файл.keystore. Это и есть наше хранилище, которым мы будем подписывать разные апплеты.
II. Копируем в папку BIN нашего JDK наш JAR-файл. Подписываем его с помощью следующей команды:
jarsigner.exe -keystore .keystore ClipboardLibrary.jar «Terrasoft»
где Terrasoft - название alias нашего сертификата;
.keystore - имя файла хранилища;
ClipboardLibrary.jar - название JAR-файла.
Система спросит нас пароль - вводим тот, что ввели в п. I.
Вроде как готово… Да щас, наивный…
Итак, при запуске страницы с нашим апплетом на борту пользователь получит дружественное сообщения вида:
Что означает, «Пользователь, нажми Да и попрощайся со своей системой, ибо мы сможем с ней делать, что захотим».
Кстати, обратите внимание на NOT VERIFIED. Означает, что у нас не доверительный сертификат. Чтобы получить доверительный, нужно обращаться в специальные службы в инете и даже платить деньгу.
Но вернемся к нашим баранам. При обращении к буферу обмена мы снова получим исключение вида:
java.security.AccessControlException: access denied (java.awt.AWTPermission accessClipboard)
Очень жаль. Ну что же, не получилось сейчас - получится в другой раз. До свидания.
Шучу. На самом деле на этом моменте останавливаются все руководства по подписыванию апплетов, которые я встречал. Мол, подписанному апплету ничего не страшно. Пусть им всем будет стыдно.
Короче, следующий финт для того, чтобы наше обращение к буферу обмена заработало:
III. Изменить исходный код.
Вместо вызова вида:
clipboard = toolkit.getSystemClipboard()
нужно написать вызов вида:
clipboard = (Clipboard) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return toolkit.getSystemClipboard();
}
});
После этого нужно перекомпилировать свой JAR и повторить шаг II (тем, кто читал с конца мое сообщение - респект).
Вот в общем-то и все. Должно работать. Надеюсь, что кому-то это пригодится, и он не будет столько своей жизни тратить на эту ерунду, сколько потратил я. Нехай проблеми i негоди не роблять вам в життi погоди (С). До новых встреч в эфире.
Скачать и установить java апплет
Для установки и последующей настройки КриптоПро системы «Банк-клиент Онлайн» вам потребуется скачать java апплет для «ВТБ 24». Скачать можно бесплатно на страничке http://www.java.com/ru/ . Этот компонент понадобиться, если вы будите использовать в своей работе такие браузеры, как Mozilla Firefox, Opera, Internet Explorer. Но это не единственные браузеры, которые поддерживает данная система.
Установка java апплет проходит в два этапа:
- это установка самой платформы yava SE Runtime Environment;
- установка java апплета.
Если java стоит на вашем персональном компьютере, первый этап следует пропустить. Кстати, ПК не попросит вас установить данный компонент. Установка проходит в пять шагов:
- нажмите «Загрузить» скрипт;
- нажмите «Согласиться и начать загрузку»: файл с расширением.exe для операционной системы Windows;
- далее следует «Сохранить» полученный файл и запустить его (щелкнув два клика левой клавишей мышки);
- нажмите кнопку «Install»;
- после того, как процесс установки завершится, вам останется нажать на кнопку «Close». Это будет означать, что установка завершилась.
Настройка скрипта
Настройка осуществляется через «Пуск» в «Панеле управления». Затем откройте контрольную панель. Вам останется только произвести отключение протоколов: TLS 1.1 и TLS 1.2. Сделать это просто: снимите с них галочки напротив. Аналогичным образом отключаем «Use SSL 2.0 compatible ClientHello format». Все готово.
В статье, я расскажу как исправить ошибку Java апплет не загружен. На протяжении более чем десятилетия существовало большое количество веб-технологий. Так, например, для мультимедиа и простых игр использовался Flash, а для проведения операций, предъявляющих высокие требования к безопасности – ActiveX и Java. Но если разработанная Microsoft ActiveX уже давно канула в лету, то Java EE продолжает быть актуальной до сих пор. И дело не в том, что не существует достойных и более простых для конечного пользователя аналогов (они-то как раз появились несколько лет назад), проблема в том, что некоторые организации вложили десятки и сотни тысяч долларов в разработку приложений на основании этих технологий, и они просто так не могут от них отказаться. Именно поэтому, пользователи при попытке войти в определенный сервис могут видеть сообщение: Java апплет не загружен, что делать если вы повстречали его мы как раз и рассмотрим ниже.
У некоторых клиентов ВТБ24 при попытки зайти в ВТБ24 онлайн возникает ошибка. Она как раз связана с тем, что Java апплет либо не установлен в системе, либо он отключен.
Чтобы исправить эту ошибку с загрузкой Java и без проблем войти в панель управления счетом потребуется выполнить ряд простых действий.
Что делать, если Java апплет не загружен
В первую очередь потребуется установить само программное обеспечение. Если оно загружено, но не включено, все равно скачайте – пусть будет установлена самая свежая версия. Для этого:
- Посетите страницу загрузки Java на официальном сайте ;
- Ресурс должен самостоятельно определить операционную систему и предложить ссылку на загрузку нужной версии ПО;
- Кликните на красную кнопку «Загрузить Java бесплатно»;
- После этого сразу начнется процесс загрузки;
- Запустите скаченный файл и проследуйте инструкциям;
- Перезагрузите браузер.
Следует отметить, что в Google Chrome (начиная с 42-й версии) апплет Java официально не поддерживается, так как корпорация считает соответствующую технологию устаревшей. Поэтому, чтобы воспользоваться Java запустите другой веб-браузер, например, FireFox.
Чтобы проблем с Java не возникало, выполните следующие действия:
- Запустите Firefox (если он отсутствует, то скачайте и установите его с официального сайта);
- Откройте меню программы и нажмите на «Дополнения»;
- Оказавшись на соответствующей странице, перейдите на вкладку «Плагины»;
- Напротив пункта «модуль платформы Java» будет переключатель – переведите его в положение «Всегда включать» (если он уже включен, то ничего не делайте);
- Можете перезагрузить браузер.
После выполнения указанных действий заходите на интересующий вас сайт – весь его функционал (конечно, если он не использует других сторонних технологий) будет работать, а ошибки с загрузкой Java апплет не возникнет.
Можно ли обойтись без Java
Если у вас нет необходимости использовать веб-приложения (как в случае в банковским клиентом ВТБ24), созданные на основании Java EE, тогда соответствующий апплет вам ни к чему. Постепенно даже крупные компании переходят на более актуальные сейчас для веб-а технологии, делая взаимодействие с функциями их сервисов намного проще для конечного пользователя.
Вконтакте
Java для чайников. Урок 3. Простой апплет.
Наконец то мы подошли к самому главному: программированию на Java для Web, ибо сегодня мы напишем свой первый апплет. Конечно, начнем с самого простого, с "Hello World!". И так, вот текст этого апплета:
import java . applet . Applet ; import java . awt . Graphics ; Public class HelloApplet extends Applet { Public void paint ( Graphics g ) { G . drawString ( "Hello, world!" , 0 , 50 ); } } |
В данном примере мы подключаем библиотеки Applet - для доступа к классу апплета и Graphics - для использования графических функций. В апплетах мы не можем выводить на экран текст средствами библиотеки System, как мы это делали при написании консольного приложения (см. и ). Поэтому тут мы будем использовать немножко другие методы. В частности, класс Graphics , который предназначен для рисования в области поля апплета. И еще одно отличие от консольного приложения. Тут нет класса с методом main(). Для реализации апплета мы объявляем класс, дочерний от класса Applet:
public class HelloApplet extends Applet |
Это значит, что наш новый класс HelloApplet - будет иметь все те же поля и методы, что и Applet, за исключением тех методов, что мы переопределили. В данном случае это paint - метод, отвечающий за прорисовку объекта. Программа, помещенная в нем, будет запускаться каждый раз, когда будет происходить отрисовка апплета. В данном случае эта программа, состоящая всего из одной строки:
g . drawString ( "Hello, world!" , 0 , 50 ); |
будет рисовать на экране текст "Hello, world!" в точке с координатами 0,50.
И так, компилируем программу. У нас должен появиться файл HelloApplet.class. Теперь тестируем его, создав простейший апплет содержащий HTML- файл:
|