簡體   English   中英

通過Cargo在嵌入式Jetty中調用ehcache-server時發生異常:WebApplicationProviderImpl無法實例化

[英]exception when invoking ehcache-server within embedded Jetty via Cargo: WebApplicationProviderImpl could not be instantiated

我正在使用獨立的ehcache服務器來緩存某些數據的Web應用程序上工作。 ehcache服務器通過REST(與SOAP相反)訪問。

為了進行功能測試,我需要運行ehcache服務器的嵌入式實例。 echcache-server項目本身使用Cargo Maven2插件來進行其自身的功能測試。 我嘗試在應用程序的pom.xml中做同樣的事情,但是Cargo插件堅持要部署自己的Web應用程序的WAR,即使將其配置為使用ehcache的WAR也不例外。

因此,我試圖直接使用Cargo Container API進行部署和容器實例化。 以下是相關代碼:

String localRepositoryPath = "/home/zoltan/.m2/repository";
String jettyHomeDirectory = "/tmp/cargoJettyHome";

LocalConfiguration configuration = new Jetty6xEmbeddedStandaloneLocalConfiguration(jettyHomeDirectory);
Deployable war = new WAR(localRepositoryPath + "/net/sf/ehcache/ehcache-server/0.7/ehcache-server-0.7.war");
configuration.addDeployable(war);

EmbeddedLocalContainer container = new Jetty6xEmbeddedLocalContainer(configuration);
container.start();

根據與啟動獨立服務器時生成的消息相同的各種消息,Jetty容器啟動,並且ehcache本身似乎已部分啟動。 但是,RESTful Web服務無法啟動,但以下情況除外:

com.sun.jersey.spi.service.ServiceConfigurationError: com.sun.jersey.spi.container.WebApplicationProvider: The class com.sun.jersey.impl.container.WebApplicationProviderImpl implementing provider interface com.sun.jersey.spi.container.WebApplicationProvider could not be instantiated: null
    at com.sun.jersey.spi.service.ServiceFinder.fail(ServiceFinder.java:346)
    at com.sun.jersey.spi.service.ServiceFinder.access$600(ServiceFinder.java:144)
    at com.sun.jersey.spi.service.ServiceFinder$LazyObjectIterator.hasNext(ServiceFinder.java:638)
    at com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:61)
    at com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:570)
    at com.sun.jersey.spi.container.servlet.ServletContainer.load(ServletContainer.java:538)
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:207)
    at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:433)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:616)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
    at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:222)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.cargo.container.jetty.internal.JettyExecutorThread.run(JettyExecutorThread.java:68)
Caused by: java.lang.ClassCastException
    at java.lang.Class.cast(Class.java:2990)
    at com.sun.jersey.spi.service.ServiceFinder$LazyObjectIterator.hasNext(ServiceFinder.java:596)
    ... 26 more

這是我pom.xml中的相關依賴項:

<dependency>
  <groupId>com.sun.jersey</groupId>
  <artifactId>jersey-server</artifactId>
  <version>1.0</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>com.sun.jersey</groupId>
  <artifactId>jersey-client</artifactId>
  <version>1.0</version>
</dependency>
<dependency>
  <groupId>com.sun.jersey</groupId>
  <artifactId>jersey-spring</artifactId>
  <version>1.0</version>
  <scope>test</scope>
  <exclusions>
    <exclusion>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
    </exclusion>
    <exclusion>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
    </exclusion>
    <exclusion>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
    </exclusion>
    <exclusion>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
    </exclusion>
    <exclusion>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
    </exclusion>
    <exclusion>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-servlet-tester</artifactId>
  <version>6.1.11</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-core-api-container</artifactId>
  <version>1.0</version>
</dependency>
<dependency>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-core-api-generic</artifactId>
  <version>1.0</version>
</dependency>
<dependency>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-core-container-jetty</artifactId>
  <version>1.0</version>
</dependency>
<dependency>
  <groupId>net.sf.ehcache</groupId>
  <artifactId>ehcache-server</artifactId>
  <version>0.7</version>
  <type>war</type>
</dependency>

有誰知道可能導致此異常的原因嗎? 也許我正在使用版本不匹配的碼頭和運動衫? 我是否必須以某種方式注冊WebApplicationProviderImpl? 任何想法將不勝感激。

我對此沒有解決方案:相反,我的功能測試使用的是獨立的ehcache服務器。

ehcache郵件列表上的某人建議了另一種方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM