問題タブ [undertow]
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.
spring-mvc - Spring Boot Undertow は、ブロッキング ハンドラーと NIO ハンドラーの両方を同じアプリケーションに追加します。
以前の質問(@Andy Wilkinson に感謝) で、への着信要求はすべてワーカーundertowEmbeddedServletContainer
スレッド (ブロック操作) によって処理されることがわかりました。
Andy によると、着信リクエストをノンブロッキング ハンドラで処理するUndertowBuilderCustomizer
ために をオーバーライドするために、 を追加しようとしています。ServletInitializerHandler
このカスタマイザーrootHandler
では、NIO ハンドラーのビルダーを設定します。ただしUndertowEmbeddedServletContainer
、起動段階で次のようにオーバーライドされますServletInitializerHandler
。
この質問のタイトルが示すように、ブロッキング ハンドラーと非ブロッキング ハンドラーの両方を使用しようとしています。ブロッキング ハンドラーは@Controller
アノテーションによって管理され、NIO ハンドラーは Spring によって管理されます。
解決策を見つけましたが、初心者として、それが良いものかどうかわかりません。
HandlerPath アノテーション
HttpHandler を実装する Bean を作成する
シンプルなコントローラーを作成する
ServletExtension を実装するクラスを作成する
このメソッドでは、デフォルトハンドラーは "/" コンテキストにバインドされ、Spring によって管理されるため、すべてのブロッキング リクエストは(s)ServletInitializer
によって処理できます。@Controller
次に、 で注釈が付けられたすべての Bean を検出してから、based onプロパティに@HandlerPath
新しい を追加しようとします。prefixPath
rootHandler
@HandlerPath.path
ついに
ディレクトリ META-INF.services を作成します
ファイル io.undertow.servlet.ServletExtension を作成し、次の行を追加します。
結果
すべてが魅力のように機能し、バインディング URL がヒットすると NIO ハンドラーが呼び出され、ブロッキング ハンドラーも呼び出されます。
このソリューションを何らかの方法で改善できるかどうか、誰かに教えてもらえますか? さらに、NIO ハンドラーの URL は Spring によって管理されていないため、NIO ハンドラーを保護するために使用globaleMethodSecurity
および設定する必要があると思いますか?@PreAuthorize
spring - Spring Boot/MVC リソースに認識されるコンテンツ/MIME タイプを設定するには?
Spring MVC の ResourceHandlerを使用すると、リソースを簡単に提供できます。
ただし、一部のファイル、つまり.ico
ファイルが正しく認識されず、適切なContent-Type
ヘッダーが取得されません。これはによって処理されるようですResourceHttpRequestHandler
:
では、Spring Boot 1.2 で認識されるファイル拡張子 / MIME タイプを構成するにはどうすればよいですか? (Tomcat と Undertow の両方)
undertow - 属性のテキスト表現
Undertown のドキュメントのPredicates, Attributes and Handlersを見ると、次のような方法でアクセスできる属性のテキスト表現があるようです。
こんにちは %u 要求メソッドは %m です (%u がリモート ユーザーで %m がメソッドであるドキュメントから抽出された例)。
私の意図は、それらを使用してリクエスト時間をログに記録したり、他のトレース/デバッグ方法をログに記録したりすることです。
それらをどのように使用できますか?補間された属性を持つ文字列をログに記録できる提供されたハンドラーはありますか?
https - Undertow で HTTP を HTTPS にリダイレクトする
Undertow で HTTP->HTTPS リダイレクトを構成するにはどうすればよいですか? Undertow のコードベースを調べたところ、関連していると思われるクラスがいくつかあります (RedirectHandler など)。また、Undertow のドキュメント ( Predicates Attributes and Handlers ) は、とりわけこの問題を正確にターゲットにしているようです。しかし、どこから始めればよいかわかりません。
基本的に、私が探しているのは、Apache の mod_rewrite 構成に対応するものです。
ありがとう!
undertow - 複数の Web サービス URL をアンダートウする
私は自分の住所にこのようなものを望んでいます。servlet1、servlet2、servlet3 を localhost:8080 にバインドする方法
ローカルホスト:8080/サーブレット
ローカルホスト:8080/servlet1
ローカルホスト:8080/servlet2
ローカルホスト:8080/servlet3
最後のurl(サーブレット)が追加された場合にのみ機能するこのコードがあります