Criando Web Services no WebLogic

UMA serviço de internet

é um procedimento remoto disponível para os clientes através de TCP / IP, tipicamente utilizando HTTP ou SMTP como o transporte e XML para codificação. O serviço web é descrito usando a notação de XML padrão chamada Descrição do Serviço. Um serviço web preenche uma única tarefa ou um conjunto de tarefas.

Todos os detalhes do serviço web estão escondidos do usuário, eo serviço é tanto de hardware e software independente. Isso incentiva os desenvolvedores de software para construir aplicações que consistem em, serviços individuais pequenos, que podem então ser usados ​​sozinhos ou em grupos para realizar tarefas mais complexas.

Você pode criar um serviço web de duas maneiras: manualmente, através da criação de fonte de Java e arquivos de configuração, ou usando um sistema de GUI chamada WebLogic Workshop. Neste artigo, você criar um serviço web manualmente.

Definição de um serviço web

Antes de criar seu serviço web, você deve definir o que vai fazer. Isto permite-lhe construir adequadamente a interface que outras aplicações devem aderir se quiserem se comunicar com o serviço web.

A decisão de design mais básica é qual dos dois tipos gerais de serviços da web que você irá criar:

  • serviço Synchronous
  • serviço assíncrono

UMA serviço da web síncrono, que é o padrão, começa quando o serviço web recebe uma mensagem. Este serviço web responde imediatamente.

serviços web síncronos são mais úteis quando o programa cliente requer os dados retornados da solicitação imediatamente. Um exemplo deste tipo de dados é a cotação atual para uma empresa particular.

A assíncrono serviço web é assíncrona, para que as mensagens podem ser trocados livremente entre o cliente eo serviço da web. Uma mensagem de um lado não obriga o outro para enviar uma mensagem correspondente. Quando um cliente envia uma mensagem para um serviço web assíncrona, o cliente não espera por uma mensagem de volta a partir do serviço web. O serviço web pode enviar uma mensagem de volta para o cliente em um momento posterior, mas nada inerentemente amarra essa mensagem para a mensagem original que o cliente enviou.

serviços web assíncronas são uma boa opção quando você está enviando informações que não requer uma resposta. Por exemplo, você pode querer a enviar uma mensagem para vários de seus servidores, dando-lhes uma nova mensagem de saudação para exibir aos usuários.

Escolhendo e construindo um componente de backend

O propósito do seu serviço web é permitir que clientes remotos para acessar os serviços que você fornece. Estes serviços, o chamado componente de backend, assumir a forma de código Java. Você pode construir o seu componente de backend como um dos seguintes procedimentos:

  • Um método de um EJB de sessão sem estado
  • Um método de uma classe de Java
  • Um método consumidor JMS

WebLogic pode fazer qualquer um desses itens disponível como um serviço web. Isto faz com que seja conveniente para empacotar o código Java existente como um serviço web. Se você já criou EJBs de sessão sem estado, você pode empacotá-los como um serviço web. Ou se o seu código existe em classes Java regulares, você pode fornecer acesso a sua classe como um serviço web. Você também pode usar mensagens JMS como um serviço de back-end para o seu serviço web.

Construindo um serviço web síncrono

Nesta seção, você cria um serviço da web síncrono usando uma classe Java regular e, em seguida, usando um EJB de sessão sem estado. Em primeiro lugar, você deve escrever o componente de backend. Isso vai ser uma classe Java, um EJB sem estado, ou um método consumidor JMS.

Trabalhando com um componente Java classe backend

Você deve seguir algumas regras ao implementar uma operação de serviço da web usando uma classe Java:

  • Não comece qualquer segmentos. Esta regra aplica-se a todo o código Java que roda em WebLogic Server.
  • Definir um construtor padrão sem argumento.
  • Definir como públicos os métodos da classe Java que será exposto como operações de serviços web.

Você deve escrever um código Java thread-safe porque WebLogic Server mantém apenas uma única instância de uma classe Java que implementa uma operação de serviço web, e cada invocação do serviço da web usa essa mesma instância.

Para um exemplo de implementação de uma operação de serviço web WebLogic com uma classe Java, vá para o seguinte diretório:

WL_HOME Samples server src exemplos webservices base javaclass

Onde WL_HOME refere-se ao diretório principal da instalação do WebLogic Server. Em um sistema Windows, esse diretório é normalmente C: bea weblogic81.

A Listagem 1 mostra uma classe Java que você pode usar como um componente de back-end. Esta classe Java contém um único método, chamado sampleMethod, que aceita um int e retorna um String.

Listagem 1: Classe Java back-end Componente

com.dummies.ejb- pacote
SampleBackendComponent classe pública
{
Cadeia sampleMethod pública (int num)
{
switch (num)
{
Caso 1: return "One" -
case 2: retornar "Two" -
case 3: voltar "Three" -
case 4: retornar "Four" -
Caso 5: retornar "Five" -
Caso 6: return "Six" -
Caso 7: return "Seven" -
Caso 8: return "Oito" -
Caso 9: return "Nine" -
caso 10: return "Ten" -
padrão: return "Alguns Number" -
}
}
}

Trabalhando com um componente EJB backend de sessão sem estado

Você também pode optar por construir seu componente backend como um EJB de sessão sem estado. Escrever código Java para um EJB de sessão sem estado para um serviço web não é diferente do que escrever um EJB independente.

No descritor de implementação web-services.xml, você pode especificar que uma operação de serviço web é um caminho, o que significa que o aplicativo cliente que chama o serviço web não espera por uma resposta. Quando você escrever o código Java para o método EJB que implementa este tipo de operação, é necessário especificar que ele retorna vazio.

Ao escolher entre usar um EJB ou um componente de classe backend Java, considere as outras maneiras em que o componente backend serão utilizados. Se o componente de backend será comumente acessado como um EJB, construí-lo como um EJB. Isto permite-lhe utilizar o mesmo código para ambos o seu EJB e serviço web.

Consideravelmente mais recursos são necessários para chamar um serviço web do que chamar um EJB. Devido a isso, é comum para criar todos os seus componentes de back-end como EJBs e então permitir que aplicativos externos para acesso aos seus componentes de back-end, como serviços web. Seus próprios aplicativos locais, que estão sendo executados na mesma rede como o servidor WebLogic, pode usar o método de chamada EJB mais rápido.

A Listagem 2 mostra o arquivo de feijão que implementa o componente EJB backend. O componente EJB backend é quase o mesmo que o componente de classe Java backend. A principal diferença é o código adicional usado para apoiar o EJB.

Listagem 2: EJB Backend Component

com.dummies.ejb- pacote
importar javax.ejb. * -
importação java.rmi. * -
importar javax.swing. * -
classe pública SampleBean implementa SessionBean
{
stx- SessionContext privada
// métodos necessários, não utilizados por este tipo de feijão
ejbCreate public void () {}
ejbRemove public void () {}
ejbActivate public void () {}
ejbPassivate public void () {}
// Setter para o SessionContext
setSessionContext public void (SessionContext CTX)
{
ctx = this.stx-
}
// O método amostra
Cadeia sampleMethod pública (int num)
lança RemoteException
{
switch (num)
{
Caso 1: return "One" -
case 2: retornar "Two" -
case 3: voltar "Three" -
case 4: retornar "Four" -
Caso 5: retornar "Five" -
Caso 6: return "Six" -
Caso 7: return "Seven" -
Caso 8: return "Oito" -
Caso 9: return "Nine" -
caso 10: return "Ten" -
padrão: return "Alguns Number" -
}
}

}

É necessário especificar que o feijão é um EJB sem estado no arquivo ejb-jar.xml, que é mostrado na Listagem 3. Você pode usar muitos nós e atributos.

Listagem 3: O arquivo ejb-jar.xml para um componente de back-end

'Http://java.sun.com/dtd/ejb-jar_2_0.dtd'>



SampleObject
com.dummies.ejb.SampleHome
com.dummies.ejb.Sample
com.dummies.ejb.SampleBean
stateless
Recipiente


menu