2013-12-14 15 views
5

Sto usando Jersy a develeop webservices REST, questo è il mio semplice codice:

@GET 
@Path("/retrieveCustomerInformation/{jsonString}") 
@Produces(MediaType.APPLICATION_JSON) 
public String retrieveCustomerInformation(@PathParam("jsonString")JSONObject jsonObject) 
    throws Exception { 
     //Other codes here 

    } 

Ma quando faccio un rumore metallico l'URL del servizio di riposo dal browser, io sono sempre qui di seguito eccezione:

javax.servlet.ServletException: Servlet.init() for servlet jersey-serlvet threw exception 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 

e la causa principale è:

com.sun.jersey.spi.inject.Errors$ErrorMessagesException 
com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170) 
com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136) 
com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199) 

Può qualcuno mi guida, che cosa provoca questo er ror? Sto trovando difficile capire questo messaggio di errore in quanto non fornisce alcuna informazione utile per il debug.

Questo è il mio web.xml

<servlet> 
    <servlet-name>jersey-serlvet</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.test/param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

Sto usando Jersey 1.8, JDK 1.7 e applicazione è in esecuzione su Tomcat 7.0. Se necessario, posso fornire ulteriori informazioni.

risposta

3

La tua domanda sembra essere un duplicato e probabilmente è stata opportunamente indirizzata. Anch'io ho avuto lo stesso problema qualche tempo fa. Click here to see the accepted answer that resolved it for me

E nel caso in cui siete restii a seguire il link, prima di tutto, prova ad aggiungere jersey-multipart.jar e mimepull.jar alle librerie di progetto ... E se il progetto è un progetto Maven, aggiungere le seguenti dipendenze al tuo pom.xml. La dipendenza mimepull dovrebbe essere inclusa.

<dependency> 
    <groupId>com.sun.jersey.contribs</groupId> 
    <artifactId>jersey-multipart</artifactId> 
    <version>1.8</version> 
</dependency> 

Ricordarsi di verificare che la versione di jersey-multipart che si utilizza, è lo stesso della versione di jersey che si sta utilizzando nel progetto.

Nel caso in cui la soluzione di cui sopra non risolve il problema, si consiglia di vedere here per ulteriori consigli utili anche. Saluti!

0

Aggiungere la dipendenza dal riferimento

Jersey Application Deployment and Runtime Environments

nel vostro web.xml

<servlet> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.rest.portal</param-value> 
    </init-param> 
    <init-param> 
     <param-name>jersey.config.server.provider.scanning.recursive</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <init-param> 
     <param-name>jersey.config.server.provider.classnames</param-name> 
     <param-value>com.rest.portal.HelloWord</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

In Jersey 1.x solo utilizzando la

<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 

in serie 2.x utilizzare

<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 

e aggiungere i file jar necessari Jersy

  1. asm-5.0.2.jar
  2. jersey-comune.jar
  3. jersey-servlet-container-core.jar
  4. jersey-servlet-container.jar
  5. jersey-server.jar
3

Controllare scontrandosi @Path annotazioni. Ciò si verificherà con lo stesso errore. È un errore strano per la comunicazione dei problemi relativi ai percorsi, ma è possibile testarlo facilmente rinominando i percorsi corrispondenti.

Esempio di incassare i percorsi nel seguente codice

Alcuni classe

@Path("/storage") 
public class BookingRestService { 

@GET 
@Path("/bookings") 
@Produces(value = MediaType.APPLICATION_XML) 

e un'altra classe

@Path("/storage") 
public class StorageRestService { 

Rinominando una delle @Path("/storage") problema afferra per mettere in pericolo il vostro avanzamento dei lavori.

0

Un altro caso d'uso, che causa la stessa eccezione, che ha infranto il mio codice. Se si dovesse scrivere la risorsa come questo:

public String getPOST(@QueryParam("type") Character type){} 

il seguente tipo di dati, Character, farà sì che l'eccezione.

Problemi correlati