У меня есть апплет WebStart, который я развертываю, используя скрипт deployJava.Файл jnlp выглядит так:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jnlp codebase="" href="launch.jnlp" spec="1.0+">
<information>
<title>someApp</title>
<vendor>someCompany</vendor>
<homepage href="http://www.someCompanysWebsite.net"/>
<description>someDescription</description>
<description kind="short">someShortDescription</description>
<offline-allowed/>
</information>
<update check="background"/>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5+"/>
<jar href="mainJar.jar" main="true"/>
<jar href="lib1.jar"/>
<jar href="lib2.jar"/>
<jar href="lib3.jar"/>
<jar href="platform.jar"/>
<jar href="plugin.jar"/>
<jar href="slf4j-api-1.6.1.jar"/>
<jar href="slf4j-simple-1.6.1.jar"/>
</resources>
<applet-desc height="1" main-class="com.companyName.applet.appletClass" name="appletName" width="1">
</applet-desc>
</jnlp>
Как видите, мой апплет имеет размер 1x1, поэтому я не хочу ничего с ним отображать.Он просто служит для раскрытия некоторых java-методов в javascript.Поэтому, если я сделаю вызов javascript, например,
//javascript code
var applet = document.getElementById('appletName');
, я получу действительный дескриптор апплета и смогу вызывать его методы в javascript следующим образом:
//javascript code
applet.doStuff();
Конечно, у каждого апплета есть определенный метод isActive (), поэтому в моем коде JavaScript я могу проверить, как апплет полностью загружен:
//javascript code
function isFullyLoaded()
{
if ( !applet.isActive() ){
setTimeout('isFullyLoaded()',1000);
}
else
{
//do nice stuff requiring the applet is loaded
}
}
Однако, поскольку загрузка апплета может занятьв то время как я хотел бы иметь индикатор выполнения его загрузки.Беглый взгляд на Sun (или Oracle, если вы так склонны) показывает это: http://download.oracle.com/javase/tutorial/deployment/applet/customProgressIndicatorForApplet.html
Однако это подразумевает, что я хочу показать полосу загрузки или что-то еще, когда апплет загружается.Мне не нравится внешний вид апплета, и поэтому я просто хочу опрашивать загрузку апплета с помощью javascript, например, через некоторый промежуток времени:
//javascript code
alert(applet.getLoadingProgress());
Что мне делать и нужно ли изменить объявление jnlp или что-то в этом роде.Любые указатели или комментарии будут оценены.Обратите внимание, что я не хочу пользовательский индикатор выполнения, а просто структуру, чтобы я мог опрашивать прогресс с использованием JavaScript во время загрузки.
Приветствия.
Редактировать: @amol Я приведу к вашемуОбратите внимание, что развернутые апплеты и приложения JNLP во время их загрузки вызывают общий метод метода класса DownloadServiceListener (java.net.URL url, версия java.lang.String, long readSoFar, long total, int totalPercent) всякий раз, когда требуется один из jar-файлов.скачал.Знание общего количества банок и количества банок, которые еще предстоит загрузить, послужит прекрасным индикатором прогресса.Я также хотел бы обратить ваше внимание на то, что если вы отладите развертывание JNLP, вы увидите, что эти методы вызываются и регистрируются как события сетевого уровня.Итак, мой вопрос заключается в том, как освоить эти методы с помощью javascript, чтобы я мог получить некоторую оценку прогресса, так как я не хочу, чтобы пользователь смотрел на консоль java для оценки прогресса.Я не хочу также показывать загрузчик с неопределенным прогрессом, так как это легко реализовать, но без практического использования.