2009-05-28 3 views
0

私はスタンドアロンehcacheサーバーを使用して特定のデータをキャッシュするWebアプリケーションで作業しています。 ehcacheサーバーは、REST(SOAPとは対照的に)を介してアクセスされます。Cargo経由で埋め込みJetty内で呼び出すとき例外:WebApplicationProviderImplをインスタンス化できませんでした

機能テストのために、ehcacheサーバーの埋め込みインスタンスを実行する必要があります。 echcache-serverプロジェクト自体は、Cargo Maven2プラグインを使用して、独自の機能テストのためにこれを行います。私はアプリケーションのpom.xmlでも同じことを試みましたが、CargoプラグインはehcacheのWARを代わりに使用するように設定していても、自分のWebアプリケーションのWARのデプロイを主張しています。

したがって、私は貨物コンテナ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(); 

突堤コンテナが開始され、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を登録する必要がありますか?どんなアイデアも高く評価されます。

答えて

0

解決策はありません。代わりに、私の機能テストでは、スタンドアロンのehcacheサーバーを使用しています。

ehcacheメーリングリストの誰かがan alternative approachを提案しました。

関連する問題