Hola lbarrios,
Esto no es posible con el enfoque estándar, ya que sabe que no hay forma posible de establecer dinámicamente el directorio de origen. Entendamos por qué esto no es posible de forma estándar. La razón radica en la forma en que funciona el servidor SFTP. El servidor de inquilinos (PI) solicita un archivo al servidor SFTP. El arrendatario primero envía una solicitud a un servidor SFTP, pero el flujo de datos va en la dirección opuesta, desde el servidor SFTP al arrendatario. En otras palabras, el PI lee archivos del servidor SFTP (un proceso que también se conoce como sondeo ).
Para que se realice el sondeo, debe mencionar el directorio de origen en el canal SFTP del remitente y este valor es intrínsecamente estático. Por lo tanto, esto no es posible lograr el escenario de manera directa.
Para lograr esto, sugeriría seguir el diseño
-
El mensaje proxy de ECC a PI llega a intervalos regulares. El mensaje lleva el nombre del directorio para buscar el archivo en el servidor SFTP.
-
En PI, diseñe una asignación de Java que actuará como arrendatario para SFTP y obtendrá el archivo del servidor SFTP.
JSch API se usa ampliamente para conectar un SFTP usando Java. Utilice esta biblioteca para escribir código de asignación de Java. El uso de muestra se muestra a continuación.
importar com . jcraft _ jsch . canal ; importar com . jcraft _ jsch . CanalSftp ; importar com . jcraft _ jsch . JSch ; importar com . jcraft _ jsch . JSchExcepción ; importar com . jcraft _ jsch . sesión ; importar com . jcraft _ jsch
. SftpExcepción ;
importar Java . yo _ BufferedReader ; importar Java . yo _ IOExcepción ; importar Java . yo _ flujo de entrada ; importar Java . yo _ Lector de flujo de entrada ;
public class TestJSch { public static void main ( String args []) throws IOException {
JSch jsch = new JSch ();
Sesión sesión = nulo ; intente {
sesión = jsch . getSession ( "usuario", "127.0.0.1", 22);
sesión _ setConfig ( "StrictHostKeyChecking", "no");
sesión _ establecer contraseña (
"clave");
sesión _ conectar ();
Canal canal = sesión . canal abierto ( "sftp");
canal _ conectar ();
CanalSftp sftpChannel = ( CanalSftp ) canal ;
Flujo InputStream = sftpChannel . obtener ( "/usr/home/testfile.txt"); pruebe {
BufferedReader br = new BufferedReader ( new InputStreamReader ( flujo )); línea de cuerda ; while (( línea = br . readLine ()) != null ) { System.out. println ( línea ); }
} catch ( IOException io ) { System.out. println ( "Se produjo una excepción durante la lectura del archivo del servidor SFTP debido a " + io.getMessage());
yo _ obtener mensaje ();
} catch ( Excepción e ) { System.out. println ( "Se produjo una excepción durante la lectura del archivo del servidor SFTP debido a " + e.getMessage()); mi. obtener mensaje ();
}
canal sftp . salir ();
sesión _ desconectar (); } captura ( JSchException e ) { e. imprimirStackTrace (); } captura ( SftpException e ) { e. imprimirStackTrace (); } } }
en la línea del código anterior (que se muestra a continuación), reemplace el directorio y el nombre de archivo dinámicamente como se obtuvo del mensaje xml enviado por ECC. La asignación de Java lee cada línea del servidor SFTP y la escribe en el receptor
Flujo InputStream = sftpChannel . obtener ( "/usr/home/testfile.txt");
-
El receptor será un adaptador receptor de archivos NFS.
-
Diseñe una segunda ICO para aplicar FCC y procesamiento adicional según las necesidades de su negocio.
Add Comment