Die fehlenden Abhängigkeiten für HttpServletRequest mit Jersey
Ich habe einen Standalone-Jersey server läuft am Anfang meiner JunitTest. Ich Teste, ob meine JaxRS-controller arbeiten, sowie meine eigenen HttpClient. Bitte beachten Sie, dass ich schon immer in der Lage gewesen, diese JaxRsResourceController eingebettet in glassfish.
Hier ist die JaxRsController (light-version)
@Path("root")
public class JaxRsResourceController implements
ResourceController<HttpServletRequest> {
@Context
private UriInfo context;
@Context
HttpServletRequest request;
@Context
HttpServletResponse response;
@GET
public String hello(){
System.out.println("Uri is "+this.context.getBaseUri().toString());
return "Hello "+peoples;
}
}
Ich habe kein problem mit dem client, aber wenn ich den server starten, ich habe :
GRAVE: The following errors and warnings have been detected with resource and/or provider classes:
SEVERE: Missing dependency for field: javax.servlet.http.HttpServletRequest com.robustaweb.library.rest.controller.implementation.JaxRsResourceController.request
SEVERE: Missing dependency for field: javax.servlet.http.HttpServletResponse com.robustaweb.library.rest.controller.implementation.JaxRsResourceController.response
at com.sun.jersey.api.container.httpserver.HttpServerFactory.create(HttpServerFactory.java:172)
at com.robustaweb.library.rest.server.JerseyServer.startServer(JerseyServer.java:44)
Im Grunde es sagt, dass bei der @Context-Injektion Zeit, es gibt keine Abhängigkeit von der HttpServletRequest.
Aber wenn ich Entferne das @Context Anmerkungen auf Anfrage und-Antwort, aber halten Sie es für UriInfo context
, es ist ok, und ich kann den Uri.
Wechselte ich ein paar mal das Maven-pom-welches ist nun die Kraft, die libs in:
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.14</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
</dependencies>
Irgendeine Idee ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
servlet Abhängigkeiten getrennt waren, zu einem anderen Modul versuchen Sie,
Ihre pom.
Es war nicht leicht, aber ich habe es herausgefunden. Die Sache ist, dass in meinem JUnit-test, war ich den server erstellen wie diese :
Aber, dass die Art und Weise, erstellen Sie ein Leichtgewicht-container, die keine servlet-Container, und so ist die Fehlerursache. Also um alles zu haben, habe ich die Trikot-test-framework, die es ermöglichen, die Verwendung der Grizzly-web-container (oder sogar Embedded glassfish).
Hier ist die maven :
Hier ist die JerseyServerTest : beachten Sie, dass es sich JerseyTest
Und schließlich die Ressource-Datei, die enthält eine @GET und @LÖSCHEN
Und jetzt funktioniert es !
Ich hatte einige Hilfe in dieser Artikel, und es ist ein kleines Kapitel über die Dokumentation. Beeing in der Lage, befestigen Sie den source-code von dem Jersey-framework wirklich geholfen, so thantks zu IntelliJ auch.