java - JApplet.getParameter 在向其传递大量数据时返回 null

标签 java applet japplet jvm-arguments jvm-crash

我有一个网络应用程序。

有时我会通过智能卡和 PKCS11 进行一些数据签名。 由于 Java 可以访问连接到计算机的设备,因此我使用由我的网络应用程序启动的小程序。

到目前为止,我想要签名的数据(以及其他一些东西)是通过作为小程序参数提供的 base64 编码字符串发送到小程序的。然后在小程序中,在用户向智能卡提供密码后,传递给小程序的数据被签名并发送回主网络应用程序。

我通过以下方式读取传递给应用程序的数据:

String dataToDecode = this.getParameter("paramStr");
... 

在扩展 JApplet 的类中。

一切正常,直到我签署了单个文档。

现在新需求来了,我需要一次性签署~100份文件。 调整 java 代码以处理许多文档,但是当我尝试对数据签名时,小程序崩溃,没有任何错误、任何符号、任何异常,什么也没有,控制台窗口消失。 请看编辑 1

  1. 我尝试通过运行时参数增加 JAVA 可用的内存量,例如:-Xmx2048m,但没有帮助。
  2. 通过反复试验,我达到了正确处理约 15 份文档的上限。
  3. 当我检查没有小程序的应用程序时,只是从 Netbeans 运行,我可以毫无问题地签署 100 个文档的数据,但我在测试期间从文件中读取了 base64 编码的数据。

我怀疑当我尝试通过读取超过 ~10 MB 的数据时发生崩溃

JApplet.getParameter("paramStr");

我的问题是:

  1. JApplet 的 getParameter 方法有大小限制吗?
  2. 如何检测/记录导致崩溃的原因?
  3. 对于在这种情况下如何处理大量数据,您有什么建议吗?

谢谢你的帮助


编辑 1:

在我的评论中,我说过我确信 JVM 会崩溃。 现在我发现它不是

由于某些与 PKCS11 初始化/applet 和 JVM 相关的原因,我将 System.Exit(0) 放在 try/catch/finally 的 finally block 中。我通常会避免这样做。

我修改了代码...并没有崩溃,简单的方法

JApplet.getParameter("paramStr")

当大量数据传入时返回 null 然后我有异常。 很抱歉在我的第一个问题中“愚弄”了你。我不知道这一点。

所以现在的主要问题是: JApplet.getParameter("paramStr") 可以处理的数据量是否有限制?

谢谢

最佳答案

也可能是由于浏览器错误。我建议尝试调试它是没有意义的 - 只需通过 applet 的 HTTP 从服务器请求数据来回避问题。

关于java - JApplet.getParameter 在向其传递大量数据时返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20018867/

相关文章:

java - 将 Java 应用程序转换为 Applet

java - 面板在 Applet 上显示,但在应用程序模式下不显示

java - 重新调整大小以在java中的JApplet屏幕上显示所有文本

java - 如何将正值和负值(可能分别?)存储到数组中,并将它们打印出来?

java - 尝试获取空索引时出现 IndexOutOfBoundsException : index: 1, size: 1 错误

java - Job提交前如何分发jar到hadoop

java - 如何使用 eclipse 构建 PingFederate 插件

java - 将java数组打印成HTML代码

java - 无法正确签署 jar 文件

java - 为什么这不打印 "Num"Circles?