我需要动态地将参数传递给JNLP,我尝试使用扩展的servlet,JnlpDownloadServlet然后包含一个jsp,其中写入了所有JNLP XML.
但是当我调用下载的JNLP时,我得到了BadFieldException.
public class TestServlet extends JnlpDownloadServlet {
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
res.setContentType("application/x-java-jnlp-file");
request.getRequestDispatcher("/jnlp.jsp").include(request, res);
}
Run Code Online (Sandbox Code Playgroud)
用于转储动态JNLP:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase=<%=request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ request.getContextPath() + "/" %> href="test.jnlp">
<information>
<title>Demo</title>
<vendor>Sun Microsystems, Inc.</vendor>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="lib/test.jar" main="true" />
</resources>
<application-desc name="Dynamic Tree Demo Application" main-class="org.Test" width="300" height="300">
<argument><%=request.getParameter("arg1")%></argument> …Run Code Online (Sandbox Code Playgroud) 为了保护我们的用户不受appiulet小程序的影响,我想禁用Java浏览器插件.
在测试(JRE 7)中,我注意到停用插件也会禁用Java Web Start.我们需要使用一个Web Start应用程序,因此似乎我们别无选择,只能启用浏览器插件.
这是正确的,还是有办法在不启用浏览器插件的情况下使用Web Start?
测试步骤:
在命令窗口中,我输入以下命令
出现以下错误框:

它的消息转化为
无法下载此应用程序,因为已停用Java over Internet.您可以通过Java控制面板在此系统上激活Java
我还没有看到在Java控制面板中激活"Java over Internet"的选项.当我启用浏览器插件时,可以启动Java Web Start应用程序.
如果我执行JNLP文件的本地副本,则会出现相同的错误消息
加哇人
<path to local jnlp file>
jnlp文件(略微清理):
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="https://example.com/path/to/" href="webstartapp.jnlp">
<information>
<title>...</title>
<vendor>...</vendor>
<homepage href="..." />
<description>...</description>
<description kind="short">...</description>
<description kind="tooltip">...</description>
<offline-allowed />
</information>
<security>
<all-permissions />
</security>
<resources>
<j2se version="1.7+" initial-heap-size="128m" max-heap-size="256m" />
<jar href="Client/lib/Launcher.jar" main="true" />
</resources>
<application-desc main-class="com.veda.launcher.Start">
<argument>...</argument>
<argument>*</argument>
</application-desc>
</jnlp>
Run Code Online (Sandbox Code Playgroud) 我在appliation的jnlp描述符中使用快捷方式标记为我的应用程序创建桌面链接和菜单项.
如果这些快捷方式在客户端上被删除 - 如何在没有用户操作的情况下自动重新安装?是否有jnlp文件的配置选项?
(顺便说一句,我使用的是java6)
我有一个Java Web Start应用程序,我通过下载定制的JNLP文件从实时站点启动.
问题是,一旦加载了Java Web Start应用程序,应用程序就会退出而不会发出任何警告.我知道证书是正常的,因为当我从Java设置启用"从服务器显示站点证书时,即使它是有效的"选项,它会相应地显示一条消息.
我尝试从Java设置启用所有调试设置("启用跟踪","启用日志记录","显示applet生命周期异常")以及Java控制台,但没有运气缓存问题.
任何在Java Web Start开发/调试方面有更多经验的人都可以提供任何建议吗?
我必须为给定的WSDL文件实现webservice客户端.我使用SDK的'wsimport'工具从WSDL创建Java类,以及将webservice唯一的方法(enhanceAddress(auth, param, address))包装到一个简单的java方法中的类.到现在为止还挺好.Web服务功能正常,返回结果正确.代码如下所示:
try {
EnhancedAddressList uniservResponse = getWebservicePort().enhanceAddress(m_auth, m_param, uniservAddress);
//Where the Port^ is the HTTP Soap 1.2 Endpoint
}catch (Throwable e) {
throw new AddressValidationException("Error during uniserv webservice request.", e);
}
Run Code Online (Sandbox Code Playgroud)
问题现在:我需要获取有关连接的信息以及为了填充各种JMX值而可能发生的任何错误(例如COUNT_READ_TIMEOUT,COUNT_CONNECT_TIMEOUT,...)不幸的是,该方法没有正式抛出任何异常,所以按顺序获取有关的ConnectException细节,我需要使用getCause()的ClientTransportException,将被抛出.
更糟糕的是:我试图测试读取超时值,但没有.我在wsdl文件中更改了服务的位置,将请求发布到php脚本,该脚本只是永远等待而不会返回.你猜怎么着:Web服务客户端并没有超时,但将永远等待,以及(我30多分钟的等待后,杀死了应用程序).这不是我的应用程序的一个选项,因为如果其中一些被"卡住",我最终会用完tcp连接.
该enhanceAddress(auth, param, address)方法未实现,但使用javax.jws注释.*注释,意味着我无法查看/更改/检查实际执行的代码.
我有什么选择,但要扔掉整个wsimport/javax.jsw-stuff并实现我自己的soap客户端?
Hello All我正在编写一些软件,允许用户为我的软件包中的特定用途创建自己的Java类.显然,我的软件需要能够调用Java编译器来编译用户生成的类,以便在我的程序中使用.但是,我不想要求用户下载和安装整个JDK,以便他们可以访问javac Java编译器.我知道在Jave 6中有一个新的Java编译器API,但即使这样,只有JRE而不是JDK的用户在尝试实例化Java编译器工具时会得到一个空对象.
那么,什么是使我的程序能够编译Java类同时要求最终用户在他们的机器上安装JRE的最佳方法是什么?如果这不可能,那么我需要在用户机器上安装的最小库/ jar文件集是什么?
我想另一种可能性是使用JWS(javaws)通过Web启动应用程序.在这种情况下,我的软件是否可以不需要JDK(我认为主要是tools.jar)?我会以某种方式将tools.jar与我的软件捆绑在一起吗?
我正在使用Java Preferences API在swing/java应用程序中存储和检索小块信息.
现在我已经设置Java Web start从我的网页启动应用程序,我得到一个安全例外.为了摆脱这个异常,我必须提示用户权限.我拒绝这样做,因为我的应用程序不会做任何需要用户许可的事情.
这就是为什么我需要一个替代解决方案来存储从一个执行到另一个执行的几个键值.某种饼干或其他什么.你知道吗?
我正在开发Java Webstart应用程序.这应该从JNLP文件的资源部分中包含的JAR文件中收集资源.
应用程序语言是德语,因此JAR中的某些文件夹/文件包含字符'ä','ö','ü'或'ß'.如果我启动此应用程序,则抛出以下异常:
java.lang.IllegalArgumentException: MALFORMED
at java.util.zip.ZipCoder.toString(Unknown Source)
at java.util.zip.ZipInputStream.readLOC(Unknown Source)
at java.util.zip.ZipInputStream.getNextEntry(Unknown Source)
at com.sun.deploy.net.HttpDownloadHelper.decompressWrite(Unknown Source)
at com.sun.deploy.net.HttpDownloadHelper.download(Unknown Source)
at com.sun.deploy.cache.Cache.downloadResourceToTempFile(Unknown Source)
at com.sun.deploy.cache.Cache.downloadResourceToCache(Unknown Source)
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)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
如果我在notepad ++中打开JAR文件,则说编码是ANSI.所以,我将它改为UTF-8,但它甚至没有编译.
我正在使用Netbeans 7.2.对于开发,我将JAR文件包含为库,这样它在资源部分中列出.
我们如何使用Maven向第三方jar添加其他参数到清单文件.在Java 7_25版本之后,Java Web start需要在所有下载jar文件中添加代码库和权限.我想插入他们的歌唱时间.
如果您需要任何信息,请告诉我.提前致谢.
我注意到使用最新的插件(包含在java 8u31和7u75中)加载签名的applet要慢得多.我已经调试了很多情况,我发现问题与jnlp文件中引用的jar文件的大小直接相关.问题是,每次applet启动时,都会对缓存的jar文件进行一些"重新索引",这需要花费时间.
为了重现这个问题,我做了这个:我创建了一个最小的applet,在我用来部署它的jnlp文件中,我添加了几个不相关的.jar文件(甚至没有引用,所以类加载器不加载它们)相当大(例如30MB).当然我在jnlp中使用版本控制并捕获所有http流量以确保延迟不是因为流量(重新下载或证书撤销检查等).我在启用了跟踪的情况下运行applet,然后浏览了xml跟踪日志文件,找出了延迟的来源:它们总是来自JarSigningVerifier ....
有没有人见过这样的东西?
很容易看到并重现这种行为,我想知道是否有我忽视的东西.在过去几年中广泛使用applet,我完全迷失了可能发生的事情.我可以验证恢复到以前版本的插件(以及之前的所有其他版本)是否按预期工作.
我已经提交了oracle的错误报告,但我还没有收到回复.任何信息或想法都会有所帮助,TIA