Glassfish 我得到;为类创建托管对象时出错:class org.jboss.weld.servlet.WeldListener“;每次我和Arquillian一起做测试

Glassfish 我得到;为类创建托管对象时出错:class org.jboss.weld.servlet.WeldListener“;每次我和Arquillian一起做测试,glassfish,jboss-arquillian,Glassfish,Jboss Arquillian,我使用EclipseNeon作为IDE,我在一台pc上。我正在用primefaces开发一个网站,我想用DB对我的EJB和JPA进行一些集成测试 以下是一个简单测试的代码,该测试包括在db中保存用户: package test.integration.services; import eu.unimib.srt.entities.User; import eu.unimib.srt.services.UserRepositoryServiceBean; import eu.unimib.srt

我使用EclipseNeon作为IDE,我在一台pc上。我正在用primefaces开发一个网站,我想用DB对我的EJB和JPA进行一些集成测试

以下是一个简单测试的代码,该测试包括在db中保存用户:

package test.integration.services;

import eu.unimib.srt.entities.User;
import eu.unimib.srt.services.UserRepositoryServiceBean;
import eu.unimib.srt.services.UserServiceBean;
import eu.unimib.srt.utilities.UserInfo;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.junit.InSequence;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;

import javax.ejb.EJB;
import javax.naming.NamingException;
import javax.persistence.criteria.CriteriaBuilder;

import static org.junit.Assert.*;


@RunWith(Arquillian.class)
public class UserRepositoryServiceBeanTest {
    private static final String NOME_1 = "NomeUtente";
    private static final String COGNOME_1 = "CognomeUtente";
    private static final String USERNAME_1 = "srtUserTEST";
    private static final String TELEFONO_1 = "023456789";
    private static final String PASSWORD1 = "IloveArquillian";
    private static final String COD_FISCALE_1 = "CDCFSC41E00W000W";
    private static final String EMAIL_1 = "nome.cognome@arquillian.org";
    private static UserInfo DBUSER_1 = null;
    static {
        DBUSER_1 = new UserInfo(NOME_1, COGNOME_1, USERNAME_1, TELEFONO_1, PASSWORD1, COD_FISCALE_1, EMAIL_1, null);
    }

    @Deployment
    public static JavaArchive createDeployment() {
        JavaArchive jar = ShrinkWrap.create(JavaArchive.class)
                .addAsResource("test-persistence.xml", "META-INF/persistence.xml")
                .addClass(UserRepositoryServiceBean.class)
                .addPackage(User.class.getPackage())
                .addClass(UserInfo.class)
                .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
        System.out.println(jar.toString(true));
        return jar;
    }

    @EJB
    private UserRepositoryServiceBean ursb;

    @Test
    @InSequence(1)
    public void addUserTest() throws NamingException {
        ursb.addUser(DBUSER_1, PASSWORD1);
    }

    @Test
    @InSequence(2)
    public void verifyBindTest() {
        boolean userFound = ursb.verifyBind(USERNAME_1,PASSWORD1);
        assertTrue(userFound);
    }

    @Test
    @InSequence(3)
    public void removeUserTest() throws NamingException {
        ursb.removeUser(USERNAME_1);
    }

}
persistence.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="SRTPersistenceUnit"
        transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/SRT16DataSource</jta-data-source>

        <class>eu.unimib.srt.entities.TestEntity</class>
        <class>eu.unimib.srt.entities.Automobile</class>
        <class>eu.unimib.srt.entities.Varco</class>
        <class>eu.unimib.srt.entities.Sanzione</class>
        <class>eu.unimib.srt.entities.Guidatore</class>
        <properties>

            <property name="eclipselink.ddl-generation" value="create-or-extend-tables" />
            <property name="eclipselink.ddl-generation.output-mode"
                value="database" />
        </properties>
    </persistence-unit>
</persistence>
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
             xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="SRTPersistenceUnit"
                      transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/arquillian</jta-data-source>
        <properties>
            <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
            <property name="eclipselink.logging.level.sql" value="FINE"/>
            <property name="eclipselink.logging.parameters" value="true"/>
        </properties>
    </persistence-unit>
</persistence>

问题是,当我使用Arquillian进行测试时,Glassfish的一个实例正在后台运行。解决办法是:

cd C:\Program Files\Glassfish4\bin
asadmin stop-domain domain1
...succesfull

请注意,在使用arquillian时,glassfish是否已经在运行

问题是,当我使用arquillian进行测试时,glassfish的一个实例正在后台运行。解决办法是:

cd C:\Program Files\Glassfish4\bin
asadmin stop-domain domain1
...succesfull

请注意,在使用arquillian时,glassfish是否已经在运行

您的实际问题与java se、eclipse、primefaces或jboss有何关系?你为什么不给它贴上“arquilian”的标签呢?我刚刚编辑过,你的实际问题与JavaSE、eclipse、primefaces或jboss有什么关系?你为什么不给它贴上我刚刚编辑过的“阿奎利安”标签呢