Configurando um Datasource para o SQL Server no JBoss AS 7.1
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
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!
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
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
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.
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
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