2017-10-12 538 views
1

我面臨以下問題,找不到解決方案來解決它。錯誤[org.jboss.resteasy.resteasy_jaxrs.i18n](默認任務-2)RESTEASY002010

我的堆棧跟蹤到這裏:

ERROR [org.jboss.resteasy.resteasy_jaxrs.i18n] (default task-2) RESTEASY002010: Failed to execute: javax.ws.rs.NotFoundException: RESTEASY: Could not find resource for full path: http://localhost:8080/myProjectName 
    at org.jboss.resteasy.core.registry.ClassNode.match(ClassNode.java:75) 
    at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48) 
    at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:445) 
    at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:257) 
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:194) 
    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221) 
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) 
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) 
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) 
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at org.keycloak.adapters.undertow.UndertowAuthenticatedActionsHandler.handleRequest(UndertowAuthenticatedActionsHandler.java:66) 
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) 
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) 
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) 
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) 
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) 
    at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50) 
    at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at org.keycloak.adapters.undertow.ServletPreAuthActionsHandler.handleRequest(ServletPreAuthActionsHandler.java:69) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:285) 
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:264) 
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) 
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:175) 
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202) 
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:792) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
    at java.lang.Thread.run(Thread.java:748) 

這裏是我的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
      version="3.1"> 
     <context-param> 
      <param-name>resteasy.role.based.security</param-name> 
      <param-value>true</param-value> 
     </context-param> 

     <security-constraint> 
      <web-resource-collection> 
       <web-resource-name>pcpd</web-resource-name> 
       <url-pattern>/*</url-pattern> 
      </web-resource-collection> 
      <auth-constraint> 
       <role-name>administrator</role-name> 
      </auth-constraint> 
     </security-constraint> 

     <login-config> 
      <auth-method>BASIC</auth-method> 
     </login-config> 

    <security-role> 
     <role-name>administrator</role-name> 
    </security-role> 
</web-app> 

應用類:

@ApplicationPath("/") 
public class LauncherWebServices extends Application{ 
} 

類與服務

@Path("/folders") 
@RequestScoped 
public class PageServicesREST { 
     @GET 
    @Path("/retrievePage") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response getListPage() { 
     List<Page> list = pageBusiness.retrievePage(); 
     if (list == null) { 
      return Response.ok().entity("Liste des pages est vide").build(); 
     } 
     return Response.ok().entity(pageBusiness.retrievePage()).build(); 
    } 
} 

現在,當我運行的應用程序,我得到這個錯誤(堆棧跟蹤)這樣的網址:http://localhost:8080/myProjectName

但是,當我試圖運行象下面這樣的服務:

http://localhost:8080/myProjectName/folders/retrievePage 

它工作正常。

我錯過了什麼?

我曾嘗試閱讀其他解決方案在stackoverflow和文檔RESTEASY但我找不到解決方案。 有沒有人遇到過這樣的問題?

+0

那麼,你得到的錯誤,因爲你的根url(/)沒有映射到任何地方。嘗試映射你的根網址到一些東西。 –

+0

我可以這樣做嗎? – user1814879

回答

1

您的錯誤信息在我看來並不是致命的。你得到這個錯誤是因爲你沒有映射你的根URL(/)。要避免這種情況,你可以映射你的根URL的東西,例如:

@Path("/") 
@RequestScoped 
public class Root { 
    @GET 
    public Response index() { 
     return Response.ok().build(); 
    } 
} 

編輯:與其在同一類的映射根URL,把它放在另一個類,因爲你已經PageServiceREST指定folders路徑。

+0

好吧,我知道了,但是當我嘗試它不起作用時......我在@ApplicationPath類中添加了它,但沒有奏效 – user1814879

+0

哎呀抱歉,我忘記了你的類已經指定了'folders' url。我改變我的例子。現在我將根URL映射到不同的類 –