7

現在、SpringMVCDispatcherServletと2つのCXFServletを備えたJavaWebアプリがあります。DispatcherServletはデフォルトのサーブレット(マッピング/)であり、一方のCXFServletはにマップされ/api/*、もう一方はにマップされ/services/*ます。

私を悩ませているのは、CXFServletにマッピングせず/api/v0に、2つのサービスをホストする1つのCXFServletを1つと1つにすることは不可能のように思われることです。これが可能であれば、別のサーブレットインスタンスの初期化時間、構成の手間、およびメモリ要件を節約できます。/services/myService/*

/*したがって、基本的に、私の質問は、共通のベース/ルートURLを使用せずに、できればSpring名前空間構成を使用してCXFServletにマッピングせずに、1つのCXFServletの2つのURLで2つのCXFサービスをホストする方法を知っているかどうかです。

4

1 に答える 1

3

CXF ServletControllerinvokeメソッドは、最初にを呼び出します。これは、要求されたURLの一部をサーブレットの。なしで返します。この呼び出しの結果は、への呼び出しを通じて定義されたサービスと照合するために使用されます。したがって、現在、サーブレット部分が含まれているパスを使用してサービスを一致させることは不可能です。CXFは、これに必要な呼び出しを行うことはありません。HttpServletRequest#getPathInfourl-patternDestinationRegistry#getDestinationForPathHttpServletRequest#getServletPath

base-addressサーブレットの初期化パラメータ()で設定できる値は、CXFが表示する<init-param>すべてのURLにのみ影響することに注意してください。これは、この値を使用するメソッドがサービスの呼び出し中に使用されないためです。ServletController#getBaseURL

于 2013-01-08T18:05:30.427 に答える