2012-05-25 10 views
6

Ich suchte nach einer Antwort, fand aber keine Lösung. Ich entwickle einfache Web-App mit JSF2 und Hibernate. Dies ist das erste Mal, dass ich Hibernate benutze und ich viele Probleme mit der Konfiguration habe. Mein aktuelles Problem ist: Ich konfigurierte mysql Konnektor als ein Modul in JBoss7.1 Modulen. Dann habe ich eine Datenquelle erstellt und dem Klassenpfad mysql-connector-java-5.1.20-bin.jar hinzugefügt (im Verzeichnis WEB-INF/lib in .war). Nach dem Start von JBoss erhalte ich folgende Protokolle:JBoss 7.1: Kein passender Treiber gefunden java: mysql - konnte Verbindung nicht öffnen

23:44:07,497 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 27) JBAS010403: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3) 
23:44:07,603 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 27) JBAS010404: Deploying non-JDBC-compliant driver class com.mysql.jdbc.Driver (version 5.1) 
... 
23:44:20,348 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-3) JBAS010404: Deploying non-JDBC-compliant driver class com.mysql.jdbc.Driver (version 5.1) 
23:44:21,532 INFO 
... 
[org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl] (MSC service thread 1-3) HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost/testdb] 
23:44:21,535 INFO [org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl] (MSC service thread 1-3) HHH000046: Connection properties: {user=root} 
23:44:21,556 WARN [org.hibernate.engine.jdbc.internal.JdbcServicesImpl] (MSC service thread 1-3) HHH000342: Could not obtain connection to query metadata : No suitable driver found for jdbc:mysql://localhost/testdb 

Und dann wird die Anwendung bereitgestellt und der Server wird erfolgreich gestartet. Wenn ich versuche, Methode aufzurufen versuchen, einige Daten, die ich

erhalten anhalten
org.hibernate.exception.JDBCConnectionException: Could not open connection 
and 
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/testdb 

Ich bin sicher, dass die mysql-connector-java-5.1.20-bin.jar in der Datei WEB-INF/lib in Krieg . Irgendwelche Ideen, was fehlt mir hier? MySQL-Server-Version ist 5.1.63, aber ich denke nicht, dass es hier relevant ist. Vielen Dank im Voraus!

bearbeiten: Port ist in Ordnung, ich habe alles zweimal überprüft ;-) ABER, jetzt bin ich wirklich verwirrt, weil Code außerhalb des Containers funktioniert. Ich habe eine Klasse erstellt, die den gleichen Code verwendet (HIbernateUtil, um Sitzungsfactory zu erhalten) und es gibt keine Ausnahmen, und Daten werden in die DB eingefügt. Können Sie mir bitte erklären, warum es so funktioniert und warum es nicht unter dem Container funktioniert? Und wie kann ich das beheben, weil ich keine Ahnung habe ... Vielen Dank!

Meine standalone.xml Datei:

<server xmlns="urn:jboss:domain:1.2"> 

    <extensions> 
     <extension module="org.jboss.as.clustering.infinispan"/> 
     <extension module="org.jboss.as.configadmin"/> 
     <extension module="org.jboss.as.connector"/> 
     <extension module="org.jboss.as.deployment-scanner"/> 
     <extension module="org.jboss.as.ee"/> 
     <extension module="org.jboss.as.ejb3"/> 
     <extension module="org.jboss.as.jaxrs"/> 
     <extension module="org.jboss.as.jdr"/> 
     <extension module="org.jboss.as.jmx"/> 
     <extension module="org.jboss.as.jpa"/> 
     <extension module="org.jboss.as.logging"/> 
     <extension module="org.jboss.as.mail"/> 
     <extension module="org.jboss.as.naming"/> 
     <extension module="org.jboss.as.osgi"/> 
     <extension module="org.jboss.as.pojo"/> 
     <extension module="org.jboss.as.remoting"/> 
     <extension module="org.jboss.as.sar"/> 
     <extension module="org.jboss.as.security"/> 
     <extension module="org.jboss.as.threads"/> 
     <extension module="org.jboss.as.transactions"/> 
     <extension module="org.jboss.as.web"/> 
     <extension module="org.jboss.as.webservices"/> 
     <extension module="org.jboss.as.weld"/> 
    </extensions> 

    <management> 
     <security-realms> 
      <security-realm name="ManagementRealm"> 
       <authentication> 
        <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/> 
       </authentication> 
      </security-realm> 
      <security-realm name="ApplicationRealm"> 
       <authentication> 
        <properties path="application-users.properties" relative-to="jboss.server.config.dir"/> 
       </authentication> 
      </security-realm> 
     </security-realms> 
     <management-interfaces> 
      <native-interface security-realm="ManagementRealm"> 
       <socket-binding native="management-native"/> 
      </native-interface> 
      <http-interface security-realm="ManagementRealm"> 
       <socket-binding http="management-http"/> 
      </http-interface> 
     </management-interfaces> 
    </management> 

    <profile> 
     <subsystem xmlns="urn:jboss:domain:logging:1.1"> 
      <console-handler name="CONSOLE"> 
       <level name="INFO"/> 
       <formatter> 
        <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> 
       </formatter> 
      </console-handler> 
      <periodic-rotating-file-handler name="FILE"> 
       <formatter> 
        <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> 
       </formatter> 
       <file relative-to="jboss.server.log.dir" path="server.log"/> 
       <suffix value=".yyyy-MM-dd"/> 
       <append value="true"/> 
      </periodic-rotating-file-handler> 
      <logger category="com.arjuna"> 
       <level name="WARN"/> 
      </logger> 
      <logger category="org.apache.tomcat.util.modeler"> 
       <level name="WARN"/> 
      </logger> 
      <logger category="sun.rmi"> 
       <level name="WARN"/> 
      </logger> 
      <logger category="jacorb"> 
       <level name="WARN"/> 
      </logger> 
      <logger category="jacorb.config"> 
       <level name="ERROR"/> 
      </logger> 
      <root-logger> 
       <level name="INFO"/> 
       <handlers> 
        <handler name="CONSOLE"/> 
        <handler name="FILE"/> 
       </handlers> 
      </root-logger> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:configadmin:1.0"/> 
     <subsystem xmlns="urn:jboss:domain:datasources:1.0"> 
      <datasources> 
       <datasource jndi-name="java:jboss/datasources/testDS" pool-name="testDS"> 
        <connection-url>jdbc:mysql://localhost:3306/testdb</connection-url> 
        <driver>mysql</driver> 
        <pool> 
         <min-pool-size>10</min-pool-size> 
         <max-pool-size>20</max-pool-size> 
         <prefill>true</prefill> 
        </pool> 
        <security> 
         <user-name>root</user-name> 
        </security> 
       </datasource> 
       <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"> 
        <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url> 
        <driver>h2</driver> 
        <security> 
         <user-name>sa</user-name> 
         <password>sa</password> 
        </security> 
       </datasource> 
       <drivers> 
        <driver name="h2" module="com.h2database.h2"> 
         <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> 
        </driver> 
        <driver name="mysql" module="com.mysql"/> 
       </drivers> 
      </datasources> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1"> 
      <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:ee:1.0"/> 
     <subsystem xmlns="urn:jboss:domain:ejb3:1.2"> 
      <session-bean> 
       <stateless> 
        <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/> 
       </stateless> 
       <stateful default-access-timeout="5000" cache-ref="simple"/> 
       <singleton default-access-timeout="5000"/> 
      </session-bean> 
      <pools> 
       <bean-instance-pools> 
        <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/> 
        <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/> 
       </bean-instance-pools> 
      </pools> 
      <caches> 
       <cache name="simple" aliases="NoPassivationCache"/> 
       <cache name="passivating" passivation-store-ref="file" aliases="SimpleStatefulCache"/> 
      </caches> 
      <passivation-stores> 
       <file-passivation-store name="file"/> 
      </passivation-stores> 
      <async thread-pool-name="default"/> 
      <timer-service thread-pool-name="default"> 
       <data-store path="timer-service-data" relative-to="jboss.server.data.dir"/> 
      </timer-service> 
      <remote connector-ref="remoting-connector" thread-pool-name="default"/> 
      <thread-pools> 
       <thread-pool name="default"> 
        <max-threads count="10"/> 
        <keepalive-time time="100" unit="milliseconds"/> 
       </thread-pool> 
      </thread-pools> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:infinispan:1.2" default-cache-container="hibernate"> 
      <cache-container name="hibernate" default-cache="local-query"> 
       <local-cache name="entity"> 
        <transaction mode="NON_XA"/> 
        <eviction strategy="LRU" max-entries="10000"/> 
        <expiration max-idle="100000"/> 
       </local-cache> 
       <local-cache name="local-query"> 
        <transaction mode="NONE"/> 
        <eviction strategy="LRU" max-entries="10000"/> 
        <expiration max-idle="100000"/> 
       </local-cache> 
       <local-cache name="timestamps"> 
        <transaction mode="NONE"/> 
        <eviction strategy="NONE"/> 
       </local-cache> 
      </cache-container> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/> 
     <subsystem xmlns="urn:jboss:domain:jca:1.1"> 
      <archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/> 
      <bean-validation enabled="true"/> 
      <default-workmanager> 
       <short-running-threads> 
        <core-threads count="50"/> 
        <queue-length count="50"/> 
        <max-threads count="50"/> 
        <keepalive-time time="10" unit="seconds"/> 
       </short-running-threads> 
       <long-running-threads> 
        <core-threads count="50"/> 
        <queue-length count="50"/> 
        <max-threads count="50"/> 
        <keepalive-time time="10" unit="seconds"/> 
       </long-running-threads> 
      </default-workmanager> 
      <cached-connection-manager/> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:jdr:1.0"/> 
     <subsystem xmlns="urn:jboss:domain:jmx:1.1"> 
      <show-model value="true"/> 
      <remoting-connector/> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:jpa:1.0"> 
      <jpa default-datasource=""/> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:mail:1.0"> 
      <mail-session jndi-name="java:jboss/mail/Default"> 
       <smtp-server outbound-socket-binding-ref="mail-smtp"/> 
      </mail-session> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:naming:1.1"/> 
     <subsystem xmlns="urn:jboss:domain:osgi:1.2" activation="lazy"> 
      <properties> 
       <property name="org.osgi.framework.startlevel.beginning"> 
        1 
       </property> 
      </properties> 
      <capabilities> 
       <capability name="javax.servlet.api:v25"/> 
       <capability name="javax.transaction.api"/> 
       <capability name="org.apache.felix.log" startlevel="1"/> 
       <capability name="org.jboss.osgi.logging" startlevel="1"/> 
       <capability name="org.apache.felix.configadmin" startlevel="1"/> 
       <capability name="org.jboss.as.osgi.configadmin" startlevel="1"/> 
      </capabilities> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:pojo:1.0"/> 
     <subsystem xmlns="urn:jboss:domain:remoting:1.1"> 
      <connector name="remoting-connector" socket-binding="remoting" security-realm="ApplicationRealm"/> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:resource-adapters:1.0"/> 
     <subsystem xmlns="urn:jboss:domain:sar:1.0"/> 
     <subsystem xmlns="urn:jboss:domain:security:1.1"> 
      <security-domains> 
       <security-domain name="other" cache-type="default"> 
        <authentication> 
         <login-module code="Remoting" flag="optional"> 
          <module-option name="password-stacking" value="useFirstPass"/> 
         </login-module> 
         <login-module code="RealmUsersRoles" flag="required"> 
          <module-option name="usersProperties" value="${jboss.server.config.dir}/application-users.properties"/> 
          <module-option name="rolesProperties" value="${jboss.server.config.dir}/application-roles.properties"/> 
          <module-option name="realm" value="ApplicationRealm"/> 
          <module-option name="password-stacking" value="useFirstPass"/> 
         </login-module> 
        </authentication> 
       </security-domain> 
       <security-domain name="jboss-web-policy" cache-type="default"> 
        <authorization> 
         <policy-module code="Delegating" flag="required"/> 
        </authorization> 
       </security-domain> 
       <security-domain name="jboss-ejb-policy" cache-type="default"> 
        <authorization> 
         <policy-module code="Delegating" flag="required"/> 
        </authorization> 
       </security-domain> 
      </security-domains> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:threads:1.1"/> 
     <subsystem xmlns="urn:jboss:domain:transactions:1.1"> 
      <core-environment> 
       <process-id> 
        <uuid/> 
       </process-id> 
      </core-environment> 
      <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/> 
      <coordinator-environment default-timeout="300"/> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false"> 
      <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/> 
      <virtual-server name="default-host" enable-welcome-root="true"> 
       <alias name="localhost"/> 
       <alias name="example.com"/> 
      </virtual-server> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:webservices:1.1"> 
      <modify-wsdl-address>true</modify-wsdl-address> 
      <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host> 
      <endpoint-config name="Standard-Endpoint-Config"/> 
      <endpoint-config name="Recording-Endpoint-Config"> 
       <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM"> 
        <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/> 
       </pre-handler-chain> 
      </endpoint-config> 
     </subsystem> 
     <subsystem xmlns="urn:jboss:domain:weld:1.0"/> 
    </profile> 

    <interfaces> 
     <interface name="management"> 
      <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> 
     </interface> 
     <interface name="public"> 
      <inet-address value="${jboss.bind.address:127.0.0.1}"/> 
     </interface> 
     <interface name="unsecure"> 
      <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/> 
     </interface> 
    </interfaces> 

    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> 
     <socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/> 
     <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/> 
     <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/> 
     <socket-binding name="ajp" port="8009"/> 
     <socket-binding name="http" port="8080"/> 
     <socket-binding name="https" port="8443"/> 
     <socket-binding name="osgi-http" interface="management" port="8090"/> 
     <socket-binding name="remoting" port="4447"/> 
     <socket-binding name="txn-recovery-environment" port="4712"/> 
     <socket-binding name="txn-status-manager" port="4713"/> 
     <outbound-socket-binding name="mail-smtp"> 
      <remote-destination host="localhost" port="25"/> 
     </outbound-socket-binding> 
    </socket-binding-group> 

    <deployments> 
     <deployment name="jboss-as-helloworld-jsf.war" runtime-name="jboss-as-helloworld-jsf.war"> 
      <content sha1="87e5656e4c0b15f7864df9e68328d290999a1144"/> 
     </deployment> 
    </deployments> 
</server> 

Ich verwende Hibernate 4.1.3, hatte ich Hibernate Gläser als externe Gläser hinzufügen Weg zu bauen, auch nach Änderungen in modules/org/Hibernate/main (Ich habe module.xml geändert und alte Jars ersetzt). Nach diesen Änderungen habe ich während der Bereitstellung eine andere Ausnahme erhalten: .org.hibernate.service.classloading.spi.ClassLoadingException: Angegebener JDBC-Treiber com.mysql.jdbc.Driver-Klasse nicht gefunden In den Jboss-Protokollen wird der com.mysql.jdbc.Driver erwähnt wird bereitgestellt. HILFE!

+2

kann dies hilft https://community.jboss.org/wiki/DataSourceConfigurationInAS7?_sscc=t – sherif

+0

Danke, ich las es vor Posting hier - es gibt keine Lösung. Ich lese auch Dokumentation, die in Ihrem Link erwähnt wird, aber immer noch keine Ahnung, was falsch ist. –

+0

Funktioniert es ohne den Container? Test in einer Hauptklasse? Läuft MySQL auf dem Standard-Port, da Sie es nicht angegeben haben? – djmj

Antwort

-1

Setzen Sie den jdbc SQL in der Bibliothek Ordner: jboss/server/default/lib

Jboss mysql - No suitable driver found for jdbc

+0

In JBoss 7 gibt es keinen solchen Ordner. Stattdessen habe ich versucht, die Bibliothek unter standalone/lib und standalone/deployments zu stellen (das entspricht der Installation des Treibers als Bereitstellung) - beide funktionieren nicht. –

-1

Normalerweise sollte Ihre Jboss Konfiguration einen lib Ordner, in dem Sie Ihre JDBC-Treiber setzen können:

8.2.2. Installieren des JDBC-Treiber und Bereitstellen der Datasource

Um die JDBC-Treiber-Klassen zur Verfügung zu JBoss machen, kopieren Sie die Datei mysql-connector-java-3.0.15-ga-bin.jar vom Connector/J Verteilung an die lib-Verzeichnis in der Standard-Server-Konfiguration (vorausgesetzt, dass die Konfiguration, die Sie ausführen, natürlich). Dann erstellen Sie eine Datei im Deploy-Verzeichnis namens mysql-ds.xml mit der folgenden Datenquellenkonfiguration . Der Datenbankbenutzername und das Kennwort entsprechen dem MySql-Benutzer, den wir im vorherigen Abschnitt erstellt haben.

http://docs.jboss.org/jbossas/getting_started/v4/html/db.html

Wenn es nicht funktioniert, können Sie immer noch den Fahrer in lib/ext/Ordner Ihrer jdk setzen, aber es ist nicht die richtige Nutzung.

+0

Ihr Angebot stammt aus dem Dokument 'Erste Schritte mit JBoss 4.0'. Diese Frage bezieht sich auf JBoss 7.1. Die beiden sind in der Tat sehr unterschiedlich (JBoss 7 hat nicht das Konzept von Servern), und dieser Ratschlag gilt nicht. –

7

Wenn jemand ein ähnliches Problem konfrontiert, hier eine Lösung:

  • Check Zeug Leute unter meiner Frage hier erwähnt;
  • Wenn dies nicht funktioniert, prüfen Sie, ob Hibernate-Bibliotheken aus demselben Bundle stammen (das neueste ist 4.1.3, JBoss 7.1.1 hat 4.0.1);
  • stellen Sie sicher, Sie Stecker nicht duplizieren und Hibernate Bibliotheken in Klasse-Pfad und Manifest.mf Abhängigkeiten (die Ursache für mein Problem war)

Dank an alle, die hier geantwortet, Sie waren sehr hilfreich!

+2

Großartig! Sie müssen Ihre Antwort markieren, werden akzeptiert. :-) –

1
Step 1: 

You create one folder in jboss-as-7.1.1.Final\modules\com 

create mysql folder>> 

create main folder>> 

create module.xml file>> 

put mysql connector jar file (mysql-connector-java-5.1.10-bin) 


Step 2: 

add line on this location jboss-as-7.1.1.Final\modules\org\hibernate\main\module 

    <module name="com.mysql"/> 
Verwandte Themen