Ich habe eine Reihe von Beiträgen gelesen, kann aber mein Problem einfach nicht lösen. Sie werden auch Tonnen von Beiträgen sehen, die diesem ähnlich sind, sogar das gleiche Tutorial. Selbst wenn ich ihnen folge, scheint ich nicht zur Antwort zu kommen.
Im Wesentlichen versuche ich, das einfache Tutorial unter: http://www.vogella.com/articles/REST/ zu verfolgen.
Ich habe ein paar Änderungen vorgenommen, um es mit Jersey 2.x kompatibel zu machen
Ich benutze: Finsternis Tomcat 6 (bereitgestellt/innerhalb von Eclipse ausgeführt) jaxrs-ri-2.0 Ich habe die JAX-RS-Facette in Eclipse aktiviert
Alles baut gut auf Tomcat beginnt gut mit Eclipse Ich kann auf einen statischen Seiteninhalt zugreifen:
http://localhost:8080/RestTEST2/index.html
Wenn ich jedoch versuche, auf meinen Dienst zuzugreifen, über:
http://localhost:8080/RestTEST2/jaxrs/hello
Ich erhalte eine 404 mit "Nachricht nicht gefunden" und "Die angeforderte Ressource (Nicht gefunden) ist nicht verfügbar."
Hier ist meine web.xml, die sich unter /WebContent/WEB-INF/web.xml befindet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://Java.Sun.com/xml/ns/javaee" xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>TestREST2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<description>JAX-RS Tools Generated - Do not modify</description>
<servlet-name>JAX-RS Servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.Sun.jersey.config.property.packages</param-name>
<param-value>TestREST</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAX-RS Servlet</servlet-name>
<url-pattern>/jaxrs/*</url-pattern>
</servlet-mapping>
</web-app>
Hier ist meine Java-Klasse:
package TestREST;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
// Plain old Java Object it does not extend as class or implements
// an interface
// The class registers its methods for the HTTP GET request using the @GET annotation.
// Using the @Produces annotation, it defines that it can deliver several MIME types,
// text, XML and HTML.
// The browser requests per default the HTML MIME type.
//Sets the path to base URL + /hello
@Path("/hello")
public class Hello {
// This method is called if TEXT_PLAIN is request
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayPlainTextHello() {
return "Hello Jersey";
}
// This method is called if XML is request
@GET
@Produces(MediaType.TEXT_XML)
public String sayXMLHello() {
return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>";
}
// This method is called if HTML is request
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHtmlHello() {
return "<html> " + "<title>" + "Hello Jersey" + "</title>"
+ "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> ";
}
}
Ich habe auch eine JAX-RS User Library konfiguriert und referenziert, die alle JAX-RS-Gläser enthält.
Gedanken darüber, was den Webdienst nicht finden würde?
Jersey 2.0 erkennt init-param mit dem Namen com.Sun.jersey.config.property.packages
(web.xml) nicht. Versuchen Sie, es in jersey.config.server.provider.packages
zu ändern, wie in ServerProperties.PROVIDER_PACKAGES beschrieben.
Vielen Dank. Ich habe auch dafür gekämpft.
Diese Kombination hat für mich funktioniert: Tomcat 7.0.55 Eclipse LunaJava 1.6 Jersey 1.7
web.xml:
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.Sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.trgr.cobalt.cmdb.jersey.resource;com.trgr.cobalt.cmdb.jersey.beans;com.trgr.cobalt.cmdb.elasticity</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
Ich möchte in diesem Beitrag eine Antwort hinzufügen. Ich hatte zwei Tage lang mit dem gleichen Problem zu kämpfen und konnte keine Lösung finden .. Ich habe alle möglichen Lösungen ausprobiert, die hier bereitgestellt wurden
org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException
Dieser Link beantwortet die Lösung, wenn jemand wie ich stecken bleibt .. org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException
Eigentlich schlägt die erste Antwort in diesem Beitrag die Lösung vor, die für das Trikot 2.x-Bündel gilt. Wenn Sie Trikot 1.x verwenden, wird es weiterhin Fehler geben.
Bitte beziehen Sie sich auf den in der Antwort angegebenen Link für weitere Hinweise
Durch das Ändern der Konfiguration von Apache Tomcat v7.0 während der Erstellung von Dynamic Web Project, um REST einzuschließen, habe ich mein Problem gelöst. Sie ist standardmäßig nicht aktiviert.
Vor kurzem bin ich in dieses Problem geraten. Ich habe es gelöst, indem ich diese beiden Punkte als Lösung befolge:
src/main/Java
als Quellverzeichnis fest und behalten Sie die Projektstruktur wie folgt bei:com.Sun.jersey.config.property.packages
in jersey.config.server.provider.packages
im web.xml
ändern