Tag: java web start

什么阻止Javavalidation具有多个签名算法的签名jar

快速背景:我们发布了一个webstart应用程序,其中包括我们自己的应用程序jar和众多第三方jar。 Webstart要求jnlp文件引用的所有分布式jar都由单个证书签名。 因此,我们使用自签名证书签署所有jar子(我们的jar子和第三方jar子)。 一些第三方jar子已经由生产它们的一方签署,但我们只是再次签署它们,这很好。 到现在。 问题:我们最近从Java 6迁移到Java 7,突然webstart拒绝加载一些jar,抱怨:“无效的SHA1签名文件摘要”。 这只发生在一些jar子而不是其他jar子上,并且在那些失败的jar子中出现的共同线程似乎有多个签名。 在搜索SO和互联网之后,似乎Java的jarsigner的默认签名算法在Java 6和Java 7之间发生了变化,从SHA1到SHA256,并且各种人都建议使用“jarsigner -digestalg SHA1”来解决validation问题。 我试过了,果然我们的多重签名jar子validation了。 所以这似乎是我们问题的解决方法。 从我可以收集到的内容来看,第三方签名似乎是SHA1签名,我们使用默认签名 – SHA256进行签名 – 导致签名混合。 当我使用’-digestalg’开关强制SHA1时,我们有两个相同类型的签名,现在validation工作正常。 所以似乎问题是由多个签名使用不同的算法引起的? 或者是否还有其他一些我缺失的因素。 问题: 为什么无法使用SHA1 + SHA256validation,但使用SHA1 + SHA1进行validation? 有技术原因吗? 安全政策的原因? 为什么不能validation两个签名是否正确? 使用(继续使用)SHA1而不是现在默认的SHA256有什么缺点吗?

Java Webstart和URLConnection缓存API

URLConnection缓存API的描述表示为最后一句: Java 2 Standard Edition中没有URLConnection缓存的默认实现。 但是,Java插件和Java WebStart确实提供了一个开箱即用的function。 在哪里可以找到有关Webstart ResponseCache的更多信息? Webstart的哪些版本在哪些平台上激活缓存? 它在哪些情况下是活跃的? 只有HTTP获取? 可以配置吗? 源代码是否可用? 背景: 情况1 使用以下(groovy)代码 def url = new URL(‘http://repo1.maven.org/maven2/’) def connection = url.openConnection() def result = connection.inputStream.text 我希望每次执行代码时都会联系服务器。 但是当执行时 Java Web Start 10.9.2.05 JRE-Version verwenden 1.7.0_09-b05 Java HotSpot(TM) Client VM 行为是不同的。 第一次执行代码时,会联系服务器。 代码的所有后续执行都不涉及与服务器的任何通信(使用wireshark跟踪)。 但它变得更加奇怪。 重新启动webstart应用程序后,第一次执行代码时,请求URL为http://repo1.maven.org/maven2/.pack.gz ,结果为404 。 仅请求原始url导致304 NOT MODIFIED 。 所有后续执行都不涉及与服务器的任何通信。 […]

Java Web Start – 如何清除缓存(或从用户的角度更新应用程序)

在浏览器中下载JNLP后,它会被缓存,因此不需要再次下载,这很好。 但是,因此,如果我更新JNLP使用的JAR,用户仍将看到缓存中的旧版本应用程序。 您可以通过在终端中运行来清除缓存: javaws -uninstall 但显然,当您的更新准备就绪时,您无法期望用户运行此操作。 它应该更加无缝。 一个想法是更改jnlp文件名,以便下载新文件,如MyJWS-01.jnlp,以包含版本号。 还有别的办法吗?

Java 7更新45破坏了我的Web Start SWT应用程序

我维护了一个使用WebStart启动的Eclipse RCP应用程序。 Java 7 u45进行了一些安全性更改,现在我的应用程序在启动时崩溃了。 我已添加到清单中: 权限:所有权限 代码库:* Trusted-Library:是的 这删除了控制面板中的所有警告消息。 但是在尝试加载我的IApplication实现时,我仍然有一个类加载器问题,可能是我要加载的第一个类。 这是更新45的新function。

如何在预加载器中处理java web start(jnlp)下载进度?

问题 我的应用程序的预加载器处理特定于应用程序的初始化。 现在我正在尝试扩展它,以便预加载器还显示下载的应用程序JAR的进度。 TL; DR 为什么预加载器在阶段2期间没有加载,因为这应该处理PreloaderFx::handleProgressNotification(); 我想跟踪JAR的下载? 2016年3月14日更新 :使用DownloadServiceListener解决这个问题的方法是什么? 如何将其连接到JavaFX阶段? 文档 根据Oracle的说法 ,启动应用程序有4个阶段: 阶段1:初始化 :Java Runtime的初始化和初始检查确定在启动应用程序之前必须加载和执行的组件。 在此阶段,将显示启动画面。 默认是这样的: 阶段2:加载和准备 :从网络或磁盘缓存加载所需的资源,并进行validation过程。 所有执行模式都会看到默认或自定义预加载器。 在此阶段,应显示我的自定义预加载器。 阶段3:特定于应用程序的初始化 :应用程序已启动,但可能需要在其完全正常运行之前加载其他资源或执行其他冗长的准备工作。 目前,我的自定义预加载器显示如下: 阶段4:应用程序执行 :显示应用程序并准备使用。 在我的例子中,显示了一个登录窗口,用户可以继续。 我的情况 我注意到的第一件事是,在阶段2中 ,没有显示处理应用程序JAR下载的默认JavaFX预加载器。 因此,用户感觉程序没有提前启动或终止,使他们多次打开JNLP文件。 下载JAR后,我们进入阶段3并显示预加载器。 但是,我希望我的自定义预加载器能够处理ProgressBar中的下载进度(阶段2)。 我使一切尽可能简单,以便在应用程序启动期间跟踪发生的事件。 这是基于Jewelsea和Oracle示例的示例 : 预载: public class PreloaderFX extends Preloader { Stage stage; //boolean noLoadingProgress = true; public static final String APPLICATION_ICON […]

Java Web start – 无法加载资源

当我浏览服务器的IP地址时,我有一个用java web start加载的jar。 一旦我尝试服务器名称,我得到以下exception: com.sun.deploy.net.FailedDownloadException:无法加载资源: 在com.sun.deploy.net.DownloadEngine.actionDownload(未知来源) 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) at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source) at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source) 在com.sun.javaws.LaunchDownload $ DownloadTask.call(未知来源) at java.util.concurrent.FutureTask $ Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source) 在java.lang.Thread.run(未知来源) 包装exception: java.io.FileNotFoundException: at sun.reflect.GeneratedConstructorAccessor2.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at […]

可以在沙盒中运行的Mini-OSGi(如AppEngine或WebStart)?

我非常喜欢OSGi实现的模块化bundle的概念。 我也喜欢“托管部署”服务,如Google AppEngine(用于Web应用程序)或Java WebStart(用于客户端软件)。 这两个想法似乎在概念上相互补充。 但是,OSGi标准包含一些function,使得像Felix或Equinox这样的实现无法在沙盒虚拟机(如AppEngine或Webstart)之上运行。 在这些环境中,无法直接访问文件系统,例如,这会阻止用于存储持久性捆绑状态和本机库的OSGi捆绑缓存。 现在,我没有兴趣使用本机库或具有持久的bundle状态。 是否有一些框架实现了OSGi的核心包和服务概念(理想情况是以兼容的方式使OSGi包可以按原样部署到它中),但是可以在没有包缓存的情况下工作(以及沙箱中没有的其他工具) ? 我正在寻找类似于在AppEngine或WebStart上运行的有限版本的Felix。 当然,如果WebStart引擎和Google AppEngine刚刚提供了开箱即用的OSGi框架服务,那也很棒…… 更新: AppEngine的另一个非常有限的方面是你无法启动新的线程。 这可以防止(除其他外)异步bundle生命周期管理。 显然不是WebStart的问题。

如何区分任务管理器进程列表中的进程列表中的不同JavaWS应用程序?

我正在使用JavaWS来启动一个应用程序,然后如何在用户的机器中检查该应用程序是否正在运行,因为它在任务管理器进程列表中的名称不是我在JNLP文件中给出的。 注意。 我检查了任务管理器进程列表,但进程的名称是javaw.exe,所有使用JavaWS的应用程序都具有相同的名称。 我的问题是,如果用户启动了多个JavaWS应用程序,那么我们如何识别我们要检查的进程? 我想到了获得过程的PID,但遗憾的是没有任何方法可以获得过程的PID。 我在Windows上工作。

java web开始可以在没有JRE的设备上运行吗?

我一直在学习Java web start,并对它的function感兴趣。 但是,我的Java应用程序是否可以在没有安装JRE(Java环境)的设备上运行并从浏览器运行? 我试过用Java web start从浏览器下载一个样本jar但我的应用程序无法运行。 第二个问题:Java web start中是否有一项function可以检查已安装的JRE并自动设置环境?

在java web start应用程序中禁用字节码validation

我有一个java web start应用程序,我需要从jnlp文件中禁用字节码validation。 这可以通过设置JAVAWS_VM_ARGS =“- noverify ”或设置-Xverify:none来轻松完成,但此处的文档说web start不支持在jnlp文件中添加这些参数。 我试过这个: 在资源标签下,它跳过-noverify并接受另外两个。 任何帮助表示赞赏。