Sono abbastanza nuovo per Jersey REST. Seguo il tutorial http://javapapers.com/java/restful-web-services-with-java-jax-rs-using-jersey/. Funziona bene localmente su Tomcat 7. Ma quando lo distribuisco in Openshift, ho semplicemente ottenuto 404 non trovato.Jersey JAX-RS REST 404 in Openshift, funziona bene in Tomcat locale
Questo è il mio web.xml
<servlet>
<servlet-name>Jersey REST Service</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.market.ws</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
E questa è la mia risorsa
@Path("/api")
public class TicketsResource {
// Allows to insert contextual objects into the class,
// e.g. ServletContext, Request, Response, UriInfo
@Context
UriInfo uriInfo;
@Context
Request request;
// Return the list of todos to the user in the browser
// With the browser you can only issue HTTP GET requests\
@Path("/query")
@GET
@Produces(MediaType.TEXT_XML)
public List<Ticket> getTicketsBrowser() {
List<Ticket> tickets = new ArrayList<Ticket>();
tickets.addAll(TicketDao.instance.getModel().values());
return tickets;
}
// Return the list of todos for applications
// Default for browser GET
@Path("/query")
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public List<Ticket> getTickets() {
List<Ticket> tickets = new ArrayList<Ticket>();
try {
tickets.addAll(TicketDao.instance.getModel().values());
} catch(Exception e) {
e.printStackTrace();
}
return tickets;
}
}
lo uso http://localhost:8080/myproject/api/query e funziona benissimo. Ma in openshift io uso http://market-domain.rhcloud.com/myproject/api/query o http://market-domain.rhcloud.com/api/query non funziona. Ho provato a distribuire utilizzando Tomcat 7 o JBoss AS 7, ma entrambi mi hanno dato lo stesso errore. Non ho trovato alcun errore nel file di registro. Sembra che la risorsa semplicemente non esista. Mi chiedo se il mio Url sia sbagliato o altro? Dovrei essere in grado di interrogare questo resto immediatamente dopo la distribuzione, giusto? Grazie in anticipo.