1

私は現在、jax-rsフレームワーク(現在はRestEasy)によって注入されたUriInfoを利用して、Locationヘッダーで使用するURIを構築しています。UriInfoから作成されたURLは、応答xml/jsonでも使用されます。

つまり、次のようになります。


public class ResourceBean {
  @Context
  private UriInfo uriInfo
  public Response mappedMethod(){
    ...
    UriBuilder builder = uriInfo.getBaseUriBuilder().path(...);
    ...
  }
}

問題は、アプリケーションサーバーの前でロードバランサーを使用していることです。ユーザー/システムがリンクの1つをたどる場合は、このマシンに直接ではなく、ロードバランサーを経由する必要があります。uriInfo.getBaseUriBuilder()ロードバランサーではなく、現在のマシンのベースURLを返します。

一部のロードバランサーがこれを実現するためにURLの書き換えを実行できることは理解していますが、残念ながら、ロードバランサーを制御したりアクセスしたりすることができず、ロードバランサーがサポートしているかどうか、または本体で可能かどうかもわかりません。 html応答。

ロードバランサーのベースURIを含むようにUriInfoを操作または構築できる中心点はありますか?

4

1 に答える 1

0

UriInfoが構築されている場所を見つけました。情報はHttpServletRequestから収集されます。残念ながら、RestEasyコードを変更して操作する以外に方法はありません。

そこで、サーブレットフィルタを使用して、リクエストがフレームワークに到達する前にリクエストを操作します。

于 2011-03-11T13:19:45.370 に答える