2011-06-16 16 views
5

मैं जावा वेब स्टार्ट के साथ प्रयोग कर रहा हूं।जावा वेब स्टार्ट getDocumentBase

मैंने अभी एक मूल JApplet लिखा है जिसमें Applet वर्ग पर getDocumentBase() नामक एक विधि है। यह URL को Applet स्थान पर चला रहा है (टॉमकैट के तहत) i.e. http://myserver:8080/myapp/whateverapplet.jar पर पूरा URL देता है।

हालांकि, मैं वेब स्टार्ट एप्लिकेशन के समान कुछ ढूंढ रहा हूं। मुझे यह जानने की जरूरत है कि यह कहां चल रहा है। क्या कोई ऐसी चीज है जो मुझे यह जानकारी दे सकती है?

संपादित

जहां यह चल रहा है मेरा मतलब है अगर मैं एक JNLP फ़ाइल से एक वेब शुरू चलाने के मामले में मैं चाहता हूँ:

http://myserver:8080/myapp

अगर मैं एक फ़ोल्डर से जार चलाने नेटवर्क पर मैं चाहता हूँ:

\\ सर्वर \ MyApp

या अगर मैं जम्मू चलाने मेरी मशीन पर किसी फ़ोल्डर से एआर मैं चाहता हूँ:

डी: \ MyApp

समाप्ति संपादित

+2

"मुझे यह जानने की ज़रूरत है कि यह कहां चल रहा है।" – aioobe

+0

@aioobe - मैंने सवाल अपडेट किया है। – Andez

उत्तर

5

मुझे लगता है कि आप अपने चल रहे एप्लिकेशन के भीतर से कोड बेस यूआरएल प्राप्त करना चाहते हैं?

final BasicService bs = (BasicService) ServiceManager.lookup(
    "javax.jnlp.BasicService"); 
final URL codeBase = bs.getCodeBase(); 

नोट आप (BasicService वर्ग के लिए) इस कोड को संकलित करने के लिए JNLP API पर निर्भर करना होगा कि: यदि यह मामला है, तो आप इस स्निपेट का उपयोग कर सकते हैं।

+0

@Andrew - उदाहरण के लिए धन्यवाद। मैंने इसे अपने कोड में आजमाया है और यह वेब स्टार्ट से ठीक काम करता है। जैसा कि मैंने एओबोब द्वारा दूसरे जवाब पर उल्लेख किया है, मैंने MyClass.class.getProtectionDomain() प्राप्त किया है। GetCodeSource()। GetLocation()। ToExternalForm() जिसने मुझे JAR फ़ाइल का पूरा पथ दिया है, हालांकि मैं स्थान जानना चाहता था। – Andez

+0

@ एंडीज़: "@ एंड्रयू - उदाहरण के लिए धन्यवाद।" आपका स्वागत है, लेकिन आईटीवाईएम 'वाल्डहेन्ज़' वहां है। ;) मैंने अभी जवाब संपादित किया है। –

3

शायद javax.jnlp.BasicService.getCodeBase आप जो खोज रहे हैं है।

एप्लिकेशन के लिए कोडबेस लौटाता है। कोडेबेस को या तो सीधे जेएनएलपी फ़ाइल में निर्दिष्ट किया जाता है, या यह जेएआर फ़ाइल का स्थान है जिसमें एप्लिकेशन का मुख्य वर्ग होता है।

रिटर्न:
        आवेदन

(BasicService "की नकल करता है शिथिल AppletContext कार्यक्षमता" जो getDocumentBase() आप की बात कर रहे हैं प्रदान करता है के codebase के साथ कोई URL।)

+0

मेरा छोटा [डेमो भी देखें। 'बेसिक सर्विस'] (http://pscode.org/jws/api.html#bs)। –

+0

@aioobe - इसके लिए धन्यवाद। Thats मेरे लिए काम करता है। हालांकि, मैंने निम्न कोड किया जो मुझे मूल सेवा का उपयोग किए बिना जेएआर फ़ाइल का पूरा मार्ग देता है। MyClass.class.getProtectionDomain()। GetCodeSource()। GetLocation()। ToExternalForm() – Andez

+0

@Andez: यदि वह कोड (संभवतः एक विश्वसनीय ऐप में चल रहा है।) स्थानीय फाइल सिस्टम में क्लास फाइलों का स्थान प्रदान करता है, वहां कुछ भी लिखें नहीं, और ऐप के रन-टाइम क्लास-पथ पर पहले से मौजूद कुछ भी नहीं ढूंढने की उम्मीद है। क्यों ** बिल्कुल ** क्या आप यह जानकारी चाहते हैं? यह सुविधा क्या है कि उस स्थान को जानना एप्लिकेशन को लाता है? –

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