是否可以获得Java Web Start应用程序的线程转储?如果是这样,怎么样?
如果有一个简单的解决方案,这将使非开发人员(客户)能够创建一个线程转储,这将是很好的.或者,是否可以通过编程方式创建线程转储?
在Java Web Start控制台中,我可以按't'获取线程列表,但不包括stacktraces.
如果答案需要某些Java版本,请说明.
我有这个java swing应用程序,我打算通过互联网销售.目前,我倾向于使用java webstart部署应用程序.该产品将被许可用户仅在一台计算机上使用该程序.我担心这种模式的盗版行为.我想安装一些安全功能来强制执行许可证模型.目标是至少使许可用户难以将已安装的产品(包括许可证密钥)复制到未经许可的用户.以下是我现在看到的选项:
每次启动程序时,强制用户使用用户名/密码向母船进行身份验证.
只需在注册并付费后在用户PC上的某处(隐藏?)安装许可证密钥即可.在运行时,验证是否安装了有效的许可证密钥.
使用/构建基于用户计算机硬件指纹的安全包.每次启动应用程序时都会计算此指纹,并使用某种哈希值与本地安装的许可证密钥进行比较.此许可证密钥仅对此硬件指纹有效.
这里的一个问题是,一旦安装了这个应用程序,除了使用java webstart检查应用程序更新之外,应用程序没有任何运行时需要联系母船.应用程序在本地执行的所有操作都会使用swing将结果显示给用户.因此,任何涉及母船的解决方案基本上都意味着构建服务器基础设施仅用于许可证验证.
我想我正在寻找的东西是基于java的,至少在某种程度上是安全的,易于部署并且对用户来说并不痛苦.您使用了哪种安全/许可方法?
编辑:我应该补充一点,我不一定要寻找一个银弹来防止绝对每个人都打败安全.总会有人有足够的时间来找到完成任务的方法.我不是那么关心这些家伙.我基本上希望让临时用户只需复制许可证密钥并发送给他的好友.正确实施后,该解决方案应该让临时用户相信购买它更简单.
我正在通过Web Start在Mac OS X Leopard上运行Java 32位应用程序.我需要确保VM以32位模式加载.我怎样才能在JNLP中做到这一点?
我正在尝试使用java SSLRMIClientSocketFactory和SSLRMIServerSocketFactory设置双向SSL后配置客户端/服务器应用程序.我知道要在客户端上设置密钥库和信任库,我需要设置-Djavax.net.ssl.trustStore和-Djavax.net.sslkeyStore.
我理解它的方式Java web start下载jnlp并验证jar并在沙箱中启动Client java应用程序,然后通过RMI连接到服务器应用程序.问题是当应用程序在此沙箱中运行时,默认的信任库和密钥库与java Web Start使用的不同.相反,没有默认密钥库,默认信任库是$ JAVA_HOME/jre/lib/security/cacerts
有没有办法使用javaws使用的相同信任库和密钥库?理想情况下,我想使用浏览器使用的相同的可信证书和客户端证书(以及扩展javaws).这种方式如果用户通过Java控制面板配置其证书,则应用程序将使用相同的证书.
Google Chrome不会自动启动JNLP文件,因此我向我们的用户推荐此解决方案.它工作但下载的JNLP文件仍保留在下载文件夹中.手动删除它们很麻烦.
我想在Java应用程序中添加一个函数:
我可以获取启动Java应用程序的下载JNLP文件的文件路径吗?因此,我们的Java应用程序jar已签名并可以访问本地资源.
我在构建路径中尝试发布.war package包含Web Start应用程序时遇到了很多麻烦.commons-configuration-1.3.jar(com.sun.deploy.net.JARSigningException)
我已经尝试清理javaws缓存,重新安装应用程序,甚至重新安装java (1.6.0_24).
NetBeans IDE 6.8 (Build 200912041610)创建JNLP应用程序时,这是我的一小段输出:
Warning:
The signer certificate will expire within six months.
Signing JAR: D:\Java\workspace\OTP\DeskOTP\atual\build\cluster\modules\ext\commons-configuration-1.3.jar to D:\Java\workspace\OTP\DeskOTP\atual\build\jnlp\app\br-com-petrobras-ep-gedig-gedigdesktoplibrary\ext-commons-configuration-1.3.jar as jnlp
Run Code Online (Sandbox Code Playgroud)
然而,当我试图跑步时,我得到了一个JARSigningException这个罐子.
所以,我决定解决此问题,禁用此验证.我相信我可以决定并告诉jvm不要核实我的罐子(我的责任).
无论如何要告诉jvm或javaws永远不要验证未签名jars?
嗨我有Java Webstart的问题.我们有一个JNLP配置,其中启用了版本控制,即:
<property name="jnlp.versionEnabled" value="true"/>
Run Code Online (Sandbox Code Playgroud)
我们正在使用每个jar的版本号,例如:
<jar href="project.jar" version="2.5.7.0"/>.
我们也正在使用Maven Jar签名者插件签署我们的应用程序罐.
到目前为止你说的一切都很好.
那么每次我们执行应用程序的新版本时,我们都会使用每个jar的新版本号更改JNLP文件(并非所有jar更改版本),但与上面的project.jar示例一样,我们说这个版本号从2.5增加. 7.0至2.5.7.1.例如
<jar href="project.jar" version="2.5.7.1"/>.
当我们的用户通过JNLP文件下载新应用程序时,他们会收到以下错误:
#### Java Web Start Error:
#### JAR resources in JNLP file are not signed by same certificate
Run Code Online (Sandbox Code Playgroud)
我已经向Webstart添加了额外的DEBUG,并在Java Concole中发现了以下错误:
security: Validating cached jar url=http://servername/lib/project_V2.5.7.1.jar ffile=C:\Documents and Settings\username\Application Data\Sun\Java\Deployment\cache\6.0\10\57344cca-719709af-2.5.7.1- com.sun.deploy.cache.CachedJarFile@11e1bbf
security: Have 0 common certificates after processing http://servername/lib/project.jar
network: Remove cache entry: http:///lib/project__V2.5.7.1.jar
Run Code Online (Sandbox Code Playgroud)
似乎Webstart正在尝试检查名为project_V2.5.7.1.jar(不存在)的jar的本地缓存,因为它是新版本/下载的一部分.
由于找不到JAR,因此假定证书不匹配 - 因此错误:
JAR resources in JNLP file are not signed by same certificate.
Run Code Online (Sandbox Code Playgroud)
我假设这是Webstart错误!这让我们感到非常痛苦,因为我们必须在每次发布之前手动清除webstart缓存 - 对于每个用户. …
32位Windows 7上的Java 7 - Java Webstart - 无法加载资源
我无法在32位Windows 7系统上启动任何java webstart应用程序.例如ArgoUML - http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp Java 6的一切正常,但是使用Java 7我遇到了这样的错误:
无法加载资源:java.io.IOException:写入服务器或java.net.SocketException时出错:连接重置
Java version:
Java Web Start 10.7.2.11
Using JRE version 1.7.0_07-b11 Java HotSpot(TM) Client VM
Run Code Online (Sandbox Code Playgroud)
这是跟踪日志:
Log started: pe, 21 syys 2012 21:04:19 +0300
basic: Java part started
basic: jnlpx.jvm: C:\Program Files\Java\jre7\bin\javaw.exe
basic: jnlpx.splashport: 52540
basic: jnlpx.remove: true
basic: jnlpx.heapsize: NULL,512m
network: Loading user-defined proxy configuration ...
network: Done.
network: Browser is ChromeHTML
network: Browser is IE
network: Loading … Java 7更新51:我的应用程序是java web start类,其中我们已经解决了jar,JNLP文件中的所有安全措施并使用受信任的权限签署了jar文件,但最新更新每次都提示用户确认消息有关Publisher名称.消息没有任何复选框可以忽略,因为更新45和更进一步,所以请澄清这是此更新的正常行为或否则需要克服相同的任何步骤.

****解:****
Application-Library-Allowable-Codebase: *
Run Code Online (Sandbox Code Playgroud)
在我的情况下,此属性解决了复选框问题
我正在使用maven程序集插件生成包含在EAR中的应用程序客户端.
但是,无论出于何种原因,它都不包括主类.我无法弄清楚出了什么问题.
我的Maven程序集插件:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<id>my-program</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.program.my.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
由此产生的MANIFEST.MF:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: me
Build-Jdk: 1.8.0_20
Run Code Online (Sandbox Code Playgroud)
编辑:
java-web-start ×10
java ×8
jnlp ×3
32-bit ×1
certificate ×1
debugging ×1
deployment ×1
jar ×1
java-7 ×1
jvm ×1
keystore ×1
macos ×1
manifest.mf ×1
maven ×1
security ×1
ssl ×1
thread-dump ×1
windows-7 ×1