JAVA FX Webビューで実行されているjavasriptがあります。私はエンドポイントにアヤックスコールをしています。 xhttp3.open("POST", "http://testurl", false);
すべてが期待どおりに動作する場合JAVAFX Ajax呼び出しがasynchがtrueに設定されていると、リクエスト本体に散発的に追加できない
var formData3 = new FormData();
var content = veryLargeJSONString;
formData3.append("userfile", content);
xhttp3.open("POST", "http://testurl", true);
xhttp3.setRequestHeader("cache-control", "no-cache");
xhttp3.send(formData);
は、応答は常にそれが原因フォームデータのサイズが大きいために長い時間を要するにもかかわらず返します。
asynch
フラグがtrueに設定されている場合、JFXでは次の例外が発生するため、応答は送信されません。もちろんの
PM com.sun.webkit.network.URLLoader doRun
WARNING: Unexpected error
java.io.IOException: Error writing request body to server
at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.checkError(HttpURLConnection.java:3479)
at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.write(HttpURLConnection.java:3462)
at com.sun.webkit.network.URLLoader.sendRequest(URLLoader.java:373)
at com.sun.webkit.network.URLLoader.doRun(URLLoader.java:162)
at com.sun.webkit.network.URLLoader.lambda$run$91(URLLoader.java:128)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.webkit.network.URLLoader.run(URLLoader.java:127)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
これはのみformData
コンテンツが非常に大きい場合、別の小さな内容とまったく同じ呼び出しは何の問題を持っていないが発生します。
私はこれがJVMを起動する方法と関係していると思っていたので、開始ヒープサイズと最大ヒープサイズを増やしてみました。
java -jar test.jar -Xms4096m -Xmx8192m
ので最初の質問は、このJavaの例外を発生させ、なぜ非同期はAJAX呼び出しのためにtrueに設定されている場合、それが唯一発生しないことができるもの、です。
第2私のjava -jar
の起動時にparamsを起動すると、私のシステムよりも多くのスタートアップヒープを割り当てることができますか?だから私は16ギガのRAMを持っていると私は13のギグを使用しているし、私は私のJavaアプリケーションを起動し、起動ヒープ4ギガの割り当てを試みる、それはちょうど私の起動パラメータを無視するのだろうか?
jre-8u111とJava 8の以前のバージョンの間にはっきりとこの問題は修正されました。私はそれがいつパッチが当てられたかを正確に見て、私が見つけたら答えをさらに調べます。 –