sexta-feira, 28 de dezembro de 2007

Outras configurações para JBoss Messaging

  • A primeira coisa que deve ser feita após a instalação inicial é alterar o atributo SuckerPassword no arquivo $JBOSS_HOME/server/messaging/deploy/jboss-messaging.sar/messaging-service.xml. O atributo estará comentado, basta descomentá-lo e atribuir uma password. Veja abaixo:
<attribute name="SuckerPassword">m3ss@g3</attribute>
  • É importante aterar este atributo para evitar que outras pessoas acessem todos os "destinos" no servidor.
  • A próxima alteração se refere ao jboss-remoting.jar. O JBoss Messaging precisa ter o patch instalado (JBoss Remoting 2.2.2.SP3-brew) que pode ser obtido aqui. Faça o download e copie-o para o diretório $JBOSS_HOME/server/messaging/lib.
  • Edite o arquivo $JBOSS_HOME/server/messaging/conf/standardjboss.xml e altere todos os valores dos atributos CreateJBossMQDestination para false.
De:
<createjbossmqdestination>true</createjbossmqdestination>

Para:
<createjbossmqdestination>false</createjbossmqdestination>
  • Edite o arquivo $JBOSS_HOME/server/messaging/conf/jboss-service.xml excluindo a linha
<attribute name="JMSService">jboss.mq:service=DestinationManager</attribute>
  • Edite o arquivo $JBOSS_HOME/server/messaging/conf/login-config.xml excluindo o application-policy referente ao jbossmq. O trecho que deve ser excluído está abaixo:

<application-policy name = "jbossmq">
<authentication>
<login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule"
flag = "required">
<module-option name = "unauthenticatedIdentity">guest</module-option>
<module-option name = "dsJndiName">java:/DefaultDS</module-option>
<module-option name = "principalsQuery">SELECT PASSWD FROM JMS_USERS WHERE USERID=?</module-option>
<module-option name = "rolesQuery">SELECT ROLEID, 'Roles' FROM JMS_ROLES WHERE USERID=?</module-option>
</login-module>
</authentication>
</application-policy>

quinta-feira, 27 de dezembro de 2007

JBoss Messaging

JBoss Messaging é o novo provider para mensagens JMS da JBoss e veio para substituir seu antecessor JBossMQ. Ele atende a spec 1.1 de JMS, sendo que seu foco está em manter a performance e escalabilidade com alto throughput e latencia baixa.

Podemos utiliza-lo em JBoss 4.2.x ou superior, sendo que é necessário retirar o JBossMQ antes de instala-lo, não há a possibilidade de usar os 2 providers na mesma configuração. O Messaging será o provider default do JBoss AS a partir da versão 5, que atualmente está em Beta3.

O JBoss messaging está atualmente na versão 1.4.0.SP3, sendo que já está sendo utilizado em produção em diversas empresas.

Para utiliza-lo na versão 4.2.x do JBoss, basta seguir os passos abaixo:
  1. Acesse http://labs.jboss.com/jbossmessaging/downloads/ fazendo download de JBoss Messaging 1.4.0 Service Pack 3 (binary distribution) que é um arquivo .zip (jboss-messaging-1.4.0.SP3.zip).
  2. Descompacte-o em qualquer lugar.
  3. Certifique-se que seu JBoss não possui alterações em sua configuração DEFAULT
  4. Entre no diretório em que vc descompactou o jboss-messaging, entre no diretório util e digite ant -f release-admin.xml.
  5. Se fez tudo certo até agora, irá aparecer algo como:

[bmachado@bmachado util]$ ant -f release-admin.xml
Buildfile: release-admin.xml

default:

validate-jboss:

prevent-messaging-overwrite:

validate-messaging-artifact:

create-server-config:
[echo] Creating JBoss Messaging configuration 'messaging' for /usr/local/jboss-4.2.0.GA based on configuration 'default' with jboss-messaging.sar
[mkdir] Created dir: /usr/local/jboss-4.2.0.GA/server/messaging
[copy] Copying 320 files to /usr/local/jboss-4.2.0.GA/server/messaging

expand-sar:
[unjar] Expanding: /home/bmachado/Desktop/jboss-messaging-1.4.0.SP3/jboss-messaging.sar into /usr/local/jboss-4.2.0.GA/server/messaging/deploy/jboss-messaging.sar
[copy] Copying 1 file to /usr/local/jboss-4.2.0.GA/server/messaging/lib
[copy] Copying 2 files to /usr/local/jboss-4.2.0.GA/server/messaging/conf/props
[copy] Copying 1 file to /usr/local/jboss-4.2.0.GA/server/messaging/deploy
[copy] Copying 1 file to /usr/local/jboss-4.2.0.GA/server/messaging/deploy

BUILD SUCCESSFUL
Total time: 3 seconds
Com isso seu Messaging já estará instalado da forma mais básica que existe. Ele criará uma nova configuração em server/default chamada messaging. Veja server/default/messaging.

Para testa-lo, suba seu JBoss, entrando no diretório $JBOSS_HOME/bin e executando o comando ./run.sh -c messaging para startar a nova configuração.

Em seguida, entre no diretório do messaging que foi descompactado, haverá diversos exemplos para teste. Entre no jboss-messaging-1.4.0.SP3/examples/queue e digite ant.

Se tudo estiver ok, será exibida a seguinte mensagem no seu console:


Buildfile: build.xml

identify:
[echo] ###########################################################################
[echo] # Running the QUEUE example #
[echo] ###########################################################################
[echo] The queue: testQueue
[echo] The client jar: ../..//jboss-messaging-client.jar

sanity-check:

init:

compile:

run:
[java] Queue /queue/testQueue exists
[java] The message was successfully sent to the testQueue queue
[java] Received message: Hello!
[java] The example connected to JBoss Messaging version 1.4.0.SP3 (1.4)
[java]
[java] #####################
[java] ### SUCCESS! ###
[java] #####################

BUILD SUCCESSFUL
Total time: 3 seconds
Note a mensagem: The example connected to JBoss Messaging version 1.4.0.SP3 (1.4).

Pronto, você já está executando mensageria usando JBoss Messaging em sua configuração mais básica.

segunda-feira, 24 de dezembro de 2007

Blog Bruno "Baboo" Rossetto

Meu antigo blog está parado já há algum tempo, mas tem alguns posts legais.

http://www.jroller.com/rossetto/

quarta-feira, 19 de dezembro de 2007

persistence.xml Hibernate JPA

Abaixo o persistence.xml para usar Hibernate com JPA no JBoss com Datasource.

<persistence-unit name="jpaPU">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/DerbyDS</jta-data-source>
<class>com.jboss.entities.Country</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
</properties>
</persistence-unit>
JBoss já disponibiliza uma série de propriedades pré-configuradas para o uso de JPA com Hibernate no arquivo /server/default/deploy/ejb3.deployer/META-INF/persistence.properties. Você pode usa-lo para ter uma idéia das propriedades que poderão ser sobrescritas no seu persistence.xml.

Segue a lista abaixo:
hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup
#hibernate.connection.release_mode=after_statement
#hibernate.transaction.flush_before_completion=false
#hibernate.transaction.auto_close_session=false
#hibernate.query.factory_class=org.hibernate.hql.ast.ASTQueryTranslatorFactory
#hibernate.hbm2ddl.auto=create-drop
#hibernate.hbm2ddl.auto=create
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
# Clustered cache with TreeCache
#hibernate.cache.provider_class=org.jboss.ejb3.entity.TreeCacheProviderHook
#hibernate.treecache.mbean.object_name=jboss.cache:service=EJB3EntityTreeCache
#hibernate.dialect=org.hibernate.dialect.HSQLDialect
hibernate.jndi.java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
hibernate.jndi.java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
hibernate.bytecode.use_reflection_optimizer=false
# I don't think this is honored, but EJB3Deployer uses it
hibernate.bytecode.provider=javassist