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).
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 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.
- 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.