INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E...

22
1 ENGENHEIRO 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.

Transcript of INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E...

Page 1: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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.

Page 2: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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.

Page 3: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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”.

Page 4: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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”.

Page 5: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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.

Page 6: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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.

Page 7: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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”.

Page 8: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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”.

Page 9: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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.

Page 10: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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.

Page 11: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

11ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –

[email protected] - 23/02/2011

Essa será a classe Produto.

Page 12: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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).

Page 13: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

13ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –

[email protected] - 23/02/2011

Essa é a classe fachada. A mais simples.

Atualize a classe “UnidadeCentralWS”.

Page 14: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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/

Page 15: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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.

Page 16: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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”.

Page 17: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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

Page 18: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E 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”.

Page 19: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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.

Page 20: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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

Page 21: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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.

Page 22: INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO CASO ENTRE JAVA E PHP

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.