問題タブ [com.sun.net.httpserver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java HttpServer で失敗した認証を処理する方法
com.sun.net.httpserver.HttpServer に基づいて Java プログラムに小さな HTTP サーバーを実装しました。これも基本認証を使用します。これはすべて正常に機能しますが、失敗した認証要求を処理したいと考えています。
デフォルトでは、ユーザーが認証に失敗すると (ブラウザのログイン ポップアップで [キャンセル] ボタンをクリックすると)、空白のページがクライアントに返されます。HttpHandler の handle() メソッドは呼び出されません。
プログラムでこれらの失敗した認証試行をキャッチする方法はありますか?
ありがとう!
java - HttpExchange getRequestURI は、最初のアンパサンド「&」の前で終了します
元の URI は (たとえば):
http://xx.xx.xxx.xx:8000/mypath?parm1=1&parm2=he
getRequestURI
戻り値: http://xx.xx.xxx.xx:8000/mypath?parm1=1
2 番目のパラメーターは無視されます。
&
をコンマで置き換えると、すべてのパラメーターを含む完全な URI が返されます。
同じ問題を経験したことがありますか? 何か解決策はありますか?別の方法で最初の GET ヘッダー行を読み取る方法ですか? (使用HTTPServer
)。
java - HttpServer within junit fails with address in use error after first test
I have a Java class for use with JUnit 4.x. Within each @Test method I create a new HttpServer, with port 9090 used. The first invocation works find, but subsequent ones error with "Address is already in use: bind".
Here's an example:
Clearly the HttpServer is held solely within each method and is stopped before the end. I fail to see what's continuing to hold any sockets open. The first test passes, subsequent ones fail every time.
Any ideas?
EDIT with corrected method:
java - js/jQuery から WLAN 経由でサーバーと通信する最速の方法
com.sun.net.httpserver
ハードディスクからファイルをマップして応答として送信する機能を備えたアプリケーションの一部として使用するミニサーバーをセットアップしました。今のところ単純なもの(js、css、画像、html)です。
私の要件は、可能な限りオーバーヘッドを少なくしてサーバーと通信することです。今のところ、jQuery ajax HEAD リクエストを使用してリクエストをサーバーに送り返しています (サーバーでクエリ文字列を解析し、クエリ文字列に従って必要なアクションを実行しています)。
しかし、これは私のニーズには遅すぎます。クエリ文字列が解析されるコードでリクエストを受信するのに1〜2秒(場合によってはそれ以上)かかり、多くの場合、タイムアウトとタイマーで部分的に解決しましたが、リクエストが多すぎると接続が詰まりますそれを行うと、全体が遅くなるだけです。
js/jQueryを使用してサーバーと通信する別の高速な方法はありますか?
逆ロングポーリングのようなものでしょうか?そのようなことはありますか?毎回接続を確立すると多くのオーバーヘッドが追加されると思いますか、それとも間違っていますか?
java - Java 7 以降の HttpServer での 1 秒の遅延
プロジェクトで内部HttpServer
クラスを使用して、HTTP を介してクライアントとサーバー間でデータを交換しています。Java 7 に切り替えたときに、結果の配信が遅れていることに気付きました。問題を次のサンプルに減らすことができます。
クラスは、リクエストごとに現在の日付とリクエスト URI を単純に返すEchoServer
コンテキストを作成します。/echo
このサービスは、ループ内のクライアントによって呼び出されます。
次のクライアントは、クラスを使用して無限ループでサービスを呼び出し、URL
返されたストリームから最初の文字 (<
記号) を出力します。さらに、クライアントは現在の時刻を出力します。
このコードを Java6 で実行すると、すべてが正常に機能し、結果が約 1 秒で出力されます。5ミリ秒ごと。
コードが Java7 で実行される場合、各リクエストは約 1000 ミリ秒を使用します。
1000msのタイムアウトがどこかに隠されているようです。InputStreamReader
文字がではなくで読み取られる場合BufferedReader
、同じ遅延が発生します。バイトが入力ストリームから直接読み取られる場合、遅延は見られません。一方、プログラムがサーブレットに対して実行される場合、または が使用されているEchoClient
かどうかに関係なく、すべてが正常に機能します。BufferedReader
InputStreamReader
そのクラスInputStreamReader
は、HttpServer の Java 7 実装によって提供されなくなったサーバーから何かを期待しているようです。ここで正確に何が起こっているのか、この問題をどのように解決できるのか考えていますか? 回避策はありますか?それともこれはバグですか?
ありがとう!
クライアント コードにさらにタイミングを追加しました。
次の結果が得られます。
の最初の呼び出しにopenStream
はある程度の時間がかかります (70 ミリ秒) が、それ以降のすべての呼び出しにはさらに時間がかかりますopenStream
(約 996 ミリ秒)。
java - Sun Java HttpServer - リクエストの処理が遅いか、リソースを浪費している (TIME_WAIT/CLOSE_WAIT)
初め、
解決策を見つけるために多くのことを検索しましたが、適切な解決策を見つけることができませんでした。
環境
- (生産的) Mongoose WebServer は単純な GET 要求に応答します (すべてのデータは QueryString を介して送信されます)
- Apache HttpClient (単一インスタンス!) は、数十万の単一リクエストを順番に作成するために使用されます。
マングースと対話するApache HttpClientは非常にうまく機能します
/li>
問題
- (モック) Sun HttpServer を使用した WebServer の実装は、FireFox / Curl で正常に動作します
- 本番サーバーに対して実行する場合と同様に Apache HttpClient を使用すると、クライアントでのパフォーマンスがひどい (~ 1 リクエスト/秒)
- ネットで見つかった次のコードで Apache HttpClient を使用すると、
- クライアントでの大幅なパフォーマンスの向上
- 処理された要求と同じ数の CLOSE_WAIT 状態のオープン ソケットによるリソースの浪費 (使用可能な FD がなくなるまで!)
コード:
明らかに、http サーバーの実装に何かが欠けているため、この極端な「遅さ」が発生します。
ヒント/ヘルプをいただければ幸いです。
前もって感謝します!
コード
HttpServer
HttpHandler
ParameterFilter
java - sun HttpsServer の使用時に SSL セッションを取得する方法
を Https サーバーとして使用してcom.sun.net.httpserver.HttpsServer
おり、SSL セッションにアクセスしたいと考えています。
でリクエストを処理しますHttpHandler
。プレーンを使用すると、メソッドSSLServerSocket
を介してクライアント証明書などにアクセスできますが、内のメソッドのパラメーターにそのSSLSocket.getSession(...)
ようなものが見つかりませんでした。HttpExchange
handle
HttpHandler
アクセスする方法はありますか?