0

次のコードは、Grails 2.0.4 および Eclipse STS 3.2 で、Eclipse の組み込み tcServer 2.7 を Web コンテナーとして使用して期待どおりに動作します...

class TestController {

    def service() {
      println request.request.getRequestURL()
      //render response here...
    }

のクライアント リクエストのhttp://svr1:8080/testapp/test/node1場合、上記のコードは完全なリクエスト URL を出力しますhttp://svr1:8080/testapp/test/node1

WAR を作成して Jetty 8.1.10 にデプロイしましたが、request.requestnull を返すことが判明したため、上記のコードは null ポインターで失敗します。使用してみrequest.getRequestURL()ましたが、grails ディスパッチ構文を含む URL が返されるため、必要な元のクライアント リクエスト URL と一致しません。

request.getServerName()回避策として、 、request.getServerPort()、およびrequest.getContextPath()を使用してほとんどの URL を手動で作成http://svr1:8080/testappしましたが、それでも uri 部分は省略されてい/test/node1ます。この問題は、Jetty のサーブレット API 実装に起因する可能性があると想定していますが、その場合は、他の誰かが私たちの前にこれに気付いていたはずです。

4

1 に答える 1

0

ここに投稿された tcServer と Jetty で動作するように見える回避策を見つけました。ベース URL を手動で作成し、このユーティリティを使用して残りの部分を取得します。

于 2013-03-31T04:47:13.193 に答える