Я искал способ добавить удаленную файловую систему, доступную в Bluemix. В этом сообщении мне сказали использовать стек cflinuxfs2, который поддерживается в последних версиях Cloud Foundry.
Мне удалось выполнить команду mkdir для точки монтирования из моего Java-приложения и выполнить команду sshfs, но эта последняя завершается с ошибкой: «Чтение: сброс соединения узлом».
Дело в том, что те же самые команды, которые используются в Linux дома, работают нормально, поэтому я понимаю команду, ключ ssh и файлы ноу-хостов в порядке.
Это фрагмент кода Java EE, развернутый в среде выполнения Liberty в Bluemix:
String s = null;
Process p = null;
BufferedReader br = null;
try
{
p = Runtime.getRuntime().exec("mkdir -p /home/vcap/misc");
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
while((s = br.readLine()) != null)
System.out.println("line: " + s);
p.waitFor();
System.out.println ("#### Executing command mkdir with exit: " + p.exitValue());
p.destroy();
br.close();
p = Runtime.getRuntime().exec("sshfs [email protected]:/ /home/vcap/misc -o IdentityFile=/home/vcap/app/wlp/usr/servers/defaultServer/apps/myapp.ear/cloud.key -o StrictHostKeyChecking=yes -o UserKnownHostsFile=/home/vcap/app/wlp/usr/servers/defaultServer/apps/myapp.ear/known_hosts -o idmap=user -o compression=no -o sshfs_debug");
br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while((s = br.readLine()) != null)
System.out.println("line: " + s);
p.waitFor();
System.out.println ("#### Executing command sshfs with exit: " + p.exitValue());
p.destroy();
br.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
catch(InterruptedException ex)
{
ex.printStackTrace();
}
finally
{
try
{
if(br != null)
br.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
}
Файлы, на которые ссылаются команды, включаются в файл EAR и отправляются как часть приложения. Я могу видеть их и их содержимое, просматривая файловую систему с панели управления Bluemix.
Просматривая Интернет, я нашел множество сообщений с сообщением об ошибке: «читай: сброс соединения узлом», но, похоже, они не применимы к моему случаю или связаны с брандмауэрами и файлами конфигурации, к которым у меня нет доступа в Bluemix. И, как я уже сказал, те же две команды, выполненные в моем Linux-боксе дома, работают нормально.
Любая идея или рекомендация, чтобы заставить его работать? Кто-нибудь уже тестировал эту идею в Bluemix?
Спасибо!
printStackTrace()
ничего не распечатывалось? - person Jeff Sloyer   schedule 27.05.2015