2017-11-15 90 views
13
  • Tôi đang chạy RServe từ máy Server sử dụng cmdConnect để RServe từ JAVA sử dụng xác thực

    Rserve.exe --RS-conf Rserv.conf --RS-port 12306 
    
  • tập tin Rserv.conf đã sau nội dung:

    pwdfile RserveAuth.txt
    auth cần
    bật từ xa
    văn bản thuần túy vô hiệu hóa

  • RserveAuth.txt đã nội dung sau:

    quản 123456

  • Tôi đang kết nối với R Server từ 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();    
    } 
    } 
    } 
    
  • Kết nối với Rserve là mở cửa cho tất cả mà không tên & Password. Làm thế nào tôi sẽ thêm an ninh và cho phép kết nối duy nhất với các thông tin có giá trị để truy cập Rserve

+0

có vẻ như RServer của bạn nằm trên Windows 'Rserve.exe', người dùng máy khách đang chạy [Windows, MacOSX, Linux] là gì? RServer sản xuất của bạn có trên Windows không? Chỉ cần kiểm tra các yêu cầu. – Technophobe01

+0

@ Technophobe01 RServer có trên máy tính Windows và khách hàng của tôi có thể là bất kỳ Windows/Linux/MacOSX nào kết nối với nó. Yêu cầu kết nối tới Rserver được thực hiện từ lớp JAVA và sau đó tôi chạy tập lệnh trên Rserve sử dụng đối tượng kết nối và chuyển đầu ra của tập lệnh tới trang JSP. – Akki

+0

FYI. Phiên bản RServe trong Windows bị giới hạn. Giới hạn quan trọng nhất là "không có kết nối song song nào được hỗ trợ, các kết nối tiếp theo chia sẻ cùng một không gian tên"/"phiên không được hỗ trợ - đây là kết quả của thực tế là các kết nối song song không được hỗ trợ". Xem https://www.rforge.net/Rserve/rserve-win.html dưới "Vui lòng đọc trước khi tải xuống/sử dụng phiên bản Windows của Rserve!" –

Trả lời

3

Như bạn đã kích hoạt xác thực sau khi tạo các kết nối như một lệnh đầu tiên bạn cần thực hiện lệnh login. Thư viện Java có một trình bao bọc đặc biệt cho nó.

Xem mã bên dưới để biết ví dụ về trường hợp sử dụng.

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()); 

Ngoài ra, tôi khuyên bạn nên sử dụng đường dẫn đầy đủ làm giá trị pwdfile.

+0

Liệu nó có sử dụng ssh nội bộ để kết nối không? Nó là một giải pháp mà sẽ làm việc cho cả Windows và Linux hộp? – madhavi

+0

Có nó sẽ làm việc cho bất kỳ hệ thống (tôi đã thử nghiệm nó với MacOS X), và không có nó sử dụng kết nối ổ cắm bản địa. – Babl

+0

bcz i theo giải pháp của bạn và nhận được org.rosuda.REngine.Rserve.RserveException: đăng nhập thất bại, yêu cầu trạng thái: ủy quyền không thành công \t tại org.rosuda.REngine.Rserve.RConnection.login (RConnection.java:399) lỗi – madhavi

Các vấn đề liên quan