2009-04-07 8 views
11

से जावास्क्रिप्ट दुभाषिया (राइनो) को जावा एप्लिकेशन में एम्बेड करने के दौरान (उस एप्लिकेशन को स्क्रिप्ट करने में सक्षम होने के लिए) एम्बेड किया जा सकता है, स्क्रिप्ट के लिए उपलब्ध जावा पैकेज को प्रतिबंधित करने के बारे में कोई कैसे होगा ? उदाहरण के लिए, केवल "java.lang। *" पहुंच योग्य होना चाहिए।राइनो: जावा पैकेज को प्रतिबंधित करें जिसे जावास्क्रिप्ट

उत्तर

8

राइनो में कुछ संकुलों और कक्षाओं (प्रतिबिंब के माध्यम से) तक पहुंच को अवरुद्ध करने के लिए एक विधि here वर्णित है। महत्वपूर्ण इंटरफेस ClassShutter है जो राइनो के लाइवकनेक्ट समर्थन के लिए एक्सेस कंट्रोल प्रदान करता है।

+1

विडंबना यह है कि, अवरुद्ध करने के बारे में codeutopia.net का लिंक 403 लौटा रहा है मेरे लिए निषिद्ध –

1

कैसे कह के बारे में:

जावा = अपरिभाषित; कॉम = अपरिभाषित; पैकेज = अपरिभाषित;

प्रारंभिक लिपि में जो पहले लोड किया गया है।

+3

दिलचस्प दृष्टिकोण, संभवतः काम करता है यदि आप * सभी * जावा तक पहुंच बंद करना चाहते हैं (केवल विशिष्ट पैकेज नहीं)। दूसरी तरफ, आप शायद अभी भी 'obj.getClass()। ForName ("a.b.c.TheClass") कर सकते हैं। NewInstance() 'आपके पास दुभाषिया दायरे में मौजूद किसी ऑब्जेक्ट के लिए। – Thilo

+0

@ थिलो नहीं, यदि आपकी ऑब्जेक्ट्स जावास्क्रिप्ट ऑब्जेक्ट्स हैं (जो आपको करना चाहिए) – Zo72

+0

यह एक बुरा विचार है क्योंकि जावास्क्रिप्ट विधियां 'java.io' फ़ंक्शंस को कॉल करने लगती हैं जो तब विफल हो जाएंगी यदि उन्हें' जावा 'नहीं मिल रहा है कक्षा। 'प्रिंट (" हैलो वर्ल्ड ") का मूल्यांकन करने का प्रयास करें; 'जावा' को अपरिभाषित करने के बाद और देखें कि यह आपको कहां प्राप्त करता है - 'टाइप एरर: अपरिभाषित' से संपत्ति" io "नहीं पढ़ सकता। – chrixm

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