No suitable driver found - JBOSS 7.1

4 respostas
jdbcjbossjava
R

Boa tarde.

Estou tentando usar o jdbc no JBOSS 7.1, porém a cada erro que resolvo aparece outro. E bem isso já está me tirando do sério. O erro agora que está aparecendo é “No suitable driver found”. Segue algumas informações:
Meu datasource está assim…

<datasources>
                <datasource jta="true" jndi-name="java:/test-ds" pool-name="test" enabled="true" use-java-context="true" use-ccm="true">
                    <connection-url>jdbc:mysql://localhost/fj21</connection-url>
                    <driver>mysql</driver>
                    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
                    <pool>
                        <min-pool-size>5</min-pool-size>
                        <max-pool-size>30</max-pool-size>
                        <prefill>true</prefill>
                        <use-strict-min>false</use-strict-min>
                        <flush-strategy>FailingConnectionOnly</flush-strategy>
                    </pool>
                    <security>
                        <user-name>root</user-name>
                        <password>root</password>
                    </security>
                    <statement>
                        <prepared-statement-cache-size>32</prepared-statement-cache-size>
                    </statement>
                </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">
                        <driver-class>com.mysql.jdbc.Driver</driver-class>
                    </driver>
                </drivers>
            </datasources>

O module.xml está assim…

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql">
    <resources>
        <resource-root path="mysql-connector-java-5.1.40-bin.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
	<module name="javax.transaction.api"/>
    </dependencies>
</module>

O Driver JDBC está unicamente na pasta /home/rafael/jboss-as-7.1.0.Final/modules/com/mysql/main.

E o erro apresentado no console é esse:

12:29:58,258 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/fj21-agenda].[br.com.caelum.servlet.AdicionaContatoServlet]] (http-localhost-127.0.0.1-8080-3) Servlet.service() for servlet br.com.caelum.servlet.AdicionaContatoServlet threw exception: java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21?verifyServerCertificate=false&useSSL=true
at br.com.caelum.jdbc.ConnectionFactory.getConection(ConnectionFactory.java:22) [classes:]
at br.com.caelum.jdbc.dao.ContatoDAO.<init>(ContatoDAO.java:30) [classes:]
at br.com.caelum.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:49) [classes:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.10.Final.jar:]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.10.Final.jar:]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.10.Final.jar:]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.10.Final.jar:]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.10.Final.jar:]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_80]

Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21?verifyServerCertificate=false&useSSL=true
at java.sql.DriverManager.getConnection(DriverManager.java:596) [rt.jar:1.7.0_80]
at java.sql.DriverManager.getConnection(DriverManager.java:215) [rt.jar:1.7.0_80]
at br.com.caelum.jdbc.ConnectionFactory.getConection(ConnectionFactory.java:19) [classes:]
… 16 more

Já tentei seguir as orientações desse link, e não resolveu:
http://stackoverflow.com/questions/10761910/jboss-7-1-no-suitable-driver-found-javamysql-could-not-open-connection?answertab=oldest#tab-top

Gostaria de saber como resolvo esse erro.

4 Respostas

D

Você está usando o painel administrador do jboss (localhost:9990)?
Se sim, você precisa fazer o deploy do driver do mysql e ativá-lo.
Sabe como realizar deploy pelo painel administrador do JBoss?

R

Boa tarde Machado.

Não estou usando o painel. Até o momento eu fiz tudo na “mão” editando esses xml aí de cima. Poderia me orientar a como posso fazer esse deploy?

D

Eu acho louvável ir direto nos xmls, mas acho anti produtivo.
Você vai precisar seguir alguns passos, antes de fazer isso.

  • Vá até o local onde instalou o jboss, vamos chamar de JBHOME.
  • Em JBHOME\bin, você deve abrir o prompt ou terminal e executar o add-user correspondente ao teu SO (windows é o bat e linux é o .sh).
  • Quando abrir o aplicativo, ele questionará se quer um usuário admin ou comum, selecione “A”, correspondente a admin.
  • Prossiga com o preenchimento dos dados. Deixe o grupo em branco e finalize.
  • Inicie ou reinicie o JBoss
  • Acesse localhost:9990
  • Informe os dados do usuário recém cadastrado
  • A partir daí, você poderá ir até deployment e clicar em Add.
    Os demais passos são intuitivos.
R

Segui os passos e continua o mesmo erro…

14:31:03,882 INFO  [org.jboss.as.server] (Controller Boot Thread) JBAS018559: Deployed "mysql-connector-java-5.1.40-bin.jar"
14:31:03,901 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015876: Starting deployment of "fj21-agenda.war"
14:31:15,130 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-3) JBAS010403: Deploying JDBC-compliant driver class sun.jdbc.odbc.JdbcOdbcDriver (version 2.1)
14:31:15,396 INFO  [org.jboss.web] (MSC service thread 1-1) JBAS018210: Registering web context: /fj21-agenda
14:31:15,439 INFO  [org.jboss.as] (MSC service thread 1-4) JBAS015874: JBoss AS 7.1.0.Final "Thunder" started in 30944ms - Started 203 of 279 services (74 services are passive or on-demand)
14:31:15,712 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "fj21-agenda.war"
14:32:35,898 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/fj21-agenda].[br.com.caelum.servlet.AdicionaContatoServlet]] (http-localhost-127.0.0.1-8080-1) Servlet.service() for servlet br.com.caelum.servlet.AdicionaContatoServlet threw exception: java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21?verifyServerCertificate=false&useSSL=true
	at br.com.caelum.jdbc.ConnectionFactory.getConection(ConnectionFactory.java:22) [classes:]
	at br.com.caelum.jdbc.dao.ContatoDAO.<init>(ContatoDAO.java:30) [classes:]
	at br.com.caelum.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:49) [classes:]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.10.Final.jar:]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.10.Final.jar:]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.10.Final.jar:]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.10.Final.jar:]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.10.Final.jar:]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.10.Final.jar:]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.10.Final.jar:]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.10.Final.jar:]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.10.Final.jar:]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.10.Final.jar:]
	at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_80]
Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21?verifyServerCertificate=false&useSSL=true
	at java.sql.DriverManager.getConnection(DriverManager.java:596) [rt.jar:1.7.0_80]
	at java.sql.DriverManager.getConnection(DriverManager.java:215) [rt.jar:1.7.0_80]
	at br.com.caelum.jdbc.ConnectionFactory.getConection(ConnectionFactory.java:19) [classes:]
	... 16 more
Criado 21 de fevereiro de 2017
Ultima resposta 21 de fev. de 2017
Respostas 4
Participantes 2