Sobre o JBoss AS
O JBoss AS 7 é a versão mais recente do container Java EE mantindo pela Red Hat, trata-se da versão open source do projeto. A Red Hat também disponibiliza o JBoss EAP 6, como um produto (suporte e treinamento). Ambas as versões 6 e 7, na teoria, contam com a mesma base de código e features.
O JBoss sofreu uma grande reestruturação, se compararmos com versões anteriores (4 e 5). Um novo mecanismo para definir e utilizar módulos, melhorias consideráveis na performance e na administração do servidor são algumas características do JBoss AS 7. As mudanças afetam a forma de administrar o servidor, um exemplo disso é a própria configuração do DataSource.
O JBoss AS pode ser operado em dois modos: managed domain aonde múltiplas instâncias ativas são orquestradas (controladas) por um ponto (host) central; a outra é a standalone aonde uma única instância do servidor é utilizada (parecido com as versões antigas). Nesse post eu utilizo o JBoss no modo standalone.
Instalar o driver do MySQL
Depois de baixar o driver JDBC do MySQL, é necessário instalar o driver como um módulo do JBoss. No diretório do JBoss, na pasta modules crie a estrutura de sub-pastas \com\mysql\main, e copie o jar do driver dentro dessa pasta.
Nessa pasta, crie o arquivo module.xml, com o conteúdo a seguir:
1 2 3 4 5 6 7 8 9 10 | <? xml version = "1.0" encoding = "UTF-8" ?> < module xmlns = "urn:jboss:module:1.1" name = "com.mysql" > < resources > < resource-root path = "mysql-connector-java-5.1.24-bin.jar" /> </ resources > < dependencies > < module name = "javax.api" /> < module name = "javax.transaction.api" /> </ dependencies > </ module > |
Note a definição do nome do módulo com.mysql, na tag module de acordo com a estrutura de diretórios criada. A pasta main não é considerada, ela indica ao JBoss que essa é a versão principal do módulo. O JBoss permite a configuração de diferentes versões do mesmo módulo! Na tag resource-root indicamos o jar do MySQL contido no diretório main, que é justamente quem implementa o módulo. Outro detalhe são as dependências do módulo, definidas na tag dependencies.
Definir o DataSource
Uma vez que o módulo foi instalado, a próxima etapa é configurar o DataSource. Acesse o arquivo jboss7.../standalone/configuration/standalone.xml e adicione o conteúdo da tag datasource e driver, como a seguir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <? xml version = '1.0' encoding = 'UTF-8' ?> < server xmlns = "urn:jboss:domain:1.2" > ... < subsystem xmlns = "urn:jboss:domain:datasources:1.0" > < datasources > ... < datasource jndi-name = "java:jboss/datasources/MysqlDS" pool-name = "MySqlDS" enabled = "true" use-java-context = "true" > <!-- url jdbc --> <!-- identificador do driver --> < driver >com.mysql</ driver > < transaction-isolation > TRANSACTION_READ_COMMITTED </ transaction-isolation > < pool > < min-pool-size >10</ min-pool-size > < max-pool-size >100</ max-pool-size > < prefill >true</ prefill > </ pool > < security > < user-name >root</ user-name > <!-- usuario mysql --> < password >root</ password > <!-- senha --> </ security > </ datasource > < drivers > ... <!-- definicao do driver --> < driver name = "com.mysql" module = "com.mysql" > < xa-datasource-class >com.mysql.jdbc.Driver</ xa-datasource-class > </ driver > </ drivers > </ datasources > </ subsystem > ... </ server > |
Importante: Não remova nenhum conteúdo desse arquivo. Provalvemente já existe a configuração do driver e do datasource para o Hypersonic, um exemplo do JBoss. Mantenha essas configurações.
A tag driver indica que o módulo que nós acabamos de instalar, deve ser utilizado como um driver JDBC. Nela, indicamos qual é o nome do driver. Na outra tag driver, que fica dentro da definição do datasource, colocamos o nome do driver deve ser utilizado. O restante das tags indicam as informações de conexão com o MySQL e informações para criação do datasource (pool e transação).
Coloque o JBoss AS no ar, execute o arquivo jboss...\bin\standalone.sh (Windows standalone.bat). Verifique as informações do DataSource no log:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | yaw@m21: /opt/jboss-as-7 .1.1.Final /bin $. /standalone .sh ================================================================= JBoss Bootstrap Environment JBOSS_HOME: /opt/jboss-as-7 .1.1.Final JAVA: /usr/lib/jvm/java-7-oracle/bin/java JAVA_OPTS: -server -XX:+TieredCompilation -Xms64m -Xmx512m ... ================================================================= 00:30:55,948 INFO [org.jboss.modules] JBoss Modules version 1.1.1.GA 00:30:56,105 INFO [org.jboss.msc] JBoss MSC version 1.0.2.GA 00:30:56,149 INFO [org.jboss.as] JBoss AS 7.1.1.Final "Brontes" starting ... 00:30:57,184 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) ... 00:30:57,667 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-4) JBAS010400: Bound data source [java:jboss /datasources/MysqlDS ] ... |
Agora você pode desenvolver aplicações Java EE com JBoss e MySQL, através desse DataSource. Veja como seria o persistence.xml (JPA) para utilizar esse datasource:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <? xml version = "1.0" encoding = "UTF-8" standalone = "no" ?> xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" version = "2.0" xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" > < persistence-unit name = "appUnit" > <!-- jndi-name --> < jta-data-source >java:jboss/datasources/MysqlDS</ jta-data-source > < properties > < property name = "hibernate.dialect" value = "org.hibernate.dialect.MySQLDialect" /> < property name = "hibernate.show_sql" value = "true" /> < property name = "hibernate.hbm2ddl.auto" value = "update" /> < property name = "hibernate.connection.charSet" value = "UTF-8" /> </ properties > </ persistence-unit > </ persistence > |
http://twitter.com/edermag
http://www.yaw.com.br