問題タブ [servlets]

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.

0 投票する
5 に答える
13828 参照

java - HttpServlet が Serializable を実装するのはなぜですか?

サーブレットについての私の理解では、サーブレットはコンテナーによってインスタンス化され、そのinit()メソッドは一度呼び出され、サーブレットは JVM がシャットダウンするまでシングルトンのように存続します。

アプリサーバーが回復するか、正常に起動すると、サーブレットが新しく構築されるため、サーブレットがシリアライズされるとは思いません。サーブレットはセッション固有のメンバーを保持してはならないため、ディスクに書き込んで再度インスタンス化しても意味がありません。これには実用的な用途がありますか?

私の懸念は、そこにいくつかのシリアル化できないフィールドを配置すると、別の種類のセッション レプリケーションが行われる本番環境でアプリが不思議なことに失敗することです。

0 投票する
2 に答える
1019 参照

java - JSFビューが非jsfリクエストへのレスポンスを生成できるようにする最良の方法は何ですか?

JSF サーブレットと同じ Web アプリケーションにサーブレットがあります。サーブレットの応答を (リダイレクトするのではなく) JSF の応答に置き換えるにはどうすればよいですか?

0 投票する
1 に答える
3519 参照

java - Tomcatとサーブレットで例外をキャッチする

すべての例外をキャッチし、web.xmlで次のようにサーブレットに渡すようにtomcatを設定しました。

これは正常に機能し、サーブレットがいくつかの情報をログに記録してjspに転送します。ただし、例外がスローされる原因となったURIをログに記録したいので、request.getRequestURI()を呼び出すと、例外のログ記録を処理するサーブレットパスである/exceptionを取得します。例外の原因となった元のURIを取得するにはどうすればよいですか?

0 投票する
3 に答える
405 参照

servlets - 接続を閉じたい場合、チャンクされた http 応答の途中でエラーを報告するにはどうすればよいですか?

(関連する質問を参照してください:接続を閉じずに、チャンクされた http 応答の途中でエラーを報告するにはどうすればよいですか? )

私の場合、ブラウザがエラー メッセージを表示することが一番の望みです。どんなに無知でも。

ServletResponse outputStream を閉じることは明らかに機能しません。最初に閉じなくても、例外をスローしません(Tomcat 6.0.16でテスト済み)。私が欲しいのは、RST パケット、チャンクの途中の FIN、または不適切な形式のチャンク ヘッダーのいずれかだと思います。

その後、さまざまなブラウザーがどのように応答するかについて心配することができます。

明確化のために編集: これはファイルのダウンロード用で、おそらく数ギガバイトのバイナリ データです。一部のデータの送信を開始する前に、すべてのデータを正常に読み取ったり復号化したりできるかどうかを確認できません。

0 投票する
6 に答える
21563 参照

java - リクエスト (HttpServletRequest) の利用可能なパラメータに追加することは可能ですか?

フィルター/サーブレットでリクエストをインターセプトし、いくつかのパラメーターを追加したいと考えています。ただし、リクエストは「setParameter」メソッドを公開せず、パラメータ マップを操作すると、ロックされていることを示すエラーがスローされます。私が試すことができる代替手段はありますか?

0 投票する
1 に答える
1339 参照

java - HttpRequest から XML を読み取る XMLEntityScanner.peekChar の ArrayIndexOutOfBoundsException

サーブレット doPost() で HttpServletRequest から XML データを読み取り、リーダーを req.getReader() から JAXB unmarshaller に渡しています。いくつかの異なる入力 XML を試しましたが、常にこの例外が発生します。

これは、ローカル開発マシンではなく、Live Web サーバーでのみ発生します。入力が何であれ (私は約 90k の入力しか試していませんが)、スタック トレースのメッセージ部分は常に "8192" と表示されます。XMLEntityScanner.java の 491 行目を調べたところ、バッファーが読み取られていることがわかります。バッファーは実際には配列です。8192 のゼロベースのインデックスを使用して 8k バッファを読み取れないことは理にかなっています。これはバグに違いありませんが、原因は何ですか?どうすればよいですか?


私は、多くの探偵の仕事を通じて、すでに答えを見つけたので、これを尋ねています。Apache はすでに修正を拒否しているので、次のかわいそうな人を手間から救いたかったのです。

0 投票する
2 に答える
2536 参照

jsp - カスタム ソースからの JSP ページのロード

JSP ページを実行し、Web アプリケーションの外部でその出力をキャプチャすることは可能でしょうか? 具体的には、私の場合、通常の Web アプリケーションがまだ存在しますが、クラスパスからではなく、任意のソースから JSP ページをロードします。単純に RequestDispatcher を取得してディスク上の JSP ファイルを指すようにすることはできないようです。

0 投票する
2 に答える
5735 参照

java - RSS フィードを Java Web 環境にどのように実装しますか?

コラボレーション プラットフォーム用の RSS フィードの実装に取り​​組んでいます。ユーザーが情報を共有できる数千の異なるコラボレーション ルームがあり、それぞれがニュースや変更などを含む RSS フィードを公開する必要があるとします。

単純なサーブレット (つまり、 http://www.site.com/RSSServlet/?id=roomID ) を使用すると、RSS クライアントがサーブレットを呼び出すたびにコストがかかります (これは、サーバーに登録されているユーザーごとに 10 分ごとに発生します)。数千のルームの 1 つで RSS フィードを受信する) これにより、サーブレットのライフサイクル全体がトリガーされ、コストがかかります。

一方、何千もの部屋のそれぞれについてディスク上に静的な XML ファイルを保持することは、ハード ディスク容量と IO 操作の点でコストがかかります...

もう1つの制限-既存のフレームワークを使用することはオプションではないかもしれません...

では、RSS フィードを Java 環境にどのように実装しますか?

0 投票する
3 に答える
7445 参照

java - Java Servlet API によるセッション処理でのカスタム ID

サーブレット API を介して HTTP セッションにカスタム ID を割り当てることは可能ですか?

たとえば、Tomcat などの任意のアプリケーション サーバーからのセッション処理では、一意の ID を生成するだけで十分です。しかし、ユーザーごとの情報と時間に基づいてカスタムの一意のセッション ID を持っているので、繰り返されません。

また、セッション処理に関するすべてのドキュメントを調べましたが、必要なものがどこにも見つかりません。

これはプロジェクトの要件であるため、それが不可能な場合は、その理由を知る必要があります (または、API を介してのみ利用できないのでしょうか?)。

0 投票する
2 に答える
1026 参照

java - サーブレット用に $TOMCAT_HOME/logs に名前付きログを作成するにはどうすればよいですか?

現在、Tomcat を使用して、サーブレット内で最も単純な方法でログを記録しています。ServletConfig.getServletContext().log を使用してアクティビティを記録します。これは、$TOMCAT_HOME/logs の localhost.YYYY-MM-DD.log に書き込みます。

絶対に必要でない限り、このロギング メカニズムの単純さから離れたくありません。しかし、ログファイルに名前を付けたいと思います。「localhost」.YYYY-MM-DD.log ではなく、「myAppName」.YYYY-MM-DD.log に書き込む方法はありますか。独自のメカニズムを作成できることはわかっていますが、ここでも単純さを求めています。

Log4j のような完全なフレームワークから離れたいと思っています。