SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
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
            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
            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
            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
             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
            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
           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
            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
            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
            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
            ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
                     CLESIOJUNIOR@GMAIL.COM - 23/02/2011




Essa será a classe Produto.
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
            ENGENHEIRO DE COMPUTAÇÃO – CLESIO JUNIOR –
                     CLESIOJUNIOR@GMAIL.COM - 23/02/2011




Essa é a classe fachada. A mais simples.




Atualize a classe “UnidadeCentralWS”.
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
           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
            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
            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
            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
            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
            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
            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
           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.

Weitere ähnliche Inhalte

Was ist angesagt?

Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228MoisesInacio
 
Algaworks livro-spring-boot-v3.0
Algaworks livro-spring-boot-v3.0Algaworks livro-spring-boot-v3.0
Algaworks livro-spring-boot-v3.0MoisesInacio
 
Como Instalar O WordPress
Como Instalar O WordPressComo Instalar O WordPress
Como Instalar O WordPressmauricio souza
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDaniel Paz
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTMario Sergio
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationMario Sergio
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endMario Sergio
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsEduardo Mendes
 
Net beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e AtalhosNet beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e Atalhosandreandrade17
 
Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeansSliedesharessbarbosa
 

Was ist angesagt? (20)

Regras emkt
Regras emktRegras emkt
Regras emkt
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Algaworks livro-spring-boot-v3.0
Algaworks livro-spring-boot-v3.0Algaworks livro-spring-boot-v3.0
Algaworks livro-spring-boot-v3.0
 
Tutorial +login+mvc
Tutorial +login+mvcTutorial +login+mvc
Tutorial +login+mvc
 
Como Instalar O WordPress
Como Instalar O WordPressComo Instalar O WordPress
Como Instalar O WordPress
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi Builder
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service REST
 
Cake Php
Cake PhpCake Php
Cake Php
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-end
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Jboss tutorial
Jboss tutorialJboss tutorial
Jboss tutorial
 
Net beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e AtalhosNet beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e Atalhos
 
NetBeans: a IDE que você precisa
NetBeans: a IDE que você precisaNetBeans: a IDE que você precisa
NetBeans: a IDE que você precisa
 
Java Web 1 Introducao
Java Web 1 IntroducaoJava Web 1 Introducao
Java Web 1 Introducao
 
Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeans
 
Modelo de desenvolvimento de software em 3 camadas para Wordpress
Modelo de desenvolvimento de software em 3 camadas para WordpressModelo de desenvolvimento de software em 3 camadas para Wordpress
Modelo de desenvolvimento de software em 3 camadas para Wordpress
 

Andere mochten auch

Apresentações Winning Together
Apresentações Winning TogetherApresentações Winning Together
Apresentações Winning TogetherMPNpt
 
A importância da Introperabilidade
A importância da IntroperabilidadeA importância da Introperabilidade
A importância da Introperabilidademarcosgsantos
 
LDAP: Usos e Aplicações
LDAP: Usos e AplicaçõesLDAP: Usos e Aplicações
LDAP: Usos e Aplicaçõeselliando dias
 
Open ldap linuxcon_working
Open ldap linuxcon_workingOpen ldap linuxcon_working
Open ldap linuxcon_workingLeandro Mendes
 
Palestra Tubo de Insight 2015
Palestra Tubo de Insight 2015Palestra Tubo de Insight 2015
Palestra Tubo de Insight 2015Newton Neto
 

Andere mochten auch (7)

Projeto de aprendizagem
Projeto de aprendizagemProjeto de aprendizagem
Projeto de aprendizagem
 
Apresentações Winning Together
Apresentações Winning TogetherApresentações Winning Together
Apresentações Winning Together
 
A importância da Introperabilidade
A importância da IntroperabilidadeA importância da Introperabilidade
A importância da Introperabilidade
 
Cartao de Natal 1
Cartao de Natal 1Cartao de Natal 1
Cartao de Natal 1
 
LDAP: Usos e Aplicações
LDAP: Usos e AplicaçõesLDAP: Usos e Aplicações
LDAP: Usos e Aplicações
 
Open ldap linuxcon_working
Open ldap linuxcon_workingOpen ldap linuxcon_working
Open ldap linuxcon_working
 
Palestra Tubo de Insight 2015
Palestra Tubo de Insight 2015Palestra Tubo de Insight 2015
Palestra Tubo de Insight 2015
 

Ähnlich wie Integração entre Java e PHP usando Web Services

Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
 
Guiao demotecnica
Guiao demotecnicaGuiao demotecnica
Guiao demotecnicaSilvio Dias
 
Guião demotécnica
Guião demotécnicaGuião demotécnica
Guião demotécnicaSilvio Dias
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...iMasters
 
Tutorial integrado flex_+_java_+_blazeds
Tutorial integrado flex_+_java_+_blazedsTutorial integrado flex_+_java_+_blazeds
Tutorial integrado flex_+_java_+_blazedswagnerlsrodrigues
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Javalimadavi
 
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Lenin Abadie
 
Atividade integradora mod iii tec informatica 2016(1)
Atividade integradora mod iii tec informatica 2016(1)Atividade integradora mod iii tec informatica 2016(1)
Atividade integradora mod iii tec informatica 2016(1)marcondes da luz barros
 
Configurando aplicações em ambiente RedHat OpenShift através do Eclipse
Configurando aplicações em ambiente RedHat OpenShift através do EclipseConfigurando aplicações em ambiente RedHat OpenShift através do Eclipse
Configurando aplicações em ambiente RedHat OpenShift através do EclipseAlberlan Barros
 
Tutorial passo a passo sobre RMI
Tutorial passo a passo sobre RMITutorial passo a passo sobre RMI
Tutorial passo a passo sobre RMISimão Neto
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCMichael Costa
 
Produtividade infinito e além com We.js
Produtividade infinito e além com We.jsProdutividade infinito e além com We.js
Produtividade infinito e além com We.jsAlberto Souza
 

Ähnlich wie Integração entre Java e PHP usando Web Services (20)

Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
 
Guiao demotecnica
Guiao demotecnicaGuiao demotecnica
Guiao demotecnica
 
Guião demotécnica
Guião demotécnicaGuião demotécnica
Guião demotécnica
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
 
Oficina cake php
Oficina cake phpOficina cake php
Oficina cake php
 
Tutorial integrado flex_+_java_+_blazeds
Tutorial integrado flex_+_java_+_blazedsTutorial integrado flex_+_java_+_blazeds
Tutorial integrado flex_+_java_+_blazeds
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Java
 
Aula1
Aula1Aula1
Aula1
 
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
 
CakePHP
CakePHPCakePHP
CakePHP
 
Atividade integradora mod iii tec informatica 2016(1)
Atividade integradora mod iii tec informatica 2016(1)Atividade integradora mod iii tec informatica 2016(1)
Atividade integradora mod iii tec informatica 2016(1)
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
Configurando aplicações em ambiente RedHat OpenShift através do Eclipse
Configurando aplicações em ambiente RedHat OpenShift através do EclipseConfigurando aplicações em ambiente RedHat OpenShift através do Eclipse
Configurando aplicações em ambiente RedHat OpenShift através do Eclipse
 
Minicurso Yii2
Minicurso Yii2Minicurso Yii2
Minicurso Yii2
 
Tutorial passo a passo sobre RMI
Tutorial passo a passo sobre RMITutorial passo a passo sobre RMI
Tutorial passo a passo sobre RMI
 
Ajax
AjaxAjax
Ajax
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVC
 
Produtividade infinito e além com We.js
Produtividade infinito e além com We.jsProdutividade infinito e além com We.js
Produtividade infinito e além com We.js
 

Integração entre Java e PHP usando Web Services

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