Erholsamen JAX-RS-Server-Fehler
Habe ich Probleme mit Restful Webservices mit Jersey Umsetzung.
In der Dokumentation steht, dass ich downloaden soll :
Jersey JAX-RS 2.0 RI bundle, entpacken Sie es und fügen Sie die Gläser auf meine WEB-INF/lib
Ordner. Diese Gläser sind:
- jersey-client -
- jersey-common
- jersey-container-servlet
- jersey-container-servlet-core
- jersey-server
Wenn ich das Tue, so bekomme ich immer folgende exception:
java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer
Nach einiger recherche fand ich heraus, dass ich hinzufügen sollte jersey-servlet-1.12.jar statt
hinzufügen die Gläser aus der download-Quelle oben gepostet. So habe ich es gemacht. Ich Hinzugefügt
dies zu meinen web.xml
<servlet>
<servlet-name>JAX-RS Servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAX-RS Servlet</servlet-name>
<url-pattern>/jaxrs/*</url-pattern>
</servlet-mapping>
Und implementiert habe ich eine kleine test-Klasse:
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import de.hof.university.spj.model.Movie;
@Path("/test")
public class Test {
@GET
@Produces("application/json; charset=UTF-8")
public List<Movie> getMovieList() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("SPJUnit");
EntityManager em = factory.createEntityManager();
TypedQuery<Movie> query = em.createQuery("Select m FROM Movie m WHERE m.movieID = 4204", Movie.class);
return query.getResultList();
}
}
Wenn ich jetzt call http://localhost:8080/MyApp/jaxrs/test
bekomme ich diesen Fehler:
HTTP Status 500 - Internal Server Error. The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.
Ich weiß nicht, wie zu tun, verwenden Sie die jersey-Implementierung richtig.
InformationsquelleAutor Mulgard | 2013-06-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich das Problem gelöst.
Ich alle gelöscht jersey-jars und ich löschte die webservices Teil aus der web.xml.
Änderte ich meine test-Klasse:
Und ich fügte
@XmlRootElement
zu meinem Film Entity-Klasse.Nun funktioniert es einwandfrei
InformationsquelleAutor Mulgard
Warum nicht Sie Folgen Sie einfach den Erste Schritte guide? Es sagt Ihnen genau, wie gehen über diese.
Würden Sie sehen, dass Sie brauchen, unter ein paar andere, diese Gläser in
WEB-INF/lib
:Würden Sie auch sehen, dass die
web.xml
muss in etwa so Aussehen:InformationsquelleAutor Marcel Stör