2009-05-28 3 views
0

독립형 ehcache 서버를 사용하여 특정 데이터를 캐시하는 웹 응용 프로그램에서 작업하고 있습니다. ehcache 서버는 REST (SOAP과 반대)를 통해 액세스됩니다.Cargo를 통해 임베디드 Jetty 내에서 호출 할 때 예외가 발생했습니다. WebApplicationProviderImpl을 인스턴스화 할 수 없습니다.

기능 테스트를 위해 ehcache 서버의 임베디드 인스턴스를 실행해야합니다. echcache-server 프로젝트 자체는 Cargo Maven2 플러그인을 사용하여 자체 기능 테스트를 수행합니다. 내 응용 프로그램의 pom.xml에서도 똑같은 작업을 시도했지만 Cargo 플러그인은 ehcache의 WAR를 대신 사용하도록 구성하더라도 내 웹 응용 프로그램의 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 웹 서비스는 다음을 제외하고 시작하는 데 실패 : 여기

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을 제안했습니다.

관련 문제