RESTEASY003210: Konnte nicht finden die Ressource für den vollständigen Pfad : Tomcat
Ich erhalte die folgende Fehlermeldung:
Dies ist die Stapelüberwachung:
javax.ws.rs.NotFoundException: RESTEASY003210: Could not find resource for full path: http://localhost:9050/scenarioplanner/api/models/
at org.jboss.resteasy.core.registry.ClassNode.match(ClassNode.java:75)
at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48)
at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:445)
at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:257)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:194)
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Dies ist mein web.xml
<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_3_0.xsd"
id="WebApp_ID" version="3.0">
</webapp>
Dies ist mein pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>us.deloitteinnovation.dmaanalytics.nissan.backend</groupId>
<artifactId>scenarioplanner</artifactId>
<packaging>war</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>Scenario Planner Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-servlet-initializer</artifactId>
<version>3.0.12.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jboss.resteasy/resteasy-jaxb-provider -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>3.0.12.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jboss.resteasy/resteasy-jaxrs -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.12.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jboss.resteasy/resteasy-validator-provider-11 -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-validator-provider-11</artifactId>
<version>3.0.12.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>3.0.12.Final</version>
</dependency>
<dependency>
<groupId>net.sf.scannotation</groupId>
<artifactId>scannotation</artifactId>
<version>1.0.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1-m01</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jasypt/jasypt -->
<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt</artifactId>
<version>1.9.2</version>
</dependency>
</dependencies>
<build>
<finalName>scenarioplanner</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Habe ich deklariert eine leere Anwendung Klasse hier:
public class ScenarioPlannerApp extends Application{}
Ich bin mit dem folgenden einfachen web service mit URL http://localhost:9050/scenarioplanner/api/models/:
Den Ressource-Code :
@Path("")
public class ModelController
{
@GET
@Path("/models/")
@Produces(MediaType.APPLICATION_JSON)
public Response getModels() throws Exception {
ModelService modelService = null;
List<CarModelData> models;
models = modelService.getModelDetails();
logger.debug("Webservice Name [/models/] execution completed with HTTP status OK [200]");
//return Responsestatus(Status.OK).entity(models).build();
return Response
.status(Status.OK)
.entity(models)
.build();
}
Ich habe gelesen, dass viele Antworten auf stack overflow, aber nicht in der Lage, dies zu lösen, Fehler.
Ich habe die ganze Zeit versucht zu Debuggen dieser Fehler aber vergeblich!
Jede Hilfe wird sehr geschätzt!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Befestigung der Pfad der Anwendung
Kommentieren Sie die Klasse, die Sie erweitert
Application
mit@ApplicationPath
:Festsetzung der Ressource Pfad
Versehen
ModelController
Klasse mit@Path
mit/models
als Wert. DiegetModels()
Methode braucht nicht@Path
Anmerkung in dieser situation:Es ist wichtig, daran zu erinnern, dass ein
@Path
Anmerkung auf einer Ressource-Klasse bezeichnet eine Ressource.Ressource-Methoden zu erstellen
Es ist sehr wahrscheinlich, dass Sie benötigen, um mehr hinzuzufügen Methoden zur
ModelController
- Ressource-Klasse. Siehe die Beispiele unten:Haben eine Methode, mit der
POST
Anfragen auf/api/models
haben, können Sie die folgenden:Haben eine Methode, mit der
GET
Anfragen auf/api/models/{id}
haben, können Sie die folgenden:Und es ist wichtig, daran zu erinnern, dass ein
@Path
Anmerkung auf einer Ressource-Methode einer Ressource-Klasse bezeichnet eine sub-Ressource einer Ressource.Dieses Problem wurde durch mich gelöst.
Dies ist, was ich tun musste:
In der obigen Stück code,
Musste ich
change the path @Path("") to @Path("/api")
Das ist es!!
Rest war alles in Ordnung!
@Path("")
Anmerkungen, das ist eine seltsame design. Haben Sie einen Blick auf meine Antwort für eine bessere alternative.