問題タブ [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 - sun Httpserver:ハンドラーから外部で作成されたオブジェクトへのアクセス
たぶんばかげた質問:私はcom.sun.net.httpserverパッケージを使ってJavaで小さなサーバーを実現しようとしています。私はサーバープログラミングを始めたばかりなので、おそらく何かが足りません。
これは次のように機能するはずです。
- まず、24時間ごとに最近定期的に更新されるオブジェクト(HashMap)を作成します
- 次に、受信したリクエストを処理するハンドラーがあります。この処理フェーズは、ハンドラーの外部で作成されたHashMapのコンテンツに基づいて実行されます。
擬似コード(非常に汚れたもの)
問題は、ハンドラーがハッシュマップを読み取れるようにする方法です。オブジェクトをパラメーターとしてハンドラーに渡す方法はありますか?
java - com.sun.HttpServer ソケット バックログ
ソケットバックログとは?
たとえば、私はWebサービスを持っています
および Web サービス クライアント
サーバー上では 10 個の作業スレッドのみがあり、バックログは 10 に設定されているため、10 個の受け入れられた接続と 10 個の接続がバックログで待機している可能性があり、他の接続は拒否されます。
私はClientTransportExceptionを取得していないので、そうではないかもしれません。
接続で何が起こっているのか、なぜ ClientTransportException がないのかを説明していただけますか。
java - コンテンツの長さを使用し、エンコードを転送しないように HTTPServer を構成する方法: チャンク?
WebServiceProvider によって実装された Web サービスで Java の HTTP Server オブジェクトを使用しています。クライアントのリクエストに関係なく、回答がチャンクされており、コンテンツの長さに合わせる必要があることがわかりました。問題は Web サーバー プロバイダーではなく、サーバーにあると思います。また、チャンクではなくコンテンツの長さを使用するように http ヘッダーを構成するにはどうすればよいですか?
java - com.sun.net.httpserver.HttpServer でエラー応答を送信する
私は経験豊富な Java プログラマーですが、初心者の Web 開発者です。HttpServer
JDK 1.6 に同梱されているクラスを使用して単純な Web サービスを作成しようとしています。私が見た例から、HttpHandler
のhandle
メソッドの典型的なコードは次のようになります。
私の質問: 成功を示すために応答ヘッダー (つまり、応答コード 200) を送信し、おそらくデータのストリーム バックを開始し、例外が発生した場合、エラー コンテンツと共に「内部サーバー エラー」応答コードを送信する必要がある場合はどうなりますか? ? つまり、例外が発生した時点で部分的な "成功" 応答をクライアントに送信した場合、どのようなアクションを実行する必要がありますか?
java - 大きなデータのダウンロード時に HttpServer で java.lang.OutOfMemoryError が発生する
私はJava 6組み込みHttpServerを持っています。クライアントが大きなテキスト ファイルをダウンロードできるようにするハンドルがあります。問題は、サーバーに 10 を超える同時クライアントがある場合、メモリ不足の例外が発生することです。問題は Http サーバーにあると確信しています。
今私が得る例外は次のとおりです:
getBytes() に関する提案は、例外を変更しません。毎回作成するのではなく、byte[] への静的参照を保持しようとしました。そして、私はまだ同じ例外を受け取ります。
java - パフォーマンス: com.sun.net.httpserver.HttpServer 対 jetty
JSON文字列を送受信するJava Webアプリケーションに取り組んでいます。JSON は jersey を介して生成され、jaxb アノテーション付き pojo にマップされます。
アプリケーション自体はそれほど複雑ではありませんが、大量のトラフィックの下で動作する必要があります。私は2つのアプローチを試みました。最初のサーブレットはコンテナーとして jetty をベースとし、2 つ目はオラクル HttpServer クラス (「HttpServerFactory.create(..)」を介して jetty を使用) を使用するコンソール アプリケーションとしてベースになります。
両方のバージョンを apaches ab ツールでテストしました。100 の同時実行レベルで 10,000 のリクエストを実行しました。驚いたことに、コンソール アプリケーションは応答に必要な時間が大幅に短縮され、転送速度が速くなりました。私は反対の結果を期待していました。
単純なコンソール アプリは、小さなアプリケーションのパフォーマンスに関して本当に優れたソリューションでしょうか? ありがとう。
java - Sun HttpServer 使用時の WebService 応答の配信における「遅延」
エンドポイントが組み込みの Sun HttpServer を使用して公開される Web サービスを実装するスタンドアロン アプリケーションを作成しています。これには奇妙な問題があります。特定の展開状況では、サーバーが応答を処理/送信し、クライアントが応答を受信する間に明らかな遅延があります。
いくつかのシナリオを挙げましょう:
ケース 1) 動作中: サーバーは、ランタイムとして OpenJDK 1.6.0_23 を使用する Eclipse 内で実行されています。クライアントは軸 (axis2 ではありません!) で実装され、JBoss 内の Solaris x86 で実行されています (使用されている正確な Java バージョンはわかりませんが、Java 5 バージョンと思われます)。
ケース 2) 動作中: サーバーは Java 1.6.0_26 を使用して Solaris x86 で実行され、クライアントは OpenJDK 1.6.0_23 を使用して Eclipse 内で実行されています。
ケース 3) 動作しない: サーバーは Java 1.6.0_26 を使用して Solaris x86 で実行され、クライアントは Solaris x86 で軸を使用して Solaris x86 で実行されます (ここでも、Java 6 ではなく Java 5 であると思われます)。
1.6.0_30 で修正された次の Java バグ (OpenJDK 1.6.0_xx は同じバグに悩まされていないと仮定) に悩まされているのではないかと思っています。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7068416
しかし、その場合、なぜケース 2 が機能するのでしょうか? クライアントはサーバー側で TCP_NODELAY を制御できますか?
私が観察した正確な遅延について: 異なるコンテキストで公開された 2 つの Web サービスがあります。たとえば、2 つの異なる WSDL。クライアントには、(明らかに) サービスごとに個別の (軸 1) バインディングがあります。あるサービスでは、一貫して正確に 150 秒の遅延が見られます。他のサービスでは、遅延は一貫して 300 秒です。これらの価値観は、誰かにベルを鳴らしますか?
マールテン
編集私は今、 Eclipse Generated Web Service Client Extremely Slow の原因と解決策に傾いています。システムにアクセスできないホテルの部屋に座っているため、現時点ではテストできません。
java - JRE HttpServer は HTTP の「expect-continue」セマンティクスに違反していますか?
これは、組み込みの Javaと多段階認証スキームを使用して発生したいくつかの問題のフォローアップ投稿です。com.sun.net.httpserver.HttpServer
大量のデータを送信すると、Java クライアントが初期の「Authorization required」メッセージを受信できなくなることが示唆されました(Java が I/O をブロックしているため)。
これが、HTTP が 100 ステータス コード ( RFC 2616 )を含む「expect-continue ハンドシェイク」を定義する理由です。
100 (Continue) ステータスの目的は、クライアントがリクエスト本文を送信する前に、オリジン サーバーが (リクエスト ヘッダーに基づいて) リクエストを受け入れる意思があるかどうかを、リクエスト本文を含むリクエスト メッセージを送信しているクライアントが判断できるようにすることです。 . 場合によっては、サーバーが本文を確認せずにメッセージを拒否する場合、クライアントが本文を送信することは不適切または非常に非効率的である可能性があります。
したがって、この場合、データを送信することは適切ではありません。サーバー...
100 (Continue) ステータスで応答して入力ストリームからの読み取りを続行するか、最終ステータス コードで応答する必要があります。
残念ながら、Sunはアプリケーションを介さずにHttpServer
常に 100 ステータス コードで応答します。ソースを見る:
アプリケーションが関与していない場合、そのメッセージを送信するのは不適切であることをクライアントに伝えることができないように思われるため、プロトコルに違反しています (これは、接続が早期に閉じられたり、パイプが壊れたりするなどの問題につながります)。何かが足りない場合に備えて、この解釈が正しいかどうかコミュニティに尋ねたほうがいいです:)
java - com.sun.net.HTTPServer.httpserverを使用できません
EclipseIndigoとJavajdk7を使用しています。
小さなウェブサーバーを作成したいのですが、サンのウェブサーバーを使用できません。
私がタイプするとき:
次のEclipse-Error-Messageが表示されます。
私はここで何が間違っているのですか?他の瓶を含める必要はありませんか?私はしますか?
java - Java HttpServer 基本認証の問題
HttpServer
私はそのかなり基本的なテストに使用するJavaの実装を持っており、クライアントに提供されるものをその場で調整できることを意味します。私のコードは apache http クライアントを使用しています。
この実装を使用して認証をテストしたいのですが、いくつか問題があります。私の問題は、コードが認証されず、最初のリクエストが送信され、サーバーが 401 で応答するが、http クライアントが応答しないことです。認証タイプのリストを調べますが、BASIC を選択することはありません
ブラウザを使用して同じ URL に接続すると、プロンプトが表示され、資格情報を送信するとログインします。コードを変更して、コードが他のサーバーにログインしようとすると、成功するので、両端が機能することがわかります!
クライアント側とサーバー側で接続を有線接続しましたが、表示される違いは次のとおりです。
- 接続が成功すると、後続のリクエストは GET ではなく POST として送信されます。
- 私のサーバーが応答するとき、認証ヘッダーはWWWではなくWwwです(動作するときと同じです)
編集:
http コードを見ると、大文字と小文字の区別が問題になることはありません。最初の応答は失敗するもので、2 番目は機能するものです。
失敗する
作品