Multiplas instancias do mesmo ear no mesmo JBoss  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
andrefariagomes
JavaBaby
[Avatar]

Membro desde: 18/09/2004 11:10:06
Mensagens: 90
Offline

Tenho um aplicativo web (war - somente servlets e jsps) e preciso utilizar alguns recursos de aplicativos enterprise (ear - ejb, jms, wars..) então quero passar a distribuí-lo no JBoss, porém hoje fazemos deploy de várias instancias deste mesmo aplicativo no mesmo servidor (tomcat), porque temos um produto que mantemos para vários clientes (a única diferença entre as instancias é o banco de dados que cada uma acessa, e algumas configurações em properties).

Seria possível ter várias instancias do mesmo aplicativo (ear) no mesmo jboss?
E enquanto ao jndi dos ejbs, e namespaces do ejbs e datasources que compartilham o mesmo namespace?

Alguém faz esse tipo de coisa, ou sabe se é possível?

Abraço,
André Faria
[Email] [WWW] [Yahoo!] [MSN]
LeoMarola
JavaGuru
[Avatar]

Membro desde: 17/07/2006 10:35:11
Mensagens: 201
Localização: Rio de Janeiro
Offline

Bom dia André,

Essa solução não é muito 'ortodoxa'. Vai te dar um trabalho doido para replicar além de sugar uma boa memória do seu JBOSS...

Pq a aplicação não trata o cliente e customiza de forma programática.. é bem menos dor de cabeça!

Abraços.

@Test

SCJP 5
SCWCD 5
SCBCD 5
SCEA 5 (Starting..)

[MSN]
Aldrin Leal
JavaEvangelist
[Avatar]

Membro desde: 10/07/2007 17:04:34
Mensagens: 330
Localização: Belem / PA / Brazil
Offline

André,

Realmente, não é fácil, mas você pode utilizar o recurso de partições

-- Aldrin Leal, http://www.leal.eng.br/mnemetica/
[WWW] [MSN]
psevestre
JavaEvangelist

Membro desde: 13/05/2005 12:53:19
Mensagens: 426
Localização: São Paulo
Offline

andrefariagomes wrote:
Seria possível ter várias instancias do mesmo aplicativo (ear) no mesmo jboss?
E enquanto ao jndi dos ejbs, e namespaces do ejbs e datasources que compartilham o mesmo namespace?



Exatamente o mesmo não, mas acho que você poderia chegar a algo próximo disto usando o seguinte artifício:

1. Refatore seu código de forma que o código nos componentes do EAR façam referência apenas a nomes JNDI no namespace local ("comp").

2. Use o mecanismo de "alt-dd" para injetar descritores específicos de cada cliente no ear básico, onde vc. fará as associações dos nomes lógicos de datasources utilizados com os nomes fisicos, resultando em um ear parametrizado para o cliente.

O passo 2 deve ser automatizado via ant ou algo semelhante, simplificando assim o processo de implantação.




http://justaphilpicks.blogspot.com/
[MSN]
andrefariagomes
JavaBaby
[Avatar]

Membro desde: 18/09/2004 11:10:06
Mensagens: 90
Offline

Este recurso de alt-dd funciona com JBoss?
Na documentação não consta nada...

This message was edited 1 time. Last update was at 21/01/2008 11:42:58


Abraço,
André Faria
[Email] [WWW] [Yahoo!] [MSN]
psevestre
JavaEvangelist

Membro desde: 13/05/2005 12:53:19
Mensagens: 426
Localização: São Paulo
Offline

andrefariagomes wrote:Este recurso de alt-dd funciona com JBoss?
Na documentação não costa nada...


Faz parte da spec e o JBoss diz que está em conformidade, portanto assumo que sim. Note que alguns dos mapeamentos podem ser controlados via descritores específicos do JBoss (jboss-app, jboss-web). O princípio seria o mesmo: um ear "genérico" que seria customizado via adição de descritores, gerando assim um ear específico para o cliente.

http://justaphilpicks.blogspot.com/
[MSN]
andrefariagomes
JavaBaby
[Avatar]

Membro desde: 18/09/2004 11:10:06
Mensagens: 90
Offline

Ótimo!!! Muito obrigdo pela dica!

Porém estou com um último problema...

No persistent unit eu tenho que definir um datasource (persistence.xml):

<persistence-unit name="tecPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>java:/tecDS</non-jta-data-source>

e este datasource é criado através de um arquivo *-ds.xml que é colocado no JBoss e o JBoss sempre o cria em dominio publico no JNDI...

Sabe como eu poderia resolver este problema sem ter que criar um arquivo persistence.xml para cada cliente?


Abraço,
André Faria
[Email] [WWW] [Yahoo!] [MSN]
psevestre
JavaEvangelist

Membro desde: 13/05/2005 12:53:19
Mensagens: 426
Localização: São Paulo
Offline

andrefariagomes wrote:Ótimo!!! Muito obrigdo pela dica!

Porém estou com um último problema...

No persistent unit eu tenho que definir um datasource (persistence.xml):

<persistence-unit name="tecPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>java:/tecDS</non-jta-data-source>

e este datasource é criado através de um arquivo *-ds.xml que é colocado no JBoss e o JBoss sempre o cria em dominio publico no JNDI...

Sabe como eu poderia resolver este problema sem ter que criar um arquivo persistence.xml para cada cliente?



Troque o "java:/tecDS" por um nome local à aplicação, p.ex java:comp/env/jdbc/tecDS.
No arquivo jboss.xml vc. faz o bind deste nome para o nome do datasource específico do cliente.

Dê uma olhada na documentação do JBoss sobre "ENC names", onde há informação detalhada sobre o assunto.

http://justaphilpicks.blogspot.com/
[MSN]
andrefariagomes
JavaBaby
[Avatar]

Membro desde: 18/09/2004 11:10:06
Mensagens: 90
Offline

Fiz o seguinte:

/META-INF/jboss.xml



No persistence.xml:


No teste-ds.xml



O seguinte erro me é apresentado:
--- MBeans waiting for other MBeans ---
ObjectName: persistence.units:ear=tec-importer-ear.ear,jar=tec-ejb-finanImporter.jar,unitName=tecPU
State: NOTYETINSTALLED
I Depend On:
jboss.jca:name=comp/env/tecDS,service=DataSourceBinding
Depends On Me:
jboss.j2ee:ear=tec-importer-ear.ear,jar=tec-ejb-finanImporter.jar,name=TecFinanImporterBean,service=EJB3


O que pode estar faltando?

Abraço,
André Faria
[Email] [WWW] [Yahoo!] [MSN]
psevestre
JavaEvangelist

Membro desde: 13/05/2005 12:53:19
Mensagens: 426
Localização: São Paulo
Offline

Tente colocar o "nome completo" (java:/comp/env...) no persistence.xml

http://justaphilpicks.blogspot.com/
[MSN]
andrefariagomes
JavaBaby
[Avatar]

Membro desde: 18/09/2004 11:10:06
Mensagens: 90
Offline

hummm. ...
não resolve...

Abraço,
André Faria
[Email] [WWW] [Yahoo!] [MSN]
apalmeira
JavaGuru

Membro desde: 01/11/2006 00:48:21
Mensagens: 239
Offline

Olá amigo,

você conseguiu resolver? estou com o mesmo problema!

Grato.
 
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Ir para:   
Powered by JForum 2.1.8 © JForum Team