Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

A primeira vez que acessar o developerWorks, um perfil será criado para você. Informações do seu perfil (tais como: nome, país / região, e empresa) estarão disponíveis ao público, que poderá acompanhar qualquer conteúdo que você publicar. Seu perfil no developerWorks pode ser atualizado a qualquer momento.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

FTP customizado com WebSphere Message Broker

Nagesh Subrahmanyam , Advisory Systems Analyst, Global Business Services, IBM
Photo of Nagesh Subrahmanyam
Nagesh Subrahmanyam é analista de sistemas consultivo de Global Business Services na Índia. Ele tem 10 anos de experiência em tecnologias System z e se interessa muito pelo uso de tecnologias de software livre e XML no System z. É possível entrar em contato com Nagesh pelo e-mail nsubrahm@in.ibm.com.

Resumo:  Os nós FileInput e FileOutput do WebSphere Message Broker não suportam FTP customizado. Este artigo mostra como usar o Apache Commons Net em um nó JavaCompute para ativar o FTP customizado e estender o Message Broker para usar toda a gama de recursos de FTP.

Data:  04/Jul/2011
Nível:  Intermediário Também disponível em :   Inglês
Atividade:  955 visualizações
Comentários:  


Introdução

O IBM® WebSphere® Message Broker (de agora em diante chamado de Message Broker) é um produto de barramento de serviço corporativo da IBM para soluções que envolvem fluxos de mensagens. Em resumo, esses fluxos de mensagens pegam uma mensagem de entrada, aplicam alguma transformação a ela e a entregam em um terminal usando os nós integrados do Message Broker.

Os nós FileInput e FileOutput foram projetados para ler e gravar arquivos, respectivamente, entre um sistema de arquivos e um servidor FTP. Contudo, nenhum desses nós suporta comandos FTP customizados.


Figura 1

Sessão FTP típica

A transcrição a seguir mostra uma sessão FTP típica iniciada a partir de uma máquina Linux® e indo para um sistema MVS® em um servidor z/OS® :


Exemplo 1. Sessão FTP de Linux para z/OS
nsubrahm@nsubrahm:~$ ftp big.blue.server 
Connected to 0.0.0.0. 
220-TCPFTP1 IBM FTP CS V1R12 at big.blue.server, 10:03:31 on 2011-03-16. 
220 Connection will close if idle for more than 5 minutes. 
Name (0.0.0.0:nsubrahm): USERID0 
331 Send password please. 
Password: 
230 USERID0 is logged on.  Working directory is "USERID0.". 
Remote system type is MVS. 
ftp> site RECFM=FB LRECL=100 BLKSIZE=27900 
200 SITE command was accepted 
ftp> put Messages.csv 'A.TEST.GDG(+1)' 
local: Messages.csv remote: 'A.TEST.GDG(+1)' 
200 Port request OK. 
125 Storing data set A.TEST.GDG.G0003V00 
250 Transfer completed successfully. 
336887 bytes sent in 1.17 secs (281.2 kB/s) 
ftp> bye 
221 Quit command received. Goodbye. 

Essa sessão FTP usa o comando SITE para passar informações para o conjunto de dados de destino. O nó FileOutput do Message Broker não tem esse recurso, de modo que este artigo mostrará como implementá-lo.

Solução Java

A solução Java™ baseia-se no pacote Apache Commons Net . Como descrito no javadoc para FTPClient, inicie conectando-se a um servidor FTP, efetuando login com seu ID do usuário e usando um comando get ou put . Abaixo, uma implementação de amostra.


Exemplo 2. Implementação de amostra do FTP usando Apache Commons Net
package fileTransferProtocol; 

import org.apache.commons.net.ftp.*; 
import java.io.*; 

public class FileTransferProtocol { 
     public static void main (String [ ] args)  { 
     String serverName ="my.zos.mainframe"  ; 
     String userName ="userid" ; 
     String password ="********" ; 
     FTPClient ftp = new FTPClient() ; 
     //Connect to the server 
     try { ftp.connect (serverName) ; 
          String replyText =ftp.getReplyString()  ; 
          System.out.println (replyText) ; 
     } 
     catch (Exception  e)  { 
               e.printStackTrace () ; 
     } 
     //Login to the server 
     try {   ftp.login (userName, password) ; 
               String replyText = ftp.getReplyString() ; 
               System.out.println (replyText); 
     } catch (Exception e) { 
               e.printStackTrace(); 
     } 
     //Tell server that the file will have JCL records 
     try {   ftp.site ("RECFM=FB LRECL=140") ; 
               String replyText = ftp.getReplyString() ; 
               System.out.println (replyText) ; 
     } 
     catch (Exception e) { 
               e.printStackTrace() ; 
     } 
     //Submit the job from the text file. 
     try {   FileInputStream inputStream = new FileInputStream ("/my/source/file") ; 
               ftp.storeFile (serverName,inputStream) ; 
               String replyText = ftp.getReplyString() ; 
               System.out.println (replyText) ; 
     } 
     catch (Exception e) { 
               e.printStackTrace() ; 
     } 
     //Quit the server 
     try { ftp.quit() ; 
     } 
     catch (Exception e) { 
                e.printStackTrace() ; 
     } 
  } 
} 

Usando o nó JavaCompute

A seção anterior mostrou uma implementação de amostra para enviar um arquivo de um sistema de arquivos local para um remoto. Esta seção mostra como agrupar essa implementação em um nó JavaCompute do Message Broker.

O centro de informações do Message Broker tem muitas informações sobre o nó JavaCompute. Contudo, um ponto precisa ser enfatizado: a implementação de amostra apresentada na seção anterior exige que os arquivos JAR do Commons Net estejam disponíveis em CLASSPATH. De modo similar, ao usar o nó JavaCompute, é preciso acrescentar essa dependência em um arquivo JAR externo. Para obter mais informações, consulte Adding Java code dependencies no centro de informações do Message Broker.

Tipo de classe Java para o nó JavaCompute

O Message Broker Toolkit fornece modelos de classes baseados na funcionalidade esperada de um nó JavaCompute. Para obter mais informações sobre as amostras alistadas abaixo, consulte Creating Java code for a JavaCompute node no centro de informações do Message Broker.

  • Filter – para filtrar as mensagens recebidas
  • Modificar – para modificar as mensagens recebidas
  • Create – para criar uma mensagem

A escolha de um modelo depende do fluxo de mensagens específico -- por exemplo, se a mensagem recebida será propagada para nós subsequentes depois da transferência de arquivo, ou se nenhuma outra ação será tomada após a transferência de arquivos e, portanto, nenhuma mensagem precisará ser propagada.

Descrição de classe Java

Esta seção descreve a classe Java que você usa para obter um FTP customizado.

Entradas básicas para a sessão FTP

Os itens essenciais para a transferência de arquivos por FTP são:

  • Nome de host de servidor ou endereço IP
  • ID do usuário e senha
  • Arquivos de origem e destino

Essas informações devem estar disponíveis para a classe que usa FTPClient a partir de Apache Commons Net para realmente transferir arquivos. A classe mostrada neste artigo aceita os valores acima como objeto java.util.Properties ou como o nome do arquivo que retém esses valores como pares nome-valor. Com um objeto Properties , há a vantagem de configurar os valores dinamicamente. Com um arquivo, não é necessária fixação de valores. Ao mesmo tempo, ao configurar o controle de acesso apropriado, o arquivo pode ser lido apenas pelo ID no qual o broker é executado.

Objeto Properties

Visto que diferentes sessões FTP podem exigir diferentes comandos customizados, o objeto Properties não precisa ser o mesmo o tempo todo. Esse artigo descreve uma implementação na qual a sessão FTP é necessária para entregar um arquivo ao servidor z/OS, especificando o bloco de controle do conjunto de dados (DCB) e alguns valores do espaço. Os pares nome-valor do objeto Properties são mostrados abaixo:


Exemplo 3. Pares nome-valor de amostra para objeto Properties
INTF1.server=big.blue.server 
INTF1.userid=USERID01 
INTF1.password=HeyThere 
INTF1.targetDSN='A.DUMMY.GDG(+1)' 
INTF1.targetDSN.RECFM=FB 
INTF1.targetDSN.LRECL=100 
INTF1.targetDSN.BLKSIZE=27900 
INTF1.targetDSN.pri=10 
INTF1.targetDSN.sec=5 
INTF1.targetDSN.unit=CYL 

Chamada

Esta é uma amostra de um nó JavaCompute que chama a classe para FTP customizado:


Exemplo 4. Código de nó JavaCompute de amostra para chamar a classe do nó customizado
package customFTP; 

import com.ibm.broker.javacompute.MbJavaComputeNode; 
import com.ibm.broker.plugin.*; 

public class FTPMessageFlow_JC01 extends MbJavaComputeNode { 
   public void evaluate(MbMessageAssembly inAssembly) throws MbException { 
      MbOutputTerminal out = getOutputTerminal("out"); 
      MbMessage inMessage = inAssembly.getMessage(); 

      MbMessage outMessage = new MbMessage(inMessage); 
      MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly,outMessage); 

      try { 
         /** 
          * All logic for this JavaCompute node. 
          * 
          * Build Properties object here OR 
          * Provide file name here 
          * 
          * Invoke custom FTP here 
          * 
          */ 
      } catch (Exception e) { 
         /** 
          * Handle exceptions 
          */ 
   } finally { 
      outMessage.clearMessage(); 
   } 
}

Como mostrado no código acima, a ideia é implementar a lógica de negócios necessária e depois preparar o objeto Properties ou então passar o nome do arquivo de modo que a classe FTP customizada seja chamada.

Amostras de fluxos de mensagens

Estas são duas amostras de fluxos de mensagem nos quais os arquivos são enviados para uma máquina de destino por meio de FTP.

Conectado a um nó FileOutput

Nesse fluxo de mensagens, conecte o terminal In do nó JavaCompute a partir do terminal End of data do nó FileOutput . Nessa configuração, após o arquivo ser completamente gravado, estará pronto para entrega por FTP. Por questão de simplicidade, crie o arquivo a ser transferido copiando-o de um nó FileInput. Na prática, criar o arquivo pode ser mais complexo.


Figura 2. Fluxo de mensagens

Executando o fluxo de mensagens

No nó JavaCompute, mencione o nome do arquivo que detém os pares nome-valor. Como opção, o nó JavaCompute pode criar o objeto Properties à mão e transferi-lo. Depois, cria um nome de arquivo como esperado em FI01. O fluxo de mensagens agora pode ser empacotado em um arquivo BAR e depois implementado e executado.

Conectado a um nó MQInput

Nesse fluxo de mensagens, conecte o terminal In do nó JavaCompute a partir do terminal Out do nó MQInput . Nessa configuração, espere uma mensagem com o nome do arquivo a ser entregue e use esse nome para realmente entregar o arquivo. Na prática, criar a mensagem pode ser mais complexo.


Figura 3. Fluxo de mensagens

Executando o fluxo de mensagens

No nó JavaCompute, mencione o nome do arquivo que detém os pares nome-valor. Como opção, o nó JavaCompute pode criar o objeto Properties à mão e transferi-lo. Depois, coloque uma mensagem com o nome de arquivo a ser entregue. O fluxo de mensagens agora pode ser empacotado em um arquivo BAR e depois implementado e executado.

O arquivo zip que pode ser baixado por download na parte inferior deste artigo tem quatro projetos do Message Broker – dois para cada um dos fluxos de mensagens mencionados acima. Em cada par, um tem o fluxo de mensagens e o outro, o código Java. Pode-se importar esses arquivos zip para sua área de trabalho e então compilá-los e implementá-los em um broker. Pode ser necessário fazer alterações específicas do seu ambiente no arquivo, como os nós MQ.

Conclusão

Este artigo mostrou como usar o Apache Commons Net em um nó JavaCompute do WebSphere Message Broker para ativar comandos customizados para FPT e para estender essa solução para oferecer suporte a FTP seguro usando SSH FTP e FTP-SSL, permitindo assim que o Message Broker use todo o leque de recursos de FTP.



Download

DescriçãoNomeTamanhoMétodo de download
Code sampledw.zip39 KBHTTP

Informações sobre métodos de download


Recursos

  • Recursos do WebSphere Message Broker
    • Página de recursos para desenvolvedor do WebSphere Message Broker
      Recursos técnicos para ajudar a usar o WebSphere Message Broker para conectividade, transformação de dados universal e integração em nível corporativo de serviços, aplicativos e plataformas diversos, para reforçar sua SOA.
    • Página do produto WebSphere Message Broker
      Descrições do produto, notícias sobre o produto, informações de treinamento, informações de suporte, etc.
    • Centro de informações do WebSphere Message Broker V7
      Um portal da Web único que reúne toda a documentação do WebSphere Message Broker V7, com conceitos, tarefas e informações de referência sobre a instalação, a configuração e o uso do seu ambiente WebSphere Message Broker.
    • O que há de novo no WebSphere Message Broker V7
      O WebSphere Message Broker V7 fornece conectividade universal com sua capacidade de rotear e transformar mensagens de qualquer lugar para qualquer lugar. Por meio de seu modelo de programação simples e uma eficiente interface de gerenciamento operacional, ele facilita muito o desenvolvimento, a implementação e a manutenção de soluções complexas de integração de aplicativos. Esse artigo descreve os principais aprimoramentos na V7.
    • Faça download de uma versão de teste gratuita do WebSphere Message Broker V7
      O WebSphere Message Broker V7 é uma compilação ESB para conectividade universal e transformação em ambientes heterogêneos de TI. Ele distribui informações e dados gerados por eventos de negócio em tempo real para pessoas, aplicativos e dispositivos por todo a sua empresa, e além dela.
    • Biblioteca de documentações do WebSphere Message Broker
      Especificações e manuais do WebSphere Message Broker.
    • Fórum do WebSphere Message Broker
      Obtenha respostas para as suas perguntas técnicas e compartilhe seu conhecimento com outros usuários do Message Broker.
    • Página de suporte do WebSphere Message Broker
      Um banco de dados para pesquisa de problemas de suporte e suas soluções, além de downloads, correções e rastreamento de problemas.
    • Biblioteca do Apache Commons Net
      Essa biblioteca ajuda a implementar o lado do cliente de muitos protocolos básicos da Internet. A biblioteca fornece acesso fundamental a protocolos, não abstrações de nível mais alto, de modo que os programadores podem desenvolver suas próprias implementações customizadas.

  • Recursos do WebSphere
    • Recursos para desenvolvedores WebSphere no developerWorks
      Informações técnicas e recursos para desenvolvedores que usam produtos WebSphere. O WebSphere no developerWorks fornece downloads de produtos, informações de instruções, recursos de suporte e uma biblioteca técnica grátis com mais de 2.000 artigos técnicos, tutoriais, melhores práticas, IBM Redbooks e manuais on-line de produtos. Seja você um iniciante, um especialista ou algo entre isso, você encontrará o que precisa para desenvolver soluções SOA corporativas usando a plataforma de software WebSphere baseada em padrões abertos.
    • Recursos para desenvolvedores de conectividade de aplicativos WebSphere no developerWorks
      Artigos de instruções, downloads, tutoriais, aprendizado, informações sobre o produto e outros recursos para ajudá-lo a desenvolver conectividade de aplicativos e soluções de integração de negócios em WebSphere.
    • Recursos de desenvolvedor de SOA e serviços da Web do WebSphere no developerWorks
      Artigos de instruções, downloads, tutoriais, aprendizado, informações de produtos e outros recursos para ajudá-lo a projetar e desenvolver soluções de SOA e serviços da Web do WebSphere.
    • Downloads de avaliação de WebSphere mais populares
      Downloads de avaliação gratuita dos principais produtos do WebSphere.
    • Fóruns do WebSphere
      Fóruns específicos do produto nos quais é possível obter respostas de perguntas técnicas e compartilhar o seu conhecimento com outros usuários de WebSphere.
    • Demos On Demand do WebSphere
      Faça o download e assista essas demos de execução automática, e saiba como os produtos e tecnologias WebSphere podem ajudar sua empresa a responder a um ambiente de negócios em rápida mudança e com complexidade crescente.
    • Boletim semanal sobre o WebSphere do developerWorks
      O boletim do developerWorks oferece artigos e informações mais recentes somente naqueles tópicos que interessam a você. Além do WebSphere, é possível selecionar entre Java, Linux, Open source, Rational, SOA, serviços da Web e outros tópicos. Inscreva-se agora e indique as mensagens que deseja receber.
    • Livros da IBM Press relacionados ao WebSphere
      Compras on-line convenientes por meio da Barnes & Noble.
    • Eventos relacionados ao WebSphere
      Conferências, exposições, Webcasts e outros eventos em todo o mundo que são do interesse dos desenvolvedores WebSphere.

  • Recursos do developerWorks
    • Downloads de teste de produtos de software IBM
      Downloads de teste sem custo de produtos do IBM® O DB2®, Lotus®, Rational®, Tivoli®eWebSphere® selecionados.
    • blogs do developerWorks
      Participe de uma conversa com os usuários e autores do developerWorks, e com editores e desenvolvedores da IBM.
    • Instruções técnicas do developerWorks
      Sessões técnicas gratuitas por especialistas da IBM que podem acelerar sua curva de aprendizado e ajudá-lo a ser bem-sucedido em seus projetos de software mais difíceis. As sessões variam de instruções virtuais de uma hora a sessões ao vivo com duração de um dia ou metade de um dia em cidades de todo o mundo.
    • Podcasts do developerWorks
      Ouça entrevistas e discussões interessantes com inovadores de software.
    • IBM Education Assistant
      Uma coleção de módulos educacionais multimídia que ajudam a entender melhor os produtos de software IBM e usá-los de forma mais efetiva para atender aos seus requisitos de negócios.

Sobre o autor

Photo of Nagesh Subrahmanyam

Nagesh Subrahmanyam é analista de sistemas consultivo de Global Business Services na Índia. Ele tem 10 anos de experiência em tecnologias System z e se interessa muito pelo uso de tecnologias de software livre e XML no System z. É possível entrar em contato com Nagesh pelo e-mail nsubrahm@in.ibm.com.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=WebSphere
ArticleID=697180
ArticleTitle=FTP customizado com WebSphere Message Broker
publish-date=07042011
author1-email=nsubrahm@in.ibm.com
author1-email-cc=