Ambiente Distribuído usando o WSO2 e Magic xpi

(agora com GigaSpaces)

 1_system-integration

Desde a versão 3 do Magic xpi, quando ainda se chamava iBolt, o WSO2 é o framework oficial para as interfaces SOAP dos produtos Magic.

Desenvolvido em Java versão 6, originalmente pela Hewlett-Packard (ainda com o nome de SystInet), o WSO2 é usado tanto nas interfaces de “consumo” quanto de “provimento” de webServices SOAP. E esta estrutura permanece na versão 4 do Magic xpi.

A instalação do WSO2 normalmente é um processo automático durante a instalação do próprio Magic xpi:

Imagem_000

Mas é possível também fazê-la de forma manual e independente cfe. dicas encontradas nestes dois endereços:

Blog Magic Brasil

Magic Developer Community

Para o “consumo” de webServices, o Magic xpi necessita que o WSO2 esteja instalado e acessível ao Magic xpi Server, Studio e Monitor. O Magic xpi localiza a instalação do WSO2 através da variável de ambiente %WASP_HOME%:

Imagem_001

Imagem_002

Atualmente na versão 4, o Magic xpi também necessita desta instalação para que o Monitor possa consultar as informações do GigaSpaces.

Para o “provimento” de webServices, além da instalação acima é necessário também que o WSO2 Server esteja executando, pois é ele quem recebe as solicitações SOAP externas e repassa-as ao Magic xpi:

Imagem_003

Imagem_003_A

Quando o Magic xpi provê um webService SOAP, uma classe Java (proxy) é gerada para este serviço segundo a API do WSO2:

Imagem_004

Esta classe Java por sua vez, precisa ser implantada (deployed) no WSO2 Server:

Imagem_005

Imagem_006

Desta forma o webservice SOAP fica exposto através do WSO2 Server, que repassa as chamadas externas ao Magic xpi através das regras codificadas na classe Java do serviço.

O que talvez passe despercebido na maioria das vezes, é que não é obrigatório que o WSO2 Server esteja executando exatamente na mesma máquina do Magic xpi Server.

E é sobre isso que iremos tratar a seguir. Iremos mostrar uma arquitetura onde o WSO2 Server estará executando em um servidor diferente e em um sistema operacional diferente. No nosso exemplo, teremos o Magic xpi Server + GigaSpaces num servidor “A” MS-Windows e o WSO2 Server num servidor “B” Linux.

Ter o WSO2 Server em servidor separado tem seus atrativos.

Nós podemos ter ‘n’ servidores WSO2, independente de quantas máquinas estarão agregadas ao MAGIC_SPACE, sem sobrecarregar o processamento das máquinas que executam o Magic xpi Server:

Imagem_006_A

A instalação do Magic xpi Server + GigaSpaces não será abordada aqui, visto que se trata de uma instalação padrão. Passaremos então diretamente para a instalação do WSO2 Server no Linux. Usaremos o Linux CentOS 5.9:

Imagem_007

 

Pré-Requisitos

Antes de realizar a instalação do  WSO2, é preciso que o Linux possua o Java versão 6:

Imagem_008

A pasta de instalação do Java versão 6 também precisa estar referenciada nas variáveis de ambiente $JAVA_HOME e $PATH:

Imagem_009

O pacote de instalação do WSO2 é disponibilizado na pasta do Magic xpi:

Imagem_010

E deve ser copiado para alguma pasta do servidor Linux:

Imagem_011

E por último, estes servidores precisam estar conectados de forma que consigam conversar entre si através do protocolo TCP, se possível sem firewalls entre eles.

 

Instalação

A instalação do WSO2 é iniciada executando-se o comando:

java -jar wso2-soa-enablement-server-java-6.6.jar

Imagem_012

A instalação é interativa e a maioria dos valores sugeridos podem ser acatados, como pasta de instalação, portas de comunicação, etc.

O importante é selecionar a opção “server” e “install security support”:

Imagem_013

Após a confirmação das opções no assistente de instalação, o WSO2 estará instalado no servidor Linux:

Imagem_014

 

Configuração

O próximo passo é definir a variável de ambiente $WASP_HOME apontando para esta pasta de instalação:

Imagem_015

Para que o WSO2 possa efetivamente se comunicar com o GigaSpaces e com o Magic xpi, algumas classes customizadas precisam ser adicionadas à instalação. Elas estão disponíveis na instalação do Magic xpi e devem ser copiadas para a nova instalação do WSO2 no Linux cfe. abaixo:

<Magicxpi_home>\support\uniSSJ.jar           “$WASP_HOME”/lib/
<Magicxpi_home>\support\uniRequester.jar     “$WASP_HOME”/lib/
<Magicxpi_home>\support\saaj_utils.jar       “$WASP_HOME”/lib/
<Magicxpi_home>\support\edevUtils.jar        “$WASP_HOME”/lib/
<Magicxpi_home>\support\uniUtils.jar         “$WASP_HOME”/lib/
<Magicxpi_home>\java\lib\mgxpi-commons.jar   "$WASP_HOME”/lib/
<Magicxpi_home>\java\lib\log4j-1.2.16.jar    “$WASP_HOME”/lib/log4j.jar
<Magicxpi_home>\java\lib\mgxpi-gs.jar        “$WASP_HOME”/lib/GigaSpaces/
<Magicxpi_home>\GigaSpaces\lib\required\*.*  “$WASP_HOME”/lib/GigaSpaces/

NOTA: Os detalhes sobre estas classes a serem copiadas estão também disponíveis neste endereço.

O resultado deverá ser similar a este:

Imagem_016

Finalizada a cópia, o arquivo “server.sh” localizado na pasta $WASP_HOME/bin deve ser editado. Após a linha de execução do programa “env.sh” devem ser adicionadas as seguintes configurações:

WASP_CLASSPATH="$WASP_HOME":"$WASP_HOME"/lib/uniSSJ.jar:"$WASP_HOME"/lib/uniRequester.jar:"$WASP_HOME"/lib/saaj_utils.jar:"$WASP_HOME"/lib/mgxpi-commons.jar:"$WASP_HOME"/lib/GigaSpaces/com.springsource.org.aopalliance-1.0.0.jar:"$WASP_HOME"/lib/GigaSpaces/commons-logging.jar:"$WASP_HOME"/lib/GigaSpaces/dsl.jar:"$WASP_HOME"/lib/GigaSpaces/gs-openspaces.jar:"$WASP_HOME"/lib/GigaSpaces/gs-runtime.jar:"$WASP_HOME"/lib/GigaSpaces/org.springframework.aop-3.1.1.RELEASE.jar:"$WASP_HOME"/lib/GigaSpaces/org.springframework.asm-3.1.1.RELEASE.jar:"$WASP_HOME"/lib/GigaSpaces/org.springframework.aspects-3.1.1.RELEASE.jar:"$WASP_HOME"/lib/GigaSpaces/org.springframework.beans-3.1.1.RELEASE.jar:"$WASP_HOME"/lib/GigaSpaces/org.springframework.context.support-3.1.1.RELEASE.jar:"$WASP_HOME"/lib/GigaSpaces/org.springframework.context-3.1.1.RELEASE.jar:"$WASP_HOME"/lib/GigaSpaces/org.springframework.core-3.1.1.RELEASE.jar:"$WASP_HOME"/lib/GigaSpaces/org.springframework.expression-3.1.1.RELEASE.jar:"$WASP_HOME"/lib/GigaSpaces/org.springframework.transaction-3.1.1.RELEASE.jar:"$WASP_HOME"/lib/GigaSpaces/mgxpi-gs.jar:
export WASP_CLASSPATH

Imagem_017

E na linha iniciada por “$JAVA_CMD” devemos adicionar a configuração:

-Dcom.magicsoftware.requester.conf=”$WASP_HOME”/mgreq.ini

Imagem_018

O argumento -Dcom.magicsoftware.requester.conf deve ser informado antes do argumento -Dtorun=com.idoox.wasp.server.Main.

Também devemos garantir que “$WASP_CLASSPATH” esteja mencionada no argument -cp.

Observe que este argumento (-Dcom.magicsoftware.requester.conf) se refere a um arquivo que não existe.

Devemos agora criar o arquivo “mgreq.ini” na pasta $WASP_HOME:

Imagem_019

O conteúdo deste arquivo pode ser copiado do mesmo arquivo “mgreq.ini” que está na pasta de instalação do Magic xpi:

Imagem_020

O importante aqui é que as informações de conexão ao GigaSpaces estejam corretas.

Para finalizar, temos de atribuir alguns acessos às pastas/arquivos do WSO2 para permitir execução sob as credenciais de outros usuários, além daquele que realizou a instalação:

chmod 777 $WASP_HOME/log
chmod 777 $WASP_HOME/log/*
chmod 775 $WASP_HOME/store/hsqldb
chmod 777 $WASP_HOME/store/hsqldb/*
chmod 775 $WASP_HOME
chmod 777 $WASP_HOME/app
chmod 777 $WASP_HOME/app/*
chmod 777 $WASP_HOME/Work

Execução

Finalizada a instalação e configuração, o WSO2 Server pode ser iniciando executando-se o programa “serverstart.sh” na pasta $WASP_HOME/bin:

Imagem_021

 

Imagem_022

NOTA: Em ambiente normal de produção, este programa deverá ser definido como um daemon do Linux, para inicialização automática.

 

Testando a Arquitetura

Como dito anteriormente, as classes Java dos webServices providos pelo Magic xpi devem ser implantadas (deployed) no WSO2 Server, que neste caso está em nosso servidor Linux:

Imagem_023

Depois, é necessário apenas que os clientes (consumidores) destes serviços direcionem suas chamadas para este servidor Linux.:

Imagem_024

Imagem_025

E está pronto: o cliente envia sua solicitação através de um envelope SOAP para o WSO2 Server no Linux, que gera uma WorkMessage no MAGIC_SPACE que está no MS-Windows, que é atendida por um Worker do Magic xpi Server também no MS-Windows, e retorna a resposta para o cliente:

Imagem_026

Manoel Frederico da Silva
Gerente de Produto e Magic Evangelista – Magic Brasil

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *