Grizzly üzerinde çalışan bir Servlet'te bazı enjekte edilmiş bağlamı (örneğin, Session veya HttpServletRequest) tutmaya çalışıyorum, ancak yaptığım hiçbir şey işe yaramıyor gibi görünüyor.Grizzly ve ServletContainerContext
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();
}
}
ve:
SEVERE: Missing dependency for field: javax.servlet.http.HttpServletRequest com.test.server.LolCat.hsr
sunucusu, iki dosya, statik giriş noktasından (Main.java) basit ölü oluşur: Tüm süreç aşağıdaki hata ile yerine erken durak gibi görünüyor serlvet (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";
}
}
Özellikle, hepsi benim sorunlarına kaynak ve çözüm yukarıdaki kaynak dosyada @ Bağlam-hat. İhtiyacım var ve Jersey ve Servletler hakkında okuduğum her şeye göre çalışmalı, ama bunu yapmaz. Ayrıca GrizzlyServerFactory yerine GrizzlyWebContainerFactory kullanmayı denedim, ancak boşuna.
Başvuru için, proje aşağıdaki bağımlılıkları derlendi:
- org.glassfish.grizzly: boz çerçevesi: kavanoz: 2.2.21
- org.glassfish.grizzly: boz-http: kavanoz: org.glassfish.grizzly 2.2.21
- : boz-http-servlet: kavanoz: 2.2.21
- org.glassfish.grizzly: boz-http-sunucu: kavanoz: 2.2.21
- com. sun.jersey: jersey-sunucu: jar: 1.17
- com.sun.jersey: jarse-sunucu uygulaması: haznesi: 1.17
- com.sun.jersey: jarse çekirdekli: haznesi: 1.17
- javax.servlet: javax.servlet-api: haznesi: 2.5.0
- com.sun.jersey: jarse-grizzly2: haznesi: 1.17
- com.sun.jersey: jarse-grizzly2-sunucu uygulaması: haznesi: 1.17
- asm: asm: haznesi: 3.3.1
Düz yazı tipi güvenliği ile çalıştı :). String/String setInitParameter kullanmadan bir sınıfa kayıt olmak mümkün mü? – Mic
Ben Jersey'in GrizzlyWebContainerFactory genişletilmiş/geliştirilmiş olabilir init parametreleri ile başa çıkmak gerekmez, ancak yine de aynı WebappContext kayıt kodu üzerinde bir sarıcı olacak. – alexey
Yardım! .. Kodum, WebappContext bağlamı = new WebappContext (... 'e kadar anlayacaktır, sonra aniden" thread özel durum "ana" java.lang.NoSuchMethodError: org.glassfish.grizzly.utils.DataStructures. getConcurrentMap (IFI) Ljava/util/eşzamanlı/ConcurrentMap; 'Java 7 ve 8 ile çalıştı, jersey-container-grizzly-http: 2.5 ve jersey-container-grizzly2-servlet kullanarak: 2.5 –