Você está na página 1de 9

Conhecendo a plataforma J2EE - um breve overview

A tecnologia Java na sua plataforma J2EE (Java 2 Enterprise Edition) ser um dos principais temas da qual vou tratar nesse espao do Linha de Cdigo. Vamos iniciar com uma viso geral sobre toda a arquitetura, com alguns conceitos e principais APIs. por Eric C M Oliveira A tecnologia Java na sua plataforma J2EE (Java 2 Enterprise Edition) ser um dos principais temas da qual vou tratar nesse espao do Linha de Cdigo. Vamos iniciar com uma viso geral sobre toda a arquitetura, com alguns conceitos e principais APIs. Podemos definir J2EE como a plataforma Java para desenvolvimento e execuo de aplicaes servidoras, com capacidade de suporte ao desenvolvimento de aplicaes robustas e escalveis. Consiste em um conjunto de servios, interfaces de programao de aplicao (APIs) e protocolos, que oferecem a funcionalidade para o desenvolvimento de aplicaes de multicamadas, baseadas na Web. Trata-se de uma das trs plataformas de Java, somando-se a J2ME (Java 2 Micro Edition), voltada para pequenos devices como celulares e palmtops, e J2SE (Java 2 Standart Edition), voltada para aplicaes cliente e composta pelas APIs bsicas de Java. A plataforma J2EE estende a linguagem Java atravs de padres simples e unificados em aplicaes distribudas atravs do modelo baseado em componentes. Caractersticas como portabilidade e interoperabilidade fizeram com que a tecnologia se difundisse e se consolidasse pela industria de TI. Vale lembrar que Java permite o uso de qualquer sistema operacional, seja ele Windows, Unix ou Linux, ou mesmo plataforma Mainframe. O foco simplificar o desenvolvimento de solues no mbito enterprise atravs de padres, servios e, principalmente, componentes modulares. Estes componentes, unidades de software em nvel de aplicao com suporte a um continer, so configurveis durante o desenvolvimento e incorporam um modelo de programao de acordo com o "contrato de componente" com seu continer. Isto , um continer, oferece servios de gerenciamento de ciclo de vida, segurana, distribuio e runtime para seus componentes. A plataforma define, segunda a especificao da Sun, empresa criadora da linguagem Java, os seguintes tipos de continer: - EJB (Enterprise Java Beans): um dos continer mais conhecidos da arquitetura, especifica um ambiente de runtime para enterprise beans como servios de segurana, concorrncia, gerenciamento de ciclo de vida, transao, entre outros servios. Os beans rodam no servidor J2EE. - WEB: trata-se da implementao de contrato de componente da Web com a arquitetura J2EE, fornecendo ambiente de runtime para os componentes do tipo web que incluem desde segurana at gerenciamento de ciclo de vida e transao. Inclui Servlets (classes Java que podem ser carregadas dinamicamente e executar sob um servidor web) disponibilizadas por servios de rede referentes aos pedidos e respostas enviados, com uso obrigatrio do protocolo HTTP. E tambm engloba JSPs (Java

Server Pages - tecnologia Web que utiliza, por exemplo, linguagens de scripting e objetos Java no servidor para retorno dinmico a um cliente). - Applet: continer Web que gerencia a execuo de applets. - Cliente da aplicao: Um continer que aceita e gerencia a execuo de componentes do cliente da aplicao. Na figura abaixo, so ilustrados os componentes e containers J2EE.

Algumas das principais APIs e suas funcionalidades da verso mais atual de J2EE (1.4) so: o Enterprise JavaBeans API que padroniza componentes J2EE do lado servidor, com regras de desenvolvimento definidas como implementao de interfaces responsveis por tarefas definidas ou regras de herana. Tem como vantagem o tratamento automtico de segurana, persistncia, transao dentre outros servios. Hoje a tecnologia EJB tornou-se um padro para desenvolvimento de aplicaes coorporativas distribudas e multicamadas, realizando o encapsulamento da lgica de negcio de uma aplicao. o Java Servlet / JavaServer Pages Um servlet estende as funcionalidades de um webserver e pode fazer uso de qualquer outra API. Um JSP faz as funes de um script em uma pgina web e compilado como servlet em seu container. Uma pgina JSP contm dois tipos de texto: esttico, representado por marcaes HTML, WML, ou XML, e elementos dinmicos JSP. o Java Message Service API (JMS) API que permite o acesso de forma padronizada servios de mensagens na interao com outros tipos de programas, com uso de mecanismos de criao, envio, recebimento e leitura de mensagens. o Java Transaction API (JTA) Especifica uma interface para as aplicaes utilizarem um servio de suporte transacional, por exemplo, gerenciamento de aplicaes distribudas. o JavaMail API / JavaBeans Activation Framework (JAF) So implementaes de suporte ao envio e recebimento de e-mails em Java. o J2EE Connector Architecture (JCA) As APIs que formam esse tipo de arquitetura tem como funes prover integraes entre sistemas de forma corporativa, ou seja, padronizar conexes entre sistemas Java e EIS (Enterprise Information Systems), como por exemplo, ERPs e CRMs.

JDBC API de acesso a bancos de dados. Sua importncia esta no fato de permitir o acesso a diferentes tipos de bancos de dados usando a mesma API. Java Naming and Directory Interface (JNDI) Tem como objetivo fornecer uma interface padro para localizao de usurios, mquinas, objetos, redes e servios. JNDI pode ser utilizado tanto para localizao de um computador em uma rede, quanto para busca de objetos Java. Java API for XML Processing (JAXP) Trata-se de um conjunto padro de APIs para XML adicionados nas verses mais recentes de J2SE e J2EE. Suporta os analisadores padro SAX e DOM, assim com XSLT, dando assim maior controle sobre a apresentao de dados e capacitando a converso de dados. Essas bibliotecas tambm esto disponveis separadamente (JAX Pack) , contendo outras APIs especficas para uso de XML e Web Services, como JAX-RPC ou JAXR.

Eric C M Oliveira Read more: http://www.linhadecodigo.com.br/artigo/333/conhecendo-aplataforma-j2ee-um-breve-overview.aspx#ixzz2dBqRCOKw

Desenvolvendo e Usando Web Services em Java Veja neste artigo como criar um Web Service baseado em SOAP, como podemos public-lo em um servidor e como utilizar este Web Service. por
Higor Medeiros
0000

Introduo
Os Web Services podem ser baseados no protocolo SOAP ou no estilo REST (chamados de RESTful). Ambos funcionam sob o protocolo HTTP, que o protocolo padro de transferncia de documentos na Web. SOAP um dialeto XML utilizado para descrever mensagens que so trocadas entre componentes SOA (Service Oriented Architecture). No restante do artigo veremos como criar um Web Service ao estilo SOAP.

Criando Web Services em SOAP


Em Java, os servios Web so definidos por classes. Um Web Service pode oferecer vrias operaes, representada por um mtodo de classe. Uma prtica muito importante de ser seguida sempre dividirmos a interface de um servio da sua implementao. A interface de um servio chamada de SEI (Service Endpoint Interface) e a implementao chamada de SIB (Service Implementation Bean). Neste exemplo usaremos o bloco de notas para entendermos melhor tudo o que acontece, diferente de utilizar um ambiente de desenvolvimento que muitas vezes abstraem diversos detalhes que deveriam ser implementados. Vamos iniciar a implementao criando um Web Service simples separada em SEI e SIB que possui quatro operaes: soma, subtracao, divisao, multiplicao. O objetivo deste servio retornar o calculo de uma das operaes invocadas pelo cliente. Segue abaixo o exemplo do SEI para o nosso servio de calculadora. Salve o arquivo abaixo com o nome CalculadoraServer.java dentro de uma pasta "calc".

Listagem 1: Interface para o servio de calculadora. 1


package calc;

2 3
import javax.jws.WebService;

4 5

import javax.jws.WebMethod; import javax.jws.soap.SOAPBinding;

6 import javax.jws.soap.SOAPBinding.Style; 7 8 @WebService 9 @SOAPBinding(style = Style.RPC) 10public interface CalculadoraServer { 11 12 13


@WebMethod float divisao(float num1, float num2); @WebMethod float soma(float num1, float num2); @WebMethod float subtracao(float num1, float num2); @WebMethod float multiplicacao(float num1, float num2);

14 15

No h nada de muito diferente em relao a um cdigo qualquer normal de interface Java. Porm notamos que as @WebService, @WebMethod e @SOAPBinding provavelmente so novidades para aqueles que ainda esto aprendendo sobre Web Services. @Webservice uma anotao que avisa ao compilador Java que o arquivo atual corresponde definio SEI de um servio Web. @WebMethod indica que um determinado mtodo corresponde a uma operao de servio e assim pode ser invocado por um cliente. @SOAPBinding indica que o servio utilizar a abordagem SOAP e no Rest que a outra abordagem suportada. Agora que a interface est criada e anotada corretamente vamos criar a implementao da interface, ou seja, a nossa SEI onde sero implementados os mtodos definidos anteriormente. Para isso precisamos criar a classe CalculadoraServerImpl.java que estar salvo dentro da pasta calc. Segue abaixo a implementao: Listagem 2: Implementao da interface do servio. 1 package calc;

2 3 import java.util.Date; 4 import javax.jws.WebService; 5 6 @WebService(endpointInterface = "calc.CalculadoraServer")

7 public class CalculadoraServerImpl implements CalculadoraServer { 8 9 10 11 12


public float subtracao(float num1, float num2) { } public float soma(float num1, float num2) { return num1 + num2;

13
return num1 - num2;

14 15 16 17 18 19 20 21 22 23 24 25
}

public float multiplicacao(float num1, float num2) { return num1 * num2; }

public float divisao(float num1, float num2) { return num1 / num2; }

A listagem acima nada mais do que uma implementao de uma classe como outra qualquer com os mtodos da interface descritos e implementados. No entanto, neste cdigo temos uma novidade, a propriedade endpointInterface dentro da anotao @WebService. Essa propriedade faz com que a classe atual, a SIB, ligue-se com a SEI especificada anteriormente (calc.CalculadoraServer). Agora tudo que nos resta compilar este arquivo. Para isso podemos utilizar o terminal acessando o Prompt de Comando no menu de programas do Windows ou o Terminal do Linux. No Prompt entre na pasta onde os arquivos anteriores foram salvos (entre na pasta onde a pasta calc foi criada, ou seja, um nvel acima da pasta calc), por exemplo: 1cd "C:\Users\higor\Desktop\Exercicios" e execute o comando: 1javac calc/*.java Se no ocorrer nenhum erro tudo foi corretamente criado e os .class relativo a cada um dos arquivos foi criado na pasta calc. Se ocorrer algum erro veja se no houve nenhum erro de digitao e se a varivel JAVA_HOME foi corretamente especificada.

Agora estamos prontos para publicar o servio e isso ser discutido na prxima seo do artigo.

Publicando o Servio
Agora que os arquivos j foram compilados podemos public-lo. Para isso precisamos gerar o arquivo abaixo CalculadoraServerPublisher.java dentro da pasta calc juntamente com os arquivo definidos anteriormente. Listagem 3: Publicando o servio. 1
package calc;

2 3 4 5 public class CalculadoraServerPublisher { 6 7 8 9 10 11


} } public static void main(String[] args) { Endpoint.publish("http://127.0.0.1:9876/calc", new CalculadoraServerImpl()); import javax.xml.ws.Endpoint;

12
Neste cdigo percebe-se o uso da classe Endpoint que est disponvel na linguagem Java e que nos permite publicar um servio em um servidor. Para que possamos usa-la deve-se passar como parmetro o endereo do servidor e a instncia do SIB do servio a ser publicado. Notamos que o servio publicado na porta 9876. Agora basta compilar o arquivo anterior com o comando: 1javac calc/CalculadoraServerPublisher.java Por fim, podemos executa-lo atravs do comando: 1java calc.CalculadoraServerPublisher Para verificarmos se tudo foi publicado corretamente basta acessar no browser o link: http://127.0.0.1:9876/calc?wsdl Se tudo ocorrer perfeitamente poderemos visualizar o WSDL do servio publicado. Com isso estamos prontos para usar o servio.

Usando o Servio
Agora que o servio est publicando, executando e pronto para ser usado, vamos criar um cliente que acessar o Web Service criado anteriormente. O cdigo abaixo demonstra um cliente para o nosso Web Service: Listagem 4: Cliente para o Web Service. 1 package calc;

3 import javax.xml.namespace.QName; 4 import javax.xml.ws.Service; 5 6 7 8


public static void main(String args[]) throws Exception { class CalculadoraClient { import java.net.URL;

9
URL url = new URL("http://127.0.0.1:9876/calc?wsdl");

10 11 12 13 14 15 16 17 18 19
} }

QName qname = new QName("http://calc/","CalculadoraServerImplService"); Service ws = Service.create(url, qname); CalculadoraServer calc = ws.getPort(CalculadoraServer.class);

System.out.println("Soma (5+1): " + calc.soma(5,1)); System.out.println("Subtracao (5-1): " + calc.subtracao(5,1)); System.out.println("Multiplicacao (5*1): " + calc.multiplicacao(5,1)); System.out.println("Divisao (5/1): " + calc.divisao(5,1));

20 21
Neste cdigo pode-se observar que necessitamos passar o endereo do WSDL para a URL, indicando onde o WSDL do servio poder ser encontrado. Na segunda linha passamos um nome qualificado em XML para QName. Ele indica uma URI (namespace) e o nome do servio. O namespace fornecido pela WSDL do servio, e o nome local a classe SIB acrescida da palava Service. O nome local aparece na ltima seo do documento WSDL (seo service). Por fim, na linha Service ws = ws.create(url, qname) temos como retorno uma referncia a um objeto que pode invocar as operaes oferecidas pelo servio (em portType) e na prxima linha finalmente acessamos a interface de ponto final (endpoint) do calc.CalculadoraServer, que tipo SEI do servio, sendo capaz de acessar seus mtodos. Agora simplesmente compilamos este arquivo e executamos abrindo um novo Prompt de Comando, j que no outro Prompt estamos com o arquivo de publicao rodando. Executando com o comando abaixo: 1java calc.CalculadoraClient Temos os resultados abaixo: Soma (5+1): 6.0 Subtracao (5-1): 4.0

Multiplicacao (5*1): 5.0 Divisao (5/1): 5.0 Pode-se verificar que o cliente acessou o Web Service passando alguns parmetros e obteve determinados resultados. Lembramos que este cliente poderia ter sido implementado em qualquer linguagem de programao como C, C++, PERL entre diversas outras.

Concluso
Neste artigo estudamos como desenvolver um Web Service em Java e publicamos o servio em um servidor Local. Verificamos cada uma das linhas de cdigo criadas e o que significa cada uma das anotaes utilizadas. Por fim, desenvolvemos um cliente em Java que utiliza o servio que criamos anteriormente passando parmetros e recebendo os resultados esperados.

Read more: http://www.linhadecodigo.com.br/artigo/3654/desenvolvendo-e-usando-web-services-emjava.aspx#ixzz2dBsZMxTe

Você também pode gostar