sexta-feira, julho 27, 2007

J2EE e Web Services

A plataforma Java 2, Enterprise Edition (J2EE) foi concebida para simplificar problemas complexos no desenvolvimento, disponibilizarão e gerenciamento de soluções multicamadas. J2EE é uma especificação padrão, e é o resultado de uma grande iniciativa liderada pela Sun Microsystems. O objetivo das especificações J2EE é oferecer aos clientes a chance de escolha de um fornecedor de produtos e ferramentas, encorajando a competição entre esses fornecedores por oferecer produtos de alta qualidade.

Já é conhecido que o J2EE foi concebido para arquitetura baseada do lado do servidor pela linguagem de programação Java. Pode ser utilizado para construção de tradicionais web sites à componentes de software. O J2EE foi estendido para suportar a construção de web services baseados em XML. Esses web services podem possuir interoperabilidade com outros web services que podem ou não ter sido escritos com o padrão J2EE.

A tecnologia J2EE através da API JAX-RPC permite a interoperabilidade com Java. JAX-PRC significa API Java para PRC baseado em XML, é uma tecnologia para construir serviços e clientes de Web Services que utilizam chamadas de procedimento remoto e XML. Freqüentemente usados em um modelo cliente-servidor distribuído, um mecanismo RPC habilita os clientes a executar procedimentos em outros sistemas.

Em JAX-RPC, uma chama de procedimento remoto é representada por um protocolo baseado em XML, como SOAP, por exemplo.

Embora as mensagens SOAP sejam complexas, a API JAX-RPC oculta esta complexidade para o desenvolvedor da aplicação. No lado do servidor, o desenvolvedor especifica os procedimentos remotos definindo método em uma interface Java. Uma ou mais classes que implementam essa interface também precisam ser codificadas. No lado cliente, a API JAX-RPC também fornece uma forma bem definida de encapsular a complexidade da execução de um Web Services.

Com JAX-RPC, clientes e Web Services têm uma grande vantagem, a independência de plataforma da linguagem de programação Java . Além disso, JAX-RPC não é restritivo, ou seja, um cliente JAX-RPC pode acessar um Web Services que não esteja rodando na plataforma Java, e vice-versa. Essa flexibilidade é possível por JAX-RPC utiliza tecnologias definidas pela World Wide Consortion (W3C) – HTTP, SOAP e WSDL.


Tipos suportado por JAX-RPC

A API JAX-RPC mapeai os tipos da linguagem de programação Java para definições XML/WSDL. Po exemplo, JAX-RPC mapeia a classe java.lang.String para o tipo de dado XML xsd:string. O desenvolvedor do aplicativo na precisa saber os detalhes destes mapeamentos, mas devem estar conscientes de nem toda classe da plataforma Java (J2SE) pode ser usada como parametro de metodo ou tipo de retorno em JAX-RPC.

Os seguintes tipos Java são suportados por JAX-RPC:

Classes

  • java.lang.Boolean

  • java.lang.Byte

  • java.lang.Double

  • java.lang.Float

  • java.lang.Integer

  • java.lang.Long

  • java.lang.Short

  • java.lang.String

  • java.math.BigDecimal.

  • java.math.BigInteger

  • java.net.URI

  • java.uitl.Calendar

  • java.uitl.Date

Primitivos

  • boolean

  • byte

  • double

  • float

  • int

  • long

  • short

Arrays

JAX-RPC também suporta arrays que possuam membros de tipos suportados por JAX-RPC. Exemplos de arrays suportados são int[] e String[]. Arrays multidimencional, tais como BigDecimal[][], também sao suportados.

Componentes JavaBeans

JAX-RPC também suporta componentes JavaBeans, que devem obedecer ao mesmo conjunto de regras, como as classes de aplicativos. Além disso, um componente JavaBean deve possuir um metodo getter e um setter para cada propriedade do bean. O tipo de propriedade do bean deve ser um tipo JAX-RPC suportado.

Tecnologias J2EE para Web Services

Graças ao fato de XML e Java trabalharem de maneira tão coesa juntas, ambas tecnologias aos poucos se tornaram um ponto central para os Web services. Em Java, já na versão J2EE 1.3, já se era encontrado todos os recursos necessários para infraestrutura de Web Services. A versão atual apresenta integração nativa com Web Services.

A disseminação no uso de web services nos últimos anos incentivou o mercado e a comunidade Java a oferecer uma grande variedade de ferramentas e aplicações para prover suporte a essa tecnologia. Atualmente, as principais plataformas para web services, Sun Microsystems, IBM, BEA, Oracle, Apache fornece uma leque diversificado aplicações para criar, manipular e executar Web services.

A IBM é um fornecedor altamente diversificado de tecnologias e ferramentas para web services e servidores de aplicação. O IBM WebSphere Software Developer Kit for Web Services (WSDK V5.0.1) é um conjunto de ferramentas para a criação, busca, invocação e testes para web services. O WSDK versão 5.0.1 encontra-se em conformidade com as últimas versões das especificações para web services incluindo WS-Security, SOAP, WSDL e UDDI. Entre as principais ferramentas de desenvolvimento, podem ser citadas o WebSphere Studio Application Developer (IDE), Web Services Gateway, Web Services Invocation Framework e o UDDI Explorer.

O Java Web Services Developer Pack (Java WSDP) é um conjunto de ferramentas integradas e gratuitas que permite desenvolvedores Java implementarem e testarem aplicações web com XML e web services. O Java WSDP engloba as APIs de Java para XML, Java Architecture for XML Binding (JAXB), JavaServer Faces, Web Services Interoperability Sample Application, Web Services Security, JavaServer Pages Standard Tag Library (JSTL) e Java WSDP Registry Server. As ferramentas Ant Build Tool e Apache Tomcat container também fazem parte deste pacote distribuído pela Sun. O servidor de aplicação da Sun é o Sun ONE™ Application Server 7.

Saindo de sistemas proprietarios e entrando em sistemas do Web Services abertos e desenvolvidos pela comunidade Java, encontramos o servidor de Web Services Apache Axis. Apache Axis é um projeto open source para um servidor e cliente SOAP. Axis é considerado basicamente um SOAP engine – um framework para a construção de processadores de mensagens SOAP. Atualmente está implementado apenas na linguagem Java, mas uma versão para cliente C++ está em andamento.

Interoperabilidade

Interoperabilidade é a capacidade de um sistema de se comunicar de forma transparente (ou o mais próximo disso) com outro sistema (semelhante ou não). Para um sistema ser considerado interoperável, é muito importante que ele trabalhe com padrões abertos.

A interoperabilidade entre sistemas de informação está se tornando fundamental para o compartilhamento da informação em ambientes corporativos, onde normalmente diversos sistemas são usado para armazenar dados e objetos de negócio, em sistemas computacionais distintos e em regiões geograficamente distribuídas. Devido à diversidade existente entre estes sistemas, a integração as vezes torna-se difícil. Os problemas de interoperabilidade podem ser técnicos, onde os componentes de computação dos sistemas não permitem a cooperação devido às diferenças nos protocolos de comunicação ou semânticos, ocasionados devido à diversidade de representação da informação transmitida.

Web Services são na essência interoperabilidade conectando programas e aplicações a outros programas e aplicações, especialmente quando estes são desenvolvidos usando diferentes linguagens, ferramentas ou plataformas. A tecnologia chave para esse fim, o XML, tem todo um potencial de implementação e integração com a tecnologia J2EE. Outros padrões como SOAP, UDDI, WSDL fornecem uma base para interoperabilidade entre serviços.

Para construir sistemas baseados em web services, existem mais requisitos que os seus olhos podem ver. Seus web services deverão ser confiáveis, ter alta disponibilidade, tolerante a falhas e escaláveis. Essas necessidades não são diferentes das mesmas existentes em outras aplicações corporativas. Todos esses requisitos são suportados e podem ser implementados com Java e a tecnologia J2EE.