JAX-RPC

A especificação Java API for XML-based RPC (JAX-RPC) permite desenvolver serviços da web portáteis e interoperáveis e clientes de serviço da web baseados em SOAP. O JAX-RPC 1.1 fornece as APIs principais para desenvolver e implementar serviços da web em uma plataforma Java™ e é parte dos serviços da web para a plataforma Java Platform, Enterprise Edition (Java EE). A plataforma Java EE permite que você desenvolva serviços da Web móveis.

O WebSphere Application Server implementa padrões JAX-RPC 1.1.

O padrão JAX-RPC cobre o modelo de programação e as ligações para usar WSDL (Web Services Description Language) para serviços da Web na linguagem Java. O JAX-RPC simplifica o desenvolvimento de serviços da Web protegendo-o contra a complexidade subjacente da comunicação SOAP.

Superficialmente, JAX-RPC parece outra instanciação de RMI (chamada de método remoto). Basicamente, o JAX-RPC permite que os clientes acessem um serviço da Web como se ele fosse um objeto local mapeado no espaço de endereço do cliente embora o provedor de serviços da Web esteja localizado em outra parte do mundo. O JAX-RPC é feito através da utilização do SOAP de protocolo baseado em XML que, geralmente, fica na parte superior do HTTP.

O JAX-RPC define os mapeamentos entre os tipos de porta do WSDL e as interfaces Java, bem como a linguagem Java e os tipos de esquema de Extensible Markup Language (XML).

Um serviço da web JAX-RPC pode ser criado a partir de uma implementação de JavaBeans ou enterprise bean. É possível especificar os procedimentos remotos definindo os métodos remotos em uma interface Java. Você precisa apenas codificar uma ou mais classes que implementem os métodos. As classes restantes e outros artefatos são gerados pelas ferramentas do fornecedor de serviços da Web. A seguir, está um exemplo de uma interface de serviços da Web:
package com.ibm.mybank.ejb;
import java.rmi.RemoteException;
import com.ibm.mybank.exception.InsufficientFundsException;
/**
	* Interface remota para Enterprise Bean: Transfer
	*/
public interface Transfer_SEI extends java.rmi.Remote {
			public void transferFunds(int fromAcctId, int toAcctId, float amount)
						throws java.rmi.RemoteException;

}
A definição de interface no JAX-RPC deve seguir regras específicas:
  • A interface deve estender java.rmi.Remote exatamente como a RMI.
  • Os métodos devem criar java.rmi.RemoteException.
  • Parâmetros de método não podem ser referências remotas.
  • O parâmetro de método deve ser um dos parâmetros suportados pela especificação do JAX-RPC. A lista a seguir são exemplos dos parâmetros de método suportados. Para obter uma lista completa de parâmetros de método, consulte a especificação do JAX-RPC.
    • Tipos primitivos: boolean, byte, double, float, short, int e long
    • Wrappers de objeto de tipos primitivos: 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.lang.BigDecimal
    • java.lang.BigInteger
    • java.lang.Calendar
    • java.lang.Date
  • Os métodos podem obter objetos de valores formados por uma composição dos tipos listados anteriormente, além de objetos de valor agregado.

Um cliente cria um stub e chama métodos nele. O stub atua como um proxy do serviço da Web. A partir da perspectiva do código do cliente, parece uma chamada de método local. No entanto, cada chamada de método é ordenada para o servidor remoto. A ordenação inclui codificar a chamada de método em XML da maneira prescrita pelo protocolo SOAP.

A seguir, estão classes-chave e interfaces necessárias para gravar serviços da Web e clientes de serviços da Web:
  • Interface de Serviço: Um depósito de informações do provedor para stubs ou chamada dinâmica e objetos de proxy utilizados para chamar métodos
  • Classe ServiceFactory: Um depósito de informações do provedor para Serviços.
  • loadService

    O método loadService é fornecido no WebSphere Application Server Versão 6.0 para gerar o localizador do serviço necessário para uma implementação de JAX-RPC. Se você se lembra, nas versões anteriores não havia uma maneira específica para adquirir um localizador de serviço gerado. Para clientes gerenciados, você usava um método JNDI para obter o localizador de serviço, e para clientes não gerenciados, era necessário instanciar o localizador de serviço específico da IBM, ServiceLocator service=new ServiceLocator(...);, que não oferece portabilidade. Os parâmetros loadService incluem:

    • wsdlDocumentLocation: Uma URL para o local do documento WSDL para o serviço ou nulo.
    • serviceName: Um nome qualificado para o serviço
    • properties: Um conjunto de propriedades específicas da implementação para ajudar a localizar a classe de implementação de serviços gerada.
  • isUserInRole
    O método isUserInRole retorna um booleano indicando se o usuário autenticado da chamada de método atual na instância do nó de extremidade está incluído na função lógica especificada.
    • role: O parâmetro de função é uma Cadeia especificando o nome da função.
  • Serviço
  • Interface de chamada: Utilizado para chamada dinâmica
  • Interface stub: Interface básica para stubs

Se você estiver usando um stub para acessar o provedor de serviços da Web, a maioria dos detalhes do JAX-RPC será oculta de você. O cliente cria um ServiceFactory (java.xml.rpc.ServiceFactory). O cliente instancia um Serviço (java.xml.rpc.Service) a partir do ServiceFactory. O serviço é um objeto de depósito de informações do provedor que cria a porta. A porta é a interface de terminal de serviço remoto para o serviço da Web. No caso do DII, o objeto de Serviço é utilizado para criar objetos Call, os quais podem ser configurados para chamar métodos na porta do serviço da Web.

Para obter uma lista completa de padrões e especificações suportados, consulte as especificações de serviços da Web e a documentação da API.


Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_jaxrpc
Nome do arquivo: cwbs_jaxrpc.html