0

Glassfish 3.1.2 本番サーバーで問題に直面しています。Jersey REST プロジェクトをデプロイしましたが、URLのパス パラメーターに「スペース」があると、URISyntaxException がスローされます。たとえば、次の URL にアクセスした場合: http://MyDomain:8080/MyApp/MyVersion/MyService/MyPathParam/My%20Path%20param Jersey throws java.lang.IllegalArgumentExceptionwith root cause java.net.URISyntaxException: Illegal character in path at index 155: http://MyDomain:8080/MyApp/MyVersion/MyService/MyPathParam/My Path param

クエリ パラメータではエラーは発生しません。この問題は、テスト環境では再現できません。ジャージーがパスパラメーターを取得する前にパスパラメーターをデコードし、ジャージーが上記の例外をスローする可能性はありますか? このリンクは、 glassfishがアプリケーションに到達する前にリクエスト パラメータをデコードする機能を備えていることを示していますが、明確なアイデアは得られませんでした。この問題を解決するために私を助けてください。

4

2 に答える 2

0

Apache Load Balancer が原因でした! mod_jk は URL をデコードし、デコードした URL を Glassfish サーバーの 1 つに転送していました。したがって、ジャージー jax rs は URISyntaxException をスローしていました。mod_jk 構成のプロパティJkOptionsを +ForwardURICompat から +ForwardURICompatUnparsed に変更することで解決された問題

于 2013-10-09T10:51:40.737 に答える