2012-11-13 59 views
1

短版

如何,它執行與默認特定的內存限制所有的applet這樣的方式配置the icedtea-plugin package for ubuntu precise?最好使用命令行工具而沒有圖形用戶界面。設置默認內存限制所有的applet

龍版

我使用的Java小應用程序建立一個信息亭設置,並希望增加默認內存限制這些小程序。信息亭基於ubuntu linux,使用the icedtea-plugin package作爲瀏覽器插件。由於構建自助服務終端是自動和無人的,我寧願在命令行中配置它,如果可能的話。

這是我到目前爲止已經發現:

  • 我很有可能要指定將啓動Java虛擬機插件時使用的-Xmx…命令行參數。
  • 可以使用HTML代碼中的參數來傳遞這樣的參數,即 <param name="java_arguments" value="-Xmx…">。 但是這意味着要修改我所有的HTML文件,我寧願避免。而且很有可能我不得不簽署我的代碼來完成這項工作,這在我的項目的其他地方增加了很多問題。
  • 在我的桌面系統上,使用Oracle VM,有一個應用程序ControlPanel,我可以使用它來設置這些命令行開關。看起來,配置被寫入文件~/.java/deployment/deployment.properties,其中它與密鑰deployment.javaws.jre.0.args相關聯。
  • 該密鑰名稱未在the specs for that file中描述。編號0似乎指的是一個特定的JVM,如控制面板中表格的一行所示。對於每個JVM,除了此args值外,還有幾個值共享一個公共索引編號。
  • 根據this wiki section,IcedTea支持類似的文件,位於~/.icedtea/。不知道這是否意味着~/.icedtea/deployment.properties或者更確切地說~/.icedtea/deployment/deployment.properties。 IcedTea似乎並沒有出現ControlPanel

正如你可以看到,有很多線索,如何這威力工作,但到目前爲止,我還沒有看到任何明確的答覆,以什麼工作。還有很多未解決的問題:

  • 我是否必須創建這個icedtea部署文件?
  • 我必須在路徑中包含一個名爲deployment的目錄嗎?
  • 這是我需要指定的最小密鑰集合,以使該文件按預期工作?
  • OpenJDK甚至支持args值,即使它沒有在相應的規範中描述?

我想我可以嘗試所有可能的組合,看看它們中的一個是否工作,但這樣做會花費相當多的時間。所以我在這裏問,看看是否有人有這方面的經驗,並可以提供一個quiecker的答案。如果沒有,我想我會最終回答自己的問題,一旦我嘗試了艱難的方式。

回答

0

我只是看看的IcedTea-Web插件的源代碼。 The part of the code which builds the command line似乎根本沒有提供包括自定義參數的規定,不管它們的來源。因此,我編輯哪些配置文件,HTML文件或環境變量並不重要,那裏的代碼將構建相同的命令行來調用java,而忽略所有我的願望。

所以如果所有配置都失敗了,剩下的就是hackery。一種方法是修補插件的源代碼,並在其命令行中添加額外的單詞。對於靜態添加,即單一尺寸更改,這將相當容易。更一般的修復將包括一些環境變量的內容,Peter's answer建議的方式。這意味着將所討論的環境變量進行分詞,並動態地爲單詞數組分配空間。在C級有相當多的工作。

作爲一種替代方法,可以在執行的二進制級別解決這個問題。該插件顯然已將可執行文件的路徑硬編碼到其中。在我的情況下,這條路是/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java。人們可以二進制重命名爲java.orig,並把一個shell腳本,在其位,具有以下內容:

這種方法的
#!/bin/bash 
for i in "[email protected]"; do 
    if [[ "${i}" == sun.applet.PluginMain ]]; then 
    exec "$0.orig" -Xmx512m "[email protected]" 
    fi 
done 
exec "$0.orig" "[email protected]" 

一個後果是,ps將不再打印這些小程序爲java而是作爲java.orig。在大多數情況下不應該是一個問題。

+0

交叉引用:我剛剛提交了一個[請求增強](http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1217) IcedTea-Web錯誤跟蹤器。 – MvG

+0

我已經接受了這個答案,因爲它描述了我所理解的事態。但是,如果任何人有一個非常聰明的方式來獲得這個命令行,或者如果上游改變了他們的代碼,以便減少麻煩,我會很樂意改變被接受的答案。 – MvG

0

as oracle says:http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-Desktop/html/plugin.html

以下環境變量應設置爲額外的參數添加到小程序:

_JPI_VM_OPTIONS=-Xmx… 

而且作爲下文稱網站說:

請注意,您需要在設置後重新啓動瀏覽器環境變量。如果要在命令shell中設置此環境變量,則必須使用相同的命令shell啓動瀏覽器,以便瀏覽器繼承環境變量的值。

但是,如果你懷疑如何設置環境變量在Ubuntu中,下面的帖子可能會有所幫助:Make $JAVA_HOME easily changable in Ubuntu

+0

我剛試過這種方法,但它似乎並沒有工作:java進程沒有在其命令行上給出的選項。也許這種方法只適用於Oracle VM,而不適用於IcedTea?清理openjdk 7u源reporitory,我找不到你在任何文件中聲明的變量名稱。 – MvG

+0

好的,我沒有意識到存在不兼容性 –

相關問題