How to call Java API from Ruby 1.8 or 1.9 -
मुझे यह JRuby काम कर रहा है कोड (से चोरी हो गया) जो SAXON xslt प्रोसेसर एपीआई को लपेटता है अब, मुझे आश्चर्य है कि क्या मैं और कैसे मैं एक ही एपीआई रूबी ढांचे में लपेट कर सकते हैं कर सकते हैं? कृपया मुझे बताएं कि यह प्रश्न अज्ञान है या अगर इसे किसी तरह से सुधार किया जा सकता है। यह वांछित के लिए जावा दस्तावेज़ संदर्भ है। और यह JRuby कोड मैं का उपयोग कर रहा है: जैसा कि ऊपर टिप्पणी की, आप रूबी क्रम से सीधे ऐसा नहीं कर सकते, जावा कॉल करने से रूबी JRuby या फोन पर या तो होना करने के लिए की आवश्यकता है जावा परोक्ष रूप से C / C ++ JVM एपीआई आप सी से जावा कोड कॉल करने के लिए अनुमति देता है का उपयोग करते हुए। पहला विकल्प संभवतः करता है उपयोग कर रहा है आप के लिए भारी उठाने के सबसे (एक रूबी हैं- के रूप में यह काम करता है सी-टू-जावा आवरण)। यदि आरजेबी आपके लिए काम नहीं करता है, तो आप सी () में जेवीएम एपीआई का उपयोग कर सीधे अपने आवरण का निर्माण कर सकते हैं और फिर आप रूबी से इसका इस्तेमाल कर सकते हैं। लेकिन जब तक आपको सचमुच सी-रूबी (एमआरआई) का उपयोग करने की आवश्यकता नहीं होती है, तो मैं आपको सुझाव देता हूं कि आप ऊपर दिए गए किसी भी तरीके से बचने के लिए और सिर्फ जेआरयूबी का उपयोग करें, क्योंकि मूल कोड में जाने से संभव हो सकेगा Segfaults, स्मृति प्रबंधन के मुद्दों और ऊपर सभी विकल्पों को एक धागे में चलाने के लिए मजबूर करते हैं, जबकि आप JRuby का उपयोग करके बहु-थ्रेडेड समाधान बना सकते हैं।
की आवश्यकता होती है 'जावा' मॉड्यूल JXslt include_class "javax.xml.transform.TransformerFactory" include_class "javax.xml.transform.Transformer" include_class "javax.xml .transform.stream.StreamSource javax.xml.transform.stream.StreamResult "include_class" java.lang.System "वर्ग XsltProcessor डीईएफ़ को बदलने" include_class "(XSLT, infile, outfile) ट्रांसफार्मर = @ tf.newTransformer (StreamSource.new (xslt )) ट्रांसफार्मर.ट्रांसफोर्म (स्ट्रीमसॉर.न्यू (इन्फील), स्ट्रीम रिज़ल्ट.न्यू (आउटफाइल)) एंड एंड # एक्सएसएलटी प्रोसेसर क्लास सक्सन एंड एलटी; XsltProcessor TRANSFORMER_FACTORY_IMPL = "net.sf.saxon.TransformerFactoryImpl" डीईएफ़ System.setProperty ( "javax.xml.transform.TransformerFactory", TRANSFORMER_FACTORY_IMPL) @tf = TransformerFactory.newInstance अंत अंत अंत प्रारंभ
Comments
Post a Comment