2015-02-11 4 views
0

Я хочу указать путь ввода из базы данных в mule S FTP INBOUND Connector, где он будет собирать файл в соответствии с базой данных Path. Но я не могу решить эту проблему; Возможно ли это или нет? Никто не может ответить на это? пожалуйста.Mule ESB SFTP-соединитель динамический ввод Путь

ответ

0

Вы не можете использовать MEL для определения пути, который будет использоваться SFTP. Однако вы можете загрузить путь из файла свойств следующим образом. НТН.

<sftp:endpoint name="SFTP-Endpoint" 
    connector-ref="SFTP" host="${sftp.host}" user="${sftp.user}" 
    password="${sftp.jdeBillingReportPassword}" port="${sftp.port}" 
    path="${sftp.path}" /> 
+0

Это не ответ .....! Сэр, я знаю это, но я хочу выбрать файл по пути к базе данных ..! – Ganesh

+0

Вы можете использовать модуль запроса после пути к базе данных. Таким образом, вы можете получить файл в середине потока. Для получения дополнительной информации об этой проверке: http://blogs.mulesoft.org/introducing-the-mule-requester-module/. НТН. – clare

0

Да, это возможно, написав отличный шрифт. В заводной скрипт вы можете ссылаться на flowVar (например: imageRef), который будет иметь путь к файлу для извлечения:

<scripting:component doc:name="Script"> 
     <scripting:script engine="Groovy"> 
      <![CDATA[def ftpFileUri = "ftp://${ftp.username}:${ftp.password}@${ftp.host}/${ftp.path}" + message.getInvocationProperty('imageRef') + ".jpg"; 
      muleContext.client.request(ftpFileUri, 30000L);]]> 
     </scripting:script> 
    </scripting:component> 

В вашем случае, до этого вам просто нужно будет обращаться к базе данных и хранить значение в вашем flowVar.

также, если файл не существует, вы можете поймать заводной исключение в «стратегии исключения» и зарегистрировать ее с:

<logger message="#[groovy:message.getExceptionPayload().getRootException().getMessage()]" level="ERROR" doc:name="Logger"></logger>

+0

Сэр, пожалуйста, объясните ...! Я хочу взять входной путь sftp из базы данных ...! – Ganesh

+0

Несомненно, добавьте компонент базы данных в поток с правильным запросом, чтобы получить свой путь. Как только вы получите это, вы можете использовать строгий скрипт, который я написал выше, чтобы получить файл ftp. – Abba

+0

сэр, но я не могу использовать компонент базы данных до SFTP, потому что, если я могу сделать это, тогда mule не сможет выбрать файл, потому что SFTP становится OUTBOUND SFTP. Итак, можете ли вы сказать мне, что я могу сделать сейчас? – Ganesh

1

Используйте опрос компонент в муле. Внутри компонента опроса добавьте компонент Java. И сделайте Java класс реализуемым Callable.

В методе OnCall сделать пользовательские Endpoint так:

public Object onCall(MuleEventContext eventContext) throws Exception { 
EndpointBuilder endpointBuilder = muleEventContext 
       .getMuleContext() 
       .getEndpointFactory() 
       .getEndpointBuilder(
         protocol+"://" + username + ":" 
           + password+ "@" 
           + host + ":"+port 
           + path); 
    InboundEndpoint inboundEndPoint = endpointBuilder 
       .buildInboundEndpoint(); 

Теперь это имя пользователя и пароль вы можете получить из БД. Либо установите слой REST поверх БД и выйдите из Webservices для извлечения данных и с помощью HTTP-клиента извлеките данные и динамически заполните имя пользователя, пароль, хост и путь.