2013-06-28 5 views
1

Я использую Arquillian с контейнером, встроенным в Tomee, чтобы проверить веб-сервис JAX-RS. В моем тестовом примере я запускаю тестовый клиент трикотажа, обращаясь к предоставленному ресурсу. Однако при доступе к ресурсу при тестировании всегда возникает статус 404 NOT FOUND.Arquillian, tomee-embedded и JAX-RS

При развертывании того же проекта на моем экземпляре tomee-jaxrs ресурс предоставляется должным образом.

Эти зависимости Maven, что я включил в мой тестовый проект:

<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-server</artifactId> 
    <version>${jersey.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.openejb</groupId> 
    <artifactId>arquillian-tomee-embedded</artifactId> 
    <version>${tomee.version}</version> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.jboss.arquillian.junit</groupId> 
    <artifactId>arquillian-junit-container</artifactId> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.jboss.shrinkwrap.resolver</groupId> 
    <artifactId>shrinkwrap-resolver-depchain</artifactId> 
    <scope>test</scope> 
    <type>pom</type> 
</dependency> 

Мой тест выглядит следующим образом:

@RunWith(Arquillian.class) 
public class DemoTest { 
    @Deployment 
    public static WebArchive createDeployment() throws Exception { 
     return ShrinkWrap.create(WebArchive.class).addPackage(Controller.class.getPackage()).setWebXML("ch/codenation/test/regression/resources/container/WEB-INF/web.xml"); 
    } 

    @ArquillianResource 
    private URL url; 

    @Test 
    public void testGetData() throws Exception { 
     final IApplicationLayer applicationLayer = new JaxRsApplicationLayer(url.toURI()); 
     final Callable<String> dataProvider = new DataProvider(applicationLayer); 
     Assert.assertEquals("asdf", dateProvider.call()); 
    } 
} 

Как и мой web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
    <display-name>codenation-service</display-name> 
    <servlet> 
     <servlet-name>javax.ws.rs.core.Application</servlet-name> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>javax.ws.rs.core.Application</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

Ресурс JAX-RS действительно недоступен, поскольку, когда я устанавливаю точку останова в методе тестирования и пытаюсь получить доступ ресурс в браузере, я получаю сообщение 404. Однако то же самое, когда дескриптор архива на сервер tomee-jaxrs отлично работает. Существуют ли какие-либо дополнительные зависимости maven или параметры конфигурации arquillian, которые мне нужно добавить здесь, чтобы сделать эту работу?

Спасибо за любые отзывы и наилучшими пожеланиями Паскаль

ответ

1

Там, кажется, нет никакого способа, чтобы переключить tomee встраиваемый адаптер к конфигурации плюс. Поэтому я переключился на тони-удаленный адаптер.

2

Просто включите это в pom.xml

<dependency> 
     <groupId>org.apache.openejb</groupId> 
     <artifactId>tomee-jaxrs</artifactId> 
     <version>${tomee.version}</version> 
     <scope>test</scope> 
    </dependency> 

и вы можете работать со встроенной TomEE.