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:
<?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:
<?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 --> <connection-url>jdbc:mysql://localhost:3306/db</connection-url> <!-- 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:
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:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" 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