2016-01-01 54 views
0

我創建了一個使用RestEasy作爲RESTful應用程序框架的Web應用程序Maven項目。RestEasy爲每個端點返回404

web.xml文件看起來像這樣:

<?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_3_0.xsd" version="3.0"> 
    <display-name>me.randytan.inconium</display-name> 
    <welcome-file-list> 
    <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> 
    <context-param> 
    <param-name>resteasy.servlet.mapping.prefix</param-name> 
    <param-value>/v1/api</param-value> 
    </context-param> 
    <context-param> 
     <param-name>resteasy.scan</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>resteasy.scan</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <listener> 
    <listener-class> 
     org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap 
    </listener-class> 
    </listener> 
    <servlet> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <servlet-class> 
      org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
    </servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <url-pattern>/v1/api/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

我已經設置了自動掃描,以真實,創建滿足我的端點訪問了幾類。

但問題是,我的瀏覽器會拋出「404找不到」,即使我已經指定了端點參數寫在我的類中。

樣品端點URL:http://localhost:8080/me.randytan.inconium/v1/api/app/test

這是我的示例類我提出:

package me.randytan.inconium.controller; 

import java.sql.Connection; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.Produces; 
import javax.ws.rs.QueryParam; 
import javax.ws.rs.core.Response; 

@Path("app") 
public class AppTransaction { 

    public AppTransaction(){ //do something 
    } 

    @GET 
    @Path("/test") 
    public String test(){ 
     return "Hello World"; 
    } 
    ... 

我試圖改變@Path在班裏是:

  • @Path("/app")
  • @Path("app")

和功能test()內的路徑爲:

  • @Path("/test")
  • @Path("test")

但無論是作品。

爲我的項目規格:

  1. 的Java 1.7
  2. 的Tomcat 7.0
  3. RestEasy的3.0.14
+0

你能解釋一下你的終點地址嗎http:// localhost:8080/me.randytan.inconium/v1/api/app/test –

+0

@DarshanLila示例端點url我訪問該資源。 – randytan

+0

什麼是它裏面的'me.randytan.inconium'? –

回答

2

我終於此。

最好是由一個通過創建一個主應用程序聲明監聽器類之一,並呼籲web.xml

樣品主要應用:

import java.util.HashSet; 
import java.util.Set; 
import javax.ws.rs.core.Application; 


public class MainApplication extends Application { 

    private Set<Object> singletons = new HashSet<Object>(); 
     private Set<Class<?>> empty = new HashSet<Class<?>>(); 

     public MainApplication() { 
      //generate the main class of the framework; 
      try{ 
       //custom function. not necessary 
      } catch (Exception e){ 
       e.toString(); 
      } 

      //add singletons to Restful Transaction API; 
      this.singletons.add(new AppTransaction()); 
     } 

     public Set<Class<?>> getClasses() 
     { 
      return this.empty; 
     } 

     public Set<Object> getSingletons() 
     { 
      return this.singletons; 
     } 
} 

然後調用類Applicationweb.xml

<servlet> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <servlet-class> 
      org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
    </servlet-class> 
    <init-param> 
      <param-name>javax.ws.rs.Application</param-name> 
      <param-value>me.randytan.inconium.controller.MainApplication</param-value> 
    </init-param> 
    </servlet>