我们刚刚发现每次重新启动JBoss时,我们所有的Java Web Start客户端都会重新下载所有的jar,而不是重用缓存的jar,即使我们的应用程序没有更改.
从我在网上看到的,Java Web Start做一个HTTP HEAD决定是否下载jar.所以我在我们的应用程序中的所有jar上运行了HTTP HEAD,发现在重启JBoss之后,所有jar的修改时间都发生了变化!
为什么会这样,我该如何解决?我的应用程序存档中的jar文件根本没有变化.据我所知,JBoss使用启动时间或部署时间作为修改时间.如果我理解正确的话,这将完全缩短Java Web Start使用先前运行的缓存jar的能力.
我们使用JBoss 6,如果这是一个问题.以前我们使用过JBoss 4.我想检查一下我们是否在JBoss 4下遇到了问题,但是我们现在对新JBoss有很多依赖关系,它需要做一些工作才能完成测试.
当一个帖子引起我的注意时,我正在浏览一些细节.
https://forums.oracle.com/forums/thread.jspa?messageID=9886607
如你看到的; &TOKEN=something在JNLP中,href被认为是一个特殊的关键字,并且&token有效.我不确定是不是这样.但想到浏览oracle网站以获取有关这些' keywords'的更多细节.找不到任何对此' TOKEN'的引用.所以想知道我们不应该在JNLP href中使用关键字列表吗?有人知道它是否正式在某处发布?或者可以建议一种方法来尝试搜索本地java安装中的那些?
我非常喜欢OSGi实现的模块化捆绑包的概念.
我也喜欢"托管部署"服务,如Google AppEngine(用于Web应用程序)或Java WebStart(用于客户端软件).
这两个想法似乎在概念上相互补充.
但是,OSGi标准包含一些功能,使得像Felix或Equinox这样的实现无法在沙盒虚拟机(如AppEngine或Webstart)之上运行.在这些环境中,无法直接访问文件系统,例如,这会阻止用于存储持久性捆绑状态和本机库的OSGi捆绑缓存.
现在,我没有兴趣使用本机库或具有持久的bundle状态.是否有一些框架实现了OSGi的核心包和服务概念(理想情况是以兼容的方式使得OSGi包可以按原样部署到它中),但是可以在没有包缓存的情况下工作(以及沙箱中没有的其他工具) ?
我正在寻找像AppEngine或WebStart上运行的有限版本的Felix.
当然,如果WebStart引擎和Google AppEngine只提供了开箱即用的OSGi框架服务,那也很棒......
更新: AppEngine的另一个非常有限的方面是你无法启动新的线程.这可以防止(除其他外)异步bundle生命周期管理.显然不是WebStart的问题.
我正在寻找使用Webstart Maven插件的完整应用程序的源代码.
有任何想法吗?
在Mac OS X上,10.9签名的Java Web Start应用程序默认被阻止,并显示以下消息:
"application.jnlp" can't be opened because it is from an unidentified developer.
Run Code Online (Sandbox Code Playgroud)

我知道可以削弱安全检查以允许任何应用程序运行,但这需要最终用户的手动干预.
是否可以"签署"Java Web Start应用程序,使其被识别为源自已识别的开发人员?
谢谢
我需要使用Jemmy创建一些gui测试,但我不知道如何使用javaws应用程序启动它.在教程/ examples/etc中是这样的:
new ClassReference("org.netbeans.jemmy.explorer.GUIBrowser")
.startApplication();
Run Code Online (Sandbox Code Playgroud)
这段代码打开了一个示例窗口,但是我怎样才能使用ClassReference对象打开*.jnlp文件?或者它是用java web start应用程序"连接"jemmy的另一种方式?
谢谢你提前.
正如我在最近的问题中明确指出的那样,Swing应用程序在使用Sun Webstart启动程序(至少从Java SE 6开始)运行时需要显式调用System.exit().
我想尽可能地限制这个hack,我正在寻找一种可靠的方法来检测应用程序是否在Webstart下运行.现在我正在检查系统属性"webstart.version"的值是否为空,但我在文档中找不到任何保证,该属性应由未来的版本/替代实现设置.
有没有更好的方法(最好不要停止对webstart API的依赖?)
我正在开发一个Java Applet,减少二进制代码的大小将使applet更快地打开并改善用户体验.
有什么办法可以减少类和/或jar文件的大小吗?我想确定我没有错过任何明显的技巧.
我知道在C++世界中,例如剥离调试符号的编译器选项可以产生巨大的差异,但我从来没有见过类似Java的东西.
自从Oracle推出的java 7更新25以来,我们的应用程序不再起作用.
最初,我们收到了一些关于Manifest文件中缺少的代码库和服务标签的警告,我们修复了该文件.
我们现在最终遇到的问题是在控制台中我们只得到以下几行:
#### Java Web Start Error:
#### null
Run Code Online (Sandbox Code Playgroud)
我们还得到一个应用程序错误对话框,其中包含以下消息:无法启动应用程序.
详细信息按钮在"例外"中提供以下详细信息:
java.lang.NullPointerException
at com.sun.jnlp.JNLPClassLoader.getPermissions(Unknown Source)
at java.security.SecureClassLoader.getProtectionDomain(SecureClassLoader.java:206)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at desktop.DesktopProxySelector.<init>(DesktopProxySelector.java:24) <- code smippet below
at desktop.Main.main(Main.java:139) <- code smippet below
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Thread.java:724)
Run Code Online (Sandbox Code Playgroud)
相关的代码部分是:
Desktop.Main.main …Run Code Online (Sandbox Code Playgroud) 我有一个企业java应用程序,它有很多jar,它们通过jnlp文件下载到客户端的jvm缓存中.当我启动应用程序时,我在Java控制台上获得以下堆栈跟踪:
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
at com.sun.deploy.ui.DialogTemplate.imageAvailable(Unknown Source)
at com.sun.deploy.ui.DialogTemplate.finalImageAvailable(Unknown Source)
at com.sun.deploy.ui.ImageLoader$2.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
at com.sun.deploy.ui.DialogTemplate.imageAvailable(Unknown Source)
at com.sun.deploy.ui.DialogTemplate.finalImageAvailable(Unknown Source)
at com.sun.deploy.ui.ImageLoader$2.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source) …Run Code Online (Sandbox Code Playgroud)