java rest jersey jax-rs openshift

java - Jersey JAX-RS REST 404 en Openshift, que funciona bien en el Tomcat local



(1)

Soy bastante nuevo en Jersey REST. Sigo el tutorial http://javapapers.com/java/restful-web-services-with-java-jax-rs-using-jersey/ . Funciona bien localmente en Tomcat 7. Pero cuando lo despliego en Openshift, simplemente obtuve 404 no encontrado.

Este es mi 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>

Y este es mi recurso

@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; } }

Yo uso http: // localhost: 8080 / myproject / api / query y funciona bien. Pero en openshift utilizo http://market-domain.rhcloud.com/myproject/api/query o http://market-domain.rhcloud.com/api/query no funciona. Intenté implementar usando Tomcat 7 o JBoss AS 7, pero ambos me dieron el mismo error. No encontré ningún error en el archivo de registro. Parece que el recurso simplemente no existe. Me pregunto si mi URL está mal o algo más. Debería poder consultar este descanso inmediatamente después de la implementación, ¿verdad? Gracias por adelantado.


Finalmente descubrí que es mi problema de archivo de guerra. Usé maven build para 3 proyectos pero no funciona. Entonces solo uso Export War en Eclipse para generar un archivo war. Luego se puede encontrar el recurso después de la implementación.