पर केवल एक बार आर-फाइलों को सोर्स करना मैंने एक छोटा जावा क्लाइंट लिखा है जो Rserver पर कुछ गणना करता है। इस उद्देश्य के लिए, functions.r
- और libraries.r
सर्वर पक्ष पर फ़ाइलें हैं, जिन्हें वास्तविक गणना करने से पहले, सोर्स किया जाना है।रुपये
वर्तमान में मैं हर नए कनेक्शन पर फ़ाइलें लोड:
import org.rosuda.REngine.Rserve.RConnection;
public class RserveTester {
public void doOnRserve() {
RConnection c = new RConnection("rserve.domain.local");
c.login("foo", "user");
c.eval("source(\"/home/rserve/lib/libraries.r\")");
c.eval("source(\"/home/rserve/lib/functions.r\")");
c.eval("someCalculation()")
c.close();
}
}
जहां doOnRserve()
एक मिनट में कई बार ग्राहक के पक्ष जोड़ी पर कुछ घटनाओं के कारण कहा जाता है।
मेरा प्रश्न है: क्या पुस्तकालयों को केवल एक बार स्रोत करने की संभावना है, जैसे कि वे व्यक्तिगत सोर्सिंग के बिना सभी नए आरएसएशन के दौरान उपलब्ध हैं?
मैं जैसे क्लाइंट पक्ष पर कुछ करने की कोशिश की:
c.serverSource("/home/rserve/lib/libraries.r")
c.serverSource("/home/rserve/lib/functions.r")
कौन सा मुझे ते अपवाद निम्न देता है (पता नहीं क्यों यह काम नहीं करता छलबल eval
करता है):
org.rosuda.REngine.Rserve.RserveException: serverSource failed, request status: access denied (local to the server)
मैं शुरू कर सकते हैं एक विशिष्ट .Rprofile
के साथ सुरक्षित?
संपादित करें:
- /home/rserve/.Rprofile स्रोत .R फ़ाइलों करते हैं:
असल में, वहाँ तीन संभावित तरीकों होना सीवन। लेकिन जब भी मैं
new RConnection()
- को कॉल करते समय स्रोत आदेशों को सीधे आर तक पास करता हूं (कोई विचार नहीं है कि यह कैसे करें)।
- मेरी पसंदीदा विधि: सर्वर स्रोत() का उपयोग करके क्लाइंट पक्ष से इसे कर रही है, जो इन "पहुंच से वंचित" अपवादों को फेंकता है।
EDIT2:
Rserve संस्करण v0.6-8 x86_64-पीसी-linux-gnu के लिए (338)
आर संस्करण 2.15.2।
धन्यवाद, लेकिन 'सर्वरसोर्स' से संबंधित दोनों विधियों का आपने काम नहीं किया है: 'आर सीएमडी रुर्व - आरएस-सक्षम-नियंत्रण - आरएस-conf ~/control/Rserve.conf' के साथ डिमन शुरू करना' पर एक चेतावनी देता है स्टार्टअप: "चेतावनी: अनजान विकल्प '--आरएस-सक्षम-नियंत्रण'"। 'नियंत्रण सक्षम' को जोड़ना (मेरा स्थानीय) Rserve.conf कोई चेतावनी नहीं देता है लेकिन फिर भी मुझे जावा अपवाद मिलता है: "सर्वर स्रोत विफल हुआ, अनुरोध स्थिति: पहुंच अस्वीकृत (सर्वर के लिए स्थानीय)" – Beasterfield
यदि '--RS- सक्षम- नियंत्रण' पहचाना नहीं गया है तो आप पुराने रुपये (शायद 0.x श्रृंखला) का उपयोग कर रहे हैं जिसने इसका समर्थन नहीं किया। 'नियंत्रण सक्षम' के लिए - कृपया यह सुनिश्चित करने के लिए डीबग संस्करण चलाएं कि आपने कॉन्फ़िगरेशन को सही तरीके से सेट किया है, इसलिए यह ध्वजांकित किए गए झंडे दिखाएगा। यह भी ध्यान रखें कि यदि आप उपयोगकर्ता प्रमाणीकरण का उपयोग करते हैं तो आपको उन उपयोगकर्ताओं को निर्दिष्ट करना होगा जिन्हें नियंत्रण आदेश जारी करने की अनुमति है (दस्तावेज़ देखें)। –
बहुत खेद है, लेकिन मुझे वापस आने के लिए कुछ समय लगा। हाँ आप सही थे, मैंने 0.x श्रृंखला स्थापित की थी। बहुत धन्यवाद, यह बहुत उपयोगी था। – Beasterfield