Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jnlp阻止下载我引用的JAR_Java_Jar_Reference_Jnlp - Fatal编程技术网

Java Jnlp阻止下载我引用的JAR

Java Jnlp阻止下载我引用的JAR,java,jar,reference,jnlp,Java,Jar,Reference,Jnlp,我已经开发了一个jnlp文件,当客户端从他/她的浏览器下载它时,它工作正常。到目前为止没有问题,但客户端还可以访问jnlp引用的jar文件,并最终下载它们 我不希望其他人通过从浏览器写入路径来下载我的JAR。我只是想让jnlp可以直接从浏览器访问 我怎样才能解决这个问题 它没有“修复”。如果启动应用程序的JWS客户端可以访问JAR,那么也可以通过直接获取来访问JAR。如果通过JSP或servlet动态生成jnlp会怎么样(请参见此处的示例) 在这种情况下,您可以编写一个过滤器来实现检索文件的策略

我已经开发了一个jnlp文件,当客户端从他/她的浏览器下载它时,它工作正常。到目前为止没有问题,但客户端还可以访问jnlp引用的jar文件,并最终下载它们

我不希望其他人通过从浏览器写入路径来下载我的JAR。我只是想让jnlp可以直接从浏览器访问


我怎样才能解决这个问题

它没有“修复”。如果启动应用程序的JWS客户端可以访问JAR,那么也可以通过直接获取来访问JAR。

如果通过JSP或servlet动态生成jnlp会怎么样(请参见此处的示例)

在这种情况下,您可以编写一个过滤器来实现检索文件的策略(基于cookie?)。如果未设置cookie,则可以禁用JAR的下载


请参阅以下内容,您可以使用提供的JnlpDownloadServlet作为阻止访问的方法。JnlpDownloadServlet(在JDK提供的示例中查找)将处理Jar文件的请求并对其进行区分。如果您将web.xml文件设置为

<servlet>
    <servlet-name>JnlpDownloadServlet</servlet-name>
    <servlet-class>com.sun.javaws.servlet.JnlpDownloadServlet</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>JnlpDownloadServlet</servlet-name>
    <url-pattern>/app/*</url-pattern>
 </servlet-mapping>

JnlpDownloadServlet
com.sun.javaws.servlet.JnlpDownloadServlet
JnlpDownloadServlet
/应用程序/*
然后对/app中的文件的所有请求都将通过这个servlet。这将阻止用户通过简单的浏览来查看可用文件,但是如果他们知道文件名,他们仍然可以创建一个get请求来通过servlet获取它


如果这是一个问题,那么您还可以使用web.xml中的安全约束设置对该servlet的访问设置安全性(与任何其他servlet一样)。如果您添加了这一点,那么javaws启动器将要求用户在下载文件之前提供有效的凭据。我使用BASIC作为auth方法,因为我不确定javaws客户机是否会尊重其他客户机。

这似乎是有益的。在寻找方法时,一位朋友告诉我一种方法。这里是:如果我创建一个虚拟的webProject,将所有的东西(jnlp和JAR)放在这个项目中,并使用web.xml来防止我的JAR被直接访问下载,该怎么办。真的有可能吗?如果有,怎么可能?你能举一个例子吗?看看这个-它有某种关联:一个更简单的解决方案是检查“用户代理”,如果不是JNLP,就禁止下载。有关过滤器的工作方式,请参见: