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

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.
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() ;
}
}
}
|
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.
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.
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.
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.
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.
| Descrição | Nome | Tamanho | Método de download |
|---|---|---|---|
| Code sample | dw.zip | 39 KB | HTTP |
Informações sobre métodos de download
- 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.
- Página de recursos para desenvolvedor do WebSphere Message Broker
- 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 para desenvolvedores WebSphere no developerWorks
- 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.
- Downloads de teste de produtos de software IBM

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.