問題タブ [tomcat-valve]
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.
tomcat - ネットワーク転送時間なしでリクエストの実行時間を測定するには?
私のバルブでは、次のような http クエリの実行時間を取得します。
この方法で取得した時間は、サーバー側の実行時間だけでなく、ネットワーク時間も提供してくれると思いますか? 出来ますか ?
(リクエストを行うクライアントによっては、測定された平均時間が1つのIPから同じではないため、平均時間は70ミリ秒で、別のIPは270ミリ秒です)
Filter にまったく同じコードを書きました。
、しかし、私のテストでは、バルブとフィルターの実行時間は同じです...
サーブレットのみの実行時間を取得することにもっと興味があります。しかし、最後のバイトが送信された時間も取得できれば、興味があります。
バルブとフィルターで何ができるかを明確にしてくれてありがとう。
security - Jboss/Tomcat バルブを使用して、URL 書き換えなどの URL を暗号化/復号化しますか?
サーブレットと jsps を使用して JBoss でサードパーティ アプリケーションを実行しています。ソースコードにアクセスできません。
あるサーブレットが次のように実行されるとしましょう: http://localhost/myApp/view.do?clientId=45&command=34
これを取得したい: http://localhost/myApp/view.do?gf844gf4g8fg4f
いくつかのグーグルの後、私はこれを見つけました: http://www.avedatech.com/Products/QueryCrypt/index.jsp
しかし、コードを改ざんできないため、私のニーズには合いません。
私の考えは、バルブをhttp://localhost/myApp で始まるすべてのクエリの前 (URL を暗号化) に配置し、別のクエリを後 (復号化) に配置することでした。
残念ながら、私のアプリケーションは明確な URL を書き込むため、サーバー レベルでプロセスを挿入しようとしています。その結果、ブラウザーに表示される URL はすべて読み取り不能になります (Javascript が URL を読み取ることができなくても問題ありません)。
リードは既にカバーされています :) : 私たちはすでに HTTPS を使用しています URL の末尾にハッシュを配置し、計算されたハッシュが等しいことを確認し、一致しない場合はアクセスを拒否します。これにより、改ざんは防止されますが、変数がユーザーに表示されることはありません。
これは実現可能ですか?
ご協力ありがとうございました。
tomcat - ApacheTomcatにValveを追加する方法
org.apache.catalina.valves.ValveBaseクラスを拡張し、inovoke()メソッドを実装することにより、ApacheTomcat用のValveを作成しました。今度はそれをTomcatに追加して実行したいですか?手順を教えてください。
tomcat - Tomcat での実行時に httpsession に保存されたマップから値を取得する方法
Tomcat を使用すると、適切なバルブを構成することで、興味深い情報の山をログファイルにダンプできます。
例えば:
意味:
- %s - 応答の出力 HTTP ステータス コード
- %b - HTTP ヘッダーを除く送信バイト数を出力するか、ゼロの場合は「-」
- %I - スレッド ID
%{myname}s は、セッションに保存されている属性 myname の値を出力することを意味します。
すべて良い。セッションにハッシュマップが保存されている場合は、次のようにして出力できます。
詳細については、 http://tomcat.apache.org/tomcat-5.5-doc/config/valve.htmlを参照してください。
しかし、マップ全体ではなく、特定のキーの値を出力したいだけです。私が試してみました:
しかし、これはうまくいきません。これを行う方法はありますか?
web-services - Tomcat バルブを使用して受信した SOAP メッセージを抽出する方法は何ですか?
org.apache.catalina.valves.ValveBase
クラスを拡張して、Apache Tomcat 用のカスタム Valve を作成しようとしています。方法がありpublic abstract void invoke(Request request,Response response)
ます。私のTomcatコンテナにはAxis2があり、Webサービスがホストされています。したがって、私の問題は、このカスタム バルブを使用してその Web サービスへの SOAP メッセージを抽出する方法を見つけることです。org.apache.catalina.connector.Request
では、引数とを使用して SOAP メッセージを取得する方法は何org.apache.connector.Response
ですか?
tomcat - Tomcat Web アプリ専用のバルブを使用できますか
Tomcat コンテナーでホストされている Web アプリをいくつか持っています。Web アプリ専用の Valve を使用できますか? 道を教えてください。
java - ログインtomcatにアクセスするためにリクエストパラメータを取得しようとしています
特定のHTTPリクエストがWebサイトに送信される頻度を調査しようとしています。リクエストはPOSTであり、。という名前のパラメータがあります"_method"
。私はこれをfirebugがネットを乗り越えているのを見ることができます。
このパラメーターの値を確認する必要がある"_method"
ため、ドキュメントhttp://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Access_Log_Valveに従って、バルブのTomcatアクセス構成に以下を追加します。
ただし、アクセスログには表示されません。
アンダースコアのせいなのかしら?
パラメータ名は変更できませんのでご注意ください。
java - WebApp が Tomcat バルブによってデータ セットを取得するにはどうすればよいですか?
JSF2 バッキング Bean (またはサーブレット) のカスタム Tomcat バルブによって設定された値を取得しようとしています。これを行う方法がわかりません。また、Google を使用した例も見つかりません。
背景: 私の JSF2 Web アプリでは、タイムゾーン属性を各ユーザーに追加する必要があります。これを実装する最も簡単な方法は、タイムゾーン ドロップダウンをユーザー プロファイル ページに追加して、各ユーザーが適切なタイムゾーンを選択できるようにすることです。ただし、これは自動化できる可能性があります。これは、ブラウザの JavaScript がタイムゾーンを自動的に計算できるためです。
そのため、この値を提供する Tomcat ログイン ページに新しいパラメーターを配置しました。この値は、Web アプリがログイン時に取得できます。Tomcat フォーム認証メカニズムは、(j_security_check への HTTP POST を介して) ログイン ページの処理を担当します。これをキャッチするために Java EE サーブレット フィルターを実装しましたが、Tomcat のログイン メカニズムはフィルターを回避するため、このコードは j_security_check への POST を認識しません。
Tomcat Valve を実装したので、j_security_check への POST を正常にキャッチできます。コードでは、タイムゾーンの値を抽出して配置します...どこに?
バルブ (TOMCAT_HOME/lib に配置する必要があります) には、通常の JSF2 コードとは異なるクラスローダーがあることを理解しています。これは、JSF2 コードからバルブの静的メンバーにアクセスできないことを意味します。
標準のTomcatバルブのソースコードに触発されて、バルブ内でこれを試しました:
しかし、私の JSF2 マネージド Bean では、org.apache.catalina.Session への参照を取得できません。
このコードは、org.apache.catalina.Session にアクセスできない StandardSessionFacade タイプのオブジェクトを返します。
FacesContext.getCurrentInstance().getExternalContext().getSession(false);
デバッグ モードで実行すると、org.apache.catalina.Session を見つけることができましたが、「メモ」フィールドは実際には空です。
また、Tomcat はログインに 1 つのセッションを使用し、その後新しいセッションを作成する可能性があると思います (おそらくSession Fixation Protectionに関連しています)。もしこれが本当なら、問題は複雑になると思います。
Tomcat の達人で、何か素晴らしいアイデアを持っている人はいますか? 単純なサーブレットのソリューションも受け入れられるでしょう。それを適応させることができると確信しているからです。
tomcat - Manager を Tomcat シングル サインオンから除外する
Tomcat サーバー sans Apache で SSO に JAAS を使用する。SSO は、いくつかの関連アプリケーションへのアクセスを制御し、うまく機能します。最近、Ant から Maven への移行を開始しました。Maven 用の Tomcat プラグインを使用するために、以前は必要のなかった Tomcat Manager アプリケーションをセットアップする必要がありました。サーバー上の他のWebアプリと一緒に、BASIC認証またはCLIENT-CERT認証の両方で起動して実行することができました.
私が抱えている問題は、ユーザーがマネージャーで認証されると、他の webapps のセッションがドロップされることです-webapp への IE ログイン、Manager へのログイン、webapp の更新、ログインページへのリダイレクト。
コンテキスト レベルで SSO バルブを定義し、ホスト レベルでレルムを定義することで、この重複を軽減することができました。これにより、ブラウザーを介して Web アプリケーション間を移動するときに SSO が引き続き機能します。ただし、問題の他のWebアプリケーションにアクセスするまで、クロスコンテキストAJAXリクエストと「ユーザーがログインしていません」というエラーが返されます。Manager のこのアプローチ認証を使用すると、他の Web アプリケーションから効果的に分離されました。
つまり、JAAS 認証モジュールを使用して Web アプリケーションで SSL/データベース認証を介して SSO を使用できるようにする最善の方法を探していますが、Tomcat に Manager を SSO から除外させます。Webapps 1、2、3 の場合は SSL 経由の IE SSO ですが、UN/PW 認証は Manager の SSO とは独立しており、認証は 2 つの間で独立しています。
これを行う方法はありますか?
現在の構成:
この構成を使用すると、すべての webapps と Manager が SSO の制御下に置かれ、上記の重複が発生します。IE は SSL 経由で webapp1 にログインし、次に UN/PW 経由で Manager にログインし、webapp1 を更新してログイン ページにリダイレクトします。
SSO バルブを Web アプリケーションのコンテキストに移動すると、この問題は解決しますが、クロス コンテキスト AJAX 要求に対して「ユーザーがログインしていません」という応答が発生します。
java - Tomcat: ログで「文字のデコードに失敗しました」を取得します。悪意のある攻撃の可能性?
Tomcat インスタンスが応答を停止しました (強制終了して再起動した後、正常に動作し始めました)。ログ メッセージでは、応答を停止する直前に、誰かが無効な要求でスパムしているように見えます。以下は、ログ ファイルからの抜粋です。
ログにはかなりの量がありました。誰かが前に似たようなものを見たことがありますか? これは悪意のある攻撃ですか、それとも Tomcat インスタンスが暴走したり狂ったりしたのでしょうか?
より実際には、これらのようなリクエストを検出し、元の IP アドレスを一時的に禁止するために、たとえばValve
やでできることはありますか? Filter
Tomcat は文字化けしたパラメーターを最初からデコードできないため、無意味なパラメーター名を探して、見つかった場合に要求を拒否することはできないと思います。
編集
同じ問題が再び発生し、今回はスレッドダンプをキャプチャしました。かなり長いです (実際には、全体を含めるには長すぎます)。
頭のてっぺんから、異常な数の待機中の HTTP デーモン スレッドがあるように見えます。