尝试通过Web启动运行jar时连接被拒绝异常

时间:2009-12-04 14:03:07

标签: java

尝试通过java web start运行我的jar时遇到以下异常:

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的jnlp和jsp页面位于ValidatorWEB文件夹的根目录。

谷歌搜索没有帮助。我试过关闭我的防火墙,它仍然做同样的事情。我在Glassfish中有适当的Mime类型集。还有其他我忘了做的事吗?

5 个答案:

答案 0 :(得分:1)

你知道http://localhost实际指向的是什么吗?它指向在端口80的 localhost 上运行的Web服务器.Localhost == 127.0.0.1 ==本地计算机。

由于Webstart又称JNLP应用程序在客户端计算机上运行,​​它将尝试连接相同(本地)计算机上的Web服务器。你不想那样做。将URL更改为指向运行Web应用程序的服务器计算机上的实际Web服务器以及要从中下载JNLP的位置。

答案 1 :(得分:1)

所以我明白了。问题出在我指定基本网址的地方:

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

当我部署到Glassfish时,我将访问Web应用程序的URL实际上是:

http://localhost:8080/ValidatorWEB/

我不得不将我的代码库更改为:

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

在部署到远程服务器时,我必须牢记这一点。

感谢所有的输入!

答案 2 :(得分:0)

答案 3 :(得分:0)

localhost之后的空格让我产生怀疑 - 你是否有可能在某处定义了带有尾随空格的主机名,并且web start没有任何主机名?

另外,您是否尝试过wget ting(或类似)列出的jnlp网址?来自请求的响应将让您了解当Java发出相同请求时发生的情况。

答案 4 :(得分:0)

我不知道它是否相关但在给出资源jar的地址时,我不会使用“WEB-ıNF/ lib”,客户端机器无法看到web-inf内部,你应该把那个jar放在web应用程序里面而不是web- INF。