WebServices - Axis
Teoria e Prática Paloma Costa Desenvolvedora Java
[email protected] http://javawoman.objectis.net
Sobre mim ● ● ● ● ●
● ● ● ●
Paloma Costa Desenvolvedora Java a quatro anos Técnica em Processamentos de Dados Estudante de Matemática computacional Integrante da coordenação do Projeto Software Livre do Rio Grande do Sul. Equipe de Java na Captura de transações da GetNet Usuária linux desde 2001 Colunista do Portal Java desde 2005 Portal http://javawoman.objectis.net
Sobre a empresa
EUA
China Índia Brasil Uruguai
“Sólido Grupo econômico multinacional com capital Brasileiro com operações em segmentos de agronegócio, hotelaria, exportação, tecnologia, entre outros em vários países.”
“Excelente ambiente de trabalho e constante investimento em P&D em parques tecnológicos.”
Mais de 100 profissionais na GetNet Credenciamento e Treinamento em todo o Território Nacional Crescimento de 300% em 2004 Mais de 20mil estabelecimentos no país.
Confiabilidade “Soluções customizadas de captura, autorização e processamento de transações e informações para grandes empresas.”
“Homologados com as maiores Redes de supermercados e farmácias do Brasil.”
“Parceiros com as melhores tecnologias.”
WS em Java com Axis ● ● ● ● ● ● ● ● ● ●
Teoria e Definições Protocolos Arquitetura WSDL Prática Instalação e Configuração do Axis Criando WebServices Deploy Criando Cliente de WebServices Implantação do WS
Paloma Costa –
[email protected]
Teoria e Definições ●
●
●
Usa protocolos padronizados que garantem a independência de plataforma e de linguagem. O Apache AXIS é uma das implementações mais versáteis do protocolo SOAP, permitindo a criação de Web Services. Disponibilizar uma coleção de métodos em um servidor remoto e permitir que sejam acessados por programas clientes.
Paloma Costa –
[email protected]
Protocolos envolvidos ●
●
SOAP: Protocolo simples de acesso ao objeto. Baseado em XML é tipo um envelope que define uma estrutura para descrever o que estão em uma mensagem e como processar. É uma convenção para representar chamadas e respostas remotas do procedimento. XML: é uma linguagem semelhante ao HTML. A diferença é que é usada para definir e armazenar dados, enquanto HTML serve para exibir.
Paloma Costa –
[email protected]
Modelo MVC Apresentação ws
Cliente
Hibernate Pool de Con.
BD
Paloma Costa –
[email protected]
Regras de Negócio
DAO
Arquitetura Serializador
http/Request
soap/Response
Serializador Apache+Tomcat + Axis
Recebe Objeto Paloma Costa –
[email protected]
WSDL(Web Service Definition Language) ●
●
Linguagem de Definição de Serviços que possui todos os métodos do WS registrados. WSDL: é gerada a partir de um WS em particular, é uma interface padronizada que permite os programas clientes encontrarem os métodos remotos;
Paloma Costa –
[email protected]
Prática ● ●
Como criar um WS em Java? Softwares necessários: Tomcat 5.0.28 http://jakarta.apache.org/tomcat/ Axis (usei a 1.1) http://ws.apache.org/axis Eclipse 3.0 http://www.eclipse.org J2SE 1.4.2 http://java.sun.com/j2se/1.4.2/download.html
Paloma Costa –
[email protected]
Instalação do Axis ●
●
●
1. Dentro de \home\axis\webapps” tem um diretório chamado “axis”. 2. Copie esse diretório para dentro do seu “webapps” do seu Tomcat 3. Os jars necessários para o ws devem estar no diretório lib: home\Tomcat 5.0\webapps\axis\WEBINF\lib jars axis.jar; commons-discovery.jar; commons-logging.jar; jaxrpc.jar; saaj.jar; log4j-1.2.8.jar;
Paloma Costa –
[email protected]
Configuração do Axis O Axis está instalado. Para verificar se tudo está funcionando inicie o Tomcat e digite: ● http://localhost:8080/axis ●
Paloma Costa –
[email protected]
Configuração do Axis ●
1 - Clique em Validate e você deverá ver um resumo geral. Se ele der algum erro (como falta de algum .JAR), você tem que corrigir antes de continuar. Observe que as core axis libraries devem ser encontradas.
Paloma Costa –
[email protected]
Criando WebServices ●
●
public class HelloWorld { public String sayHello() { return "Hello World!"; } public String sayHello2(VOTeste vo) { return vo.toString(); } public VOTeste sayHello3 (VOTeste vo){ return vo; } } Salvar classe HelloWorld.java
Paloma Costa –
[email protected]
Classe VO public class VOTeste { private int campo1; private String campo2; public int getCampo1() { return campo1; } public void setCampo1(int campo1) { this.campo1 = campo1; } public String getCampo2() { return campo2; } public void setCampo2(String campo2) { this.campo2 = campo2; } }
Deploy wsdd <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/p roviders/java"> <service name="HelloWorld.ws" provider="java:RPC"> <parameter name="className" value="br.srv.getnet.exemplo.Hello.HelloWorld "/> <parameter name="allowedMethods" value="sayHello,sayHello2,sayHello3"/> <parameter name="scope" value="application"/>
Paloma Costa –
[email protected]
Deploy sh TOMCATHOME=/tomcat/ JAVA_HOME=/jdk/ CLASSPATH="$TOMCATHOME"common/lib/saaj.jar CLASSPATH="$CLASSPATH":/java/axis-deploy/jaxrpcapi.jar CLASSPATH="$CLASSPATH":"$TOMCATHOME"common/lib/axis .jar CLASSPATH="$CLASSPATH":"$TOMCATHOME"common/lib/comm ons-discovery.jar CLASSPATH="$CLASSPATH":"$TOMCATHOME"bin/commonslogging-api.jar CLASSPATH="$CLASSPATH":/java/axis-deploy/jaxqname.jar echo $CLASSPATH PATH="$JAVA_HOME"/bin:"$PATH" #java -cp "$CLASSPATH" org.apache.axis.client.AdminClient deploy.wsdd -lhttp://127.0.0.1:8080/axis/services/AdminService java -cp "$CLASSPATH" org.apache.axis.client.AdminClient deploy.wsdd
Paloma Costa –
[email protected]
Executar Deploy Copiar projeto do eclipse para o tomcat cp home\eclipse\workspace\ExemploWS\src\br \home\Tomcat 5.0\webapps\axis\WEB-INF\classses\br Entrar no diretório onde se encontra o deploy cd \Tomcat 5.0\webapps\axis\WEBINF\classes\br\srv\getnet\exemplo\ws Executar a seguinte linha de comando na console sh deploy.sh (certificar-se que o arquivo deploy.wsdd existe) Tomcat tem que está no ar
Paloma Costa –
[email protected]
Teste do Axis ●
1 - Vá em view e clique com o botão direito na classe de WebService e salve no workspace do eclipse para o cliente.
Cliente de WS ●
●
●
● ●
●
●
Para criar as classes stub, vamos usar a ferramenta WSDL2Java que vem com o Axis. Crie um novo projeto para o cliente Pluguin: com.myspotter.wsdl2java-1.1.0 No eclipse adicione o pluguin Salve o xml para o cliente e renomeie a extensão xml para wsdl F5 no projeto Clicar em cima do wsdl com o botão direito em axis e wsdl2Java(Irá criar as classes stub) Depois crie um pacote br.srv.getnet.teste que terá a classe main para ver o resultado das classes de WS. Adicionar os jars para o cliente. Paloma Costa –
[email protected]
Cliente ●
Pode ser criada em qualquer linguagem. Public class MeuCliente { public static void main(String[] args)Throws Exception{ HelloWorldService hService = new HelloWorldServiceLocator(); HelloWorld hello = hService.getHello(); System.out.println(“!Iniciando chamada a métodos remotos!”); System.out.println(“!Say Hello” + hello.sayHello()); System.out.println(“!SayHello2” + hello.sayHello2()); } }
Paloma Costa –
[email protected]
Bibliografia ●
●
●
●
●
Apache Web Service http://ws.apache.org/ Apache Axis http://ws.apache.org/axis/ Documentação Axis http://ws.apache.org/axis/java/index.html Web Services Tutorial http://www.w3.org(webServices) XML http://www.w3c.org/XML
Muito Obrigada! Perguntas?? Paloma Costa
[email protected] http://javawoman.objectis.net