2015-01-21 7 views
0

나는 기본 h2/mem 데이터베이스를 사용하는 arquillian 테스트를 수행하고 있습니다. 지금 내 SQL로 전환하고 싶습니다. 먼저 mysql-connector-java-5.1.33-bin.jarstandalone/deployments에 복사했습니다. 로그가 올바른 배포를 확인했습니다. 나는 또한 wildfly의 관리 콘솔을 통해 mysql 데이터 소스를 설정하려고 시도했지만 제대로 작동했다 (연결 테스트를했지만 데이터 소스를 추가하지 않았다). 프로젝트의 테스트 내에 데이터 소스 설정을 유지하려고합니다. 그래서 나는 src/test/resources/test-ds.xml에 데이터 소스를 추가하십시오 src/test/resources/META-INF/test-persistence.xml은 다음과 같습니다arquillian, wildfly가 mysql에 데이터 소스를 변경하지 못함 - 오류가 누락되었거나 충족되지 않음

<datasources xmlns="http://www.jboss.org/ironjacamar/schema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd"> 

<datasource jndi-name="java:jboss/datasources/moritzTimetrackerTestDSmysql" 
    pool-name="moritzTimetracker-test" enabled="true" use-java-context="true"> 
    <connection-url>jdbc:mysql://localhost:3306/moritztimetracker</connection-url> 
    <driver>mysql-connector-java-5.1.33-bin.jar</driver> 
    <security> 
     <user-name>user</user-name> 
     <password>pass</password> 
    </security> 
</datasource> 

을 :

내가 테스트를 실행하는 경우
<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="primary"> 
     <jta-data-source>java:jboss/datasources/moritzTimetrackerTestDSmysql</jta-data-source> 
     <properties> 
     <!-- Properties for Hibernate --> 
     <property name="hibernate.hbm2ddl.auto" value="create-drop" /> 
     <property name="hibernate.show_sql" value="false" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

하지만 난 얻을 예외 :

org.jboss.arquillian.container.spi.client.container.DeploymentException: Cannot deploy: test.war 
... 
Caused by: java.lang.Exception: {"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.data-source.java:jboss/datasources/moritzTimetrackerTestDSmysql is missing [jboss.jdbc-driver.mysql-connector-java-5_1_33-bin_jar]"]} 

로그에 다음과 같이 쓰여 있습니다 :

JBAS014775: New missing/unsatisfied dependencies: 
     service jboss.data-source.java:jboss/datasources/moritzTimetrackerTestDSmysql (missing) dependents: [service jboss.data-source.reference-factory.java:jboss/datasources/moritzTimetrackerTestDSmysql] 
     service jboss.data-source.reference-factory.java:jboss/datasources/moritzTimetrackerTestDSmysql (missing) dependents: [service jboss.naming.context.java.jboss.datasources.moritzTimetrackerTestDSmysql] 
     service jboss.jdbc-driver.mysql-connector-java-5_1_33-bin_jar (missing) dependents: [service jboss.data-source.java:jboss/datasources/moritzTimetrackerTestDSmysql] 
     service jboss.persistenceunit."test.war#primary".__FIRST_PHASE__ (missing) dependents: [service jboss.deployment.unit."test.war".POST_MODULE] 

mysql을 데이터 소스로 올바르게 설정하는 방법은 무엇입니까?

답변

-1

관리 웹 인터페이스를 통해 데이터 소스를 만든 후에 standalone.xml을 매우 잘못보고했기 때문에 MySQL의 데이터 소스를 설정,이 방법은 잘 작동 :

<datasource jndi-name="java:jboss/datasources/testDSmysql" 
    pool-name="test" enabled="true" use-java-context="true"> 
    <connection-url>jdbc:mysql://localhost:3306/db</connection-url> 
    <driver-class>com.mysql.jdbc.Driver</driver-class> 
    <driver>mysql-connector-java-5.1.33-bin.jar_com.mysql.jdbc.Driver_5_1</driver> 
    <security> 
     <user-name>user</user-name> 
     <password>pass</password> 
    </security> 
</datasource> 

참조 "드라이버" "수준의 드라이브"와 - 당신이 문서를 읽을 물건 매우 다릅니다!

0

설정이 정확합니다 (데이터 소스 및 지속성 xml을 의미 함).

하지만 모든 테스트 케이스에서 앱과 함께 test-ds.xml 파일을 배포하는지 확인하십시오. 즉,

@Deployment 
public static Archive<?> createDeployment() { 
    return ShrinkWrap.create(WebArchive.class, "test.war") 
      .addAsResource("META-INF/test-persistence.xml", "META-INF/persistence.xml") 
      .addAsWebInfResource("test-ds.xml") /* CRUCIAL STEP */ 
      ... 
} 

이렇게하면 데이터 소스 정의가 EJB의 모든 마이크로 배포와 함께 배포됩니다.