【问题标题】:Arquillian, tomee-embedded and JAX-RSArquillian、tomee 嵌入式和 JAX-RS
【发布时间】:2013-06-28 10:36:14
【问题描述】:

我正在使用带有 tomee 嵌入式容器的 Arquillian 来测试我的 JAX-RS Web 服务。在我的测试用例中,我正在运行一个访问所提供资源的球衣测试客户端。但是,该测试在访问资源时始终会导致 404 NOT FOUND 状态。

在我的 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 配置设置以使其正常工作吗?

感谢您的任何反馈和问候 帕斯卡

【问题讨论】:

    标签: jboss-arquillian apache-tomee jersey-2.0


    【解决方案1】:

    只需将其包含在您的 pom.xml 中

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

    您可以使用嵌入式 TomEE。

    【讨论】:

      【解决方案2】:

      似乎没有办法将 tomee 嵌入式适配器切换到 plus 配置。因此,我切换到了 tomee-remote 适配器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多