Tag Archives: JBoss

Bysutradi

Configurar Logging Profile no JBoss EAP 6.1

O JBoss EAP 6.1 contém um recurso chamado Logging Profile, que permite que as aplicações possam usar um profile de Log definido no servidor.

Porém, a documentação da Red Hat para o EAP apresenta somente a configuração necessária para usar o Logging Profile em standalone.

Se for usar seu EAP 6.1 em modo Domain, a configuração muda “ligeiramente” do que está na documentação da Red Hat.

Vou apresentar abaixo o que você precisa fazer.

1. Inicie seu JBoss em modo Domain.

2. Em uma outra janela  do seu terminal (ou CMD), execute o script jboss-cli.

./jboss-cli.sh -c

3. Execute os comandos abaixo para criar um Logging Profile, um Logging Handler.

/profile=full-ha/subsystem=logging/logging-profile=MY_LOGGING_PROFILE/:add
/profile=full-ha/subsystem=logging/logging-profile=MY_LOGGING_PROFILE/file-handler=MY_LOGGING_PROFILE_HANDLER:add(file={path=>"MY-LOG-FILE.log", "relative-to"=>"jboss.server.log.dir"})
/profile=full-ha/subsystem=logging/logging-profile=MY_LOGGING_PROFILE/file-handler=MY_LOGGING_PROFILE_HANDLER:change-log-level(level="DEBUG")
/profile=full-ha/subsystem=logging/logging-profile=MY_LOGGING_PROFILE/logger=com.mycompany.myapp:add(level=TRACE)
/profile=full-ha/subsystem=logging/logging-profile=MY_LOGGING_PROFILE/logger=com.mycompany.myapp:assign-handler(name="MY_LOGGING_PROFILE_HANDLER")

A diferença para a configuração na Red Hat é a definição do profile no início de cada comando.

Estes comandos alteram o arquivo domain.xml adicionando o trecho de código abaixo no profile “full-ha“.

<logging-profiles>
   <logging-profile name="MY_LOGGING_PROFILE">
        <file-handler name="MY_LOGGING_PROFILE_HANDLER">
            <level name="DEBUG"/>
            <file relative-to="jboss.server.log.dir" path="MY-LOG-FILE.log"/>
        </file-handler>
        <logger category="com.mycompany.myapp">
            <level name="TRACE"/>
            <handlers>
                <handler name="MY_LOGGING_PROFILE_HANDLER"/>
            </handlers>
        </logger>
    </logging-profile>
</logging-profiles>

4. Configure seu pom.xml para adicionar o nome do Logging Profile no MANIFEST.MF.

Para projetos WAR

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-war-plugin</artifactId>
	<version>2.3</version>
	<configuration>
		<filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
		<archive>
		<manifestEntries>
      <Logging-Profile>MY_LOGGING_PROFILE</Logging-Profile>
    </manifestEntries>
    </archive>
	</configuration>
</plugin>

Para projetos JAR/EJB

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<version>2.4</version>
	<configuration>
		<filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
		<archive>
		<manifestEntries>
      <Logging-Profile>MY_LOGGING_PROFILE</Logging-Profile>
    </manifestEntries>
    </archive>
	</configuration>
</plugin>

Estas configurações foram validadas em projetos WAR com JSF e projetos EJB 3, implantados no EAP 6.1 em uma configuração MASTER com 1 SERVER GROUP com 1 SERVER.

Momendo #ficadica

Aqui #ficadica para alguém da Red Hat fazer a adição em sua documentação do EAP para que outros profissionais possam otimizar suas configurações ao ler as documentações do produto.

Momento #naogostei

Agora que as configurações foram feitas e foram validadas tecnicamente em projetos, vou colocar aqui o que acabou me deixando um pouco frustrado com Red Hat / JBoss.

Me frustrou bastante o fato que a documentação do EAP (pelo menos para este item) apresentar somente configurações com foco no modo Standalone.

Outro ponto que achei ruim foi o fato que, os códigos de erro que os comandos me apresentaram durante esta aprendizagem, não foram encontrados em mecanismos de busca, aumentando o tempo necessário para encontrar uma solução.

Bysutradi

JUDCon2013: Brazil – JBoss AS (WildFly) na veia

Neste mês de Abril, dias 19 e 20, estive presente na JUDCon2013:Brazil, primeiro evento da Red Hat na América Latina sobre tecnologias da JBoss.

O primeiro dia distribuía palestras em 5 auditórios, o que acabou sendo um pouco frustante por não conseguir participar de algunas palestras interessantes.

Procurei participar de palestras mais práticas para melhor absorção de informações, já que minha intenção era assimilar maiores detalhes sobre o JBoss AS. Com isso, duas palestras foram fundamentais:

– Clustering for High Availability (HA) with JBoss AS 7 (Sergio Fantin);
– AS7, Domain Models, Cloud and how can I be on-demand? (Samuel Tauil, Bruno Rossetto Machado )

JUDCon_HA

O Sergio Fantin apresentou rapidamente alguns conceitos sobre JBoss AS, como sua execução em modo Standalone (único profile) ou Domain. Sua Demo continua 2 VMs com HTTP executando em mod_cluster. Me chamou a atenção a simplicidade da interface do console de administração do JBoss e a rapidez com que os profiles são parados/iniciados.

A palestra do Samuel/Bruno acabou complementando a palestra do Sergio. Apesar do título da paletra mencionar cloud, pouco falaram a respeito. Porém, deram mais detalhes técnicos sobre o JBoss. Detalhes sobre os profiles disponíveis:

– default

Subsistemas comumente carregados: logging, configadmin, datasources, ee, ejb3, infinispan, mail, jaxrs, jca, jdr, jmx, jpa, mail, naming, osji, pojo, remoting, resource-adapters, sar, security, threads, transactions, web, webservices and weld;

– ha (Alta disponibilidade)

default + jgroups e modcluster

– full

default + messaging (HornetQ), cmp, jacorb, jaxr, jsr77

– full-ha

full + jgroups e modcluster

Falaram sobre Server Groups (diferente de cluster), configuração de Domais (com Domain Controller : master/slave) e apresentaram uma topologia continua em cliente brasileiro (não mencionaram). Vejam a imagem.

JUDCon_AS-ArchitectureExample
E qual a diferença entre o JBoss AS 7 e o JBoss EAP 6? Tecnicamente, nenhuma. A questão é sobre a subscrição da Red Hat, onde no EAP ela garante suporte e atualizações. Inclusive, comentaram que ele já viu cliente usando o JBoss AS 7 em Produção (com ambiente estável).

Estas duas palestras foram excelentes.

Bysutradi

Configurar JBoss AS 7 para permitir acesso ao console remotamente

Nativamente, o JBoss AS 7 vem configurado para permitir acesso ao console de administração localmente (localhost / 127.0.0.1). No entanto, é comum que este acesso seja permitido remotamente.

Veja os passos abaixo para realizar esta configuração.

Passo 1 : Verifique as interfaces de rede disponíveis no servidor usando o comando ifconfig.

root@servidorjboss:/opt/jboss-as-7.1.1.Final/standalone/configuration# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:50:56:a3:68:ca
          inet addr:10.2.73.204  Bcast:10.2.79.255  Mask:255.255.248.0
          inet6 addr: fe80::250:56ff:fea3:68ca/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1164472 errors:0 dropped:1139 overruns:0 frame:0
          TX packets:153530 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:300181910 (300.1 MB)  TX bytes:14443010 (14.4 MB)
 
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:613 errors:0 dropped:0 overruns:0 frame:0
          TX packets:613 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:166423 (166.4 KB)  TX bytes:166423 (166.4 KB)

Neste caso, a informação que nos interessa é eth0.

Passo 2 : Edite o arquivo <JBoss>/standalone/configuration/standalone.xml para alterar a interface de comunicação.

No item  <interfaces>, adicione as configurações da sua interface de rede.

<interfaces>
<interface name=”management”>
<nic name=”eth0“/>
</interface>
 <interface name=”public”>
<nic name=”eth0“/>
</interface>
<interface name=”unsecure”>
<nic name=”eth0“/>
</interface>
<interfaces>

Salve o arquivo.

Passo 3 : Adicione os usuários usando o script add-user.sh, contido no diretório <JBoss_7>/bin.

O JBoss não vem com usuários definidos por padrão.

root@servidorjboss:/<JBoss_7>/bin# ./add-user.sh
 
What type of user do you wish to add?
 a) Management User (mgmt-users.properties)
 b) Application User (application-users.properties)
(a): a
 
Enter the details of the new user to add.
Realm (ManagementRealm) :
Username : <SeuUsuario>
Password : <SuaSenha>
Re-enter Password :
About to add user ‘<SeuUsuario>’ for realm ‘ManagementRealm’
Is this correct yes/no? yes
Added user ‘<SeuUsuario>‘ to file ‘/<JBoss_7>/standalone/configuration/mgmt-users.properties’
Added user ‘<SeuUsuario>‘ to file ‘/<JBoss_7>/domain/configuration/mgmt-users.properties’

Depois de adicionado o usuário, acesse a administração pela URL http://ServidorJBoss:9990/.

Se estas configurações não resolverem, refaça o passo 2 com as configurações abaixo.

<interfaces>
 <interface name="management">
                <any-address/>
 </interface>
        <interface name="public">
 <any-address/>
 </interface>
 <interface name="unsecure">
 <any-address/>
 </interface>
<interfaces>
Bysutradi

Executando EJBs remotos, localmente, no JBoss 4

Queria compartilhar um problema que tivemos num determinado cenário onde a solução encontramos em fóruns americanos depois de algumas horas de pesquisa.

Cenário

JBoss 4.x usando Spring 2.x para gerar os EJBs em ambiente do Desenvolvedor, junto com a aplicação web.

Comportamento

Sempre na tentativa de acesso ao serviço que invocava o EJB, a exceção abaixo era lançada.

10:09:57,614 ERROR [LogInterceptor] EJBException in method: public abstract com.meupacote.MeuEJBServiceRemote com.meupacote.MeuEJBServiceRemoteHome.create() throws javax.ejb.CreateException,java.rmi.RemoteException:
javax.ejb.EJBException: Invalid invocation, check your deployment packaging, method=public abstract com.meupacote.MeuEJBServiceRemote com.meupacote.MeuEJBServiceRemoteHome.create() throws javax.ejb.CreateException,java.rmi.RemoteException
at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invokeHome(StatelessSessionContainer.java:175)

Solução

Alterar as propriedades abaixo

1.No arquivo %jboss%/server/default/conf/jboss-service.xml, procurar pela referência abaixo

<mbean code="org.jboss.naming.NamingService" name="jboss:service=Naming" xmbean-dd="resource:xmdesc/NamingService-xmbean.xml">

Definir CallByValue igual a true

2.No arquivo %jboss%/server/default/deploy/ear-deployer.xml

Definir Isloated, CallByValue igual a true

3.No arquivo %jboss%/server/default/deployjboss-web.deployerMETA-INFjboss-service.xml

Definir Java2ClassLoadingCompilance and UseJbossWebLoader igual a false