INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E...
-
Upload
clesiojunior -
Category
Technology
-
view
2.237 -
download
18
Transcript of INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E...
1ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO
CASO ENTRE JAVA E PHP.
A utilização de Web Service para integrar sistemas tem sido um assunto muito discutido e falado, linhas e mais linhas são gastas esboçando teoricamente o tema e tentando provar a sua real utilidade.
Neste artigo veremos na pratica a real utilidade de um Web Service. Um serviço será oferecido para outros sistemas que possam acessar a WEB. Preferencialmente as tecnologias Java e PHP foram escolhidas, o Java irá oferecer o serviço e o PHP será um exemplo de cliente.
Quando comecei a fuçar a tecnologia – sistemas distribuídos (Web Service), achei muito interessante a ideia de poder integrar sistemas diferentes construídos até mesmo em diferentes tecnologias, como no caso: o Java e o PHP. Com o sucesso do PHP – cobrado no ultimo concurso do STM (Superior Tribunal Militar) no inicio de 2011, resolvi utilizá-lo, como cliente do Web Service, para mostrar como se integrar sistemas, independente de sua tecnologia, o que na pratica é a principal função de um Web Service.
A IDE (Integrated Development Environment), um ambiente integrado para desenvolvimento de software, escolhida será o NetBeans 6.9.1, muito prática, gratuita e com recursos tanto para o Java com para o PHP. Link para baixar em (http://netbeans.org/downloads/index.html).
Serão utilizados dois servidores de aplicação, um para o Java e outro para o PHP, para o Java será utilizado o GlassFish (http://glassfish.java.net/public/downloadsindex.html#top) e para o PHP será o Apache (http://www.apache.org/dyn/closer.cgi). Para maiores detalhes sobre os servidores, que não é foco deste artigo, por favor, verificar os sites dos fabricantes. Link’s: GlassFish em (http://glassfish.java.net/downloads/quickstart/index_pt.html) e Apache em (http://www.apache.org/). Essa abordagem é importante para mostrar que realmente os sistemas serão independentes um dos outros.
Mais sobre o PHP e APACHE pode ser obtido em (http://www.pinceladasdaweb.com.br/blog/2010/02/22/instalar-apache-php-mysql-no-windows-7-vista-xp/)
Não é necessário baixar cada servidor de aplicação em separado o GlassFish vem com o NetBeans e o Apache vem com o pacote EasyPHP, baixe a última versão do EasyPHP em (http://www.easyphp.org/download.php) , é uma ótima escolha para se criar um ambiente completo de desenvolvimento para PHP, detalhes em (http://www.easyphp.org/) . Verifique questões sobre as portas utilizadas, já que os servidores de aplicação utilizarão o mesmo sistema operacional, por padrão não é necessário modificá-las.
2ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Mais um detalhe!
Será necessário, para utilizar SOAP com o PHP, baixar um conjunto de classes denominado “NuSoap”, disponível em (http://sourceforge.net/projects/nusoap). Basta baixar o arquivo “zipado” e utilizar a pasta “/lib” que ficará no diretório do sistema cliente em PHP.
Então vamos lá, mãos à obra!
Atenção: esse sistema é uma mera ilustração, um exemplo simples de se entender.
Imaginemos um sistema que necessite consultar o preço de um determinado produto dado o seu código. Cada sistema será de responsabilidade de uma filial, isto quer dizer que, cada filial irá desenvolver seu sistema em diferentes tecnologias – PHP, .NET, COBOL, VISUAL BASIC, JEE, JSE, JME, dentre outras. Esse sistema deverá realizar a consulta – busca pelo preço – em uma unidade central, a unidade central que será a responsável por definir e atualizar os preços de todos os produtos e as filiais devem obedecer não ultrapassado os preços obrigatórios.
O acesso a unidade central será feita pela internet, sendo assim todas as filiais deverão ter conexão com a WEB. Não é necessária uma rede particular entre essas unidades.
O SISTEMA EM JAVA – MÓDULO SERVIDOR.
Vamos criar um novo projeto em JAVA, utilizando o NetBeans.
Escolha Novo Projeto.
3ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Escolha Aplicação Web, clique em “Próximo”.
Digite o nome do projeto, exemplo: “UNIDADECENTRAL”.Esse projeto será o servidor do processo de consulta de preços.Crie uma pasta separada para seus projetos JAVA.
Clique em “Próximo”.
4ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Em Caminho do contexto, digite: “UNIDADECENTRAL”. Esse é o contexto do projeto WEB.
Clique em “Próximo”.
Não marque nenhum Framework.
Clique em “Finalizar”.
5ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Feito isso teste a aplicação.
Botão direito do mouse sobre o nome do projeto, clique em “Limpar e construir”.
Botão direito do mouse clique em “Depurar”.
Vai abrir no seu navegado padrão a tela de “Hello World”.
Criaremos agora o nosso Web Service – modulo servidor.
Botão direito do mouse no nome do projeto, clique em “Novo”, escolha “Novo...”.
Escolha “Serviços Web”, clique em “Serviço Web” e clique no botão próximo.
6ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Digite os nomes conforme a figura acima: nome do serviço e nome do pacote.
Clique no botão “Finalizar”.
Será criado uma classe com o nome que você colocou como nome do serviço, “UnidadeCentralWS” com a anotação @WebService. As bibliotecas utilizadas foram da do JDK 1.6 e do próprio GlassFish.
7ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Classe criada, agora vamos adicionar o método de consulta: “consultaPrecoProduto”.
Basta clicar com o botão direito do mouse no meio da classe: “UnidadeCentralWS”.
Escolha a opção “Inserir código...” e escolher “Adicionar operação de serviço...”.
Faça conforme a figura acima. Nome do método será: “consultaPrecoProduto” que vai receber como parâmetro o “codigoProduto” do tipo String. Clique em “OK”.
8ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Essa é a classe mais importante do módulo servidor. Ela será alterada!
O NetBeans cria o método “consultaPrecoProduto” que irá retornar uma String, com as anotações @WebMethod e @WebParam. Com a utilização de anotações não é necessário configurar arquivos de configuração “.xml”, como era feito antigamente.
O Web Service já está implementado, agora é questão de regras de negócio e arquitetura do software.
Atenção: em outros artigos iremos utilizar esses passos para integrar com o Hibernate ou com um EJB.
Vamos testar mais uma vez nosso projeto. Depurando-o. Antes digite o seu nome para retorno no método criado. Você visualizará a mesma tela de “Hello World!”, já vista.
Agora selecione no seu projeto a pasta: “Serviços Web”, abaixo de “Bibliotecas de testes”. Escolha “UnidadeCentralWS”.
Vamos testar nosso Web Service.
Clique com o botão direito do mouse sobre “UnidadeCentralWS” e escolha “Testar serviço Web”.
9ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
A seguinte página será aberta:
Digite qualquer coisa e clique no botão “consultaPrecoProduto”.
Obterá o seguinte resultado, com o seu nome, caso você tenha digitado seu nome como retorno do método.
10ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
OK, Web Service testado e funcionando.
Vamos incrementar o projeto.
Atenção: as classes estarão disponíveis para download no blog (www.clesiojunior.blogspot.com)
Vamos criar uma arquitetura de software recomendada, adicionaremos 3 pacotes novos: “ws.modelo”, “ws.negocio” e “ws.fachada”. Futuras implementações com novos serviços seguirão o padrão informado.
Dentro de cada pacote teremos que adicionar as seguintes classes respectivamente: “Produto” (representa a entidade no banco de dados), “ProdutoBO” (classe responsável pelas regras de negócio), “ProdutoFachada” (fachada que será instanciada em camadas superiores) .
Em “Produto” adicione as propriedades (String): “nome”, “codigo”, “preço”. Com os seus respectivos getter’s e setter’s. Em outros artigos essa parte será importante, só que teremos que pular agora.
11ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Essa será a classe Produto.
12ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Parte da classe ProdutoBO. Não vemos na figura a implementação do método privado “getProdutoPorCoddigo”, você pode criar sua própria implementação ou realizar o download no blog (www.clesiojunior.blogspot.com).
13ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Essa é a classe fachada. A mais simples.
Atualize a classe “UnidadeCentralWS”.
14ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Web Serviçe pronto – módulo servidor.
Agora vamos implantar o módulo no GlassFish.
Você pode fazer isso utilizando a própria IDE NetBeans. Ou você pode implantar manualmente depois de gerar o arquivo “.war”: “\UNIDADECENTRAL\dist\UNIDADECENTRAL.war”.
Clique com o botão direito do mouse no nome do projeto “UNIDADECENTRAL”. Escolha a opção “Limpar e construir” depois escolha “Implantar”.
Sem utilizar o NetBeans, você deve antes iniciar o servidor e entrar em http://localhost:4848/, isto é, se o seu servidor estiver na sua própria máquina.
Para executar o GlassFish, independente do NetBeans, vai a dica. Entre na pasta do seu servidor: “\glassfish-3.0.1\glassfish\bin”, e execute o arquivo “asadmin.bat”, na linha de comando digite: “start-domain domain1” para iniciar o servidor, para para-lo deve-se digitar “stop-domain domain1”.
Atenção: para realizar a implantação (deployment) independente do NetBeans. Não se esqueça de configurar o JAVA_HOME em seu sistema operacional.
Sobre o GlassFish: http://glassfish.java.net/downloads/quickstart/index_pt.html (Tudo sobre) Ou: http://www.web4u.eti.br/2007/09/12/servidor-de-aplicacao-glassfish/
15ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
O SISTEMA EM PHP – MÓDULO CLIENTE.
Para criar o sistema em PHP do zero no NetBeans:
Abra o NetBeans, pressione CTRL+SHIFT+N.
Digite o nome do projeto e escolha em “Pasta de códigos-fonte:” o “/www” da pasta do EasyPHP programa que você já instalou. Esse é o diretório de implantação do servidor Apache.
16ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Siga a figura abaixo. Defina a porta conforme o seu servidor de aplicação. Padrão do Apache é esse: 8888.
Agora só clique em “Finalizar”.
17ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
OK, agora você já está pronto para começar o sistema em PHP – cliente Web Service.
Agora temos que copiar o “lib” do “NuSoap” que você já baixou para o diretório raiz do seu projeto: “\EasyPHP-5.3.5.0\www\FILIAL_01”. O que você acabou de construir. Ficará assim: “\EasyPHP-5.3.5.0\www\FILIAL_01\lib”. Pronto.
Será necessário criar dois arquivos
index.php resultado.php
18ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
index.php é um exemplo de um simples formulário que chama a página resultado.php.
O arquivo resultado.php faz uso do nusoap.php, esse deve ser baixado, conforme já foi falado.
Arquivos estarão disponíveis para download no blog (www.clesiojunior.blogspot.com)
Para criar utilizando o NetBeans. Crie uma página PHP vazia. Botão direito do mouse em “Arquivos de código-fontes”, escolha “Novo” e “Página da Web do PHP...”.
Digite o nome da página como “index”. Clique em “Finalizar”.
19ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Faça o mesmo para a página “resultado.php”.
Em index.php terá um formulário que irá chamar resultado.php.
Assim: <form action="resultado.php" method="post">
Execute o sistema no NetBeans. Isto é, depois de iniciar o seu servidor de aplicação Apache, manualmente. Para isso, execute o arquivo “apache.exe” no diretório “\EasyPHP-5.3.5.0\apache\bin”, no Windows.
Para executar o GlassFish, independente do NetBeans, vai a dica. Entre na pasta do seu servidor: “\glassfish-3.0.1\glassfish\bin”, e execute o arquivo “asadmin.bat”, na linha de comando digite: “start-domain domain1” para iniciar o servidor, para parar deve-se digitar “stop-domain domain1”.
Essa é a tela que deve ser apresentada.
20ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Quando o módulo servidor estiver em execução no GlassFish, pode-se testar a aplicação completa, digitando algum código válido e clicando no botão “OK”.
Códigos válidos e seus respectivos produtos cadastrados:
Produto A
Nome: CERVEJACódigo: 123Preço: 1.19
Produto B
Nome: CARVÃOCódigo: 456Preço: 4.50
Produto C
Nome: PICANHACódigo: 789Preço: 19.80
21ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Produto D
Nome: GELOCódigo: 159Preço: 4.40
O servidor Apache retornou vários “Warning’s”. Essa opção deve ser desabilitada. Fica como pesquisa.
22ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
[email protected] - 23/02/2011
Conclusão
Primeiramente, tentei ser o mais simples e prático possível. Mesmo assim, muitas são as dúvidas que surgem durante o desenvolvimento de Web Service, no entanto, eles são bem mais simples que pensamos. O leitor esperto deve se atentar as teorias, não é escopo desse artigo fazer apologia ao desmerecimento das teorias, é que na verdade muitas vezes entendemos melhor com uma situação prática. Na Engenharia é assim, muitas matérias chatas que não entendemos só compreendemos de verdade com a prática, com o “troço” funcionando. Agradeço a todos pela atenção.