соединение отклонено исключение при попытке запустить банку через веб-запуск - PullRequest
3 голосов
/ 04 декабря 2009

Я получаю следующее исключение при попытке запустить jar-файл через java web start:

com.sun.deploy.net.FailedDownloadException: Unable to load resource: http://localhost   /ValidatorWEB/validator.jnlp
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)

Это исключенное завершение:

java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)

Вот мой файл .jnlp:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://localhost/ValidatorWEB/" 
href="validator.jnlp">
<information>
    <title>Validator</title>
    <vendor>My Company</vendor>
</information>
<resources>
    <!-- Application Resources -->
    <j2se version="1.6+"
          href="http://java.sun.com/products/autodl/j2se"/>
    <jar href="WEB-INF/lib/validator.jar" main="true" />

</resources>
<application-desc
     name="Validator"
     main-class="webstartComponentArch.DynamicTreeApplication"
     width="300"
     height="300">
 </application-desc>
 <update check="background"/>

Я развернул все это как простую WAR на glassfish v2.1 на моей локальной машине . Validator.jar находится в WEB-INF / lib, а страница jnlp и jsp, к которой я обращаюсь к jnlp, находится в корне папки ValidatorWEB.

Поиск в Google не помог. Я попытался выключить брандмауэр, и он все еще делает то же самое. У меня есть соответствующий набор Mime-типа в Glassfish. Есть что-то еще, что я забыл сделать?

Ответы [ 5 ]

1 голос
/ 04 декабря 2009

Так что я понял это. Проблема была в том, где я указал базовый URL:

<jnlp spec="1.0+" codebase="http://localhost/ValidatorWEB/" href="validator.jnlp">

При развертывании на Glassfish URL-адрес, через который я получаю доступ к веб-приложению, фактически равен:

http://localhost:8080/ValidatorWEB/

Мне пришлось изменить свою кодовую базу, чтобы прочитать:

<jnlp spec="1.0+" codebase="http://localhost:8080/ValidatorWEB/" href="validator.jnlp">

Об этом я обязательно должен помнить при развертывании на удаленном сервере.

Спасибо за все комментарии!

1 голос
/ 04 декабря 2009

Вы знаете, на что действительно указывает http://localhost? Он указывает на веб-сервер, работающий по адресу localhost на порту 80. Localhost == 127.0.0.1 == локальная машина.

Когда приложения Webstart aka JNLP работают на компьютере клиента , он попытается подключиться к веб-серверу на той же (локальной) машине. Вы не хотите этого делать. Измените URL-адрес, чтобы он указывал на фактический веб-сервер на компьютере server , на котором запущено ваше веб-приложение и откуда должен загружаться JNLP.

0 голосов
/ 04 декабря 2009

Я не знаю, связано ли это, но, давая адрес ресурса jar, я бы не использовал "WEB-ıNF / lib", клиентская машина не может видеть внутри web-inf, вы должны поместить этот jar внутри веб-приложения, а не внутри инф.

0 голосов
/ 04 декабря 2009

Пробелы после localhost вызывают у меня подозрение - есть ли вероятность, что вы определили имя хоста с конечными пробелами где-нибудь, и в веб-запуске его нет?

Кроме того, вы пытались просто wget найти (или подобный) указанный URL-адрес jnlp? Ответ на запрос позволит вам увидеть, что происходит, когда Java делает тот же запрос.

0 голосов
/ 04 декабря 2009

Как насчет файла политики? Смотрите здесь: http://blogs.oracle.com/monzillo/entry/policy_files_the_securitymanager_and

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...