Разъяснения по поводу предупреждений Java-апплета
Я работаю над развертыванием Java-апплета через JNLP. Функциональность апплета работает как положено, мои проблемы лежат в предупреждениях безопасности, отображаемых во время выполнения. Я интенсивно искал ответы о том, когда и почему они появляются без каких-либо достаточных ответов, поэтому я подумал, что я пытаюсь получить некоторые ответы здесь.
Предпосылки: Мой апплет подписан с использованием самозаверяющего сертификата, который также импортируется как доверенный центр сертификации (отображается предупреждение "безопаснее"). Я буду использовать настоящий сертификат от Thawte или Verisign в производстве, но пока этого должно быть достаточно. Внешние разрешения не требуются, и доступ к диску осуществляется только через JNLP.
Поскольку я хочу иметь возможность использовать FileSaveService и FileOpenService, я указал тег j2ee-application-client-permissions в части безопасности моего файла JNLP.
Javascript используется для вызова открытых функций в апплете.
Это происходит прямо сейчас: когда апплет загружен, я получаю приглашение безопасности, предупреждающее меня, что этот апплет будет работать с неограниченным доступом к системе. Предупреждение является доверенным видом с синим информационным дисплеем, а не желтым предупреждением. Почему я получаю это предупреждение? Будет ли это появляться всегда, даже если я буду использовать только библиотеки JNLP? Как определяется это предупреждение, сканируя мой код или читая некоторые настройки, которые я могу изменить? Есть ли список разрешенных классов для запуска без получения этого предупреждения?
Как только апплет загружается, и я пытаюсь открыть диалоговое окно файла, мне снова предлагается сообщить, что приложение запросило разрешения на чтение / запись.
Я предполагаю, что последующее предупреждение является предупреждением JNLP, поскольку оно впервые появилось, когда я начал использовать JNLP. Почему меня спрашивают как при запуске, так и во время использования? Нужно ли получать оба, и получу ли я оба, как только у меня будет соответствующий сертификат?
Самое главное, что я хотел бы избавиться от первого предупреждения, так как выглядит довольно страшно, чтобы позволить моему апплету работать с неограниченным доступом (тем более, что это вовсе не мое намерение!). Есть ли документация, которая проясняет, что вызывает предупреждения и как с ними бороться?
Изменить: файл проверен с Janela без ошибок. Все запускается как надо, это предупреждения, которые я хочу понять.
<script>
var attributes = {
id:'id',
codebase:'www.mydomain.com/jars/',
width:1,
height:1,
name:"Name"
};
var parameters = {
jnlp_href:"www.mydomain.com/jars/jnlp.jnlp"
}
deployJava.runApplet(attributes, parameters, '1.6');
</script>
Файл JNLP
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" href="/jars/jnlp.jnlp">
<information>
<title>Title</title>
<vendor>My Company</vendor>
<description>Description</description>
<description kind="short">Desc</description>
<offline-allowed />
</information>
<resources>
<j2se version="1.6+" />
<jar href="ext1.jar" main="false" download="eager"/>
<jar href="ext2.jar" main="false" download="eager" />
<jar href="mainJar.jar" main="true" download="eager"/>
</resources>
<applet-desc
name="name"
main-class="com.myCompany.applet.mainClass"
width="1"
height="1">
</applet-desc>
<security>
<j2ee-application-client-permissions/>
</security>
</jnlp>
1 ответ
Вам не нужно подписывать апплет. Если вы не подпишете, то первое предупреждение не появится.
http://docs.oracle.com/javase/tutorial/deployment/applet/security.html