JBoss AS 7 + MySQL

Friday, 29. July 2011

Se você quer rodar sua aplicação no JBoss AS 7 e quer usar MySQL você precisa seguir alguns poucos passos.

Por exemplo, no persistence.xml você configura sua persistence-unit assim:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
	version="1.0">
	<persistence-unit name="imobiliaria" transaction-type="JTA">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<jta-data-source>java:/imobiliaria</jta-data-source>
		<properties>
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="false" />
			<property name="hibernate.hbm2ddl.auto" value="create-drop" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
		</properties>
	</persistence-unit>
</persistence>

Sendo assim, com apenas um persistence-unit você não precisa configurar seu @PersistenceContext, ficando assim:

@PersistenceContext
EntityManager entityManager;

Caso você tenha mais de um persistence-unit em seu persistence.xml, você deverá usá-lo dessa forma:

@PersistenceContext(name="meu_persistence_unit_name")
EntityManager entityManager;

Além disso, também é necessário colocar o Driver como módulo pro JBoss AS 7.
Dentro da pasta onde você instalou o JBoss AS 7, existe a pasta “modules”, dentro dela existe a pasta “com”, dentro dela você criará a pasta “mysql”, e dentro dela, a pasta “main”.
Dentro da pasta main, você criará um arquivo chamado “module.xml” com o conteúdo:

<?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.17-bin.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
  </dependencies>
</module>

Onde em path=”mysql-connector-java-5.1.17-bin.jar” será o nome do seu mysql-connector. Este arquivo também deverá estar dentro da pasta: “modules/mysql/main”

Por fim, basta configurar o arquivo standalone.xml que está na pasta “jboss/standalone/configuration” adicionando o seu datasource, como abaixo:

<datasource jndi-name="java:/imobiliaria" pool-name="imobiliaria" enabled="true" jta="true" use-java-context="true" use-ccm="true">
   <connection-url>
      jdbc:mysql://localhost/imobiliaria
   </connection-url>
   <driver>
      com.mysql
   </driver>
   <security>
      <user-name>
         root
      </user-name>
   <password>

   </password>
   </security>
</datasource>

E adicionar o driver dentro do nó <drivers>:

<driver name="com.mysql" module="com.mysql">
   <xa-datasource-class>
      com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
   </xa-datasource-class>
</driver>

Como podem ver, é bem tranquilo. Segue abaixo um link relacionado ao assunto:

http://kousikraj.wordpress.com/tag/jboss-as-7-server-adapter-for-eclipse/ <- Instalando o adaptador do JBoss 7 no Eclipse

 

Eclipse: There are no resources that can be added or removed from the server

Wednesday, 27. July 2011

Se você criou um projeto via maven ou importou esse projeto e ele não está sendo reconhecido pelo eclipse como um Dynamic Web Project, isso vai fazer com que o plugin WTP do Eclipse não consiga adicionar seu projeto aos servers: Glassfish ou JBoss Server.

Eu tive esse problema usando Glassfish v3 e Eclipse Indigo, depois de encontrar uma solução, resolvi compartilhar essa dica rápida, segue abaixo.

A mensagem que estava sendo listada pra mim era:

 

Eclipse: There are no resources that can be added or removed from the server

Encontrei aqui esse tutorial que passa esse comando:

mvn -Dwtpversion=2.0 eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true

Update, se você usa m2eclipse você pode usar também:

import maven project

ps: Não fiz o teste.

Clique em seu projeto com o botão direito, vá em Run: Maven Build e cole o comando acima.

Esse comando vai pegar o POM do projeto e adicionar as dependencias em seu classpath, além de converter o seu projeto em um projeto web.
Pra que isso funcione, você precisará ter o plugin M2 do Maven devidamente instalado.

Funcionou comigo e agora o eclipse reconhece meu projeto como um projeto web normalmente e caso eu precise adicionar ou remover novas dependências, basta usar novamente este comando. Uma grande vantagem do projeto ser gerenciado via Eclipse é o fato que seu HOTDEPLOY vai funcionar perfeitamente.

Além disso sua estrutura e seu pom não foram modificados, então você poderá continuar utilizando seu projeto via Maven (com o HUDSON), ou facilitando a configuração do projeto em uma outra máquina (ambientes corporativos que precisam de vários desenvolvedores no projeto. Dica: evitem commitar o .classpath ;)