PREPARAÇÃO DO AMBIENTE DE DESENVOLVIMENTO E PRIMEIRO WEB SERVICE UTILIZANDO O AWS ELASTIC BEANSTALK Desenvolvido por: Leonardo de Jesus Silva Data: 08/07/12 Baseado em http://homes.dcc.ufba.br/~dclaro/download/Tutorial_Google_App.pdf Para obter informações sobre nível de uso gratuito da AWS http://aws.amazon.com/pt/free/. Para obter informações sobre o AWS Elastic Beanstalk http://aws.amazon.com/pt/elasticbeanstalk/. Requisitos Java 1.5 ou superior Eclipse IDE for java developers 3.5 ou superior. Eclipse IDE for Java EE Developers 3.6 é recomendado. Eclipse Web Tools Plataform 2.0 ou superior, baseado sobre os requisitos da sua distribuição Eclipse. O Eclipse IDE for Java EE Developers 3.6 tem o Web Tools Plataform pré-instalado. Baixe a biblioteca JAX-WS para fornecimento de Web Services http://jax-ws.java.net/. Instalação do Plugin Efetue download e instale o AWS Toolkit for Eclipse usando o site de atualização do Eclipse a seguir: http://aws.amazon.com/eclipse/ Para instalar o Eclipse 3.6 (Helios) ou posterior Abra "Help" (Ajuda) -> "Install New Software…." (Instalar novo software) Entre em http://aws.amazon.com/eclipse na caixa de texto rotulada “Work with” (Trabalhar com) no topo do diálogo. Selecione “AWS Toolkit for Eclipse” na lista a seguir. Clique em “Next” (Próximo). O Eclipse o direciona pelas etapas de instalação restantes. Sumário Vamos desenvolver uma aplicação simples que recebe como parâmetro uma temperatura medida em Farenheit e devolve se este tempo é considerado frio ou quente. Vamos criar aqui o web service ClimaInfo. Aqui utilizaremos a biblioteca JAX-WS. O mesmo web service feito para o Google App Engine pode ser visto em [2]. 1. Crie um novo “AWS Java Web Project”. 2. O “New AWS Java Web” Project wizard aparece. 3. Entre com o nome do seu “AWS Java Web Project” no campo “Project name” WeatherSOAPServer. 4. Clique em “Configure AWS accounts” para entrar com suas credenciais de segurança da sua conta da Amazon. Irá aparecer a seguinte janela. 5. Para encontrar o Access Key ID e o Secret Access Key clique em “find your existing AWS security credentials”. 6. Entre com seu login e senha e aparecerá janela: 7. Copie o ID de chave de acesso e a chave de acesso secreta e cole respectivamente em Access Key ID e Secret Access Key. 8. Clique em OK e clique Finish. 9. Irá criar uma aplicação básica com uma página jsp com algumas informações a cerca dos serviços da Amazon Webservices. 10. Descompacte o arquivo do JAX-WS baixado anteriormente em pré-requisitos. Copie todos os arquivos que se encontram em \jaxws-ri\lib para a pasta WebContent/WEB-INF/lib do projeto. 11. Crie uma nova Classe dentro do pacote com.example. O nome da classe ClimaInfo. O conteúdo da classe: package com.example; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; @WebService public class ClimaInfo { @WebMethod public String comoEstaOTempo(@WebParam(name="grau") int temperatura) { if (temperatura > 30){ return "Quente"; } else if (temperatura < 15){ return "Frio"; } else { return "Agradavel"; } } } 12. Em WEBContent/WEB-INF altere o arquivo web.xml adicionando o seguinte conteúdo antes da tag </web-app> <listener> <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class> </listener> <servlet> <description> temperature </description> <display-name>climaInfo</display-name> <servlet-name>climaInfo</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>climaInfo</servlet-name> <url-pattern>/ClimaInfoService</url-pattern> </servlet-mapping> 13. Na pasta WEBContent/WEB-INF, crie um arquivo XML com o nome sun-jaxws.xml e com o seguinte conteúdo: <?xml version="1.0" encoding="UTF-8"?> <endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'> <endpoint name='climaInfo' implementation='com.example.ClimaInfo' url-pattern='/ClimaInfoService' /> </endpoints> 14. Se possuir um servidor tomcat 6 ou tomcat 7 instalado no seu ambiente eclipse pode testar sua aplicação sobre ele. Basta clicar com o direito sobre a raiz do projeto e clicar em “Run As“ e seguir as instruções. 15. Para implantar na nuvem da Amazon clique com o botão direito do mouse na raiz do projeto. Clique em Amazon Web services -> deploy to AWS Elastic Beanstalk... 16. Clique em “Manually define a new Server” irá aparecer a janela abaixo. Se não estiver mostrando a pasta Amazon Web Services basta rolar o scroll para cima. 17. Clique em next e configure como abaixo: 18. Clique next e em finish em seguida. 19. Espere o uploading da aplicação e inicialização do ambiente. 20. Ao término aparecerá uma janela como esta. O endereço onde seu serviço web está hospedado é mostrado abaixo na forma http://<ambiente>-<identificador>-elasticbeanstalk.com. 21. Para acessar a informação do web service no final do endereço web coloque ClimaInfoService 22. Clicando no link ao lado do WSDL(da pagina web na célula Information da tabela) irá levá-lo para o arquivo WSDL gerado. 23. Para testar o web service em um cliente pode usar o SoapUI. Clique em File -> New soapUI Project. Em Initial WSDL entre com o link(da pagina web na célula Information da tabela) como o da figura acima. 24. Em seguida clique duas vezes na requisição Request 1 do método comoEstaOTempo. Forneça o parâmetro(neste caso está entre as tags grau). Clique no botão que parece uma seta verde. O resultado é mostrado abaixo. 25. No console da sua conta na Amazon Web Services na opção de AWS Elastic Beanstalk algo como: 26. Observe a atividade da sua conta na Amazon Web Service para verificar se inadvertidamente usou além da cota de uso gratuito. A cota de uso gratuito é válido por 1(um) ano. Referências: 1. Getting Started with AWS Elastic Beanstalk Deployment in http://aws.amazon.com/articles/4412341514662386 2. INSTALAÇÃO E USO DO GOOGLE APP ENGINE PLUGIN utilizando o Eclipse http://homes.dcc.ufba.br/~dclaro/download/Tutorial_Google_App.pdf 3. Décio H. Luckow e Alexandre A. de Melo, Programação Java para a Web, Editora Novatec, 4. Obter credenciais https://portal.aws.amazon.com/gp/aws/securityCredentials Eclipse Galileo