0

以下代码使用 Eclipse 的嵌入式 tcServer 2.7 作为 Web 容器在 Grails 2.0.4 和 Eclipse STS 3.2 上按预期工作......

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.request返回 null,所以上面的代码失败并返回一个空指针。我们尝试使用request.getRequestURL(),但它返回一个包含 grails 调度语法的 URL,因此它与我们需要的原始客户端请求 url 不匹配。

request.getServerName()作为一种解决方法,我们使用,request.getServerPort()request.getContextPath(),手动构建了大部分 URL http://svr1:8080/testapp,但仍然忽略了 uri 部分 , /test/node1。我们假设这个问题可能归因于 Jetty 的 Servlet API 实现,但如果是这样的话,肯定有人会在我们之前发现这个问题。

4

1 回答 1

0

找到了一个似乎适用于 tcServer 和 Jetty 的解决方法。我们手动构建基本 URL,然后使用此实用程序获取剩余部分。

于 2013-03-31T04:47:13.193 回答