Reservieren Ausnahme für servlet-Jersey-REST-Dienst Fehler
Bin ich wieder-Kodierung eines webservice, die ich bereits erstellt, so dass ich eine "how-to" mit git für die anderen Mitglieder meiner Gruppe, wer übernimmt das Projekt.
Diese Zeit herum begann ich erhalte eine Fehlermeldung, wenn Sie versuchen, um meine webservice-und ich kann nicht scheinen, um das problem zu finden, da der code sieht genauso aus wie das, was ich schon vorher codiert (ein code, der funktioniert).
Ich bin mit apache tomcat und Jersey mit JSON.
Hier ist der Fehler:
mai 14, 2015 6:08:02 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet Jersey REST Service
com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:99)
at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1359)
at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:180)
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:799)
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:795)
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790)
at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:509)
at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:339)
at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:394)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:577)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1213)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Hier ist meine web.xml Datei:
<?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>com.labtabdb.rest</display-name>
<welcome-file-list>
<welcome-file>readme.html</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.labtabdb.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/nxp/*</url-pattern>
</servlet-mapping>
</web-app>
Hier ist eine Klasse, die verwendet die @Path-annotation:
//url path for class it's methods/chemin url pour la classe et ses methodes
@Path ("/v1/inventory")
public class V1__inventory
{
@GET //url ending in only /v1/inventory /chemin terminé par /v1/inventory
@Produces(MediaType.APPLICATION_JSON)
public Response errorIfNoQueryParamSpecified() throws Exception
{
return Response
.status(400) //bad request
.entity("Error: Please specify extension and parameter for this search.")
.build();
}
/**
* Method that returns materials filter by material name
* @param material name
* @return Response
* @throws Exception
*/
@Path("/{material_label}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response returnMaterial(@PathParam("material_label") String material) throws Exception
{
material = URLDecoder.decode(material, "UTF-8"); //decode URL param
String returnString = null;
JSONArray json;
try
{
json = LabTab_MySQLQuerys
.getMaterialsByName(material);
//if there are no results to the query
if(json.length() == 0)
throw new CustomException("No results returned");
else //otherwise return results
returnString = json.toString();
}
catch(CustomException e)
{
return Response
.status(204)
.entity(e.getMessage())
.build();
}
catch (Exception e)
{
e.printStackTrace();
return Response
.status(500) //internal server error
.entity("Server was not able to process your request")
.build();
}
return Response
.ok(returnString)
.build();
}
Ich habe suchen und Lesen die gleichen Artikel immer und immer wieder für 3 Tage jetzt und ich habe noch eine Lösung zu finden, das löst mein Fehler.
Alle Hilfe ist willkommen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich werde gehen Sie vor und reagieren auf meine eigene Frage, in der Hoffnung, dass es hilft, jemanden neuen zu rest.
Ich einen ziemlich dummen Fehler während der Erstellung meiner Tutorials:
Meine "url" für meine web-service war, zum Beispiel, com.webservice.rest. Beim re-doing mein Projekt, habe ich beschlossen, ändern Sie den Namen von meinem Paketen zu entsprechen, mit der neuen url: so ist meine Klasse, die hatte einen Pfad, Anmerkung, sagen wir mal, @PATH ("/v1/Inventar") wurde geändert, um com.webservice.Inventar.
Wenn die Eingabe der neuen package-Namen, stürzte ich mich auf und vergaß, das Wort rest in com.webservice.rest.Inventar .
Bei der Programmierung eines webservice, Sie haben zu daran erinnern, um sicherzustellen, das das Präfix jedes Paket mit einem path-annotation wird die url des web-service.