2016-08-29 4 views
1

J'essaie d'effectuer des tests fonctionnels sur le plugin cargo maven2. Ces tests fonctionnent correctement sur le serveur local tomcat lorsqu'il est lancé sans utiliser le plugin cargo maven2. Le plugin lui-même des bottes avec succès mais quand je lance les tests qu'ils retournent 500 code d'erreur avec la trace suivante:ClassNotFoundException: oracle.jdbc.OracleDriver lors de l'exécution de tests utilisant le plugin cargo maven2

Caused by: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.OracleDriver' 
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1429) 
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371) 
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) 

... 109 more 
Caused by: java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver 
at java.lang.ClassLoader.findClass(ClassLoader.java:531) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at persistence.spi.hibernate.TransformingClassLoader.loadClass(TransformingClassLoader.java:46) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:14 

J'ai ajouté jar ojdbc 6 dans mon pom et exclues des références à ojdbc 5 et ojdbc 14.

Voici ma configuration cargo:

 <plugin> 
     <groupId>org.codehaus.cargo</groupId> 
     <artifactId>cargo-maven2-plugin</artifactId> 
     <version>1.4.14</version> 
     <configuration> 
      <container> 
       <containerId>tomcat7x</containerId> 
       <type>installed</type> 
       <zipUrlInstaller> 
       <url>http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.70/bin/apache-tomcat-7.0.70.zip</url> 
       <downloadDir>${project.build.directory}/downloads</downloadDir> 
       <extractDir>${project.build.directory}/extracts</extractDir> 
       </zipUrlInstaller> 
       <systemProperties> 
       <java.io.tmpdir>target/tmp</java.io.tmpdir> 
       </systemProperties> 
       <output>${project.build.directory}/cargo-container.log</output> 
       <log>${project.build.directory}/cargo.log</log> 
      </container> 
      <deployables> 
       <deployable> 
       <groupId>x.rest</groupId> 
       <artifactId>x-war</artifactId> 
       <type>war</type> 
       </deployable> 
      </deployables> 
      <configuration> 
       <type>standalone</type> 
       <home>${project.build.directory}/tomcat7x/container</home> 
       <properties> 
       <cargo.tomcat.ajp.port>9414</cargo.tomcat.ajp.port> 
            <cargo.servlet.port>9484</cargo.servlet.port> 
       <cargo.rmi.port>9496</cargo.rmi.port> 
       <cargo.logging>high</cargo.logging> 
       <war>${project.build.directory}/x-war.war</war> 
       <!-- This section was added by me but didn't fix the problem --> 
       <cargo.datasource.datasource> 
        cargo.datasource.jndi=jdbc/DB| 
        cargo.datasource.type=javax.sql.DataSource| 
        cargo.datasource.driver=oracle.jdbc.OracleDriver| 
        cargo.datasource.url=jdbc:oracle:thin:abc/[email protected]:22:node1| 
        cargo.datasource.username=abc| 
        cargo.datasource.password=abc 
       </cargo.datasource.datasource> 
       </properties> 
       <configfiles> 
       <configfile> 
        <file>${project.basedir}/src/test/resources/war-dependencies/stable-dev/context.xml</file> 
        <todir>conf</todir> 
        <tofile>context.xml</tofile> 
       </configfile> 
       </configfiles> 
       <files> 
       <file> 
        <file>${project.basedir}/src/test/resources/war-dependencies/stable-dev/service.keystore</file> 
        <todir>shared/classes</todir> 
       </file> 
       </files> 
      </configuration> 
     </configuration> 
     <executions> 
      <!-- The executions here deal only with INTEGRATION-TEST phase. We are NOT hitting REST Service via tests in the TEST phase. We need to be assured that our container is already 
       up and running. So cargo is started in PRE-INTEGRATION-TEST phase. --> 
      <execution> 
       <id>start-container</id> 
       <phase>pre-integration-test</phase> 
       <goals> 
       <goal>stop</goal> 
       </goals> 
      </execution> 
     <!-- <execution> 
       <id>stop-container</id> 
       <phase>post-integration-test</phase> 
       <goals> 
       <goal>stop</goal> 
       </goals> 
      </execution>--> 
     </executions> 
    </plugin> 

Je suis un débutant dans le monde des services Web afin des suggestions/pointeurs seraient appréciés. Peut-être qu'il me manque quelque configuration quelque part?

Répondre

0

Got it travailler. J'ai dû ajouter ojdbc6 en tant que dépendance dans la section conteneur.

0

La raison pour laquelle vous n'avez obtenu aucune exception sur tomcat peut être due au fichier ojdbc6.jar existant dans le dossier lib de Tomcat. Toutefois, le fichier jar du pilote oracle jdbc est introuvable dans le référentiel public maven en raison du problème juridique.

Voici l'instruction officielle d'obtenir oracle pilote JDBC de repository

Get Oracle JDBC drivers from the Oracle Maven Repository - NetBeans, Eclipse & Intellij

Il existe une autre solution simple et directe.

Installez le fichier jar directement au dépôt local en copiant le fichier jar à votre lecteur local, invite de commande ouverte, allez le répertoire en cours du fichier jar et exécutez la commande suivante

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dpackaging=jar -Dversion=11.2.0.4.0 -Dfile=ojdbc6.jar -DgeneratePom=true 
+0

Merci pour votre suggestion, mais je peux voir ojdbc6 -11.2.0.3 dans le cadre des bibliothèques référencées dans mon projet de test. Cela ne devrait-il pas suffire pour que la cargaison le prenne? – linuxNoob