【问题标题】:Jersey JAX-RS REST 404 in Openshift, working well in local TomcatOpenshift 中的 Jersey JAX-RS REST 404,在本地 Tomcat 中运行良好
【发布时间】:2015-04-16 15:23:15
【问题描述】:

我对 Jersey REST 很陌生。我遵循教程http://javapapers.com/java/restful-web-services-with-java-jax-rs-using-jersey/。它在 Tomcat 7 上本地运行良好。但是当我将它部署到 Openshift 时,我只是得到 404 not found。

这是我的 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>

这是我的资源

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

我使用http://localhost:8080/myproject/api/query,它工作正常。但是在 openshift 中,我使用 http://market-domain.rhcloud.com/myproject/api/queryhttp://market-domain.rhcloud.com/api/query 它不起作用。我尝试使用 Tomcat 7 或 JBoss AS 7 进行部署,但它们都给了我同样的错误。我在日志文件中没有发现任何错误。看起来资源根本不存在。我想知道我的网址是错误的还是其他什么?我应该能够在部署后立即查询其余的 ws,对吗?提前致谢。

【问题讨论】:

    标签: java rest jersey jax-rs openshift


    【解决方案1】:

    最后我发现这是我的战争文件问题。我将 maven build 用于 3 个项目,但它不起作用。然后我只是在Eclipse中使用export war来生成war文件。部署后即可找到资源。

    【讨论】:

      猜你喜欢
      • 2015-05-24
      • 2017-07-02
      • 2012-06-03
      • 2013-10-18
      • 1970-01-01
      • 2023-03-14
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多