2011-06-25 7 views
6

मान लें कि मेरे पास सरल एप्लेट नीचे है। मुझे आश्चर्य है कि जार प्राप्त करने का http अनुरोध ब्राउज़र द्वारा या जेवीएम द्वारा किया गया है। यदि यह जेवीएम द्वारा किया गया है, तो ब्राउजर की कुकीज़ और सत्र सर्वर पर भेजे जाते हैं?क्या ऐप्पल जार ब्राउज़र द्वारा या जेवीएम द्वारा डाउनलोड किया गया है?

<APPLET 
    CODE="FieldTestF.class" 
    WIDTH="100%" HEIGHT="90" 
    ARCHIVE = "FieldTestF.jar" 
    > 
This example uses an applet. 
</APPLET> 
+0

सफारी के तहत कम से कम, एप्लेट एक 'onload' घटना ट्रिगर नहीं है, इसलिए मैं कहना है कि HTTP अनुरोध JVM द्वारा किया जाता है परीक्षा की जाएगी। – zneak

उत्तर

5

मुझे लगता है कि मैं इसे ऊपर देखा जा सकता था, लेकिन यह ब्राउज़र और सर्वर का उत्तर नहीं मिलता के बीच संबंध सूंघ करने के लिए बहुत अधिक मज़ा लग रहा था।

यह पता चला है कि अनुरोध JVM द्वारा किया जाता है। यह देखने योग्य है क्योंकि:

  • उपयोगकर्ता एजेंट Mozilla/4.0 ([OS here]) Java/[Java version here] है जो आपके ब्राउज़र को भेजता है;
  • एप्लेट फ़ाइल अनुरोध उसी पोर्ट से उत्पन्न नहीं होता है जो ब्राउज़र अनुरोध आते हैं;
  • ब्राउज़र अनुरोध लॉग में अनुरोधों को स्वीकार नहीं करता है & डेवलपर टूल।

हालांकि, ब्राउज़र HTTP अनुरोध को जारी करते समय JVM के साथ कुकीज़ पास करता प्रतीत होता है, जिसका अर्थ है कि आपका सत्र डेटा उपलब्ध होना चाहिए।

6

एप्लेट जेएआर जेवीएम द्वारा डाउनलोड किया गया है। सभी एप्लेट एक यूआरएल क्लासलोडर (या एक सबक्लास - sun.applet.AppletClassLoader सूर्य जेवीएम में) के उदाहरण से जुड़े होते हैं जो एक एप्लेट द्वारा आवश्यक सभी वर्गों और संसाधनों को लोड करने के लिए ज़िम्मेदार है।

स्पष्ट रूप से, क्लास फाइलों और संसाधनों को लोड करने के लिए आवश्यक अधिकांश बुनियादी ढांचे जावा रनटाइम में उपलब्ध हैं, और इसका पुन: उपयोग करने से जावा प्लग-इन को अधिकांश भाग के लिए ब्राउज़र आंतरिकों तक पहुंचने की चिंता करने की अनुमति नहीं मिलती है।

मैं ओपनजेडीके कोडबेस के मुख्य हिस्सों को पुन: पेश करूंगा, जो इस गतिविधि को निष्पादित करता है। आप sun.applet.AppletPanel की runLoader() विधि में रोचक सामग्री मिल जाएगा:

/** 
* Load the applet into memory. 
* Runs in a seperate (and interruptible) thread from the rest of the 
* applet event processing so that it can be gracefully interrupted from 
* things like HotJava. 
*/ 
private void runLoader() { 
    if (status != APPLET_DISPOSE) { 
     showAppletStatus("notdisposed"); 
     return; 
    } 

    dispatchAppletEvent(APPLET_LOADING, null); 

    // REMIND -- might be cool to visually indicate loading here -- 
    // maybe do animation? 
    status = APPLET_LOAD; 

    // Create a class loader 
    loader = getClassLoader(getCodeBase(), getClassLoaderCacheKey()); 

    // Load the archives if present. 
    // REMIND - this probably should be done in a separate thread, 
    // or at least the additional archives (epll). 

    String code = getCode(); 

    // setup applet AppContext 
    // this must be called before loadJarFiles 
    setupAppletAppContext(); 

    try { 
     loadJarFiles(loader); // <-- this is what loads the JAR files 
     applet = createApplet(loader); 
     ... 

इसके अलावा, संसाधनों को लाने के लिए जावा सुरक्षा मॉडल के लिए मायने रखती है को मुश्किल होगा ब्राउज़र रही। यह इस तथ्य के कारण है कि एप्लेट्स अपने AccessControlContext का उपयोग करते हैं जो उनके लिए सेटअप किया गया है। इस संदर्भ में अनुमतियों का डिफ़ॉल्ट सेट होता है जो एप्लेट प्रारंभ होने पर इसमें जोड़े जाते हैं; कोड में कोडबेस को होस्ट करने वाले सर्वर से कनेक्ट करने के लिए SocketPermission शामिल है, या FilePermission कोडबेस युक्त फाइल सिस्टम को पढ़ने की अनुमति देता है। यदि ब्राउजर द्वारा संसाधन लोडिंग किया जाना था, तो प्लग-इन को कैसे कार्यान्वित किया जाता है, इस पर निर्भर करता है कि चेक को आसानी से नहीं किया जा सकता है जिससे सुरक्षा मॉडल के संभावित ब्रेक-डाउन हो जाते हैं।

आप अन्य उत्तर में बताए गए अनुसार, नेटवर्क यातायात को देखकर JVM के संसाधन लोडिंग व्यवहार की पुष्टि कर सकते हैं। मैं फिडलर से पुष्टिकरण के रूप में स्क्रीनशॉट पोस्ट करूंगा। प्रक्रिया कॉलम इंगित करता है कि कौन सी ओएस प्रक्रिया अनुरोध भेजने के लिए ज़िम्मेदार है (इस मामले में यह जावा एप्लिकेशन लॉन्चर java.exe) होता है। छवि की स्पष्ट खराब गुणवत्ता के लिए माफी - आपको छवि का आकार बदलने या इसे एक नई विंडो में खोलने की आवश्यकता होगी।

Fiddler capture of Applet download

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

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