2014-02-28 95 views
1

我一直在努力解決這個問題很長一段時間了。它突然開始,我不知道如何解決它或我做錯了什麼。我已經堆疊了很長時間,並沒有得到任何地方。我試過herehere和許多其他的鏈接。 當這個開發環境成立時,我沒有在這裏工作,以前從來沒有真正與澤西一起工作。CORS Filter找不到 - 球衣

誰能告訴我爲什麼我得到:

Fev 28, 2014 4:55:00 PM com.sun.jersey.core.spi.component.ProviderServices getInstances 
SEVERE: The class <my_package>.jersey.ResponseCorsFilter could not be found. This class is ignored. 
Fev 28, 2014 4:55:00 PM com.sun.jersey.server.impl.application.RootResourceUriRules <init> 
SEVERE: The ResourceConfig instance does not contain any root resource classes. 
Fev 28, 2014 4:55:00 PM org.apache.catalina.core.ApplicationContext log 
SEVERE: StandardWrapper.Throwable 
com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes. 
    at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:99) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1331) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:168) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:774) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:770) 
    at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:489) 
    at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:319) 
    at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) 
    at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5176) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

這是我的web.xml:

<servlet> 
     <servlet-name>Jersey REST Service</servlet-name> 
     <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name> 
      <param-value>PACKAGE_PATH.ResponseCorsFilter</param-value> 
     </init-param>  
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>PACKAGE_PATH.controller, 
         PACKAGE_PATH.supin.controller, 
         PACKAGE_PATH.rth.controller, 
         PACKAGE_PATH.rtp.pgto.controller, 
         PACKAGE_PATH.dir.controller.bgt, 
         PACKAGE_PATH.kpi.dir.controller.pa</param-value> 
     </init-param>  
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey REST Service</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 

這是我ResponseCorsFilter.java:

public class ResponseCorsFilter implements ContainerResponseFilter { 

@Override 
public ContainerResponse filter(ContainerRequest req, ContainerResponse contResp) { 
    ResponseBuilder resp = Response.fromResponse(contResp.getResponse()); 
    resp.header("Access-Control-Allow-Origin", "*") 
      .header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS, HEAD"); 

    String reqHead = req.getHeaderValue("Access-Control-Request-Headers"); 

    if(null != reqHead && !reqHead.equals("")){ 
     resp.header("Access-Control-Allow-Headers", reqHead); 
    } 

    contResp.setResponse(resp.build()); 

    return contResp; 
} 

} 

這是控制器之一。我通過使用http://localhost:8081/CSI/rest/chart/pa/01012013/01012014/getPA

@Path("chart/pa") 
public class PAController { 

@GET 
@Produces(MediaType.APPLICATION_JSON) 
@Path("/{firstParam}/{secondParam}/getPA") 
public Response GetPA(@PathParam("firstParam") String p1, 
      @PathParam("firstParam") String p2) throws Exception { 

... 

我錯過了什麼嗎?

回答

1

解決了它,並忘記發佈答案。

我從其他開發者導入WAR文件。起初,它運行良好。但是,突然間,它停了下來。我意識到我錯過了構建路徑上的Jersey文件。由於它工作了一段時間,我從來沒有想過它會開始這樣的行爲。

我使用Eclipse,所以這是很容易:

工程資源管理器 - >在項目上單擊右鍵 - >構建路徑 - >配置構建路徑

然後:

添加外部JAR

SIMPL就像那樣。