A criação de serviços da Web na WebLogic

A criação de serviços da Web no WebLogic - dummies

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

Todos os detalhes do serviço da Web estão escondidos do usuário e o serviço é independente de hardware e software. Isso incentiva os desenvolvedores de software a criar aplicativos que consistam em pequenos serviços individuais, que podem ser usados ​​sozinhos ou em grupos para realizar tarefas ainda mais complexas.

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

Definindo um serviço da Web

Antes de criar seu serviço da Web, você deve definir o que fará. Isso permite que você construa adequadamente a interface que outras aplicações devem aderir se quiserem se comunicar com seu serviço da web.

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

  • Serviço síncrono
  • Serviço assíncrono

A serviço web síncrono, < que é o padrão, começa quando o serviço da Web recebe uma mensagem. Este serviço da web responde imediatamente. Os serviços web síncronos são mais úteis quando o programa cliente requer os dados retornados da solicitação imediatamente. Um exemplo desse tipo de dados é a cotação atual de ações para uma determinada empresa.

Um serviço web

assíncrono é assíncrono, de modo que as mensagens podem ser trocadas livremente entre o cliente eo serviço web. Uma mensagem de um lado não obriga o outro a enviar uma mensagem correspondente. Quando um cliente envia uma mensagem para um serviço web assíncrono, o cliente não aguarda uma mensagem de volta do serviço da Web. O serviço da Web pode enviar uma mensagem ao cliente mais tarde, mas nada inerentemente vincula esta mensagem à mensagem original que o cliente enviou. Os serviços da Web assíncronos são uma boa opção quando você está enviando informações que não exigem uma resposta. Por exemplo, você pode querer enviar uma mensagem para vários de seus servidores, dando-lhes uma nova mensagem de saudação para exibição aos usuários.

Escolhendo e criando um componente backend

O objetivo do seu serviço web é permitir que clientes remotos acessem os serviços fornecidos. Esses serviços, denominados

backend component, assumem a forma de código Java.Você pode criar seu componente de backend como um dos seguintes: Um método de uma sessão sem estado EJB

  • Um método de uma classe Java
  • Um consumidor de método JMS
  • WebLogic pode tornar qualquer um desses itens disponível como um serviço web. Isso torna conveniente o pacote do código Java existente como um serviço web. Se você já criou EJB de sessão sem estado, você pode empacotá-los como um serviço da Web. Ou se o seu código existir em classes Java regulares, você pode fornecer acesso à sua classe como um serviço da Web. Você também pode usar mensagens JMS como um serviço de backend para seu serviço web.

Criando um serviço web síncrono

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

Trabalhando com um componente de backend de classe Java

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

Não inicie nenhum tópico. Esta regra aplica-se a todo o código Java que é executado no WebLogic Server.

  • Definir um construtor sem argumento padrão.
  • Definir como público os métodos da classe Java que serão expostos como operações de serviço web.
  • Você deve escrever código Java seguro para thread porque o WebLogic Server mantém apenas uma 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_HOMEsamplesserversrcexampleswebservicesbasicjavaclass

onde

WL_HOME refere-se ao diretório principal da instalação do seu servidor WebLogic. Em um sistema Windows, este diretório geralmente é C: beaweblogic81. O Listado 1 mostra uma classe Java que você poderia usar como um componente do backend. Esta classe Java contém um único método, chamado sampleMethod, que aceita um int e retorna uma String.

Listagem 1: Java Class Backend Component

package com. bobos. ejb;

classe pública SampleBackendComponent
{
public String sampleMethod (int num)
{
switch (num)
{
caso 1: retornar "One";
caso 2: retornar "Dois";
caso 3: retornar "Três";
caso 4: retornar "quatro";
caso 5: retornar "Cinco";
caso 6: retorno "seis";
caso 7: retornar "sete";
caso 8: retornar "Oito";
caso 9: retornar "Nove";
caso 10: retorno "Dez";
padrão: retorna "Some Number";
}
}
}
Trabalhando com um componente de backend EJB de sessão sem estado

Você também pode optar por criar seu componente de backend como uma EJB de estado sem estado. Escrever código Java para uma sessão sem estado O EJB para um serviço na web não é diferente de escrever um EJB autônomo.

Nos serviços da web. descritor de implantação xml, você pode especificar que uma operação de serviço web é de uma maneira, o que significa que o aplicativo cliente que invoca o serviço da Web não aguarda uma resposta.Quando você escreve o código Java para o método EJB que implementa esse tipo de operação, você deve especificar que ele retorna vazio.

Ao escolher entre usar um EJB ou um componente de backend de classe Java, considere as outras maneiras pelas quais seu componente de backend será usado. Se o seu componente de backend for comumente acessado como um EJB, crie-o como um EJB. Isso permite que você use o mesmo código para seu EJB e serviço da web.

consideravelmente são necessários mais recursos para chamar um serviço web do que chamar um EJB. Por isso, é comum criar todos os seus componentes do backend como EJBs e, em seguida, permitir que aplicativos externos acessem seus componentes do backend como serviços da Web. Os seus próprios aplicativos locais, que estão sendo executados na mesma rede que o servidor WebLogic, podem usar o método de chamada EJB mais rápido.

O Listado 2 mostra o arquivo do bean que implementa o componente do backend do EJB. O componente backend EJB é quase o mesmo que o componente backend da classe Java. A principal diferença é o código adicional usado para suportar o EJB.

Listagem 2: EJB Backend Component

package com. bobos. ejb;

importar javax. ejb. *;
importar java. rmi. *;
importar javax. balanço. *;
classe pública SampleBean implementa SessionBean
{
SessionContext privado stx;
// Métodos necessários, não utilizados por este tipo de bean
public void ejbCreate () {}
public void ejbRemove () {}
public void ejbActivate () {}
public void ejbPassivate () {}
// setter para SessionContext
public void setSessionContext (SessionContext ctx)
{
ctx = isto. stx;
}
// o método de exemplo
public String sampleMethod (int num)
lança RemoteException
{
switch (num)
{
caso 1: retorna " 1";
caso 2: retornar "Dois";
caso 3: retornar "Três";
caso 4: retornar "quatro";
caso 5: retornar "Cinco";
caso 6: retorno "seis";
caso 7: retornar "sete";
caso 8: retornar "Oito";
caso 9: retornar "Nove";
caso 10: retorno "Dez";
padrão: retorna "Some Number";
}
}
}

Você deve especificar que o bean é um EJB sem estado no ejb-jar. arquivo xml, que é mostrado no Listado 3. Você pode usar muitos nós e atributos.

Listagem 3: ejb-jar. Arquivo xml para um componente de backend

' // java. dom. com / dtd / ejb-jar_2_0. dtd '>
SampleObject



com. bobos. ejb. SampleHome
com. bobos. ejb. Exemplo
com. bobos. ejb. SampleBean
Stateless
Container