-
Я запускаю RServe с сервера с помощью cmd
Rserve.exe --RS-conf Rserv.conf --RS-port 12306
-
Файл Rserv.conf имеет следующий контент:
pwdfile RserveAuth.txt
требуется авторизация
дистанционное включение
отключить открытый текст -
RserveAuth.txt имеет следующее содержание:
Admin 123456
-
Я подключаюсь к R Server от JAVA
import org.rosuda.REngine.REXPMismatchException; import org.rosuda.REngine.REngineException; import org.rosuda.REngine.Rserve.RConnection; import org.rosuda.REngine.Rserve.RserveException; import org.rosuda.REngine.REXP; import org.rosuda.REngine.*; public class ConnecttoR { ... ... public void connectR() { try { RConnection connection = new RConnection("172.16.33.242",12306); // Works if authentication is not required in Rserv.conf } catch (RserveException e) { e.printStackTrace(); } catch(REXPMismatchException e){ e.printStackTrace(); } catch(REngineException e){ e.printStackTrace(); } } }
-
Подключение к Rserve открыто для всех без имени пользователя и пароля. Как добавить безопасность и разрешить соединение только с действительными учетными данными для доступа к Rserve
Подключиться к RServe от JAVA, используя аутентификацию
Ответ 1
Поскольку вы включили аутентификацию после создания соединения в качестве первой команды, вам необходимо выполнить команду login
. Для библиотеки Java есть специальная оболочка.
См. Код ниже, например, пример использования.
RConnection connection = new RConnection("127.0.0.1",12306);
connection.login("Admin", "123456");
REXP x = connection.eval("R.version.string");
System.out.println(x.asString());
Кроме того, я бы рекомендовал использовать полный путь в качестве значения pwdfile
.