Configurando um Datasource para o SQL Server no JBoss AS 7.1

Postado em Atualizado em

E ai Galera blz?

Hoje estava navegando pelo guj e me deparei com o seguinte post:  Como configurar o JBoss AS 7 para que eu possa utilizar o MySQL em uma aplicacao JSF 2.1?.  Acabou que no fim das contas estavam tendo dificuldades para configurar um Driver como módulo no JBoss para se conectar ao SQL Server 2005. Por isso decidi fazer esse post para deixar como exemplo.

O primeiro passo é baixar o driver JDBC em http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774

Screen Shot 2013-03-25 at 19.20.31

Baixe o arquivo sqljdbc_4.0.2206.100_enu.tar.gz. Vamos utilizar o JAR sqljdbc4.jar.

Agora crie a estrutura que armazenará  os arquivos do módulo:


  mkdir -p JBOSS_HOME/modules/com/microsoft/main

Copie o arquivo para o diretório main da estrutura criada acima:


cp sqljdbc_4.0/enu/sqljdbc4.jar  JBOSS_HOME/modules/com/microsoft/main/

Crie o arquivo descritor do módulo o module.xml e deixe-o como abaixo:


<module xmlns="urn:jboss:module:1.0" name="com.microsoft">
 <resources>
   <resource-root path="sqljdbc4.jar"/>
   </resources>
   <dependencies>
      <module name="javax.api"/>
      <module name="javax.transaction.api"/>
   </dependencies>
</module>

No standalone.xml ou domain.xml crie o datasource:


<datasource jndi-name="java:jboss/datasources/my_test" pool-name="Test" enabled="true" use-java-context="true">
 <connection-url>jdbc:sqlserver://177.10.183.181:1433;DatabaseName=MyDatabase</connection-url>
   <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
   <driver>sqlserver</driver>
   <pool>
       <min-pool-size>1</min-pool-size>
       <max-pool-size>100</max-pool-size>
   </pool>
   <security>
       <user-name>usuario</user-name>
       <password>senha</password>
   </security>
   <validation>
       <validate-on-match>false</validate-on-match>
       <background-validation>false</background-validation>
   </validation>
   <statement>
       <share-prepared-statements>false</share-prepared-statements>
   </statement>
 </datasource>

E adicione o driver:


<drivers>
   <driver name="sqlserver" module="com.microsoft"/>

   <driver name="h2" module="com.h2database.h2">
      <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
   </driver>
</drivers>

Eu fiz alguns testes e obtive sucesso!

Results of Test

Successfully looked up DataSource named java:jboss/datasources/my_test

Successfully connected to database.

Attempting query “SELECT * FROM ”

Pessoalmente prefiro o JTDS  mas gosto é gosto!

Aquele Abraço!

5 comentários em “Configurando um Datasource para o SQL Server no JBoss AS 7.1

    Diógenes Torres disse:
    21 de maio de 2013 às 15:44

    Olá Mauricio, estou cm um problema em uma de minhas aplicações que conectam em uma jndi rac oracle. A aplicação funciona por algum tempo e depois de algum periodo ele fica fora e retorna a seguimente mensagem no log:

    15:33:27,832 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-0.0.0.0-0.0.0.0-8280-4) SQL Error: 17008, SQLState: 08003
    15:33:27,832 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-0.0.0.0-0.0.0.0-8280-4) Closed Connection
    15:33:27,834 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-0.0.0.0-0.0.0.0-8280-4) SQL Error: 17008, SQLState: 08003
    15:33:27,835 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-0.0.0.0-0.0.0.0-8280-4) Closed Connection
    15:33:27,836 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http-0.0.0.0-0.0.0.0-8280-4) /index.xhtml @49,150 listener=”#{posicaoViatura.ajaxPoll}”: java.lang.NullPointerException: javax.el.ELException: /index.xhtml @49,150 listener=”#{posicaoViatura.ajaxPoll}”: java.lang.NullPointerException
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111) [jsf-impl-2.1.7-jbossorg-2.jar:]
    at org.primefaces.component.poll.Poll.broadcast(Poll.java:215) [primefaces-3.4.2.jar:]
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) [jsf-impl-2.1.7-jbossorg-2.jar:]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:]
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
    at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
    at java.lang.Thread.run(Thread.java:679) [rt.jar:1.6.0_27]
    Caused by: java.lang.NullPointerException
    at gov.go.sspj.k9control.controller.PosicaoViaturaController.ajaxPoll(PosicaoViaturaController.java:91) [classes:]
    at sun.reflect.GeneratedMethodAccessor119.invoke(Unknown Source) [:1.6.0_27]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.6.0_27]
    at java.lang.reflect.Method.invoke(Method.java:616) [rt.jar:1.6.0_27]
    at org.apache.el.parser.AstValue.invoke(AstValue.java:262) [jbossweb-7.0.13.Final.jar:]
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278) [jbossweb-7.0.13.Final.jar:]
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) [jsf-impl-2.1.7-jbossorg-2.jar:]
    … 21 more

      Mauricio Magnani Jr respondido:
      21 de maio de 2013 às 21:44

      Oi Diógenes,

      Como está configurado o seu Datasource?!!

      Cola lá no paste bin e passar o link para eu dar uma olhada!

      Abs

    Diógenes Torres disse:
    6 de junho de 2013 às 8:59

    Olá Mauricio, blz? Segue o link do paste bin: http://pastebin.com/iP8vmd7u
    O arquivo de configuração é o standalone-full.xml , pois estou utilizando o JBoss em instâncias no modo standard.

    Diógenes Torres disse:
    6 de junho de 2013 às 11:00

    Mauricio, em relação ao citado acima a aplicação funciona e em certos momentos parar de funcionar e tenho que reiniciar o serviço da instancia para voltar a funcionar, segue o pasta bin do log de erro: http://pastebin.com/pBavPZK0

      Mauricio Magnani Jr respondido:
      7 de junho de 2013 às 9:00

      Oi Diógenes vou analisar esse fim de semana com calma e ver se encontramos uma solução…

      Abs

Deixe um comentário