在嵌入式Weld EE容器中启动时,找到Arquillian没有HTTPContext

时间:2013-07-24 03:32:57

标签: maven jboss-weld jboss-arquillian

我正在使用Maven和Eclipse来启动容器测试。我的maven配置是使用原型设置的:jboss-javaee6-webapp-ear-blank-archetype

我可以在JBoss AS7中毫无问题地启动我的Arquillian测试。

但是当我尝试使用嵌入式Weld EE容器启动时,我得到以下异常:

java.lang.IllegalArgumentException: No org.jboss.arquillian.container.spi.client.protocol.metadata.HTTPContext found in org.jboss.arquillian.container.spi.client.protocol.metadata.ProtocolMetaData. Servlet protocol can not be used

导致org.jboss.arquillian.container.spi.client.protocol.metadata.HTTPContext发现错误的原因是什么?如何解决?

我在我的pom中设置了两个不同的配置文件,一个用于JBoss AS7(工作),另一个用于嵌入式Weld EE(不工作):

<profile>
    <id>arq-weld-ee-embedded</id>
          <activation>
              <activeByDefault>true</activeByDefault>
          </activation>
    <dependencies>
        <dependency>
            <groupId>org.jboss.spec</groupId>
            <artifactId>jboss-javaee-6.0</artifactId>
            <version>1.0.0.Final</version>
            <type>pom</type>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.arquillian.container</groupId>
            <artifactId>arquillian-weld-ee-embedded-1.1</artifactId>
            <version>1.0.0.CR3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.weld</groupId>
            <artifactId>weld-core</artifactId>
            <version>1.1.5.Final</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.6.4</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</profile>

<profile>
    <!-- An optional Arquillian testing profile that executes tests in your 
        JBoss AS instance -->
    <!-- This profile will start a new JBoss AS instance, and execute the 
        test, shutting it down when done -->
    <!-- Run with: mvn clean test -Parq-jbossas-managed -->
    <id>arq-jbossas-managed</id>
    <dependencies>
        <dependency>
            <groupId>org.jboss.as</groupId>
            <artifactId>jboss-as-arquillian-container-managed</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</profile>

1 个答案:

答案 0 :(得分:3)

在我的arquillian.xml文件中,我有一行:

<defaultProtocol type="Servlet 3.0" />

经过一些研究,我发现the embedded Weld EE container does not support the Servlet 3.0 protocol

要解决此问题,我从配置中删除了defaultProtocol,并按容器设置协议。