Grizzly で実行している、作成したサーブレットで注入されたコンテキスト (Session や HttpServletRequest など) を取得しようとしていますが、何も機能していないようです。次のエラーにより、プロセス全体がかなり時期尚早に停止しているようです。
SEVERE: Missing dependency for field: javax.servlet.http.HttpServletRequest com.test.server.LolCat.hsr
サーバーは非常にシンプルで、静的エントリ ポイント (Main.java) の 2 つのファイルで構成されています。
package com.test.server;
import java.io.IOException;
import java.net.URI;
import javax.ws.rs.core.UriBuilder;
import org.glassfish.grizzly.http.server.HttpServer;
import com.sun.jersey.api.container.grizzly2.GrizzlyServerFactory;
import com.sun.jersey.api.core.ClassNamesResourceConfig;
import com.sun.jersey.api.core.ResourceConfig;
public class Main {
private static URI getBaseURI() {
return UriBuilder.fromUri("http://localhost/").port(8080).build();
}
public static final URI BASE_URI = getBaseURI();
public static void main(String[] args) throws IOException {
ResourceConfig rc = new ClassNamesResourceConfig(LolCat.class);
HttpServer httpServer = GrizzlyServerFactory.createHttpServer(BASE_URI, rc);
System.in.read();
httpServer.stop();
}
}
およびサーベット (LolCat.java):
package com.test.server;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
@Path(value = "/lol")
public class LolCat {
@Context HttpServletRequest hsr;
@GET
@Path(value="/cat")
public String list() {
return "meow";
}
}
具体的には、上記のソース ファイルの @Context 行が、すべての問題の原因であり解決策です。私はそれを必要としています.JerseyとServletsについて読んだすべてによれば、それはうまくいくはずですが、残念ながらそうではありません. また、GrizzlyServerFactory の代わりに GrizzlyWebContainerFactory を使用しようとしましたが、役に立ちませんでした。
参考までに、プロジェクトは次の依存関係でコンパイルされています。
- org.glassfish.grizzly:grizzly-framework:jar:2.2.21
- org.glassfish.grizzly:grizzly-http:jar:2.2.21
- org.glassfish.grizzly:grizzly-http-servlet:jar:2.2.21
- org.glassfish.grizzly:grizzly-http-server:jar:2.2.21
- com.sun.jersey:jersey-server:jar:1.17
- com.sun.jersey:jersey-servlet:jar:1.17
- com.sun.jersey:jersey-core:jar:1.17
- javax.servlet:javax.servlet-api:jar:2.5.0
- com.sun.jersey:jersey-grizzly2:jar:1.17
- com.sun.jersey:jersey-grizzly2-servlet:jar:1.17
- asm:asm:jar:3.3.1