0

我正在开发一个 Jax-RS RESTful 网络服务。虽然我仍在编写代码(在 Eclipse 中),但我希望能够轻松调试,所以我决定创建一个 Maven 项目并使用对 Grizzly Web 服务器的依赖项,这样我就可以启动一个只有 2 个代码行(甚至不必构建 WAR 文件)。

在我的网络服务实现类(带有@Path 的那个)中,我将上下文作为成员变量注入:

@javax.ws.rs.core.Context
ServletContext context;

当我检查上下文变量是否为 null 时,如果我构建 WAR 文件并将其部署在 TomCat 中,它不会为 null,但是当我启动 Grizzly 服务器并检查它时,它将为 null。启动 Grizzly v1.9 服务器的过程如下:

String url = "http://localhost:1234";
SelectorThread srv = GrizzlyServerFactory.create(url);

我试图通过 Google 找到解决方案,有人建议在 web.xml 中启用“load-on-startup”,但这也无济于事。

有任何想法吗?干杯!

4

2 回答 2

1

我的猜测是您使用没有 Servlet 容器扩展的 Grizzly。从理论上讲,JAX-RS 不仅可以在 servlet 环境中运行,而且您无法获得 ServletContext 或 HttpServletRequest 或 Response。

于 2011-10-10T16:08:33.413 回答
0

虽然这里的另一个答案有些道理,但我不太确定,因为根据 maven 依赖树,servlet 包也包括在内。

我可以通过迁移到不同的 Maven 依赖项来解决这个问题。我现在正在使用

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-grizzly2</artifactId>
    <version>1.9.1</version>
</dependency>

并按照http://blogs.oracle.com/PavelBucek/entry/jersey_grizzly_2_x_integration(示例)的说明使其工作。servlet 上下文现在已成功注入。

于 2011-10-11T15:03:17.407 回答