2017-11-15 26 views
13
  • मैं सर्वर मशीन से RServe cmd का उपयोग कर चला रहा हूँ जावा से RServe कोकनेक्ट प्रमाणीकरण का उपयोग

    Rserve.exe --RS-conf Rserv.conf --RS-port 12306 
    
  • Rserv.conf फ़ाइल सामग्री निम्नलिखित है:

    RserveAuth.txt pwdfile
    प्रमाणन की आवश्यकता
    रिमोट सक्षम
    सादे टेक्स्ट अक्षम

  • RserveAuth.txt सामग्री निम्नलिखित है:

    व्यवस्थापक 123456

  • मैं जावा

    से आर सर्वर से कनेक्ट कर रहा हूँ
    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

+0

ऐसा लगता है कि आपका आरएसरवर विंडोज 'Rserve.exe' पर है, क्लाइंट उपयोगकर्ता चल रहा है [विंडोज़, मैकोज़क्स, लिनक्स]? क्या आपका उत्पादन विंडोज पर आरएसवर है? बस आवश्यकताओं की जांच। – Technophobe01

+0

@ Technophobe01 RServer विंडोज मशीन पर है और मेरा क्लाइंट किसी भी विंडोज/लिनक्स/मैकोज़क्स से कनेक्ट हो सकता है। रुपये से कनेक्शन अनुरोध जावा क्लास से बनाया गया है और बाद में मैं कनेक्शन ऑब्जेक्ट का उपयोग करके रिजर्व पर स्क्रिप्ट चलाता हूं और स्क्रिप्ट के आउटपुट को जेएसपी पेज पर पास करता हूं। – Akki

+0

एफवाईआई। विंडोज के तहत आरएसर्व का संस्करण सीमित है। सबसे महत्वपूर्ण सीमा "कोई समांतर कनेक्शन समर्थित नहीं है, बाद के कनेक्शन समान नामस्थान साझा करते हैं"/"सत्र समर्थित नहीं हैं - यह इस तथ्य का एक परिणाम है कि समांतर कनेक्शन समर्थित नहीं हैं"। Https://www.rforge.net/Rserve/rserve-win.html देखें "कृपया रुर के विंडोज संस्करण को डाउनलोड/उपयोग करने से पहले पढ़ें!" –

उत्तर

3

आप पहली बार एक आदेश आप login आदेश पर अमल करने की जरूरत है के रूप में संबंध बनाने के बाद authentification सक्षम किया है, के रूप में एक्सेस करने की अनुमति नहीं होगी। जावा लाइब्रेरी के लिए एक विशेष रैपर है।

उदाहरण के लिए केस देखें उदाहरण के लिए नीचे कोड देखें।

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 मान के रूप में पूर्ण पथ का उपयोग करने की अनुशंसा करता हूं।

+0

क्या यह आंतरिक रूप से कनेक्ट करने के लिए एसएसएच का उपयोग करता है? क्या यह एक समाधान है जो विंडोज और लिनक्स बॉक्स दोनों के लिए काम करेगा? – madhavi

+0

हां यह किसी भी सिस्टम के लिए काम करेगा (मैंने इसे मैकोज़ एक्स के साथ परीक्षण किया है), और यह मूल सॉकेट कनेक्शन का उपयोग नहीं करता है। – Babl

+0

bcz मैं अपने समाधान पीछा किया और एक org.rosuda.REngine.Rserve.RserveException मिला: लॉगिन विफल, अनुरोध की स्थिति: प्राधिकरण org.rosuda.REngine.Rserve.RConnection.login (RConnection.java:399) त्रुटि – madhavi

संबंधित मुद्दे

 संबंधित मुद्दे