Este documento descreve como integrar sistemas desenvolvidos em tecnologias diferentes, como Java e PHP, utilizando web services. Ele apresenta um exemplo prático de um sistema Java que oferece um serviço web para consulta de preços e um cliente PHP que consome este serviço. O documento explica passo a passo como implementar o serviço web no Java usando NetBeans e como construir um cliente PHP para consumi-lo usando o framework NuSOAP.
1. 1
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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.
2. 2
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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.
3. 3
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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”.
4. 4
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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”.
5. 5
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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.
6. 6
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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.
7. 7
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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”.
8. 8
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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”.
9. 9
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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.
10. 10
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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.
11. 11
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 23/02/2011
Essa será a classe Produto.
12. 12
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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).
13. 13
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 23/02/2011
Essa é a classe fachada. A mais simples.
Atualize a classe “UnidadeCentralWS”.
14. 14
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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”:
“UNIDADECENTRALdistUNIDADECENTRAL.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.1glassfishbin”, 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/
15. 15
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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.
16. 16
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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”.
17. 17
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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.0wwwFILIAL_01”. O que você acabou de
construir. Ficará assim: “EasyPHP-5.3.5.0wwwFILIAL_01lib”. Pronto.
Será necessário criar dois arquivos
index.php
resultado.php
18. 18
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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”.
19. 19
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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.0apachebin”, no Windows.
Para executar o GlassFish, independente do NetBeans, vai a dica. Entre na
pasta do seu servidor: “glassfish-3.0.1glassfishbin”, 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.
20. 20
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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: CERVEJA
Código: 123
Preço: 1.19
Produto B
Nome: CARVÃO
Código: 456
Preço: 4.50
Produto C
Nome: PICANHA
Código: 789
Preço: 19.80
21. 21
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 23/02/2011
Produto D
Nome: GELO
Código: 159
Preço: 4.40
O servidor Apache retornou vários “Warning’s”. Essa opção deve ser
desabilitada. Fica como pesquisa.
22. 22
ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
CLESIOJUNIOR@GMAIL.COM - 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.