?_4E™ýô²Ÿíäl!q؆<XConverted to WinHelp by HtmlToHlp, written by Franck Allimant (f.allimant@confluent.fr)ZmainJDK 1.4.0 WinHelp documentation by F. Allimantÿÿÿÿÿÿÿÿ ìÿÿÿÁÁÁ  /ÿÿÿÿ;)z4ÿÿddÿÿÿÿ|CONTEXT‡¬||CTXOMAP‘y|FONTKŒy|KWBTREE)ôz|KWDATAsŸz|KWMAPÄóz|SYSTEM|TOPIC,|TTLBTREEXô{|bm0¶d~|bm1z~|bm10Ÿ|bm11}˜|bm12Š|bm13ÿ®|bm14ú€|bm15€[€|bm16„€|bm17œ€|bm18Ž€|bm19ØÏ€|bm2ª~|bm20wì€|bm21`õ€|bm22%.|bm23R2|bm24Ÿ:|bm25®B|bm26ûJ|bm27;…|bm28ª…|bm29*š…|bm3t›~|bm30¶…|bm31rä…|bm32oø…|bm33 †|bm34†/†|bm35oM†|bm36µC‡|bm37b‡|bm38±u‡|bm39~’‡|bm4 £~|bm40#—‡|bm41eýˆ|bm42ïۉ|bm436Š|bm44EUŠ|bm45ŒkŠ|bm46‡zŠ|bm47™§Š|bm48€7‹|bm49˜a‹|bm5 ®~|bm50-‹Ž|bm51®«Ž|bm52œçŽ|bm532͏|bm54l“|bm55³(“|bm56®7“|bm57ҍ“|bm58Q¥“|bm59£Œ“|bm6fÃ~|bm60Œê“|bm61Д|bm62ÚJ•|bm63G^•|bm64Æk•|bm65Sš•|bm66£©•|bm67ª•|bm68Ù¯•|bm69ž•|bm7Hà~|bm70õŸ•|bm71ϕ|bm72ŽÕ•|bm73Iê•|bm74jÿ•|bm75Ζ|bm76 %–|bm77C–|bm78øj–|bm79S€–|bm8è*|bm80œ„–|bm81‹–|bm82šÍ–|bm83ª"—|bm84PH—|bm85x—|bm86œ®—|bm87á ˜|bm88(R˜|bm89úv˜|bm9CS|bm90«˜‡y‡yÿÿÿÿ sBÿÿÿÿ1Öÿÿÿÿ'ۀ Common DOM API: Uses of Interface org.w3c.dom.html.HTMLHeadElement\6 Û& €l€€€‚ÿUses of Interface org.w3c.dom.html.HTMLHeadElementÜy·c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€絕—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAې˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€琖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&·¶# €€€‚ÿ*à' €€ ”€ ‚ÿ&¶# €€€‚ÿe9àk, (€r€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLHeadElementZ2Å( €d€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLHeadElement*kï' €€ ”€ ‚ÿ&Å# €€€‚ÿÜyïñc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€絕—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAʘ#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€琖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ñð# €€€‚ÿ*Ê' €€ ”€ ‚ÿfûð€ k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1± 1Uÿÿÿÿÿÿÿÿÿÿÿÿ± Õ $€ Õ " €€€ ÿvE± K 1ÜDK ª aCCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLHeadingElement_9Õ ª & €r€€€‚ÿUses of Interface org.w3c.dom.html.HTMLHeadingElementÜyK † c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€綕—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAª _ ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€燖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&† … # €€€‚ÿ*_ ¯ ' €€ ”€ ‚ÿ&… Õ # €€€‚ÿh<¯ =, (€x€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLHeadingElement]5Õ š( €j€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLHeadingElement*=Ä' €€ ”€ ‚ÿ&šê# €€€‚ÿÜyÄÒ@c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€綕—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚êÒ@Õ ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAê«A˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€燖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&Ò@ÑA# €€€‚ÿ*«AûA' €€ ”€ ‚ÿfûÑAaCk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ûA’C1Uÿÿÿÿÿÿÿÿÿÿÿÿ’C¶C$aC¶C" €€€ ÿq@’C'D1Ò'e„'DD"MCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLHRElementZ4¶CD& €h€€€‚ÿUses of Interface org.w3c.dom.html.HTMLHRElementÜy'D]Fc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€緕—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAD6G˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€爖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&]F\G# €€€‚ÿ*6G†G' €€ ”€ ‚ÿ&\G¬G# €€€‚ÿc7†GH, (€n€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLHRElementX0¬GgH( €`€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLHRElement*H‘H' €€ ”€ ‚ÿ&gH·H# €€€‚ÿÜy‘H“Jc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€緕—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA·HlK˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€爖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&“J’K# €€€‚ÿ*lKŒK' €€ ”€ ‚ÿfû’K"Mk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ŒKSM1UÿÿÿÿÿÿÿÿÿÿÿÿSMwM$"MwM" €€€ ÿsBSMêM1ÖDxêMFN÷†Common DOM API: Uses of Interface org.w3c.dom.html.HTMLHtmlElement\6wMFN& €l€€€‚ÿUses of Interface org.w3c.dom.html.HTMLHtmlElementÜyêM.€c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€羕—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated IndexFN.€wM Help Common DOM APIÙAFN˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€牖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&.€-# €€€‚ÿ*W' €€ ”€ ‚ÿ&-}# €€€‚ÿe9Wâ, (€r€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLHtmlElementZ2}<‚( €d€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLHtmlElement*âf‚' €€ ”€ ‚ÿ&<‚Œ‚# €€€‚ÿÜyf‚h„c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€羕—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAŒ‚A…˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€牖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&h„g…# €€€‚ÿ*A…‘…' €€ ”€ ‚ÿfûg…÷†k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1‘…(‡1Uÿÿÿÿÿÿÿÿÿÿÿÿ(‡L‡$÷†L‡" €€€ ÿuD(‡Á‡1Úe„€Á‡ˆÔÀCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLIFrameElement^8L‡ˆ& €p€€€‚ÿUses of Interface org.w3c.dom.html.HTMLIFrameElementÜyÁ‡û‰c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç䕗Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAˆÔŠ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€犖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&û‰úŠ# €€€‚ÿ*Ԋ$‹' €€ ”€ ‚ÿ&úŠJ‹# €€€‚ÿg;$‹±‹, (€v€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLIFrameElement\4J‹ Œ( €h€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLIFrameElement*±‹7Œ' €€ ”€ ‚ÿ& Œ]Œ# €€€‚ÿÜy7Œ9Žc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç䕗Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA]Œ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€犖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&9Ž8# €€€‚ÿ*b' €€ ”€ ‚ÿfû8ÔÀk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark obÔÀL‡r registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1bÁ1Uÿÿÿÿÿÿÿÿ ÿÿÿÿÁ)Á$ÔÀ)Á" €€€ ÿtCÁÁ1Øx,ƒ ÁúÁ¡ÊCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLImageElement]7)ÁúÁ& €n€€€‚ÿUses of Interface org.w3c.dom.html.HTMLImageElementÜyÁÖÃc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çە—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAúÁ¯Ä˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€狖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ÖÃÕÄ# €€€‚ÿ*¯ÄÿÄ' €€ ”€ ‚ÿ&ÕÄ%Å# €€€‚ÿf:ÿċÅ, (€t€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLImageElement[3%ÅæÅ( €f€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLImageElement*‹ÅÆ' €€ ”€ ‚ÿ&æÅ6Æ# €€€‚ÿÜyÆÈc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çە—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA6ÆëȘ#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€狖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ÈÉ# €€€‚ÿ*ëÈ;É' €€ ”€ ‚ÿfûÉ¡Êk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1;ÉÒÊ1Uÿÿÿÿÿÿÿÿ ÿÿÿÿÒÊöÊ$¡ÊöÊ" €€€ ÿtCÒÊjË1逜 jËÇËzCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLInputElement]7öÊÇË& €n€€€‚ÿUses of Interface org.w3c.dom.html.HTMLInputElementÜyjË£Íc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çܕ—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAÇË|Θ#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€猖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&£Í¢Î# €€€‚ÿ*|ÎÌÎ' €€ ”€ ‚ÿ&¢ÎòÎ# €€€‚ÿf:ÌÎXÏ, (€t€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLInputElement[3òγÏ( €f€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLInputElement*XÏÝÏ' €€ ”€ ‚ÿ&³Ï# €€€‚ÿÝÏöÊÜyÝÏëc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çܕ—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAĘ#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€猖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ëê# €€€‚ÿ*Ä' €€ ”€ ‚ÿfûêzk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1«1Uÿÿÿÿÿÿÿÿ ÿÿÿÿ«Ï$zÏ" €€€ ÿvE«E1Ü,ƒíE€OCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLIsIndexElement_9Ï€& €r€€€‚ÿUses of Interface org.w3c.dom.html.HTMLIsIndexElementÜyE€c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çݕ—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA€Y˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€獖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&€# €€€‚ÿ*Y©' €€ ”€ ‚ÿ&Ï# €€€‚ÿh<©7 , (€x€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLIsIndexElement]5Ï” ( €j€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLIsIndexElement*7 Ÿ ' €€ ”€ ‚ÿ&” ä # €€€‚ÿÜyŸ À c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çݕ—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAä ™ ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€獖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&À ¿ # €€€‚ÿ*™ é ' €€ ”€ ‚ÿfû¿ Ok €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1é €1Uÿÿÿÿÿÿÿÿÿÿÿÿ€€$O€" €€€ ÿtC€1€ œz‚u(HCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLLabelElement]7€u& €n€€€‚ÿUses of Interface org.w3c.dom.html.HTMLLabelElementÜy]Ac#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çޕ—u]A€Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAu6B˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€玖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&]A\B# €€€‚ÿ*6B†B' €€ ”€ ‚ÿ&\B¬B# €€€‚ÿf:†BC, (€t€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLLabelElement[3¬BmC( €f€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLLabelElement*C—C' €€ ”€ ‚ÿ&mCœC# €€€‚ÿÜy—C™Ec#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çޕ—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAœCrF˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€玖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&™E˜F# €€€‚ÿ*rFÂF' €€ ”€ ‚ÿfû˜F(Hk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ÂFYH1UÿÿÿÿÿÿÿÿÿÿÿÿYH}H$(H}H" €€€ ÿuDYHòH1ííòHPI‚Common DOM API: Uses of Interface org.w3c.dom.html.HTMLLegendElement^8}HPI& €p€€€‚ÿUses of Interface org.w3c.dom.html.HTMLLegendElementÜyòH,Kc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çߕ—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAPIL˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€珖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&,K+L# €€€‚ÿ*LUL' €€ ”€ ‚ÿ&+L{L# €€€‚ÿg;ULâL, (€v€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLLegendElement\4{L>M( €h€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLLegendElement*âLhM' €€ ”€ ‚ÿ&>MŽM# €€€‚ÿÜyhMjOc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çߕ—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAŽMO€˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€珖—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿjOO€}Hÿÿ PREV NEXTFRAMES NO FRAMES All Classes&jOu€# €€€‚ÿ*O€Ÿ€' €€ ”€ ‚ÿfûu€‚k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1Ÿ€6‚1Uÿÿÿÿÿÿÿÿÿÿÿÿ6‚Z‚$‚Z‚" €€€ ÿq@6‚˂1Òz‚$˂%ƒƋCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLLIElementZ4Z‚%ƒ& €h€€€‚ÿUses of Interface org.w3c.dom.html.HTMLLIElementÜy˂…c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çà•—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA%ƒڅ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç •—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&…†# €€€‚ÿ*څ*†' €€ ”€ ‚ÿ&†P†# €€€‚ÿc7*†³†, (€n€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLLIElementX0P† ‡( €`€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLLIElement*³†5‡' €€ ”€ ‚ÿ& ‡[‡# €€€‚ÿÜy5‡7‰c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çà•—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA[‡Š˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç •—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&7‰6Š# €€€‚ÿ*Š`Š' €€ ”€ ‚ÿfû6ŠƋk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1`Š÷‹1Uÿÿÿÿÿÿÿÿÿÿÿÿ÷‹Œ$ƋŒ" €€€ ÿsB÷‹ŽŒ1Ù1‚ŽŒêŒ¬ÅCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLLinkElement\6ŒêŒ& €l€€€‚ÿUses of Interface org.w3c.dom.html.HTMLLinkElementÜyŽŒƎc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çᕗY€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAꌟ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&Ǝŏ# €€€‚ÿ*Ÿ À' €€ ”€ ‚ÿŏ ÀŒ&ŏ2À# €€€‚ÿe9 À—À, (€r€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLLinkElementZ22ÀñÀ( €d€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLLinkElement*—ÀÁ' €€ ”€ ‚ÿ&ñÀAÁ# €€€‚ÿÜyÁÃc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çᕗY€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAAÁöØ#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ÃÄ# €€€‚ÿ*öÃFÄ' €€ ”€ ‚ÿfûĬÅk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1FÄÝÅ1UÿÿÿÿÿÿÿÿÿÿÿÿÝÅÆ$¬ÅÆ" €€€ ÿrAÝÅsÆ1Ô$U…sÆÎÆqÏCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLMapElement[5ÆÎÆ& €j€€€‚ÿUses of Interface org.w3c.dom.html.HTMLMapElementÜysƪÈc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç╗Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAÎÆƒÉ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ªÈ©É# €€€‚ÿ*ƒÉÓÉ' €€ ”€ ‚ÿ&©ÉùÉ# €€€‚ÿd8ÓÉ]Ê, (€p€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLMapElementY1ùɶÊ( €b€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLMapElement*]ÊàÊ' €€ ”€ ‚ÿ&¶ÊË# €€€‚ÿÜyàÊâÌc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç╗Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA˻͘#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&âÌáÍ# €€€‚ÿ*»Í Î' €€ ”€ ‚ÿfûáÍqÏk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1 ΢Ï1Uÿÿÿÿÿÿÿÿÿÿÿÿ¢ÏÆÏ$qÏÆÏ" €€€ ÿsB¢ÏE1Ö1‚'E¡F Common DOÆÏEÆÏM API: Uses of Interface org.w3c.dom.html.HTMLMenuElement\6ÆÏ¡& €l€€€‚ÿUses of Interface org.w3c.dom.html.HTMLMenuElementÜyE}c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç㕗Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA¡V˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&}|# €€€‚ÿ*VŠ' €€ ”€ ‚ÿ&|Ì# €€€‚ÿe9Š1, (€r€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLMenuElementZ2Ì‹( €d€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLMenuElement*1µ' €€ ”€ ‚ÿ&‹Û# €€€‚ÿÜyµ·c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç㕗Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAې˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&·¶# €€€‚ÿ*à' €€ ”€ ‚ÿfû¶F k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1àw 1Uÿÿÿÿÿÿÿÿÿÿÿÿw › $F › " €€€ ÿsBw  1 U…D j CCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLMetaElement\6› j & €l€€€‚ÿUses of Interface org.w3c.dom.html.HTMLMetaElementÜy F c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAj  ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&F E # €€€‚ÿ* o ' €€ ”€ ‚ÿ&E • # €€€‚ÿe9o ú , (€r€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLMetaElementZ2• T( €d€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLMetaElement*ú ~' €€ ”€ ‚ÿ&T€# €€€‚ÿÜy~Œ@c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€Œ@› €‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA€eA˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&Œ@‹A# €€€‚ÿ*eAµA' €€ ”€ ‚ÿfû‹ACk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1µALC1UÿÿÿÿÿÿÿÿÿÿÿÿLCpC$CpC" €€€ ÿrALCâC1Ô'h„âC=DàLCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLModElement[5pC=D& €j€€€‚ÿUses of Interface org.w3c.dom.html.HTMLModElementÜyâCFc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA=DòF˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&FG# €€€‚ÿ*òFBG' €€ ”€ ‚ÿ&GhG# €€€‚ÿd8BGÌG, (€p€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLModElementY1hG%H( €b€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLModElement*ÌGOH' €€ ”€ ‚ÿ&%HuH# €€€‚ÿÜyOHQJc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAuH*K˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&QJPK# €€€‚ÿ**KzK' €€ ”€ ‚ÿfûPKàLk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1zKM1UÿÿÿÿÿÿÿÿÿÿÿÿM5M$àL5M" €€€ ÿuDMªM1 D| ªMNنCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLObjectElement^85MN& €p€€€‚ÿUses of Interface org.w3c.dom.html.HTMLObjectElementÜyªM €c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIN €5MÙAN倘#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç •—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes& € # €€€‚ÿ*å€5' €€ ”€ ‚ÿ& [# €€€‚ÿg;5, (€v€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLObjectElement\4[‚( €h€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLObjectElement*H‚' €€ ”€ ‚ÿ&‚n‚# €€€‚ÿÜyH‚J„c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAn‚#…˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç •—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&J„I…# €€€‚ÿ*#…s…' €€ ”€ ‚ÿfûI…نk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1s… ‡1Uÿÿÿÿÿÿÿÿ!ÿÿÿÿ ‡.‡$ن.‡" €€€ ÿtC ‡¢‡12 h„€"¢‡ÿ‡²ÀCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLOListElement]7.‡ÿ‡& €n€€€‚ÿUses of Interface org.w3c.dom.html.HTMLOListElementÜy¢‡ۉc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAÿ‡ފ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç •—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ۉڊ# €€€‚ÿ*ފ‹' €€ ”€ ‚ÿ&ڊ*‹# €€€‚ÿf:‹‹, (€t€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLOListElement[3*‹ë‹( €f€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLOListElement*‹Œ' €€ ”€ ‚ÿ&ë‹;Œ# €€€‚ÿÜyŒŽc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA;ŒðŽ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç •—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&Ž# €€€‚ÿ*ðŽ@' €€ ”€ ‚ÿfû²Àk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Micr@²À.‡osystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1@ãÀ1Uÿÿÿÿÿÿÿÿ#ÿÿÿÿãÀÁ$²ÀÁ" €€€ ÿwFãÀ~Á1Þ|5ƒ$~ÁÞÁ‹ÊCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLOptGroupElement`:ÁÞÁ& €t€€€‚ÿUses of Interface org.w3c.dom.html.HTMLOptGroupElementÜy~ÁºÃc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç –—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAÞÁ“Ę#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç •—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ºÃ¹Ä# €€€‚ÿ*“ÄãÄ' €€ ”€ ‚ÿ&¹Ä Å# €€€‚ÿi=ãÄrÅ, (€z€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLOptGroupElement^6 ÅÐÅ( €l€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLOptGroupElement*rÅúÅ' €€ ”€ ‚ÿ&ÐÅ Æ# €€€‚ÿÜyúÅüÇc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç –—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA ÆÕȘ#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç •—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&üÇûÈ# €€€‚ÿ*ÕÈ%É' €€ ”€ ‚ÿfûûÈ‹Êk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1%ÉŒÊ1Uÿÿÿÿÿÿÿÿ%ÿÿÿÿŒÊàÊ$‹ÊàÊ" €€€ ÿuDŒÊUË1â €œ&U˳ËwCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLOptionElement^8àʳË& €p€€€‚ÿUses of Interface org.w3c.dom.html.HTMLOptionElementÜyUˏÍc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç –—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA³ËhΘ#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç •—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ÍŽÎ# €€€‚ÿ*hΞÎ' €€ ”€ ‚ÿ&ŽÎÞÎ# €€€‚ÿg;žÎEÏ, (€v€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLOptionElement\4ÞΡÏ( €h€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLOptionElement*EÏËÏ' €€ ”€ ‚ÿ&¡Ï # €€€‚ÿËÏ àÊÜyËÏèc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç –—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA Á˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç •—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&èç# €€€‚ÿ*Á' €€ ”€ ‚ÿfûçwk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1š1Uÿÿÿÿÿÿÿÿ'ÿÿÿÿšÌ$wÌ" €€€ ÿxGšD1à5ƒó(D¥TCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLParagraphElementa;Ì¥& €v€€€‚ÿUses of Interface org.w3c.dom.html.HTMLParagraphElementÜyDc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç –—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA¥Z˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç8•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&€# €€€‚ÿ*Zª' €€ ”€ ‚ÿ&€Ð# €€€‚ÿj>ª: , (€|€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLParagraphElement_7Й ( €n€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLParagraphElement*: à ' €€ ”€ ‚ÿ&™ é # €€€‚ÿÜyà Å c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç –—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAé ž ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç8•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&Å Ä # €€€‚ÿ*ž î ' €€ ”€ ‚ÿfûÄ Tk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1î …1Uÿÿÿÿÿÿÿÿ)ÿÿÿÿ…©$T©" €€€ ÿtC…1Z œz‚*z-HCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLParamElement]7©z& €n€€€‚ÿUses of Interface org.w3c.dom.html.HTMLParamElementÜybAc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€zbA©ç –—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAz;B˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç/•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&bAaB# €€€‚ÿ*;B‹B' €€ ”€ ‚ÿ&aB±B# €€€‚ÿf:‹BC, (€t€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLParamElement[3±BrC( €f€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLParamElement*CœC' €€ ”€ ‚ÿ&rCÂC# €€€‚ÿÜyœCžEc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç –—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAÂCwF˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç/•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&žEF# €€€‚ÿ*wFÇF' €€ ”€ ‚ÿfûF-Hk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ÇF^H1Uÿÿÿÿÿÿÿÿ+ÿÿÿÿ^H‚H$-H‚H" €€€ ÿrA^HôH1Ôó,ôHOIþCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLPreElement[5‚HOI& €j€€€‚ÿUses of Interface org.w3c.dom.html.HTMLPreElementÜyôH+Kc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç –—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAOIL˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç0•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&+K*L# €€€‚ÿ*LTL' €€ ”€ ‚ÿ&*LzL# €€€‚ÿd8TLÞL, (€p€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLPreElementY1zL7M( €b€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLPreElement*ÞLaM' €€ ”€ ‚ÿ&7M‡M# €€€‚ÿÜyaMcOc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç –—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA‡MH€˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç0•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PRcOH€‚HEV NEXTFRAMES NO FRAMES All Classes&cOn€# €€€‚ÿ*H€˜€' €€ ”€ ‚ÿfûn€þk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1˜€/‚1Uÿÿÿÿÿÿÿÿ-ÿÿÿÿ/‚S‚$þS‚" €€€ ÿtC/‚ǂ1Øz‚-.ǂ$ƒˋCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLQuoteElement]7S‚$ƒ& €n€€€‚ÿUses of Interface org.w3c.dom.html.HTMLQuoteElementÜyǂ…c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA$ƒم˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç1•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&…ÿ…# €€€‚ÿ*م)†' €€ ”€ ‚ÿ&ÿ…O†# €€€‚ÿf:)†µ†, (€t€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLQuoteElement[3O†‡( €f€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLQuoteElement*µ†:‡' €€ ”€ ‚ÿ&‡`‡# €€€‚ÿÜy:‡<‰c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA`‡Š˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç1•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&<‰;Š# €€€‚ÿ*ŠeŠ' €€ ”€ ‚ÿfû;Šˋk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1eŠü‹1Uÿÿÿÿÿÿÿÿ/ÿÿÿÿü‹ Œ$ˋ Œ" €€€ ÿuDü‹•Œ1å5‚0•ŒóŒ°ÅCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLScriptElement^8 ŒóŒ& €p€€€‚ÿUses of Interface org.w3c.dom.html.HTMLScriptElementÜy•Œώc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç:–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA󌚏˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç2•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ώΏ# €€€‚ÿ*š À' €€ ”€ ‚ÿΏ À Œ&Ώ2À# €€€‚ÿg; À™À, (€v€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLScriptElement\42ÀõÀ( €h€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLScriptElement*™ÀÁ' €€ ”€ ‚ÿ&õÀEÁ# €€€‚ÿÜyÁ!Ãc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç:–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAEÁúØ#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç2•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&!à Ä# €€€‚ÿ*úÃJÄ' €€ ”€ ‚ÿfû İÅk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1JÄáÅ1Uÿÿÿÿÿÿÿÿ1ÿÿÿÿáÅÆ$°ÅÆ" €€€ ÿuDáÅzÆ1Ú-2zÆØÆÏCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLSelectElement^8ÆØÆ& €p€€€‚ÿUses of Interface org.w3c.dom.html.HTMLSelectElementÜyzÆŽÈc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç1–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAØÆÉ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç3•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ŽÈ³É# €€€‚ÿ*ÉÝÉ' €€ ”€ ‚ÿ&³ÉÊ# €€€‚ÿg;ÝÉjÊ, (€v€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLSelectElement\4ÊÆÊ( €h€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLSelectElement*jÊðÊ' €€ ”€ ‚ÿ&ÆÊË# €€€‚ÿÜyðÊòÌc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç1–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAËË͘#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç3•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&òÌñÍ# €€€‚ÿ*ËÍÎ' €€ ”€ ‚ÿfûñ́Ïk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1βÏ1Uÿÿÿÿÿÿÿÿ3ÿÿÿÿ²Ï $Ï " €€€ ÿ²Ï ÏtC²Ï€1Ø5‚*4€Ý„ Common DOM API: Uses of Interface org.w3c.dom.html.HTMLStyleElement]7 Ý& €n€€€‚ÿUses of Interface org.w3c.dom.html.HTMLStyleElementÜy€¹c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç2–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAÝ’˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç4•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&¹ž# €€€‚ÿ*’â' €€ ”€ ‚ÿ&ž# €€€‚ÿf:ân, (€t€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLStyleElement[3É( €f€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLStyleElement*nó' €€ ”€ ‚ÿ&É# €€€‚ÿÜyóõc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç2–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAΘ#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç4•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&õô# €€€‚ÿ*Î' €€ ”€ ‚ÿfûô„ k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1µ 1Uÿÿÿÿÿÿÿÿ5ÿÿÿÿµ Ù $„ Ù " €€€ ÿ{Jµ T 1éD6T ž yCCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLTableCaptionElementd>Ù ž & €|€€€‚ÿUses of Interface org.w3c.dom.html.HTMLTableCaptionElementÜyT ” c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç3–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAž m ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç5•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&” “ # €€€‚ÿ*m œ ' €€ ”€ ‚ÿ&“ ã # €€€‚ÿmAœ P, (€‚€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLTableCaptionElementb:ã ²( €t€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLTableCaptionElement*PÜ' €€ ”€ ‚ÿ&²# €€€‚ÿÜyÜê@c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç3–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—ê@Ù YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAÃA˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç5•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ê@éA# €€€‚ÿ*ÃAB' €€ ”€ ‚ÿfûéAyCk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1BªC1Uÿÿÿÿÿÿÿÿ7ÿÿÿÿªCÎC$yCÎC" €€€ ÿxGªCFD1à*z„8FD§DVMCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLTableCellElementa;ÎC§D& €v€€€‚ÿUses of Interface org.w3c.dom.html.HTMLTableCellElementÜyFDƒFc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç4–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA§D\G˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç6•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ƒF‚G# €€€‚ÿ*\G¬G' €€ ”€ ‚ÿ&‚GÒG# €€€‚ÿj>¬GàÁ@ÂíÊCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLTableRowElement`:iÁ@Â& €t€€€‚ÿUses of Interface org.w3c.dom.html.HTMLTableRowElementÜyàÁÄc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç7–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA@ÂõĘ#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çZ•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ÄÅ# €€€‚ÿ*õÄEÅ' €€ ”€ ‚ÿ&ÅkÅ# €€€‚ÿi=EÅÔÅ, (€z€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLTableRowElement^6kÅ2Æ( €l€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLTableRowElement*ÔÅ\Æ' €€ ”€ ‚ÿ&2Æ‚Æ# €€€‚ÿÜy\Æ^Èc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç7–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA‚Æ7ɘ#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çZ•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&^È]É# €€€‚ÿ*7ɇÉ' €€ ”€ ‚ÿfû]ÉíÊk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1‡ÉË1Uÿÿÿÿÿÿÿÿ?ÿÿÿÿËBË$íÊBË" €€€ ÿ{JËœË1é€ Ã @œË!ÌâCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLTableSectionElementd>BË!Ì& €|€€€‚ÿUses of Interface org.w3c.dom.html.HTMLTableSectionElementÜyœËýÍc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç8–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA!ÌÖΘ#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç[•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ýÍüÎ# €€€‚ÿ*ÖÎ&Ï' €€ ”€ ‚ÿ&üÎLÏ# €€€‚ÿmA&ϹÏ, (€‚€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLTableSectionElementb:LÏ'( €t€€‚‚€‚ÿNo usage of org.w3c.dom.html.H¹Ï'BËTMLTableSectionElement*¹ÏQ' €€ ”€ ‚ÿ&'w# €€€‚ÿÜyQSc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç8–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAw,˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç[•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&SR# €€€‚ÿ*,|' €€ ”€ ‚ÿfûRâk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1|1UÿÿÿÿÿÿÿÿAÿÿÿÿ7$â7" €€€ ÿwF®1Þ5ƒ ö B®»Common DOM API: Uses of Interface org.w3c.dom.html.HTMLTextAreaElement`:7& €t€€€‚ÿUses of Interface org.w3c.dom.html.HTMLTextAreaElementÜy®êc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç9–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAØ#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç\•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&êé# €€€‚ÿ*à ' €€ ”€ ‚ÿ&é9 # €€€‚ÿi= ¢ , (€z€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLTextAreaElement^69  ( €l€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLTextAreaElement*¢ * ' €€ ”€ ‚ÿ& P # €€€‚ÿÜy* , c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç9–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAP  ˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç\•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&, + # €€€‚ÿ* U ' €€ ”€ ‚ÿfû+ »k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1U ì1UÿÿÿÿÿÿÿÿCÿÿÿÿì$»" €€€ ÿtCì„1ì à z‚ D„á”HCommon DOM API: Uses of Interface org.w3c.dom.html.HTMLTitleElement]7á& €n€€€‚ÿUses of Interface org.w3c.dom.html.HTMLTitleElementÜy„ÉAc#–‚ò eaáÉAPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çe–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAá¢B˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç]•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ÉAÈB# €€€‚ÿ*¢BòB' €€ ”€ ‚ÿ&ÈBC# €€€‚ÿf:òB~C, (€t€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLTitleElement[3CÙC( €f€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLTitleElement*~CD' €€ ”€ ‚ÿ&ÙC)D# €€€‚ÿÜyDFc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€çe–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA)DÞF˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç]•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&FG# €€€‚ÿ*ÞF.G' €€ ”€ ‚ÿfûG”Hk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1.GÅH1UÿÿÿÿÿÿÿÿEÿÿÿÿÅHéH$”HéH" €€€ ÿtCÅH]I1 ö  F]IºIm‚Common DOM API: Uses of Interface org.w3c.dom.html.HTMLUListElement]7éHºI& €n€€€‚ÿUses of Interface org.w3c.dom.html.HTMLUListElementÜy]I–Kc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç\–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAºIoL˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç^•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&–K•L# €€€‚ÿ*oL¿L' €€ ”€ ‚ÿ&•LåL# €€€‚ÿf:¿LKM, (€t€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.html.HTMLUListElement[3åLŠM( €f€€‚‚€‚ÿNo usage of org.w3c.dom.html.HTMLUListElement*KMÐM' €€ ”€ ‚ÿ&ŠMöM# €€€‚ÿÜyÐMÒOc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ(€<€ç\–—Y€‰€‚ÿ€T€€€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAöM·€˜#‚€€ÿÒO·€éH€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç^•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ÒO݀# €€€‚ÿ*·€' €€ ”€ ‚ÿfû݀m‚k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ž‚1UÿÿÿÿÿÿÿÿGÿÿÿÿž‚‚$m‚‚" €€€ ÿS"ž‚ƒ1Lz‚ € Hƒaƒ&HTMLAnchorElement (Common DOM API)L&‚aƒ& €L€€€‚ÿHTMLAnchorElement (Common DOM API)îyƒO…u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIñPaƒ@†¡# Â€€ÿ.€€€ç`•—Y€‰€‚ÿ €@€ï¿‡—YJdk14doc.4.hlp€‰€ç_•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VO…ò†\#ˆ€¬ÂÂ.€€€çøgÃå€ ‰€‚ÿ.€`€€瓮¿õ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&@†‡# €€€‚ÿ*ò†B‡' €€ ”€ ‚ÿˆN‡ʇ: D€œ€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLAnchorElementAll Superinterfaces: )B‡KˆX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&ʇqˆ# €€€‚ÿ*Kˆ›ˆ' €€ ”€ ‚ÿVÊqˆñ‰Œ 怕€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLAnchorElementextends HTMLElementThe anchor element. See the A element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*›ˆŠ' €€ ”€ ‚ÿ,ñ‰GŠ' € €€‚€‚ÿTŠ›ŠB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'GŠŠ# €€€‚ÿ ƒ8›ŠE‹K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇŠ Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'E‹3# €€€‚ÿ U ˆB#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÄL3LŽx#À€˜÷€€ÿ"€€€€‚ÿ€€ÿ6€€ça¹ƒA€‰€€‚ÿÿÿ voidblur() Removes keyboard focus from this element.ÁIˆ x#À€’÷€€ÿ"€€€€‚ÿ€€ÿ6€€çZJäú€‰€€‚ÿÿÿ voidfocus() Gives keyboard focus to this element.qLŽÀ“#ö€â÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç²Àހ‰€€‚ÿÿÿ StringgetAccessKey() A single character access key to give access to th À‚e form control.ï\  Á“#ö€ž÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çœêR€‰€€‚ÿÿÿ StringgetCharset() The character encoding of the linked resource.qÀ“#ö€â÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çjûU €‰€€‚ÿÿÿ StringgetCoords() Comma-separated list of lengths, defining an active region geometry.ÝJ Áí“#ö€”÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €竅™,€‰€€‚ÿÿÿ StringgetHref() The URI of the linked resource.çTÂÔÓ#ö€š÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç‰Á4±€‰€€‚ÿÿÿ StringgetHreflang() Language code of the linked resource.Ê7ížē#ö€n÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç«c¿]€‰€€‚ÿÿÿ StringgetName() Anchor name.Ï<ÔÃmÅ“#ö€x÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çYºtJ€‰€€‚ÿÿÿ StringgetRel() Forward link type.Ï<žÄ<Æ“#ö€x÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç“uJ€‰€€‚ÿÿÿ StringgetRev() Reverse link type.ÜImÅÇ“#ö€’÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çœ;V€‰€€‚ÿÿÿ StringgetShape() The shape of the active area.ãk<ÆûÇx#À€Ö÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç,yŠ€‰€€‚ÿÿÿ intgetTabIndex() Index that represents the element's position in the tabbing order.àMÇÛÈ“#ö€š÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çᄂ€‰€€‚ÿÿÿ StringgetTarget() Frame to render the resource in.ÔAûǯɓ#ö€‚÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç^:—€‰€€‚ÿÿÿ StringgetType() Advisory content type.Ö@ÛÈ…Ê–#ü€€÷€€ÿ"€€€€‚ÿ€€ÿr€€çB؆e€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAccessKey(String accessKey) Ò<¯ÉWË–#ü€x÷€€ÿ"€€€€‚ÿ€€ÿr€€çж}€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCharset(String charset) Ð:…Ê'Ì–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€絞£€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCoords(String coords) Ì6WËóÌ–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ç)ÇG€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHref(String href) Ô>'ÌÇÍ–#ü€|÷€€ÿ"€€€€‚ÿ€€ÿr€€çŽ“× €‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHreflang(String hreflang) Ì6ó̓Ζ#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ç‡Ó倉€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetName(String name) Ê4ÇÍ]Ï–#ü€h÷€€ÿ"€€€€‚ÿ€€ÿr€€ç\9©8€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetRel(String rel) Ê4“Î3–#ü€h÷€€ÿ"€€€€‚ÿ€€ÿr€€ç-i›€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ void]Ï3‚setRev(String rev) Î8]Ï–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€ç u0®€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetShape(String shape) ¯73°x#À€n÷€€ÿ"€€€€‚ÿ€€ÿ6€€çÞŽ'̀‰€€‚ÿÿÿ voidsetTabIndex(int tabIndex) Ð:€–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€çl›=ð€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetTarget(String target) Ì6°L–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ç x€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetType(String type) '€s# €€€‚ÿ ELK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆs4©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'[# €€€‚ÿ ™<4ô]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY[^ #ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'ô… # €€€‚ÿ „9^  K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ… , ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix) U $ € €€‚‚ÿ T, © B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail9U 9W ~€r€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAccessKeypublic String getAccessKey()žy© ×% €ò€ä€‚‚ÿA single character access key to give access to the form control. See the accesskey attribute definition in HTML 4.0.&9ý# €€€‚ÿ*×'' €€ ”€ ‚ÿªKýÑ_ Ž€–€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAccessKeypublic void setAccessKey(String accessKey)*' @' €€ ”€ ‚ÿÑ @‚’7Ñž@[ †€n€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCharsetpublic String getCharset()‰d @'A% €È€ä€‚‚ÿThe character encoding of the linked resource. See the charset attribute definition in HTML 4.0.&ž@MA# €€€‚ÿ*'AwA' €€ ”€ ‚ÿ€EMAB_ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCharsetpublic void setCharset(String charset)*wAEB' €€ ”€ ‚ÿ5BÕB[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCoordspublic String getCoords()Ó§EBšC, &€O€ä€€€‚‚ÿComma-separated list of lengths, defining an active region geometry. See also shape for the shape of the region. See the coords attribute definition in HTML 4.0.&ÕBÎC# €€€‚ÿ*šCøC' €€ ”€ ‚ÿ¡BÎC™D_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCoordspublic void setCoords(String coords)*øCÃD' €€ ”€ ‚ÿŒ1™DOE[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHrefpublic String getHref()wRÃDÆE% €€€ä€‚‚ÿThe URI of the linked resource. See the href attribute definition in HTML 4.0.&OEìE# €€€‚ÿ*ÆEF' €€ ”€ ‚ÿ›<ìE±F_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHrefpublic void setHref(String href)*FÛF' €€ ”€ ‚ÿ”9±FoG[ †€r€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHreflangpublic String getHreflang()\ÛFðG% €ž€ä€‚‚ÿLanguage code of the linked resource. See the hreflang attribute definition in HTML 4.0.&oGH# €€€‚ÿ*ðG@H' €€ ”€ ‚ÿ§HHçH_ Ž€€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHreflangpublic void setHreflang(String hreflang)*@HI' €€ ”€ ‚ÿŒ1çHI[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetNamepublic String getName()d?IJ% €~€ä€‚‚ÿAnchor name. See the name attribute definition in HTML 4.0.&I'J# €€€‚ÿ*JQJ' €€ ”€ ‚ÿ›<'JìJ_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetNamepublic void setName(String name)*QJK' €€ ”€ ‚ÿŠ/ìJ K[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetRelpublic String getRel()iDK L% €ˆ€ä€‚‚ÿForward link type. See the rel attribute definition in HTML 4.0.& K/L# €€€‚ÿ* LYL' €€ ”€ ‚ÿ˜9/LñL_ Ž€r€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetRelpublic void setRel(String rel)*YLM' €€ ”€ ‚ÿŠ/ñL¥M[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetRevpublic String getRev()iDMN% €ˆ€ä€‚‚ÿReverse link type. See the rev attribute definition in HTML 4.0.&¥M4N# €€€‚ÿ*N^N' €€ ”€ ‚ÿ˜94NöN_ Ž€r€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetRevpublic void setRev(String rev)*^N O' €€ ”€ ‚ÿŽ3öN®O[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetShapepublic String getShape()€y O^€+ &€ò€ä€€€‚‚ÿThe shape of the active area. The coor®O^€‚dinates are given by coords . See the shape attribute definition in HTML 4.0.&®O„€# €€€‚ÿ*^€®€' €€ ”€ ‚ÿž?„€L_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetShapepublic void setShape(String shape)*®€v' €€ ”€ ‚ÿo2Lå= J€d€€‚€‚€€‚‚€€€€‚ÿgetTabIndexpublic int getTabIndex()žyvƒ‚% €ò€ä€‚‚ÿIndex that represents the element's position in the tabbing order. See the tabindex attribute definition in HTML 4.0.&偩‚# €€€‚ÿ*ƒ‚ӂ' €€ ”€ ‚ÿ‚A©‚UƒA R€‚€€‚€‚€€‚‚€€€€‚€‚ÿsetTabIndexpublic void setTabIndex(int tabIndex)*ӂƒ' €€ ”€ ‚ÿ5Uƒ„[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTargetpublic String getTarget()zUƒ‰„% €ª€ä€‚‚ÿFrame to render the resource in. See the target attribute definition in HTML 4.0.&„¯„# €€€‚ÿ*‰„ل' €€ ”€ ‚ÿ¡B¯„z…_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTargetpublic void setTarget(String target)*ل€…' €€ ”€ ‚ÿŒ1z…0†[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTypepublic String getType()nI€…ž†% €’€ä€‚‚ÿAdvisory content type. See the type attribute definition in HTML 4.0.&0†Ć# €€€‚ÿ*ž†î†' €€ ”€ ‚ÿ›<Ɖ‡_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTypepublic void setType(String type)*‡' €€ ”€ ‚ÿb%‰‡ˆ= J€J€€‚€‚€€‚‚€€€€‚ÿblurpublic void blur()R-³‡gˆ% €Z€ä€‚‚ÿRemoves keyboard focus from this element.&ˆˆ# €€€‚ÿ*gˆ·ˆ' €€ ”€ ‚ÿd'ˆ‰= J€N€€‚€‚€€‚‚€€€€‚ÿfocuspublic void focus()N)·ˆi‰% €R€ä€‚‚ÿGives keyboard focus to this element.&‰‰# €€€‚ÿ*i‰¹‰' €€ ”€ ‚ÿ&‰߉# €€€‚ÿîy¹‰͋u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIñP߉ŸŒ¡# Â€€ÿ.€€€ç`•—Y€‰€‚ÿ €@€ï¿‡—YJdk14doc.4.hlp€‰€ç_•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V͋p\#ˆ€¬ÂÂ.€€€çøgÃå€ ‰€‚ÿ.€`€€瓮¿õ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ŸŒ–# €€€‚ÿ*pÀ' €€ ”€ ‚ÿfû–&k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ÀW1UÿÿÿÿÿÿÿÿIÿÿÿÿW{$&{" €€€ ÿS"WΏ1çG ނJΏ&À3ÇHTMLAppletElement (Common DOM API)L&{&À& €L€€€‚ÿHTMLAppletEΏ&À{lement (Common DOM API)îyΏÂu#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïøŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT&Àí#*šÂ€€ÿF€€€ç_•—Y€‰€ça•—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç`•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÂÇÃ\#ˆ€¬ÂÂ.€€€ç»H†ñ€ ‰€‚ÿ.€`€€ç\l)ä€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ÃíÃ# €€€‚ÿ*ÇÃÄ' €€ ”€ ‚ÿˆNíßÄ: D€œ€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLAppletElementAll Superinterfaces: )Ä ÅX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&ŸÄFÅ# €€€‚ÿ* ÅpÅ' €€ ”€ ‚ÿˆüFÅøÆŒ æ€ù€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLAppletElementextends HTMLElementAn embedded Java applet. See the APPLET element definition in HTML 4.0. This element is deprecated in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*pÅ"Ç' €€ ”€ ‚ÿ,øÆNÇ' € €€‚€‚ÿT"Ç¢ÇB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'NÇÉÇ# €€€‚ÿ ƒ8¢ÇLÈK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇÉÇÊÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'LÈ:Ê# €€€‚ÿ UʏÊB#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summary:ʀ˔#ö€÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çX–»}€‰€€‚ÿÿÿ StringgetAlign() Aligns this object (vertically or horizontally) with respect to its surrounding text. zÊ±Ì“#ö€ô÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €簆 =€‰€€‚ÿÿÿ StringgetAlt() Alternate text for user agents not rendering the normal content of this element.ÞK€ËÍ“#ö€–÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç™Ïô €‰€€‚ÿÿÿ StringgetArchive() Comma-separated archive list.Ð=±Ì_Γ#ö€z÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çŸG†V€‰€€‚ÿÿÿ StringgetCode() Applet class file.ßLÍ>Ï“#ö€˜÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çË[š€‰€€‚ÿÿÿ StringgetCodeBase() Optional base URI for applet.Ð=_Γ#ö€z÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç(‘Ô€‰€€‚ÿÿÿ StringgetHeight() Over>Ï{ride height.u>Ï"“#ö€ê÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €痲œ«€‰€€‚ÿÿÿ StringgetHspace() Horizontal space to the left and right of this image, applet, or object.ÕB÷“#ö€„÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çDŸŽ€‰€€‚ÿÿÿ StringgetName() The name of the applet.×D"Γ#ö€ˆ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çÌ×v€‰€€‚ÿÿÿ StringgetObject() Serialized applet file.ýj÷Ë“#ö€Ô÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €灙Œ²€‰€€‚ÿÿÿ StringgetVspace() Vertical space above and below this image, applet, or object.Î;Ι“#ö€v÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çÙpŽÃ€‰€€‚ÿÿÿ StringgetWidth() Override width.Î8Ëg–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€ç{ÜW€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) Ê4™1–#ü€h÷€€ÿ"€€€€‚ÿ€€ÿr€€çó†ü瀉€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlt(String alt) Ò<g–#ü€x÷€€ÿ"€€€€‚ÿ€€ÿr€€ç\7T—€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetArchive(String archive) Ì61Ï–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çi¹Ž³€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCode(String code) Ô>£–#ü€|÷€€ÿ"€€€€‚ÿ€€ÿr€€çv_> €‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCodeBase(String codeBase) Ð:Ïs –#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€çãçÜÀ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHeight(String height) Ð:£C –#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€碑4:€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHspace(String hspace) Ì6s  –#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ço”§Â€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetName(String name) Ð:C ß –#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€ç—^o»€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetObject(String object) Ð: ¯ –#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€ç (_̀‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetVspace(String vspace) Î8ß } –#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€çŒ”Ñ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetWidth(String width) '¯ € # €€€‚ÿ E} 4K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ€ e©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'4Œ# €€€‚ÿ ™<e1@]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited froŒ1@{m interface org.w3c.dom.ElementjYŒ›C#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'1@ÂC# €€€‚ÿ „9›CFDK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆÂCiG]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)FD’G$ € €€‚‚ÿ TiGæGB#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailˆ1’GnHW ~€b€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()Ù³æGGI& €g€ä€‚‚ÿAligns this object (vertically or horizontally) with respect to its surrounding text. See the align attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&nHmI# €€€‚ÿ*GI—I' €€ ”€ ‚ÿž?mI5J_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*—I_J' €€ ”€ ‚ÿŠ/5JéJ[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAltpublic String getAlt()Ò¬_J»K& €Y€ä€‚‚ÿAlternate text for user agents not rendering the normal content of this element. See the alt attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&éJáK# €€€‚ÿ*»K L' €€ ”€ ‚ÿ˜9áK£L_ Ž€r€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAltpublic void setAlt(String alt)* LÍL' €€ ”€ ‚ÿ’7£L_M[ †€n€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetArchivepublic String getArchive()¢}ÍLN% €ú€ä€‚‚ÿComma-separated archive list. See the archive attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&_M'N# €€€‚ÿ*NQN' €€ ”€ ‚ÿ€E'NõN_ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetArchivepublic void setArchive(String archive)*QNO' €€ ”€ ‚ÿŒ1õN«O[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCodepublic String getCode()”oOK€% €Þ€ä€‚‚ÿApplet class file. See the code attribute defin«OK€{ition in HTML 4.0. This attribute is deprecated in HTML 4.0.&«Oq€# €€€‚ÿ*K€›€' €€ ”€ ‚ÿ›<q€6_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCodepublic void setCode(String code)*›€`' €€ ”€ ‚ÿ”96ô[ †€r€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCodeBasepublic String getCodeBase()£~`—‚% €ü€ä€‚‚ÿOptional base URI for applet. See the codebase attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&ôœ‚# €€€‚ÿ*—‚ç‚' €€ ”€ ‚ÿ§Hœ‚Žƒ_ Ž€€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCodeBasepublic void setCodeBase(String codeBase)*炞ƒ' €€ ”€ ‚ÿ5ŽƒH„[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHeightpublic String getHeight()”ožƒ܄% €Þ€ä€‚‚ÿOverride height. See the height attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&H„…# €€€‚ÿ*܄,…' €€ ”€ ‚ÿ¡B…ͅ_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHeightpublic void setHeight(String height)*,…÷…' €€ ”€ ‚ÿ5ͅ‡†[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHspacepublic String getHspace()ͧ÷…T‡& €O€ä€‚‚ÿHorizontal space to the left and right of this image, applet, or object. See the hspace attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&‡†z‡# €€€‚ÿ*T‡€‡' €€ ”€ ‚ÿ¡Bz‡Eˆ_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHspacepublic void setHspace(String hspace)*€‡oˆ' €€ ”€ ‚ÿŒ1Eˆûˆ[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetNamepublic String getName()™toˆ”‰% €è€ä€‚‚ÿThe name of the applet. See the name attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&ûˆº‰# €€€‚ÿ*”‰ä‰' €€ ”€ ‚ÿ›<º‰Š_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetNamepublic void setName(String name)*䉩Š' €€ ”€ ‚ÿ5Š9‹[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetObjectpublic String getObject()›v©Šԋ% €ì€ä€‚‚ÿSerialized applet file. See the object attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&9‹ú‹# €€€‚ÿ*ԋ$Œ' €€ ”€ ‚ÿ¡Bú‹Ō_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetObjectpublic void setObject(String object)*$ŒïŒ' €€ ”€ ‚ÿ5Ō[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetVspacepublic String getVspace()œïŒAŽ& €9€ä€‚‚ÿVertical space above and below this image, applet, or object. See the vspace attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&gŽ# €€€‚ÿ*AŽ‘Ž' €€ ”€ ‚ÿ¡BgŽ2_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetVspacepublic void setVspace(String vspace)*‘Ž\' €€ ”€ ‚ÿŽ32 À[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetWidthpublic String getWidth()\ À{’m\žÀ% €Ú€ä€‚‚ÿOverride width. See the width attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.& ÀÄÀ# €€€‚ÿ*žÀîÀ' €€ ”€ ‚ÿž?ÄÀŒÁ_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetWidthpublic void setWidth(String width)*îÀ¶Á' €€ ”€ ‚ÿ&ŒÁÜÁ# €€€‚ÿîy¶ÁÊÃu#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïøŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITÜÁËÄ­#*šÂ€€ÿF€€€ç_•—Y€‰€ça•—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç`•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÊÃ}Å\#ˆ€¬ÂÂ.€€€ç»H†ñ€ ‰€‚ÿ.€`€€ç\l)ä€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ËÄ£Å# €€€‚ÿ*}ÅÍÅ' €€ ”€ ‚ÿfû£Å3Çk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ÍÅdÇ1UÿÿÿÿÿÿÿÿKÿÿÿÿdLjÇ$3LjÇ" €€€ ÿQ dÇÙÇ1:€ LÙÇ#ÈÓÁHTMLAreaElement (Common DOM API)J$ˆÇ#È& €H€€€‚ÿHTMLAreaElement (Common DOM API)îyÙÇÊu#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïùŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT#ÈË­#*šÂ€€ÿF€€€ç`•—Y€‰€çb•—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ça•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÊÄË\#ˆ€¬ÂÂ.€€€ç~)Iý€ ‰€‚ÿ.€`€€ç%*“Ò€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ËêË# €€€‚ÿ*ÄËÌ' €€ ”€ ‚ÿ†LêËšÌ: D€˜€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLAreaElementAll Superinterfaces: )ÌÍX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&šÌAÍ# €€€‚ÿ*ÍkÍ' €€ ”€ ‚ÿjÞAÍÕÎŒ 怜€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLAreaElementextends HTMLElementClient-side image map area definition. See the AREA element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*kÍÿÎ' €€ ”€ ‚ÿ,ÕÎ+Ï' € €€‚€‚ÿTÿÎÏB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'+ÏŠÏ# €€€‚ÿ ƒ8Ï5K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inheriŠÏ5ˆÇted from interface org.w3c.dom.NodeÇŠÏüÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'5## €€€‚ÿ UüxB#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summaryq#|“#ö€â÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç¥sFö€‰€€‚ÿÿÿ StringgetAccessKey() A single character access key to give access to the form control. zx‰“#ö€ô÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çûp:3€‰€€‚ÿÿÿ StringgetAlt() Alternate text for user agents not rendering the normal content of this element.q|“#ö€â÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €猱†€‰€€‚ÿÿÿ StringgetCoords() Comma-separated list of lengths, defining an active region geometry.ÝJ‰j“#ö€”÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çÝ:Nـ‰€€‚ÿÿÿ StringgetHref() The URI of the linked resource.èpRx#À€à÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç²\ò€‰€€‚ÿÿÿ booleangetNoHref() Specifies that this area is inactive, i.e., has no associated action.ÜIj.“#ö€’÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç#«[X€‰€€‚ÿÿÿ StringgetShape() The shape of the active area.ãkR x#À€Ö÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç§§Lg€‰€€‚ÿÿÿ intgetTabIndex() Index that represents the element's position in the tabbing order.àM.ñ “#ö€š÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç;³f€‰€€‚ÿÿÿ StringgetTarget() Frame to render the resource in.Ö@ Ç –#ü€€÷€€ÿ"€€€€‚ÿ€€ÿr€€çH>d%€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAccessKey(String accessKey) Ê4ñ ‘ –#ü€h÷€€ÿ"€€€€‚ÿ€€ÿr€€ç~iù€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlt(String alt) Ð:Ç a –#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€çWˆÌ €‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCoords(String coords) Ì6‘ - –#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çÈCo€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHref(String href) ¯7a Ü x#À€n÷€€ÿ"€€€€‚ÿ€€ÿ6€€çôAÛu€‰€€‚ÿÿÿ voidsetNoHref(boolean noHref) Î8- ª–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€ç†ñl݀‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetShape(String shape) ¯7Ü Yx#À€n÷€€ÿ"€€€€‚ÿ€€ÿ6€€çŽu:±€‰€€‚ÿÿÿ voidsetTabIndex(int tabIndex) Ð:ª5@–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€çkf߀‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetTY5@ˆÇarget(String target) 'Y\@# €€€‚ÿ E5@ì@K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ\@B©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'ì@DB# €€€‚ÿ ™<BÝB]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYDBGF#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'ÝBnF# €€€‚ÿ „9GFòFK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆnFJ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)òF>J$ € €€‚‚ÿ TJ’JB#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail9>J"KW ~€r€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAccessKeypublic String getAccessKey()žy’JÀK% €ò€ä€‚‚ÿA single character access key to give access to the form control. See the accesskey attribute definition in HTML 4.0.&"KæK# €€€‚ÿ*ÀKL' €€ ”€ ‚ÿªKæKºL_ Ž€–€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAccessKeypublic void setAccessKey(String accessKey)*LäL' €€ ”€ ‚ÿŠ/ºLnM[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAltpublic String getAlt()š‚äLN& €€ä€‚‚ÿAlternate text for user agents not rendering the normal content of this element. See the alt attribute definition in HTML 4.0.&nM‚[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHrefpublic String getHref()wR²µ‚% €€€ä€‚‚ÿThe URI of the linked resource. See the href attribute definition in HTML 4.0.&>‚ۂ# €€€‚ÿ*µ‚ƒ' €€ ”€ ‚ÿ›<ۂ ƒ_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHrefpublic void setHref(String href)*ƒʃ' €€ ”€ ‚ÿo2 ƒ9„= J€d€€‚€‚€€‚‚€€€€‚ÿgetNoHrefpublic boolean getNoHref()Ÿzʃ؄% €ô€ä€‚‚ÿSpecifies that this area is inactive, i.e., has no associated action. See the nohref attribute definition in HTML 4.0.&9„þ„# €€€‚ÿ*؄(…' €€ ”€ ‚ÿ€?þ„š…A R€~€€‚€‚€€‚‚€€€€‚€‚ÿsetNoHrefpublic void setNoHref(boolean noHref)*(…҅' €€ ”€ ‚ÿŽ3š…`†[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetShapepublic String getShape()€y҅‡+ &€ò€ä€€€‚‚ÿThe shape of the active area. The coordinates are given by coords . See the shape attribute definition in HTML 4.0.&`†*‡# €€€‚ÿ*‡T‡' €€ ”€ ‚ÿž?*‡ò‡_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetShapepublic void setShape(String shape)*T‡ˆ' €€ ”€ ‚ÿo2ò‡‹ˆ= J€d€€‚€‚€€‚‚€€€€‚ÿgetTabIndexpublic int getTabIndex()žyˆ)‰% €ò€ä€‚‚ÿIndex that represents the element's position in the tabbing order. See the tabindex attribute definition in HTML 4.0.&‹ˆO‰# €€€‚ÿ*)‰y‰' €€ ”€ ‚ÿ‚AO‰û‰A R€‚€€‚€‚€€‚‚€€€€‚€‚ÿsetTabIndexpublic void setTabIndex(int tabIndex)*y‰%Š' €€ ”€ ‚ÿ5û‰µŠ[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTargetpublic String getTarget()zU%Š/‹% €ª€ä€‚‚ÿFrame to render the resource in. See the target attribute definition in HTML 4.0.&µŠU‹# €€€‚ÿ*/‹‹' €€ ”€ ‚ÿ¡BU‹ Œ_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTargetpublic void setTarget(String target)*‹JŒ' €€ ”€ ‚ÿ& ŒpŒ# €€€‚ÿîyJŒ^Žu#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïùŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITpŒ_­#*šÂ€€ÿF€€€ç`•—Y€‰€çb•—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ça•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V^ŽÀ\#ˆ€¬ÂÂ.€€€ç~)Iý€ ‰€‚ÿ.€`€€ç%*“Ò€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONS_ÀˆÇTR | METHOD&_CÀ# €€€‚ÿ*ÀmÀ' €€ ”€ ‚ÿfûCÀÓÁk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1mÀÂ1UÿÿÿÿÿÿÿÿMÿÿÿÿÂ(Â$ÓÁ(Â" €€€ ÿQ ÂyÂ1Ð!ނ­NyÂÃÂHD HTMLBaseElement (Common DOM API)J$(ÂÃÂ& €H€€€‚ÿHTMLBaseElement (Common DOM API)îyy±Äu#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïúŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITòŭ#*šÂ€€ÿF€€€ça•—Y€‰€玕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çb•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V±ÄdÆ\#ˆ€¬ÂÂ.€€€çA € ‰€‚ÿ.€`€€çîçüÀ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&²ÅŠÆ# €€€‚ÿ*dÆŽÆ' €€ ”€ ‚ÿ†LŠÆ:Ç: D€˜€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLBaseElementAll Superinterfaces: )ŽÆ»ÇX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&:ÇáÇ# €€€‚ÿ*»Ç È' €€ ”€ ‚ÿVÊáÇaÉŒ 怕€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLBaseElementextends HTMLElementDocument base URI. See the BASE element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.* È‹É' €€ ”€ ‚ÿ,aÉ·É' € €€‚€‚ÿT‹É ÊB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'·É2Ê# €€€‚ÿ ƒ8 ʵÊK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ2Ê|ÌÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'µÊ£Ì# €€€‚ÿ U|ÌøÌB#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryË8£ÌÃÍ“#ö€p÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çv•š/€‰€€‚ÿÿÿ StringgetHref() The base URI.ÙFøÌœÎ“#ö€Œ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç–K€‰€€‚ÿÿÿ StringgetTarget() The default target frame.Ì6ÃÍhÏ–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ç!QCހ‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHref(String href) Ð:œÎD –#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€çßÒúր‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿhÏD ( voidsetTarget(String target) 'hÏk # €€€‚ÿ ED û K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆk , ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'û S # €€€‚ÿ ™<, ì ]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYS V #ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'ì } # €€€‚ÿ „9V  K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ} $ ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix) M $ € €€‚‚ÿ T$ ¡ B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail†/M ' W ~€^€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHrefpublic String getHref()e@¡ Œ % €€€ä€‚‚ÿThe base URI. See the href attribute definition in HTML 4.0.&' ² # €€€‚ÿ*Œ Ü ' €€ ”€ ‚ÿ›<² w _ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHrefpublic void setHref(String href)*Ü ¡ ' €€ ”€ ‚ÿ5w 1 [ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTargetpublic String getTarget()sN¡ € % €œ€ä€‚‚ÿThe default target frame. See the target attribute definition in HTML 4.0.&1 Ê # €€€‚ÿ*€ ô ' €€ ”€ ‚ÿ¡BÊ • _ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTargetpublic void setTarget(String target)*ô ¿ ' €€ ”€ ‚ÿ&• å # €€€‚ÿîy¿ ß@ u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïúŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4å ß@ (Â.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITå àA ­#*šÂ€€ÿF€€€ça•—Y€‰€玕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çb•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vß@ ’B \#ˆ€¬ÂÂ.€€€çA € ‰€‚ÿ.€`€€çîçüÀ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&àA žB # €€€‚ÿ*’B âB ' €€ ”€ ‚ÿfûžB HD k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1âB yD 1UÿÿÿÿÿÿÿÿOÿÿÿÿyD D $HD D " €€€ ÿU$yD òD 1Ñ%6„PòD @E Ë HTMLBaseFontElement (Common DOM API)N(D @E & €P€€€‚ÿHTMLBaseFontElement (Common DOM API)îyòD .G u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïûŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT@E /H ­#*šÂ€€ÿF€€€çb•—Y€‰€煕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€玕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V.G áH \#ˆ€¬ÂÂ.€€€çūЀ ‰€‚ÿ.€`€€çz†)»€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&/H I # €€€‚ÿ*áH 1I ' €€ ”€ ‚ÿŠPI »I : D€ €€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLBaseFontElementAll Superinterfaces: )1I G #ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'ÔC eG # €€€‚ÿ „9>G éG K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆeG K ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)éG 5K $ € €€‚‚ÿ T K ‰K B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailˆ15K L W ~€b€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetALinkpublic String getALink()Ъ‰K áL & €U€ä€‚‚ÿColor of active links (after mouse-button down, but before mouse-button up). See the alink attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&L M # €€€‚ÿ*áL 1M ' €€ ”€ ‚ÿž?M ÏM _ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetALinkpublic void setALink(String aLink)*1M ùM ' €€ ”€ ‚ÿ˜=ÏM ‘N [ †€z€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetBackgroundpublic String getBackground()²ŒùM CO & €€ä€‚‚ÿURI of the background texture tile image. See the background attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&‘N iO # €€€‚ÿ*CO “O ' €€ ”€ ‚ÿ­NiO L€ _ Ž€œ€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetBackgr“O L€ [Ë oundpublic void setBackground(String background)*“O v€ ' €€ ”€ ‚ÿ’7L€  [ †€n€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetBgColorpublic String getBgColor()Ÿzv€ § % €ô€ä€‚‚ÿDocument background color. See the bgcolor attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.& ́ # €€€‚ÿ*§ ÷ ' €€ ”€ ‚ÿ€É ›‚ _ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetBgColorpublic void setBgColor(String bgColor)*÷ ł ' €€ ”€ ‚ÿŒ1›‚ Qƒ [ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetLinkpublic String getLink()ŽŽÅ‚ „ & €€ä€‚‚ÿColor of links that are not active and unvisited. See the link attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&Qƒ +„ # €€€‚ÿ*„ U„ ' €€ ”€ ‚ÿ›<+„ ð„ _ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetLinkpublic void setLink(String link)*U„ … ' €€ ”€ ‚ÿŒ1ð„ Š… [ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTextpublic String getText()–q… <† % €â€ä€‚‚ÿDocument text color. See the text attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&Š… b† # €€€‚ÿ*<† Œ† ' €€ ”€ ‚ÿ›<b† '‡ _ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTextpublic void setText(String text)*Œ† Q‡ ' €€ ”€ ‚ÿŽ3'‡ ߇ [ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetVLinkpublic String getVLink()¶Q‡ •ˆ & €!€ä€‚‚ÿColor of links that have been visited by the user. See the vlink attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&߇ »ˆ # €€€‚ÿ*•ˆ åˆ ' €€ ”€ ‚ÿž?»ˆ ƒ‰ _ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetVLinkpublic void setVLink(String vLink)*åˆ ­‰ ' €€ ”€ ‚ÿ&ƒ‰ Ӊ # €€€‚ÿîy­‰ Á‹ u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïüŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITӉ Œ ­#*šÂ€€ÿF€€€玕—Y€‰€熕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€煕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÁ‹ t \#ˆ€¬ÂÂ.€€€çêİ€€ ‰€‚ÿ.€`€€çiÚqY€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Œ š # €€€‚ÿ*t č ' €€ ”€ ‚ÿfûš * k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1č [ 1UÿÿÿÿÿÿÿÿSÿÿÿÿ[  $*  " €€€ ÿO[ Ώ 1È6„=TΏ "À / HTMLBRElement (Common DOM API)H" "À & €D€€€‚ÿHTMLBRElemeΏ "À  nt (Common DOM API)îyΏ  u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïýŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT"À à ­#*šÂ€€ÿF€€€煕—Y€‰€燕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€熕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V Ãà \#ˆ€¬ÂÂ.€€€ç­¥s°€ ‰€‚ÿ.€`€€ç2˜ÛG€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&à éà # €€€‚ÿ*Ãà Ä ' €€ ”€ ‚ÿ„Jéà —Ä : D€”€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLBRElementAll Superinterfaces: )Ä Å X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&—Ä >Å # €€€‚ÿ*Å hÅ ' €€ ”€ ‚ÿSÇ>Å »Æ Œ 怏€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLBRElementextends HTMLElementForce a line break. See the BR element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*hÅ åÆ ' €€ ”€ ‚ÿ,»Æ Ç ' € €€‚€‚ÿTåÆ eÇ B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'Ç ŒÇ # €€€‚ÿ ƒ8eÇ È K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇŒÇ ÖÉ Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'È ýÉ # €€€‚ÿ UÖÉ RÊ B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryâOýÉ 4Ë “#ö€ž÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çj¶*›€‰€€‚ÿÿÿ StringgetClear() Control flow of text around floats.Î8RÊ Ì –#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€ç ²Öπ‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetClear(String clear) '4Ë )Ì # €€€‚ÿ EÌ ¹Ì K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ)Ì êÍ ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'¹Ì Î # €€€‚ÿ ™<êÍ ªÎ ]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYÎ  #ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰ªÎ   €ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'ªÎ G # €€€‚ÿ „9  Ë K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆG î ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)Ë  $ € €€‚‚ÿ Tî k B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailˆ1 ó W ~€b€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetClearpublic String getClear()§k š & €€ä€‚‚ÿControl flow of text around floats. See the clear attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&ó À # €€€‚ÿ*š ê ' €€ ”€ ‚ÿž?À ˆ _ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetClearpublic void setClear(String clear)*ê ² ' €€ ”€ ‚ÿ&ˆ Ø # €€€‚ÿîy² Æ u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïýŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITØ Ç ­#*šÂ€€ÿF€€€煕—Y€‰€燕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€熕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÆ y \#ˆ€¬ÂÂ.€€€ç­¥s°€ ‰€‚ÿ.€`€€ç2˜ÛG€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Ç Ÿ # €€€‚ÿ*y É ' €€ ”€ ‚ÿfûŸ / k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1É ` 1UÿÿÿÿÿÿÿÿUÿÿÿÿ` „ $/ „ " €€€ ÿS"` × 1N3!V× # ï HTMLButtonElement (Common DOM API)L&„ # & €L€€€‚ÿHTMLButtonElement (Common DOM API)îy× A u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïþŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€# A „ ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT# B ­#*šÂ€€ÿF€€€熕—Y€‰€爕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€燕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VA ÐB \#ˆ€¬ÂÂ.€€€çp†6Œ€ ‰€‚ÿ.€`€€çûUE6€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&B öB # €€€‚ÿ*ÐB C ' €€ ”€ ‚ÿˆNöB šC : D€œ€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLButtonElementAll Superinterfaces: ) C )D X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&šC OD # €€€‚ÿ*)D yD ' €€ ”€ ‚ÿTÈOD ÍE Œ 怑€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLButtonElementextends HTMLElementPush button. See the BUTTON element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*yD ÷E ' €€ ”€ ‚ÿ,ÍE #F ' € €€‚€‚ÿT÷E wF B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'#F žF # €€€‚ÿ ƒ8wF !G K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇžF èH Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'!G I # €€€‚ÿ UèH dI B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryqI hJ “#ö€â¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç—Ð3µ€‰€€‚ÿÿÿ StringgetAccessKey() A single character access key to give access to the form control.ÐXdI 8K x#À€°¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç° ဉ€€‚ÿÿÿ booleangetDisabled() The control is unavailable in this context.îghJ &L ‡#ހΥ߀€ÿ4€€€粕—Y€‰€‚ÿ€0€ÿB€2€ç΀˜€‰€€€€‚ÿÿÿ HTMLFormElementgetForm() Returns the FORM element containing this control.õb8K M “#ö€Ä¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €瓋Ýۀ‰€€‚ÿÿÿ StringgetName() Form control or object name when submitted with a form.ãk&L þM x#À€Ö¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç}Óþʀ‰€€‚ÿÿÿ intgetTabIndex() Index that represents the element's position in the tabbing order.Ñ>M ÏN “#ö€|¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çF6X€‰€€‚ÿÿÿ StringgetType() The type of button.ÞKþM ­O “#ö€–¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çM­XŽ€‰€€‚ÿÿÿ StringgetValue() The current form control value.Ö@ÏN € –#ü€€¥ß€€ÿ"€€€€‚ÿ€€­O € „ ÿr€€çºÐÒb€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAccessKey(String accessKey) ³;­O B x#À€v¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çʝU€‰€€‚ÿÿÿ voidsetDisabled(boolean disabled) Ì6€ ‚ –#ü€l¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çþœõf€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetName(String name) ¯7B œ‚ x#À€n¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç–Åž±€‰€€‚ÿÿÿ voidsetTabIndex(int tabIndex) Î8‚ ‹ƒ –#ü€p¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç0yg€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetValue(String value) 'œ‚ ²ƒ # €€€‚ÿ E‹ƒ B„ K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ²ƒ s… ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'B„ š… # €€€‚ÿ ™<s… 3† ]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYš… ‰ #ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'3† ĉ # €€€‚ÿ „9‰ HŠ K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æĉ k ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)HŠ ” $ € €€‚‚ÿ Tk è B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail}8” eŽ E Z€p€€‚€€‚‚€粕—Y€‰€€€€‚ÿgetFormpublic HTMLFormElement getForm()¬{è  1 2€ö€ä€€€€€‚‚ÿReturns the FORM element containing this control. Returns null if this control is not within the context of a form.&eŽ 7 # €€€‚ÿ* a ' €€ ”€ ‚ÿ–;7 À [ †€v€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAccessKeypublic String getAccessKey()a À „ žya ªÀ % €ò€ä€‚‚ÿA single character access key to give access to the form control. See the accesskey attribute definition in HTML 4.0.& À ÐÀ # €€€‚ÿ*ªÀ úÀ ' €€ ”€ ‚ÿªKÐÀ €Á _ Ž€–€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAccessKeypublic void setAccessKey(String accessKey)*úÀ ÎÁ ' €€ ”€ ‚ÿs6€Á A = J€l€€‚€‚€€‚‚€€€€‚ÿgetDisabledpublic boolean getDisabled()‡bÎÁ È % €Ä€ä€‚‚ÿThe control is unavailable in this context. See the disabled attribute definition in HTML 4.0.&A î # €€€‚ÿ*È à ' €€ ”€ ‚ÿ†Eà A R€Š€€‚€‚€€‚‚€€€€‚€‚ÿsetDisabledpublic void setDisabled(boolean disabled)*à Èà ' €€ ”€ ‚ÿŒ1žÃ TÄ [ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetNamepublic String getName()jÈà ãÄ % €Ô€ä€‚‚ÿForm control or object name when submitted with a form. See the name attribute definition in HTML 4.0.&TÄ Å # €€€‚ÿ*ãÄ 3Å ' €€ ”€ ‚ÿ›< Å ÎÅ _ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetNamepublic void setName(String name)*3Å øÅ ' €€ ”€ ‚ÿo2ÎÅ gÆ = J€d€€‚€‚€€‚‚€€€€‚ÿgetTabIndexpublic int getTabIndex()žyøÅ Ç % €ò€ä€‚‚ÿIndex that represents the element's position in the tabbing order. See the tabindex attribute definition in HTML 4.0.&gÆ +Ç # €€€‚ÿ*Ç UÇ ' €€ ”€ ‚ÿ‚A+Ç ×Ç A R€‚€€‚€‚€€‚‚€€€€‚€‚ÿsetTabIndexpublic void setTabIndex(int tabIndex)*UÇ È ' €€ ”€ ‚ÿŒ1×Ç È [ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTypepublic String getType()kFÈ øÈ % €Œ€ä€‚‚ÿThe type of button. See the type attribute definition in HTML 4.0.&È É # €€€‚ÿ*øÈ HÉ ' €€ ”€ ‚ÿŽ3É ÖÉ [ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetValuepublic String getValue()xSHÉ NÊ % €Š€ä€‚‚ÿThe current form control value. See the value attribute definition in HTML 4.0.&ÖÉ tÊ # €€€‚ÿ*NÊ žÊ ' €€ ”€ ‚ÿž?tÊ <Ë _ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetValuepublic void setValue(String value)*žÊ fË ' €€ ”€ ‚ÿ&<Ë ŒË # €€€‚ÿîyfË zÍ u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïþŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITŒË {Î ­#*šÂ€€ÿF€€€熕—Y€‰€爕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€燕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VzÍ -Ï \#ˆ€¬ÂÂ.€€€çp†6Œ€ ‰€‚ÿ.€`€€çûUE6€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&{Î SÏ # €€€‚ÿ*-Ï }Ï ' €€ ”€ ‚ÿfûSÏ ï k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or feat}Ï ï „ ureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1}Ï  1UÿÿÿÿÿÿÿÿWÿÿÿÿ  D $ï D " €€€ ÿP  ” 1=j„X” Ý ËI HTMLCollection (Common DOM API)I#D Ý & €F€€€‚ÿHTMLCollection (Common DOM API)îy” Ë u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïÿŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITÝ Ì ­#*šÂ€€ÿF€€€燕—Y€‰€牕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€爕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VË ~ \#ˆ€¬ÂÂ.€€€ç3gùǀ ‰€‚ÿ.€`€€çį$€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Ì € # €€€‚ÿ*~ Î ' €€ ”€ ‚ÿl5€ : 7 >€j€€‚€‚€€ ‚€‚‚€‚ÿorg.w3c.dom.htmlInterface HTMLCollection*Î d ' €€ ”€ ‚ÿ‡: w Œ 怀€‚€‚€€‚‚€€€€€€‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚ÿpublic interface HTMLCollectionAn HTMLCollection is a list of nodes. An individual node may be accessed by either ordinal index or the node'sname or id attributes. Note: Collections in the HTML DOM are assumed to be live meaning that they are automatically updated when the underlying document is changed. See also the Document Object Model (DOM) Level 2 Specification.,d £ ' € €€‚€‚ÿ*w Í ' €€ ”€ ‚ÿ,£ ù ' € €€‚€‚ÿUÍ N B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summary×_ù % x#À€Ÿ÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç+ÜØ€‰€€‚ÿÿÿ intgetLength() This attribute specifies the length or size of the list.ègN #Ҁ΍÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿ6€€çg)¶#€‰€€‚ÿÿÿ Nodeitem(int index) This method retrieves a node specified by ordinal index. f%  ¥#Ì÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿ~€€ç^ë}”€‰€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿÿÿ NodenamedItem(String name) This method retrieves a Node using a name.) A $ € €€‚‚ÿ T • B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detaile,A ú 9 B€X€€‚€€‚‚€€€€‚ÿgetLengthpublic int getLength()a<• [ % €x€ä€‚‚ÿThis attribute specifies the length or size of the list.&ú  # €€€‚ÿ*[ « ' €€ ”€ ‚ÿ{2 & I b€d€€‚€‚€€‚‚€çb–—Y€‰€€€€‚ÿitempublic Node item(int index)·Š« Ý - (€€ä€‚‚€€‚ÿThis method retrieves a node specified by ordinal index. Nodes are numbered in tree order (depth-first traversal order).Parameters:oG& L ( €Ž€ɀ€€‚ÿindex - The index of the node to be fetched. The index origin is 0.3 Ý  ' €€ä€€‚ÿReturns:švL 3@ 2 4€ì€ɀ€€€€€‚‚ÿThe Node at the corresponding position upon success. A value of null is re 3@ D turned if the index is out of range.& Y@ # €€€‚ÿ*3@ ƒ@ ' €€ ”€ ‚ÿ©BY@ ,A g ž€„€€‚€‚€€‚‚€çb–—Y€‰€€€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿnamedItempublic Node namedItem(String name)^ƒ@ ŠB K d€'€ä€€€€€€€€€€€‚‚€€‚ÿThis method retrieves a Node using a name. It first searches for a Node with a matching id attribute. If it doesn't find one, it then searches for a Node with a matching name attribute, but only on those elements that are allowed a name attribute.Parameters:^0,A èB . ,€`€ɀ€€€€‚ÿname - The name of the Node to be fetched.3 ŠB C ' €€ä€€‚ÿReturns:ã€èB þC ? L€I€ɀ€€€€€€€€€‚‚ÿThe Node with a name or id attribute whose value corresponds to the specified string. Upon failure (e.g., no node with this name exists), returns null .&C $D # €€€‚ÿ*þC ND ' €€ ”€ ‚ÿ&$D tD # €€€‚ÿîyND bF u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ïÿŽ—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITtD cG ­#*šÂ€€ÿF€€€燕—Y€‰€牕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€爕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VbF H \#ˆ€¬ÂÂ.€€€ç3gùǀ ‰€‚ÿ.€`€€çį$€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&cG ;H # €€€‚ÿ*H eH ' €€ ”€ ‚ÿfû;H ËI k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1eH üI 1UÿÿÿÿÿÿÿÿYÿÿÿÿüI J $ËI J " €€€ ÿV%üI vJ 1Ÿ?ƒZvJ ÅJ ¹È HTMLDirectoryElement (Common DOM API)O) J ÅJ & €R€€€‚ÿHTMLDirectoryElement (Common DOM API)îyvJ ³L u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITÅJ ŽM ­#*šÂ€€ÿF€€€爕—Y€‰€犕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€牕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V³L fN \#ˆ€¬ÂÂ.€€€çöGŒÓ€ ‰€‚ÿ.€`€€çÑ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ŽM ŒN # €€€‚ÿ*fN ¶N ' €€ ”€ ‚ÿ‹QŒN AO : D€¢€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLDirectoryElementAll Superinterfaces: )¶N ÂO X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&AO € # €€€‚ÿÂO € J *ÂO 6€ ' €€ ”€ ‚ÿó € µ Œ æ€ç€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLDirectoryElementextends HTMLElementDirectory list. See the DIR element definition in HTML 4.0. This element is deprecated in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*6€ ߁ ' €€ ”€ ‚ÿ,µ ‚ ' € €€‚€‚ÿT߁ _‚ B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary' ‚ †‚ # €€€‚ÿ ƒ8_‚ ƒ K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.Nodedž‚ Є Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE' ƒ ÷„ # €€€‚ÿ UЄ L… B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÆN÷„ † x#À€œ÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç]a}ـ‰€€‚ÿÿÿ booleangetCompact() Reduce spacing between list items.±9L… Æ x#À€r÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç¹‡l€‰€€‚ÿÿÿ voidsetCompact(boolean compact) '† ê† # €€€‚ÿ EÆ z‡ K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆê† «ˆ ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'z‡ ҈ # €€€‚ÿ ™<«ˆ k‰ ]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY҈ Ռ #ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'k‰ üŒ # €€€‚ÿ „9Ռ € K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆüŒ ¯À ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibl€ ¯À J ing, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)€ ØÀ $ € €€‚‚ÿ T¯À ,Á B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailk2ØÀ —Á 9 B€d€€‚€€‚‚€€€€‚ÿgetCompactpublic boolean getCompact()š‚,Á ? & €€ä€‚‚ÿReduce spacing between list items. See the compact attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&—Á e # €€€‚ÿ*? Â ' €€ ”€ ‚ÿƒBe à A R€„€€‚€‚€€‚‚€€€€‚€‚ÿsetCompactpublic void setCompact(boolean compact)*Â <à ' €€ ”€ ‚ÿ&à bà # €€€‚ÿîy<à PÅ u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITbà QÆ ­#*šÂ€€ÿF€€€爕—Y€‰€犕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€牕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VPÅ Ç \#ˆ€¬ÂÂ.€€€çöGŒÓ€ ‰€‚ÿ.€`€€çÑ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&QÆ )Ç # €€€‚ÿ*Ç SÇ ' €€ ”€ ‚ÿfû)Ç ¹È k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1SÇ êÈ 1Uÿÿÿÿÿÿÿÿ[ÿÿÿÿêÈ É $¹È É " €€€ ÿPêÈ ^É 1Vj„ƒ\^É §É ÆG HTMLDivElement (Common DOM API)I#É §É & €F€€€‚ÿHTMLDivElement (Common DOM API)îy^É •Ë u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï,—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT§É –Ì ­#*šÂ€€ÿF€€€牕—Y€‰€狕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€犕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V•Ë HÍ \#ˆ€¬ÂÂ.€€€ç¹(߀ ‰€‚ÿ.€`€€çV‚€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&–Ì nÍ # €€€‚ÿ*HÍ ˜Í ' €€ ”€ ‚ÿ…KnÍ Î : D€–€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLDivElementAll Superinterfaces: )˜Í žÎ X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&Î ÄÎ # €€€‚ÿ*žÎ îÎ ' €€ ”€ ‚ÿZÎÄÎ T Œ 思€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLDivElementextends HTMLElementGeneric block container. See the DIV element definition in HTML 4.0. îÎ T É See also the Document Object Model (DOM) Level 2 Specification.*îÎ ~ ' €€ ”€ ‚ÿ,T ª ' € €€‚€‚ÿT~ þ B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'ª % # €€€‚ÿ ƒ8þ š K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ% o Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'š – # €€€‚ÿ Uo ë B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÙF– Ä “#ö€Œ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç¶¹&¯€‰€€‚ÿÿÿ StringgetAlign() Horizontal text alignment.Î8ë ’ –#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€çY.Ò7€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) 'Ä ¹ # €€€‚ÿ E’ I K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ¹ z ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'I ¡ # €€€‚ÿ ™<z : ]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY¡ € #ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS': Ë # €€€‚ÿ „9€ O K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆË r ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)O › $ € €€‚‚ÿ Tr @ B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail› @ É ˆ1› ”@ W ~€b€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()x @ 1A % €ð€ä€‚‚ÿHorizontal text alignment. See the align attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&”@ WA # €€€‚ÿ*1A A ' €€ ”€ ‚ÿž?WA B _ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*A IB ' €€ ”€ ‚ÿ&B oB # €€€‚ÿîyIB ]D u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï,—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIToB ^E ­#*šÂ€€ÿF€€€牕—Y€‰€狕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€犕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V]D F \#ˆ€¬ÂÂ.€€€ç¹(߀ ‰€‚ÿ.€`€€çV‚€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&^E 6F # €€€‚ÿ*F `F ' €€ ”€ ‚ÿfû6F ÆG k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1`F ÷G 1Uÿÿÿÿÿÿÿÿ]ÿÿÿÿ÷G H $ÆG H " €€€ ÿR!÷G mH 1Ç?ƒq‚^mH žH fÆ HTMLDListElement (Common DOM API)K%H žH & €J€€€‚ÿHTMLDListElement (Common DOM API)îymH ŠJ u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï#—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITžH §K ­#*šÂ€€ÿF€€€犕—Y€‰€猕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€狕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VŠJ YL \#ˆ€¬ÂÂ.€€€ç| Bë€ ‰€‚ÿ.€`€€çMìï€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&§K L # €€€‚ÿ*YL ©L ' €€ ”€ ‚ÿ‡ML 0M : D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLDListElementAll Superinterfaces: )©L ±M X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&0M ×M # €€€‚ÿ*±M N ' €€ ”€ ‚ÿSÇ×M TO Œ 怏€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLDListElementextends HTMLElementDefinition list. See the DL element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*N ~O ' €€ ”€ ‚ÿ,TO ªO ' € €€‚€‚ÿT~O € B#T€$„€€ÿ"€€€€‚ÿÿÿField SummaryªO € H 'ªO 3€ # €€€‚ÿ ƒ8 € ¶€ K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ3€ }‚ Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'¶€ €‚ # €€€‚ÿ U}‚ ù‚ B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÆN€‚ ¿ƒ x#À€œ÷€€ÿ"€€€€‚ÿ€€ÿ6€€çù«Ø€‰€€‚ÿÿÿ booleangetCompact() Reduce spacing between list items.±9ù‚ p„ x#À€r÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç›ïΫ€‰€€‚ÿÿÿ voidsetCompact(boolean compact) '¿ƒ —„ # €€€‚ÿ Ep„ '… K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ—„ X† ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle''… † # €€€‚ÿ ™<X† ‡ ]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY† ‚Š #ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'‡ ©Š # €€€‚ÿ „9‚Š -‹ K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ©Š PŽ ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)-‹ yŽ $ € €€‚‚ÿ TPŽ ͎ B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailk2yŽ 8 9 B€d€€‚€€‚‚€€€€‚ÿgetCompactpublic boolean getCompact()š‚ÍŽ à & €€ä€‚‚ÿReduce spacing between list items. See the compact attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&8 À # €€€à À H ‚ÿ*à <À ' €€ ”€ ‚ÿƒBÀ ¿À A R€„€€‚€‚€€‚‚€€€€‚€‚ÿsetCompactpublic void setCompact(boolean compact)*<À éÀ ' €€ ”€ ‚ÿ&¿À Á # €€€‚ÿîyéÀ ý u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï#—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITÁ þà ­#*šÂ€€ÿF€€€犕—Y€‰€猕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€狕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vý °Ä \#ˆ€¬ÂÂ.€€€ç| Bë€ ‰€‚ÿ.€`€€çMìï€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&þà ÖÄ # €€€‚ÿ*°Ä Å ' €€ ”€ ‚ÿfûÖÄ fÆ k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1Å —Æ 1Uÿÿÿÿÿÿÿÿ_ÿÿÿÿ—Æ »Æ $fÆ »Æ " €€€ ÿN—Æ Ç 1œLƒ­` Ç PÇ ¬HTMLDocument (Common DOM API)G!»Æ PÇ & €B€€€‚ÿHTMLDocument (Common DOM API)îy Ç >É u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï$—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITPÇ ?Ê ­#*šÂ€€ÿF€€€狕—Y€‰€獕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€猕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V>É ñÊ \#ˆ€¬ÂÂ.€€€ç?ê÷€ ‰€‚ÿ.€`€€çè Vހ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&?Ê Ë # €€€‚ÿ*ñÊ AË ' €€ ”€ ‚ÿƒIË ÄË : D€’€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLDocumentAll Superinterfaces: eAË )Ì L h€2€äïxŽ—YJdk14doc.4.hlp€‰€çb–—Y€‰€‚‚ÿDocument, Node&ÄË OÌ # €€€‚ÿ*)Ì yÌ ' €€ ”€ ‚ÿ›1OÌ Ï j ¢€c€€‚€‚€€‚ïxŽ—YJdk14doc.4.hlp€‰€‚‚€€‚‚€€€€€€‚ÿpublic interface HTMLDocumentextends DocumentAn HTMLDocument is the root of the HTML hierarchy and holds the entire content. Besides providing access to the hierarchy, it also provides some convenience methods for accessing certain sets of information from the document. The following properties have been deprecated in favor of the corresponding ones for the BODY element: alinkColor background bgColor fgColor linkColor vlinkColor In DOM Level 2, the method getElementById is inherited from the Document interface where it was moved. ºJyÌ ÎÏ p °€”€€‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿSee also the Document Object Model (DOM) Level 2 Specification.*Ï ' €€ ”€ ‚ÿÎÏ »Æ ,ÎÏ 8' € €€‚€‚ÿT ŒB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'8³# €€€‚ÿ ƒ8Œ6K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodedzýÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'6$# €€€‚ÿ UýyB#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summaryãe$\~#̀ʜ耀ÿ"€€€€‚ÿ€€ÿB€€çó×,€‰€€€€‚ÿÿÿ voidclose() Closes a document stream opened by open() and forces rendering.'™yƒŽ#ê€3œè€€ÿ4€€€爕—Y€‰€‚ÿ€.€ÿN€0€ç©ýŽÕ€‰€€€€€€‚ÿÿÿ HTMLCollectiongetAnchors() A collection of all the anchor (A ) elements in a document with a value for the name attribute.6š\¹Ž#ê€Qœè€€ÿ4€€€爕—Y€‰€‚ÿ€.€ÿN€0€çlŸ¬€‰€€€€€€‚ÿÿÿ HTMLCollectiongetApplets() A collection of all the OBJECT elements that include applets and APPLET ( deprecated ) elements in a document.ègƒ¡#ҀΜ耀ÿ4€€€繕—Y€‰€‚ÿ€(€ÿ6€*€çÃ>K%€‰€€‚ÿÿÿ HTMLElementgetBody() The element that contains the content for the document.êW¹‹“#ö€®œè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çQ~¶€‰€€‚ÿÿÿ StringgetCookie() The cookies associated with this document.=£¡È š#Gœè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €畖Í9€‰€€€€‚ÿÿÿ StringgetDomain() The domain name of the server that served the document, or null if the server cannot be identified by a domain name.[¯‹# ¬#&_œè€€ÿ4€€€çc–—Y€‰€‚ÿ€"€ÿŠ€$€ç¹áÑ €‰€ïÐۓYJdk14doc.2.hlp€‰€€€€€€‚ÿÿÿ NodeListgetElementsByName(String elementName) Returns the (possibly empty) collection of elements whose name value is given by elementName .á`È  #ҀÀœè€€ÿ4€€€爕—Y€‰€‚ÿ€.€ÿ6€0€ç"R‘)€‰€€‚ÿÿÿ HTMLCollectiongetForms() A collection of all the forms of a document.ñj# õ ‡#ހԜ耀ÿ4€€€爕—Y€‰€‚ÿ€.€ÿB€0€ç%cP€‰€€€€‚ÿÿÿ HTMLCollectiongetImages() A collection of all the IMG elements in a document.<š 1”#ö€Qœè€€ÿ4€€€爕—Y€‰€‚ÿ€.€ÿZ€0€çLFÝȀ‰€€€€€€€€‚ÿÿÿ HTMLCollectiongetLinks() A collection of all AREA elements and anchor ( A ) elements in a document with a value for the href attribute.÷dõ (“#ö€Èœè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç„ËVl€‰€€‚ÿÿÿ StringgetReferrer() Returns the URI of the page that linked to this page.„1R@š# œè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €ç/ÛY€‰€€€€‚ÿÿÿ StringgetTitle() The title of a docum(R@»Æ ent as specified by the TITLE element in the head of the document.ÞK(0A“#ö€–œè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç/¯€‰€€‚ÿÿÿ StringgetURL() The complete URI of the document. (R@ÐAx#À€Pœè€€ÿ"€€€€‚ÿ€€ÿ6€€ç7X~Š€‰€€‚ÿÿÿ voidopen() Note.¿;0AB„#؀vœè€€ÿ"€€€€‚ÿ€€ÿN€€çšPH€‰€繕—Y€‰€€‚ÿÿÿ voidsetBody(HTMLElement body) Ð:ÐA_C–#ü€tœè€€ÿ"€€€€‚ÿ€€ÿr€€çÜšP¹€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCookie(String cookie) Î8B-D–#ü€pœè€€ÿ"€€€€‚ÿ€€ÿr€€ç’*Ü|€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetTitle(String title) s_C€€ä€€€€€€€‚‚ÿThe element that contains the content for the document. In documents with BODY contents, returns the BODY element. In frameset documents, this returns the outermost FRAMESET element.&K†i‡# €€€‚ÿ*C‡“‡' €€ ”€ ‚ÿŽAi‡!ˆM j€‚€€‚€‚€€‚‚€€€繕—Y€‰€€‚€‚ÿsetBodypublic void setBody(HTMLElement body)*“‡Kˆ' €€ ”€ ‚ÿ†=!ˆшI b€z€€‚€‚€€‚‚€爕—Y€‰€€€€‚ÿgetImagespublic HTMLCollection getImages()²€Kˆƒ‰2 2€€ä€€€€€‚‚ÿA collection of all the IMG elements in a document. The behavior is limited to IMG elements for backwards compatibility.&ш©‰# €€€‚ÿ*ƒ‰Ӊ' €€ ”€ ‚ÿˆ?©‰[ŠI b€~€€‚€‚€€‚‚€爕—Y€‰€€€€‚ÿgetAppletspublic HTMLCollection getApplets()§vӉ‹1 2€ì€ä€€€€€‚‚ÿA collection of all the OBJECT elements that include applets and APPLET ( deprecated ) elements in a document.&[Š(‹# €€€‚ÿ*‹R‹' €€ ”€ ‚ÿ„;(‹֋I b€v€€‚€‚€€‚‚€爕—Y€‰€€€€‚ÿgetLinkspublic HTMLCollection getLinks()¯xR‹…Œ7 >€ð€ä€€€€€€€‚‚ÿA collection of all AREA elements and anchor ( A ) elements in a document with a value for the href attribute.&֋«Œ# €€€‚ÿ*…ŒՌ' €€ ”€ ‚ÿ„;«ŒYI b€v€€‚€‚€€‚‚€爕—Y€‰€€€€‚ÿgetFormspublic HTMLCollection getForms()U0Ռ®% €`€ä€‚‚ÿA collection of all the forms of a document.&Yԍ# €€€‚ÿ*®þ' €€ ”€ ‚ÿˆ?ԍ†ŽI b€~€€‚€‚€€‚‚€爕—Y€‰€€€€‚ÿgetAnchorspublic HTMLCollection getAnchors()Yþߏ> J€7€ä€€€€€€€€€‚‚ÿA collection of all the anchor (A ) elements in a document with a value for the name attribute. Note. For reasons of backwards compatibility, the returned set of anchors only contains those anchors created with the name attribute, not those created with the id attribute.&†ŽÀ# €€€ߏÀ»Æ ‚ÿ*ߏ;À' €€ ”€ ‚ÿ5ÀËÀ[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCookiepublic String getCookie()6 ;ÀÂ, &€€ä€€€‚‚ÿThe cookies associated with this document. If there are none, the value is an empty string. Otherwise, the value is a string: a semicolon-delimited list of "name, value" pairs for all the cookies associated with the page. For example, name=value;expires=date .&ËÀ'Â# €€€‚ÿ*ÂQÂ' €€ ”€ ‚ÿ¡B'ÂòÂ_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCookiepublic void setCookie(String cookie)*QÂÃ' €€ ”€ ‚ÿb%òÂ~Ã= J€J€€‚€‚€€‚‚€€€€‚ÿopenpublic void open() åÉÅ& €Ë€ä€‚‚ÿNote. This method and the ones following allow a user to add to or replace the structure model of a document using strings of unparsed HTML. At the time of writing alternate methods for providing similar functionality for both HTML and XML documents were being considered. The following methods may be deprecated at some point in the future in favor of a more general-purpose mechanism. Open a document stream for writing. If a document exists in the target, this method clears it.'~ðÅ$ €€ä€‚ÿ&‰ÅÖÅ# €€€‚ÿ*°ÅÆ' €€ ”€ ‚ÿd'ÖÅdÆ= J€N€€‚€‚€€‚‚€€€€‚ÿclosepublic void close()pEÆÔÆ+ &€Š€ä€€€‚‚ÿCloses a document stream opened by open() and forces rendering.&dÆúÆ# €€€‚ÿ*ÔÆ$Ç' €€ ”€ ‚ÿ‘6úƵÇ[ †€l€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿwritepublic void write(String text)œŠ$ÇrÈ3 4€€ä€€€‚‚€€‚ÿWrite a string of text to a document stream opened by open() . The text is parsed into the document's structure model.Parameters:XµÇóÈ) "€°€ɀ€€‚‚ÿtext - The string to be parsed into some structure in the document structure model.&rÈÉ# €€€‚ÿ*óÈCÉ' €€ ”€ ‚ÿ•:ÉØÉ[ †€t€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿwritelnpublic void writeln(String text)ݪCɵÊ3 4€U€ä€€€‚‚€€‚ÿWrite a string of text followed by a newline character to a document stream opened by open() . The text is parsed into the document's structure model.Parameters:XØÉ6Ë) "€°€ɀ€€‚‚ÿtext - The string to be parsed into some structure in the document structure model.&µÊ\Ë# €€€‚ÿ*6ˆË' €€ ”€ ‚ÿÄ]\ËJÌg ž€º€€‚€‚€€‚‚€çc–—Y€‰€€€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿgetElementsByNamepublic NodeList getElementsByName(String elementName)¬t†ËöÌ8 @€è€ä€€€€€‚‚€€‚ÿReturns the (possibly empty) collection of elements whose name value is given by elementName .Parameters:j<JÌ`Í. ,€x€ɀ€€€€‚ÿelementName - The name attribute value for an element.3 öÌ“Í' €€ä€€‚ÿReturns:@`ÍÓÍ& €4€ɀ€‚‚ÿThe matching elements.&“ÍùÍ# €€€‚ÿ*ÓÍ#Î' €€ ”€ ‚ÿ&ùÍIÎ# €€€‚ÿîy#ÎCu#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï$—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree DeIÎC»Æ precated Index Help Common DOM APITIÎD­#*šÂ€€ÿF€€€狕—Y€‰€獕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€猕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VCö\#ˆ€¬ÂÂ.€€€ç?ê÷€ ‰€‚ÿ.€`€€çè Vހ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&D# €€€‚ÿ*öF' €€ ”€ ‚ÿfû¬k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1FÝ1UÿÿÿÿÿÿÿÿaÿÿÿÿÝ$¬" €€€ ÿW&ÝX1Vq‚̃bXšíHHTMLDOMImplementation (Common DOM API)P*š& €T€€€‚ÿHTMLDOMImplementation (Common DOM API)îyX–u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï%—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITš—­#*šÂ€€ÿF€€€猕—Y€‰€繕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€獕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V–I\#ˆ€¬ÂÂ.€€€çËÇ€ ‰€‚ÿ.€`€€ç±È¿Ì€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&—o# €€€‚ÿ*I™' €€ ”€ ‚ÿŒRo% : D€€€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLDOMImplementationAll Superinterfaces: X™} @ P€0€äï|Ž—YJdk14doc.4.hlp€‰€‚‚ÿDOMImplementation&% £ # €€€‚ÿ*} Í ' €€ ”€ ‚ÿÐ#£  ­ (G€€‚€‚€€‚ï|Ž—YJdk14doc.4.hlp€‰€‚‚€€€€‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€€‚ÿpublic interface HTMLDOMImplementationextends DOMImplementationThe HTMLDOMImplementation interface extends the DOMImplementation interface with a method for creating an HTML document instance. See also the Document Object Model (DOM) Level 2 Specification.Since:4Í Ñ % €€ä€‚‚ÿDOM Level 2& ÷ # €€€‚ÿ*Ñ ! ' €€ ”€ ‚ÿ,÷ M ' € €€‚€‚ÿU! ¢ B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summary‰ËM +Ÿ#J—÷€€ÿ4€€€猕—Y€‰€‚ÿ€*€ÿ®€,€çU‰ãb€‰€ïÐۓYJdk14doc.2.hlp€‰€€€€€€€€€€€€‚ÿÿÿ HTMLDocumentcreateHTMLDocument(String title) Creates an HTMLDocument object with the minimal tree made of the following elements: HTML , HEAD , TITLE , and BODY .'¢ R# €€€‚ÿ £F+õ]#Š€Œ„€€ÿX€€€ï|Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.DOMImplementationÆ<R»Š#ä€x„ʀ€ï»Õ†:Jdk14doc.4.hlp€‰€ïËi)†Jdk14doc.4.hlp€‰€ï[=ÑÙJdk14doc.4.hlp€‰€‚ÿÿÿcreateDocument, createDocumentType, hasFeature)õ @$ € €€‚‚ÿ » @T»`@B#T€$„€€ÿ"€€€€‚ÿÿÿMethod DetailŸ[ @Ac –€¶€€‚€€‚‚€猕—Y€‰€€€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿcreateHTMLDocumentpublic HTMLDocument createHTMLDocument(String title)ܑ`@úAK d€#€ä€€€€€€€€€€€‚‚€€‚ÿCreates an HTMLDocument object with the minimal tree made of the following elements: HTML , HEAD , TITLE , and BODY .Parameters:§sA¡B4 8€æ€ɀ€€€€€€‚ÿtitle - The title of the document to be set as the content of the TITLE element, through a child Text node.3 úAÔB' €€ä€€‚ÿReturns:L ¡B C, (€@€ɀ€€€‚‚ÿA new HTMLDocument object.&ÔBFC# €€€‚ÿ* CpC' €€ ”€ ‚ÿ&FC–C# €€€‚ÿîypC„Eu#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï%—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT–C…F­#*šÂ€€ÿF€€€猕—Y€‰€繕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€獕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V„E7G\#ˆ€¬ÂÂ.€€€çËÇ€ ‰€‚ÿ.€`€€ç±È¿Ì€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&…F]G# €€€‚ÿ*7G‡G' €€ ”€ ‚ÿfû]GíHk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1‡GI1UÿÿÿÿÿÿÿÿcÿÿÿÿIBI$íHBI" €€€ ÿMII1Ú6­  dIÕIBHTMLElement (Common DOM API)F BIÕI& €@€€€‚ÿHTMLElement (Common DOM API)îyIÃKu#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï&—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITÕIÄL­#*šÂ€€ÿF€€€獕—Y€‰€簕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€繕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÃKvM\#ˆ€¬ÂÂ.€€€ç†lF€ ‰€‚ÿ.€`€€ç=gìÆ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ÄLœM# €€€‚ÿ*vMÆM' €€ ”€ ‚ÿ‚HœMHN: D€€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLElementAll Superinterfaces: dÆM¬NL h€0€äï}Ž—YJdk14doc.4.hlp€‰€çb–—Y€‰€‚‚ÿElement, NodeCHNïN& €:€€€‚ÿAll Known Subinterfaces: +™¬N&†’ ò„3 €äç_•—Y€‰€ç`•—Y€‰€ça•—Y€‰€çb•—Y€‰€玕—Y€‰€煕—Y€‰€熕—Y€‰€燕—Y€‰€牕—Y€‰€犕—Y€‰€狕—Y€‰€簕—Y€‰€籕—Y€‰€粕—Y€‰€糕—Y€‰€箕—Y€‰€絕—Y€‰€綕—Y€‰€緕—Y€‰€羕—Y€‰€çïN&†BI䕗Y€‰€çە—Y€‰€çܕ—Y€‰€çݕ—Y€‰€çޕ—Y€‰€çߕ—Y€‰€çà•—Y€‰€çᕗY€‰€ç╗Y€‰€ç㕗Y€‰€ç–—Y€‰€ç–—Y€‰€ç–—Y€‰€ç–—Y€‰€ç –—Y€‰€ç –—Y€‰€ç –—Y€‰€ç –—Y€‰€ç –—Y€‰€ç–—Y€‰€ç:–—Y€‰€ç1–—Y€‰€ç2–—Y€‰€ç3–—Y€‰€ç4–—Y€‰€ç5–—Y€‰€ç6–—Y€‰€ç7–—Y€‰€ç8–—Y€‰€ç9–—Y€‰€çe–—Y€‰€ç\–—Y€‰€‚ÿHTMLAnchorElement, HTMLAppletElement, HTMLAreaElement, HTMLBaseElement, HTMLBaseFontElement, HTMLBodyElement, HTMLBRElement, HTMLButtonElement, HTMLDirectoryElement, HTMLDivElement, HTMLDListElement, HTMLFieldSetElement, HTMLFontElement, HTMLFormElement, HTMLFrameElement, HTMLFrameSetElement, HTMLHeadElement, HTMLHeadingElement, HTMLHRElement, HTMLHtmlElement, HTMLIFrameElement, HTMLImageElement, HTMLInputElement, HTMLIsIndexElement, HTMLLabelElement, HTMLLegendElement, HTMLLIElement, HTMLLinkElement, HTMLMapElement, HTMLMenuElement, HTMLMetaElement, HTMLModElement, HTMLObjectElement, HTMLOListElement, HTMLOptGroupElement, HTMLOptionElement, HTMLParagraphElement, HTMLParamElement, HTMLPreElement, HTMLQuoteElement, HTMLScriptElement, HTMLSelectElement, HTMLStyleElement, HTMLTableCaptionElement, HTMLTableCellElement, HTMLTableColElement, HTMLTableElement, HTMLTableRowElement, HTMLTableSectionElement, HTMLTextAreaElement, HTMLTitleElement, HTMLUListElement'ïNM†$ €€ä€‚ÿ&&†s†# €€€‚ÿ*M††' €€ ”€ ‚ÿ”2s†1‰b ’€e€€‚€‚€€‚ï}Ž—YJdk14doc.4.hlp€‰€‚‚€€€€€€‚ÿpublic interface HTMLElementextends ElementAll HTML element interfaces derive from this class. Elements that only expose the HTML core attributes are represented by the base HTMLElement interface. These elements are as follows: HEAD special: SUB, SUP, SPAN, BDO font: TT, I, B, U, S, STRIKE, BIG, SMALL phrase: EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ACRONYM, ABBR list: DD, DT NOFRAMES, NOSCRIPT ADDRESS, CENTER The style attribute of an HTML element is accessible through the ElementCSSInlineStyle interface which is defined in the . ºJ†ë‰p °€”€€‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿSee also the Document Object Model (DOM) Level 2 Specification.*1‰Š' €€ ”€ ‚ÿ,ë‰AŠ' € €€‚€‚ÿTŠ•ŠB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'AŠŒŠ# €€€‚ÿ ƒ8•Š?‹K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇŒŠÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'?‹-# €€€‚ÿ U‚B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryæS-hŽ“#ö€Š÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç=$p€‰€€‚ÿÿÿ StringgetClassName() The class attribute of the element.†‚‚”#ö€ ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç«È»Ì€‰€€‚ÿÿÿ StringgetDir() Specifies the base direction of directionally neutral text and the directionality of tables.ÕBhŽcÀ“#ö€„÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €‚cÀBIçÖ‡€‰€€‚ÿÿÿ StringgetId() The element's identifier.àM‚CÁ“#ö€š÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç+þ§€‰€€‚ÿÿÿ StringgetLang() Language code defined in RFC 1766.ÜIcÀ“#ö€’÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €犥LE€‰€€‚ÿÿÿ StringgetTitle() The element's advisory title.Ö@CÁõ–#ü€€÷€€ÿ"€€€€‚ÿ€€ÿr€€çà ²1€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetClassName(String className) Ê4¿Ö#ü€h÷€€ÿ"€€€€‚ÿ€€ÿr€€ç.…Þò€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetDir(String dir) È2õ‡Ė#ü€d÷€€ÿ"€€€€‚ÿ€€ÿr€€ç` BC€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetId(String id) Ì6¿ÃSÅ–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ç/‘­#€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetLang(String lang) Î8‡Ä!Æ–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€çI­£€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetTitle(String title) 'SÅHÆ# €€€‚ÿ ™<!ÆáÆ]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYHÆKÊ#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'áÆrÊ# €€€‚ÿ „9KÊöÊK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆrÊÎ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)öÊBÎ$ € €€‚‚ÿ TΖÎB#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail‚+BÎÏW ~€V€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetIdpublic String getId()oJ–·Ï% €”€ä€‚‚ÿThe element's identifier. See the id attribute definition in HTML 4.0.&Ï­Ï# €€€‚ÿ*‡Ï×Ï' €€ ”€ ‚ÿ•6­Ïx_ Ž€l€€‚€‚€×ÏxBI€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetIdpublic void setId(String id)*×Ï¢' €€ ”€ ‚ÿŽ3x0[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTitlepublic String getTitle()vQ¢Š% €¢€ä€‚‚ÿThe element's advisory title. See the title attribute definition in HTML 4.0.&0Ì# €€€‚ÿ*Šö' €€ ”€ ‚ÿž?Ì”_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTitlepublic void setTitle(String title)*öŸ' €€ ”€ ‚ÿŒ1”J[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetLangpublic String getLang()zUŸÄ% €ª€ä€‚‚ÿLanguage code defined in RFC 1766. See the lang attribute definition in HTML 4.0.&Jê# €€€‚ÿ*Ä' €€ ”€ ‚ÿ›<ê¯_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetLangpublic void setLang(String lang)*Ù' €€ ”€ ‚ÿŠ/¯c[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetDirpublic String getDir()ŽŽÙ& €€ä€‚‚ÿSpecifies the base direction of directionally neutral text and the directionality of tables. See the dir attribute definition in HTML 4.0.&c=# €€€‚ÿ*g' €€ ”€ ‚ÿ˜9=ÿ_ Ž€r€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetDirpublic void setDir(String dir)*g)' €€ ”€ ‚ÿ–;ÿ¿[ †€v€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetClassNamepublic String getClassName()âŒ)¡& €y€ä€‚‚ÿThe class attribute of the element. This attribute has been renamed due to conflicts with the "class" keyword exposed by many languages. See the class attribute definition in HTML 4.0.&¿Ç# €€€‚ÿ*¡ñ' €€ ”€ ‚ÿªKÇ› _ Ž€–€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetClassNamepublic void setClassName(String className)*ñÅ ' €€ ”€ ‚ÿ&› ë # €€€‚ÿîyÅ Ù u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï&—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITë Ú ­#*šÂ€€ÿF€€€獕—Y€‰€簕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€繕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÙ Œ \#ˆ€¬ÂÂ.€€€ç†lF€ ‰€‚ÿ.€`€€ç=gìÆ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Ú ² # €€€‚ÿ*Œ Ü ' €€ ”€ ‚ÿfû² Bk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1Ü s1Uÿÿÿÿÿÿÿÿeÿÿÿÿs—$B—" €€€ ÿU$s @1å̃ü!f @Z@HTMLFieldSetElement (Common DOM API)— @—N(—Z@& €P€€€‚ÿHTMLFieldSetElement (Common DOM API)îy @HBu#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï'—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITZ@IC­#*šÂ€€ÿF€€€繕—Y€‰€籕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€簕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VHBûC\#ˆ€¬ÂÂ.€€€竅lž€ ‰€‚ÿ.€`€€ç,»4e€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&IC!D# €€€‚ÿ*ûCKD' €€ ”€ ‚ÿŠP!DÕD: D€ €€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLFieldSetElementAll Superinterfaces: )KDVEX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&ÕD|E# €€€‚ÿ*VEŠE' €€ ”€ ‚ÿxì|EGŒ æ€Ù€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLFieldSetElementextends HTMLElementOrganizes form controls into logical groups. See the FIELDSET element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*ŠEHG' €€ ”€ ‚ÿ,GtG' € €€‚€‚ÿTHGÈGB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'tGïG# €€€‚ÿ ƒ8ÈGrHK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇïG9JÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'rH`J# €€€‚ÿ U9JµJB#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summaryîg`J£K‡#ހΥ߀€ÿ4€€€粕—Y€‰€‚ÿ€0€ÿB€2€ç‘Pm€‰€€€€‚ÿÿÿ HTMLFormElementgetForm() Returns the FORM element containing this control.'µJÊK# €€€‚ÿ E£KZLK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆÊK‹M©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'ZL²M# €€€‚ÿ ™<‹MKN]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY²MÁ#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïKNÁ—ÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'KNè# €€€‚ÿ „9Ál‚K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æè…]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)l‚ž…$ € €€‚‚ÿ T… †B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail}8ž…‰†E Z€p€€‚€€‚‚€粕—Y€‰€€€€‚ÿgetFormpublic HTMLFormElement getForm()¬{ †5‡1 2€ö€ä€€€€€‚‚ÿReturns the FORM element containing this control. Returns null if this control is not within the context of a form.&‰†[‡# €€€‚ÿ*5‡…‡' €€ ”€ ‚ÿ&[‡«‡# €€€‚ÿîy…‡™‰u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï'—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT«‡šŠ­#*šÂ€€ÿF€€€繕—Y€‰€籕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€簕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V™‰L‹\#ˆ€¬ÂÂ.€€€竅lž€ ‰€‚ÿ.€`€€ç,»4e€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&šŠr‹# €€€‚ÿ*L‹œ‹' €€ ”€ ‚ÿfûr‹k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1œ‹31Uÿÿÿÿÿÿÿÿgÿÿÿÿ3W$W" €€€ ÿQ 3š1¹'  ­"hšò®CHTMLFontElement (Common DOM API)J$Wò& €H€€€‚ÿHTMLFontElement (Common DOM API)îyšàu#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï(—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITòíÀ­#*šÂÂàíÀW€€ÿF€€€簕—Y€‰€粕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€籕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VàŸÁ\#ˆ€¬ÂÂ.€€€çnf/ª€ ‰€‚ÿ.€`€€çõxžS€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&íÀÅÁ# €€€‚ÿ*ŸÁïÁ' €€ ”€ ‚ÿ†LÅÁuÂ: D€˜€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLFontElementAll Superinterfaces: )ïÁöÂX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&uÂÃ# €€€‚ÿ*öÂFÃ' €€ ”€ ‚ÿõÃÇÄŒ æ€ë€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLFontElementextends HTMLElementLocal change to font. See the FONT element definition in HTML 4.0. This element is deprecated in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*FÃñÄ' €€ ”€ ‚ÿ,ÇÄÅ' € €€‚€‚ÿTñÄqÅB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'ŘÅ# €€€‚ÿ ƒ8qÅÆK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeǘÅâÇÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'Æ È# €€€‚ÿ UâÇ^ÈB#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÊ7 È(É“#ö€n÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €獻Ši€‰€€‚ÿÿÿ StringgetColor() Font color.Ó@^ÈûÉ“#ö€€÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çéŠÀ€‰€€‚ÿÿÿ StringgetFace() Font face identifier.È5(ÉÃÊ“#ö€j÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çS^14€‰€€‚ÿÿÿ StringgetSize() Font size.Î8ûɑ˖#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€çpÑ¥5€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetColor(String color) Ì6ÃÊ]Ì–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ç‚8‡€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetFace(String face) Ì6‘Ë)Í–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çŸwŽ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetSize(String size) ']ÌPÍ# €€€‚ÿ E)ÍàÍK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆPÍÏ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'àÍ8Ï# €€€‚ÿ ™<ÏÑÏ]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY8ÏG#ðƒ³„փ€ïÑÏGWYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'ÑÏn# €€€‚ÿ „9GòK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æn]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)ò>$ € €€‚‚ÿ T’B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailˆ1>W ~€b€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetColorpublic String getColor()Ži’š% €Ò€ä€‚‚ÿFont color. See the color attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&Î# €€€‚ÿ*šø' €€ ”€ ‚ÿž?Ζ _ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetColorpublic void setColor(String color)*øÀ ' €€ ”€ ‚ÿŒ1– L [ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetFacepublic String getFace()—rÀ ã % €ä€ä€‚‚ÿFont face identifier. See the face attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&L  # €€€‚ÿ*ã 3 ' €€ ”€ ‚ÿ›< Î _ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetFacepublic void setFace(String face)*3 ø ' €€ ”€ ‚ÿŒ1Î „ [ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetSizepublic String getSize()Œgø  % €Î€ä€‚‚ÿFont size. See the size attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&„ 6 # €€€‚ÿ* ` ' €€ ”€ ‚ÿ›<6 û _ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetSizepublic void setSize(String size)*` %' €€ ”€ ‚ÿ&û K# €€€‚ÿîy%E@u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï(—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree KE@WDeprecated Index Help Common DOM APITKFA­#*šÂ€€ÿF€€€簕—Y€‰€粕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€籕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VE@øA\#ˆ€¬ÂÂ.€€€çnf/ª€ ‰€‚ÿ.€`€€çõxžS€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&FAB# €€€‚ÿ*øAHB' €€ ”€ ‚ÿfûB®Ck €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1HBßC1UÿÿÿÿÿÿÿÿiÿÿÿÿßCD$®CD" €€€ ÿQ ßCTD1ù;ü!ä$jTDžDŽHTMLFormElement (Common DOM API)J$DžD& €H€€€‚ÿHTMLFormElement (Common DOM API)îyTDŒFu#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï)—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITžDG­#*šÂ€€ÿF€€€籕—Y€‰€糕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€粕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VŒF?H\#ˆ€¬ÂÂ.€€€ç1Gòµ€ ‰€‚ÿ.€`€€çŸ6B€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&GeH# €€€‚ÿ*?HH' €€ ”€ ‚ÿ†LeHI: D€˜€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLFormElementAll Superinterfaces: )H–IX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&IŒI# €€€‚ÿ*–IæI' €€ ”€ ‚ÿpŒIèK’ ò€á€€‚€‚€€‚繕—Y€‰€‚‚€€‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLFormElementextends HTMLElementThe FORM element encompasses behavior similar to a collection and an element. It provides direct access to the contained input elements as well as the attributes of the form element. See the FORM element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*æIL' €€ ”€ ‚ÿ,èK>L' € €€‚€‚ÿTL’LB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'>L¹L# €€€‚ÿ ƒ8’L­"Á&l[ŠC HTMLFrameElement (Common DOM API)K% Š& €J€€€‚ÿHTMLFrameElement (Common DOM API)îy[ Au#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—YŠ A €‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï*—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITŠ¡B­#*šÂ€€ÿF€€€粕—Y€‰€箕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€糕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V ASC\#ˆ€¬ÂÂ.€€€çô'µÁ€ ‰€‚ÿ.€`€€ç‡ôq0€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&¡ByC# €€€‚ÿ*SC£C' €€ ”€ ‚ÿ‡MyC*D: D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLFrameElementAll Superinterfaces: )£C«DX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&*DÑD# €€€‚ÿ*«DûD' €€ ”€ ‚ÿUÉÑDPFŒ 怓€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLFrameElementextends HTMLElementCreate a frame. See the FRAME element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*ûDzF' €€ ”€ ‚ÿ,PFŠF' € €€‚€‚ÿTzFúFB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'ŠF!G# €€€‚ÿ ƒ8úF€GK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ!GkIÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'€G’I# €€€‚ÿ UkIçIB#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summary-“’IKš#'÷€€ÿX€€€ïxŽ—YJdk14doc.4.hlp€‰€‚ÿ€"€ÿB€$€çè Y’€‰€€€€‚ÿÿÿ DocumentgetContentDocument() The document this frame contains, if there is any and it is available, or null otherwise.ÛHçIïK“#ö€÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çù÷ñ¿€‰€€‚ÿÿÿ StringgetFrameBorder() Request frame borders.üiKëL“#ö€Ò÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç‘Ežq€‰€€‚ÿÿÿ StringgetLongDesc() URI designating a long description of this image or frame.åRïKÐM“#ö€€÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çaÚ²?€‰€€‚ÿÿÿ StringgetMarginHeight() Frame margin height, in pixels.ãPëL³N“#ö€ ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç4Úäl€‰€€‚ÿÿÿ StringgetMarginWidth() Frame margin width, in pixels.ö]ÐM©O™#º÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €çße³€‰€€€€‚ÿÿÿ StringgetName() The frame name (object of the target attribute).ÐX³N…€x#À€°÷€€ÿ"€€€€‚ÿ€€ÿ©O…€ 6€€ç—%€‰€€‚ÿÿÿ booleangetNoResize() When true, forbid user from resizing frame.ûh©O€“#ö€Ð÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çµų€‰€€‚ÿÿÿ StringgetScrolling() Specify whether or not the frame should have scrollbars.êW…€j‚“#ö€®÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çJ9 €‰€€‚ÿÿÿ StringgetSrc() A URI designating the initial frame contents.ÚD€Dƒ–#ü€ˆ÷€€ÿ"€€€€‚ÿ€€ÿr€€ç|$]š€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetFrameBorder(String frameBorder) Ô>j‚„–#ü€|÷€€ÿ"€€€€‚ÿ€€ÿr€€çŒBw€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetLongDesc(String longDesc) ÜFDƒô„–#ü€Œ÷€€ÿ"€€€€‚ÿ€€ÿr€€çÌB~ €‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetMarginHeight(String marginHeight) ÚD„΅–#ü€ˆ÷€€ÿ"€€€€‚ÿ€€ÿr€€ç÷ò>ـ‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetMarginWidth(String marginWidth) Ì6ô„š†–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çJèg[€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetName(String name) ³;΅M‡x#À€v÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç8©š€‰€€‚ÿÿÿ voidsetNoResize(boolean noResize) Ö@š†#ˆ–#ü€€÷€€ÿ"€€€€‚ÿ€€ÿr€€çXöŸB€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetScrolling(String scrolling) Ê4M‡íˆ–#ü€h÷€€ÿ"€€€€‚ÿ€€ÿr€€ç_Û§€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetSrc(String src) '#ˆ‰# €€€‚ÿ E툀‰K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ‰Պ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'€‰üŠ# €€€‚ÿ ™<Պ•‹]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYüŠÿŽ#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'•‹&# €€€‚ÿ „9ÿŽªK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ&ÙÂ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™ªÙ €‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)ªÃ$ € €€‚‚ÿ TÙÂVÃB#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail”=ÃêÃW ~€z€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetFrameBorderpublic String getFrameBorder()uPVÃ_Ä% € €ä€‚‚ÿRequest frame borders. See the frameborder attribute definition in HTML 4.0.&êÃ…Ä# €€€‚ÿ*_įÄ' €€ ”€ ‚ÿ°Q…Ä_Å_ Ž€¢€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetFrameBorderpublic void setFrameBorder(String frameBorder)*¯Ä‰Å' €€ ”€ ‚ÿ”9_ÅÆ[ †€r€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetLongDescpublic String getLongDesc()–q‰Å³Æ% €â€ä€‚‚ÿURI designating a long description of this image or frame. See the longdesc attribute definition in HTML 4.0.&ÆÙÆ# €€€‚ÿ*³ÆÇ' €€ ”€ ‚ÿ§HÙÆªÇ_ Ž€€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetLongDescpublic void setLongDesc(String longDesc)*ÇÔÇ' €€ ”€ ‚ÿœAªÇpÈ[ †€‚€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetMarginHeightpublic String getMarginHeight()ZÔÇïÈ% €Ž€ä€‚‚ÿFrame margin height, in pixels. See the marginheight attribute definition in HTML 4.0.&pÈÉ# €€€‚ÿ*ïÈ?É' €€ ”€ ‚ÿ³TÉòÉ_ Ž€š€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetMarginHeightpublic void setMarginHeight(String marginHeight)*?ÉÊ' €€ ”€ ‚ÿš?òɶÊ[ †€~€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetMarginWidthpublic String getMarginWidth()}XÊ3Ë% €°€ä€‚‚ÿFrame margin width, in pixels. See the marginwidth attribute definition in HTML 4.0.&¶ÊYË# €€€‚ÿ*3˃Ë' €€ ”€ ‚ÿ°QYË3Ì_ Ž€¢€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetMarginWidthpublic void setMarginWidth(String marginWidth)*ƒË]Ì' €€ ”€ ‚ÿŒ13ÌéÌ[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetNamepublic String getName()e]ÌyÍ+ &€Ê€ä€€€‚‚ÿThe frame name (object of the target attribute). See the name attribute definition in HTML 4.0.&éÌŸÍ# €€€‚ÿ*yÍÉÍ' €€ ”€ ‚ÿ›<ŸÍdÎ_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetNamepublic void setName(String name)*ÉÍŽÎ' €€ ”€ ‚ÿs6dÎÏ= J€l€€‚€‚€€‚‚€€€€‚ÿgetNoResizepublic boolean getNoResize()‡bŽÎˆÏ% €Ä€ä€‚‚ÿWhen true, forbid user from resizing frame. See the noresize attribute definition in HTML 4.0.&Ï®Ï# €€€‚ÿ*ˆÏØÏ' €€ ”€ ‚ÿ†E®ÏjA R€Š€€‚€‚€ØÏj €‚‚€€€€‚€‚ÿsetNoResizepublic void setNoResize(boolean noResize)*ØÏ”' €€ ”€ ‚ÿ–;j*[ †€v€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetScrollingpublic String getScrolling()•p”¿% €à€ä€‚‚ÿSpecify whether or not the frame should have scrollbars. See the scrolling attribute definition in HTML 4.0.&*å# €€€‚ÿ*¿' €€ ”€ ‚ÿªKå¹_ Ž€–€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetScrollingpublic void setScrolling(String scrolling)*ã' €€ ”€ ‚ÿŠ/¹m[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetSrcpublic String getSrc()„_ãñ% €Ÿ€ä€‚‚ÿA URI designating the initial frame contents. See the src attribute definition in HTML 4.0.&m# €€€‚ÿ*ñA' €€ ”€ ‚ÿ˜9Ù_ Ž€r€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetSrcpublic void setSrc(String src)*A' €€ ”€ ‚ÿ€IÙ§[ †€’€€‚€‚€€‚‚€ïxŽ—YJdk14doc.4.hlp€‰€€€€‚ÿgetContentDocumentpublic Document getContentDocument()šhA2 4€Ð€ä€€€‚‚€€‚ÿThe document this frame contains, if there is any and it is available, or null otherwise.Since:5§v& €€ɀ€‚‚ÿDOM Level 2&Aœ# €€€‚ÿ*vÆ' €€ ”€ ‚ÿ&œì# €€€‚ÿîyÆÚu#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï*—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITìÛ ­#*šÂ€€ÿF€€€粕—Y€‰€箕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€糕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vڍ \#ˆ€¬ÂÂ.€€€çô'µÁ€ ‰€‚ÿ.€`€€ç‡ôq0€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Û ³ # €€€‚ÿ* Ý ' €€ ”€ ‚ÿfû³ C k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1Ý t 1Uÿÿÿÿÿÿÿÿmÿÿÿÿt ˜ $C ˜ " €€€ ÿU$t í 1í"ä$ð'ní ; .HTMLFrameSetElement (Common DOM API)N(˜ ; & €P€€€‚ÿHTMLFrameSetElement (Common DOM API)îyí )u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï+—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT; 6@­#*šÂ€€ÿF€€€糕—Y€‰€絕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€箕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAM)6@˜ ES NO FRAMES All Classes²V)è@\#ˆ€¬ÂÂ.€€€ç·x̀ ‰€‚ÿ.€`€€çP²Û€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&6@A# €€€‚ÿ*è@8A' €€ ”€ ‚ÿŠPAÂA: D€ €€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLFrameSetElementAll Superinterfaces: )8ACBX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&ÂAiB# €€€‚ÿ*CB“B' €€ ”€ ‚ÿdØiB÷CŒ 怱€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLFrameSetElementextends HTMLElementCreate a grid of frames. See the FRAMESET element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*“B!D' €€ ”€ ‚ÿ,÷CMD' € €€‚€‚ÿT!D¡DB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'MDÈD# €€€‚ÿ ƒ8¡DKEK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇÈDGÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'KE9G# €€€‚ÿ UGŽGB#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summaryî[9G|H“#ö€¶÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çš6¬€‰€€‚ÿÿÿ StringgetCols() The number of columns of frames in the frameset.ëXŽGgI“#ö€°÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çî³/€‰€€‚ÿÿÿ StringgetRows() The number of rows of frames in the frameset.Ì6|H3J–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çÓü ’€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCols(String cols) Ì6gIÿJ–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€癙¢"€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetRows(String rows) '3J&K# €€€‚ÿ EÿJ¶KK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ&KçL©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'¶KM# €€€‚ÿ ™<çL§M]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYM#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAtt§M˜ ributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'§MD# €€€‚ÿ „9ȁK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆDë„]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)ȁ…$ € €€‚‚ÿ Të„h…B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail†/…î…W ~€^€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetColspublic String getCols()ˆch…v†% €Æ€ä€‚‚ÿThe number of columns of frames in the frameset. See the cols attribute definition in HTML 4.0.&î…œ†# €€€‚ÿ*v†Ɔ' €€ ”€ ‚ÿ›<œ†a‡_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetColspublic void setCols(String cols)*Ɔ‹‡' €€ ”€ ‚ÿŒ1a‡ˆ[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetRowspublic String getRows()…`‹‡œˆ% €À€ä€‚‚ÿThe number of rows of frames in the frameset. See the rows attribute definition in HTML 4.0.&ˆˆ# €€€‚ÿ*œˆìˆ' €€ ”€ ‚ÿ›<ˆ‡‰_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetRowspublic void setRows(String rows)*숱‰' €€ ”€ ‚ÿ&‡‰׉# €€€‚ÿîy±‰ŋu#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿL€R€ï+—YJdk14doc.4.hlp€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT׉ƌ­#*šÂ€€ÿF€€€糕—Y€‰€絕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€箕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vŋx\#ˆ€¬ÂÂ.€€€ç·x̀ ‰€‚ÿ.€`€€çP²Û€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ƌž# €€€‚ÿ*xȍ' €€ ”€ ‚ÿfûž.k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ȍ_1Uÿÿÿÿÿÿÿÿoÿÿÿÿ_ƒ$.ƒ" €€€ ÿQ _ԏ1–Á&(pԏ*ÀHTMLHeadElement (Common DOM API)J$ƒ*À& €H€€€‚ÿHTMLHԏ*ÀƒeadElement (Common DOM API)ÜyԏÂc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€琖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT*Àí#*šÂ€€ÿF€€€箕—Y€‰€綕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€絕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V¹Ã\#ˆ€¬ÂÂ.€€€çzé:ـ ‰€‚ÿ.€`€€çpE € ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ÃßÃ# €€€‚ÿ*¹Ã Ä' €€ ”€ ‚ÿ†LßÏÄ: D€˜€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLHeadElementAll Superinterfaces: ) ÄÅX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&Ä6Å# €€€‚ÿ*Å`Å' €€ ”€ ‚ÿ^Ò6ÅŸÆŒ 急€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLHeadElementextends HTMLElementDocument head information. See the HEAD element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*`ÅèÆ' €€ ”€ ‚ÿ,ŸÆÇ' € €€‚€‚ÿTèÆhÇB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'ǏÇ# €€€‚ÿ ƒ8hÇÈK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeǏÇÙÉÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'ÈÊ# €€€‚ÿ UÙÉUÊB#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryäQÊ9Ë“#ö€¢÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç·e€‰€€‚ÿÿÿ StringgetProfile() URI designating a metadata profile.Ò<UÊ Ì–#ü€x÷€€ÿ"€€€€‚ÿ€€ÿr€€çú@+€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetProfile(String profile) '9Ë2Ì# €€€‚ÿ E ÌÂÌK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ2ÌóÍ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'ÂÌÎ# €€€‚ÿ ™<óͳÎ]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYÎ)#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4³Î)ƒ.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'³ÎP# €€€‚ÿ „9)ÔK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆP÷]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)Ô $ € €€‚‚ÿ T÷tB#T€$„€€ÿ"€€€€‚ÿÿÿMethod DetailŒ5 W ~€j€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetProfilepublic String getProfile()~Yt~% €²€ä€‚‚ÿURI designating a metadata profile. See the profile attribute definition in HTML 4.0.&€# €€€‚ÿ*~Î' €€ ”€ ‚ÿ€E€r_ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetProfilepublic void setProfile(String profile)*Μ' €€ ”€ ‚ÿ&rÂ# €€€‚ÿÜyœž c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€琖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITŸ ­#*šÂ€€ÿF€€€箕—Y€‰€綕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€絕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vž Q \#ˆ€¬ÂÂ.€€€çzé:ـ ‰€‚ÿ.€`€€çpE € ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Ÿ w # €€€‚ÿ*Q ¡ ' €€ ”€ ‚ÿfûw k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1¡ 81Uÿÿÿÿÿÿÿÿqÿÿÿÿ8\$\" €€€ ÿT#8°1ð'4)r°ýHTMLHeadingElement (Common DOM API)M'\ý& €N€€€‚ÿHTMLHeadingElement (Common DOM API)Üy°å@c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€燖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk1ýå@\4doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITýæA­#*šÂ€€ÿF€€€絕—Y€‰€緕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€綕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vå@˜B\#ˆ€¬ÂÂ.€€€ç=Êýä€ ‰€‚ÿ.€`€€çâ-¯û€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&æAŸB# €€€‚ÿ*˜BèB' €€ ”€ ‚ÿ‰OŸBqC: D€ž€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLHeadingElementAll Superinterfaces: )èBòCX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&qCD# €€€‚ÿ*òCBD' €€ ”€ ‚ÿo×D±E˜ þ€¯€€‚€‚€€‚繕—Y€‰€‚‚€€€€‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLHeadingElementextends HTMLElementFor the H1 to H6 elements. See the H1 element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*BDÛE' €€ ”€ ‚ÿ,±EF' € €€‚€‚ÿTÛE[FB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'F‚F# €€€‚ÿ ƒ8[FGK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ‚FÌHÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'GóH# €€€‚ÿ UÌHHIB#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÙFóH!J“#ö€Œ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çzLì €€‚ÿÿÿ StringgetAlign() Horizontal text alignment.Î8HIïJ–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€çÔG€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) '!JK# €€€‚ÿ EïJŠKK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆK×L©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'ŠKþL# €€€‚ÿ ™<×L—M]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYþL #ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, ge—M \tElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'—M4# €€€‚ÿ „9 žK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ4ۄ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)ž…$ € €€‚‚ÿ TۄX…B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailˆ1…à…W ~€b€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()xX…}†% €ð€ä€‚‚ÿHorizontal text alignment. See the align attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&à…£†# €€€‚ÿ*}†͆' €€ ”€ ‚ÿž?£†k‡_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*͆•‡' €€ ”€ ‚ÿ&k‡»‡# €€€‚ÿÜy•‡—‰c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€燖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT»‡˜Š­#*šÂ€€ÿF€€€絕—Y€‰€緕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€綕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V—‰J‹\#ˆ€¬ÂÂ.€€€ç=Êýä€ ‰€‚ÿ.€`€€çâ-¯û€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&˜Šp‹# €€€‚ÿ*J‹š‹' €€ ”€ ‚ÿfûp‹k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1š‹11Uÿÿÿÿÿÿÿÿsÿÿÿÿ1U$U" €€€ ÿO1€1”*(ƒ*t€ì¶GHTMLHRElement (Common DOM API)H"Uì& €D€€€‚ÿHTMLHRElement (Common DOM API)Üy€ȏc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€爖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITìÕÀ­#*šÂ€€ÿF€€ÈÕÀU€綕—Y€‰€羕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€緕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vȏ‡Á\#ˆ€¬ÂÂ.€€€ç«Àð€ ‰€‚ÿ.€`€€ç«ëê€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ÕÀ­Á# €€€‚ÿ*‡Á×Á' €€ ”€ ‚ÿ„J­Á[Â: D€”€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLHRElementAll Superinterfaces: )×ÁÜÂX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&[ÂÃ# €€€‚ÿ*ÜÂ,Ã' €€ ”€ ‚ÿYÍÃ…ÄŒ 怛€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLHRElementextends HTMLElementCreate a horizontal rule. See the HR element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*,ïÄ' €€ ”€ ‚ÿ,…ÄÛÄ' € €€‚€‚ÿT¯Ä/ÅB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'ÛÄVÅ# €€€‚ÿ ƒ8/ÅÙÅK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇVÅ ÇÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'ÙÅÇÇ# €€€‚ÿ U ÇÈB#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÚGÇÇöÈ“#ö€Ž÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç-„d€‰€€‚ÿÿÿ StringgetAlign() Align the rule on the page.‰ÈøÉy#À€÷€€ÿ"€€€€‚ÿ€€ÿ6€€猟Žj€‰€€‚ÿÿÿ booleangetNoShade() Indicates to the user agent that there should be no shading in the rendering of this element.ÕBöÈÍÊ“#ö€„÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çé}O:€‰€€‚ÿÿÿ StringgetSize() The height of the rule.ÕBøÉ¢Ë“#ö€„÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç®^ª€‰€€‚ÿÿÿ StringgetWidth() The width of the rule.Î8ÍÊpÌ–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€ç£^€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) ±9¢Ë!Íx#À€r÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç6Núð€‰€€‚ÿÿÿ voidsetNoShade(boolean noShade) Ì6pÌíÍ–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çÔÏo»€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetSize(String size) Î8!ͻΖ#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€çQ[؀‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetWidth(String width) 'íÍâÎ# €€€‚ÿ E»ÎrÏK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆâί©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€çrϯU/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'rÏÖ# €€€‚ÿ ™<¯o]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYÖÙ#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'o# €€€‚ÿ „9Ù„K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Ƨ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)„Ð$ € €€‚‚ÿ T§$ B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailˆ1Ь W ~€b€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()žy$ J % €ò€ä€‚‚ÿAlign the rule on the page. See the align attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&¬ p # €€€‚ÿ*J š ' €€ ”€ ‚ÿž?p 8 _ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*š b ' €€ ”€ ‚ÿq48 Ó = J€h€€‚€‚€€‚‚€€€€‚ÿgetNoShadepublic boolean getNoShade()ãœb ¶ & €{€ä€‚‚ÿIndicates to the user agent that there should be no shading in the rendering of this element. See the noshade attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&Ó Ü # €€€‚ÿ*¶  ' €€ ”€ ‚ÿƒBÜ ‰ A R€„€€‚€‚€€‚‚€€€€‚€‚ÿsetNoShadepublic void setNoShade(boolean noShade)* ³ ' €€ ”€ ‚ÿŒ1‰ ?[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetSizepublic String getSize()™t³ Ø% €è€ä€‚‚ÿThe height of the rule. See the size attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&?þ# €€€‚ÿ*Ø(' €€ ”€ ‚ÿ›<þÃ_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetSizepublic void setSize(String size)*( @' €€ ”€ ‚ÿà @UŽ3Ú@[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetWidthpublic String getWidth()™t @3A% €è€ä€‚‚ÿThe width of the rule. See the width attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&š@YA# €€€‚ÿ*3AƒA' €€ ”€ ‚ÿž?YA!B_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetWidthpublic void setWidth(String width)*ƒAKB' €€ ”€ ‚ÿ&!BqB# €€€‚ÿÜyKBMDc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€爖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITqBNE­#*šÂ€€ÿF€€€綕—Y€‰€羕—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€緕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VMDF\#ˆ€¬ÂÂ.€€€ç«Àð€ ‰€‚ÿ.€`€€ç«ëê€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&NE&F# €€€‚ÿ*FPF' €€ ”€ ‚ÿfû&F¶Gk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1PFçG1UÿÿÿÿÿÿÿÿuÿÿÿÿçG H$¶G H" €€€ ÿQ çG\H1R4)w‚+v\HŠHêÆHTMLHtmlElement (Common DOM API)J$ HŠH& €H€€€‚ÿHTMLHtmlElement (Common DOM API)Üy\H‚Jc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€牖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITŠHƒK­#*šÂ€€ÿF€€€緕—Y€‰€ç䕗Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€羕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V‚J5L\#ˆ€¬ÂÂ.€€€ç˃ü€ ‰€‚ÿ.€`€€çt©‚Ø€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ƒK[L# €€€‚ÿ*5L…L' €€ ”€ ‚ÿ†L[L M: D€˜€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLHtmlElementAll Superinterfaces: )…LŒMX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node& M²M# €€€‚ÿ*ŒMÜM' €€ ”€ ‚ÿ]ѲM9OŒ 怣€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLHtmlElementextends HTMLElementRoot of an HTML document. See the HTML element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*ÜMcO' €€ ”€ ‚ÿ,9OO' € €€‚€‚ÿTcO €B#T€$„€€ÿ"€€€€‚ÿÿÿField SummaryO € H'O3€# €€€‚ÿ ƒ8 €¶€K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ3€}‚Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'¶€€‚# €€€‚ÿ U}‚ù‚B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summaryî[€‚烓#ö€¶÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç»Uk€‰€€‚ÿÿÿ StringgetVersion() Version information about the document's DTD.Ò<ù‚¹„–#ü€x÷€€ÿ"€€€€‚ÿ€€ÿr€€çþÖ҆€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetVersion(String version) 'çƒà„# €€€‚ÿ E¹„p…K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆà„¡†©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'p…Ȇ# €€€‚ÿ ™<¡†a‡]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYȆˊ#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'a‡òŠ# €€€‚ÿ „9ˊv‹K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆòŠ™Ž]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)v‹Ž$ € €€‚‚ÿ T™ŽB#T€$„€€ÿ"€€€€‚ÿÿÿMethod DetailŒ5Ž¢W ~€j€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetVersionpublic String getVersion()³aÀ& €€ä€‚‚ÿVersion information about the document's DTD. See the v¢aÀ Hersion attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&¢‡À# €€€‚ÿ*aÀ±À' €€ ”€ ‚ÿ€E‡ÀUÁ_ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetVersionpublic void setVersion(String version)*±ÀÁ' €€ ”€ ‚ÿ&UÁ¥Á# €€€‚ÿÜyÁÃc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€牖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT¥Á‚Ä­#*šÂ€€ÿF€€€緕—Y€‰€ç䕗Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€羕—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÃ4Å\#ˆ€¬ÂÂ.€€€ç˃ü€ ‰€‚ÿ.€`€€çt©‚Ø€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&‚ÄZÅ# €€€‚ÿ*4Å„Å' €€ ”€ ‚ÿfûZÅêÆk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1„ÅÇ1UÿÿÿÿÿÿÿÿwÿÿÿÿÇ?Ç$êÆ?Ç" €€€ ÿS"Ç’Ç1qEƒ*΄-x’ÇÞÇ•ÌHTMLIFrameElement (Common DOM API)L&?ÇÞÇ& €L€€€‚ÿHTMLIFrameElement (Common DOM API)Üy’ǺÉc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€犖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITÞǻʭ#*šÂ€€ÿF€€€羕—Y€‰€çە—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç䕗Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VºÉmË\#ˆ€¬ÂÂ.€€€çG-€ ‰€‚ÿ.€`€€çH¯Ò€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&»Ê“Ë# €€€‚ÿ*mËœË' €€ ”€ ‚ÿˆN“ËEÌ: D€œ€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLIFrameElementAll Superinterfaces: )œËÆÌX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&EÌìÌ# €€€‚ÿ*ÆÌÍ' €€ ”€ ‚ÿZÎìÌpÎŒ 思€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLIFrameElementextends HTMLElementInline subwindows. See the IFRAME element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*ÍšÎ' €€ ”€ ‚ÿ,pÎÆÎ' € €€‚€‚ÿTšÎÏB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'ÆÎAÏ# €€€‚ÿ ƒ8ÏÄÏK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇAÏ—Á#P „6€çŠvšõ€‰€çe@ÄÏ—?Ç™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'ÄÏŸ# €€€‚ÿ U—B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryŸ(”#ö€÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç€N €‰€€‚ÿÿÿ StringgetAlign() Aligns this object (vertically or horizontally) with respect to its surrounding text.-“Uš#'÷€€ÿX€€€ïxŽ—YJdk14doc.4.hlp€‰€‚ÿ€"€ÿB€$€çóW|€‰€€€€‚ÿÿÿ DocumentgetContentDocument() The document this frame contains, if there is any and it is available, or null otherwise.ÛH(0“#ö€÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çtl=,€‰€€‚ÿÿÿ StringgetFrameBorder() Request frame borders.Í:Uý“#ö€t÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çÜ ë€‰€€‚ÿÿÿ StringgetHeight() Frame height.üi0ù“#ö€Ò÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç ™Û€‰€€‚ÿÿÿ StringgetLongDesc() URI designating a long description of this image or frame.åRýÞ“#ö€€÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç k_p€‰€€‚ÿÿÿ StringgetMarginHeight() Frame margin height, in pixels.ãPùÁ“#ö€ ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç¯N0ـ‰€€‚ÿÿÿ StringgetMarginWidth() Frame margin width, in pixels.ö]Þ· ™#º÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €ç(u°:€‰€€€€‚ÿÿÿ StringgetName() The frame name (object of the target attribute).ûhÁ² “#ö€Ð÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç%ô€‰€€‚ÿÿÿ StringgetScrolling() Specify whether or not the frame should have scrollbars.êW· œ “#ö€®÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çw"/&€‰€€‚ÿÿÿ StringgetSrc() A URI designating the initial frame contents.Ë8² g “#ö€p÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç%)_€‰€€‚ÿÿÿ StringgetWidth() Frame width.Î8œ 5 –#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€çÇõs…€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) ÚDg –#ü€ˆ÷€€ÿ"€€€€‚ÿ€€ÿr€€ç75u€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetFrameBorder(String frameBorder) Ð:5 ß–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€ç§obi€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHeight(String height) Ô>³–#ü€|÷€€ÿ"€€€€‚ÿ€€ÿr€€çõË{p€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetLongDesc(String longDesc) ÜFß›@–#ü€Œ÷€€ÿ"€€€€‚ÿ€³›@?Ç€ÿr€€ç5‰5€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetMarginHeight(String marginHeight) ÚD³uA–#ü€ˆ÷€€ÿ"€€€€‚ÿ€€ÿr€€ç²W΀‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetMarginWidth(String marginWidth) Ì6›@AB–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çSvþŸ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetName(String name) Ö@uAC–#ü€€÷€€ÿ"€€€€‚ÿ€€ÿr€€çë9P€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetScrolling(String scrolling) Ê4ABáC–#ü€h÷€€ÿ"€€€€‚ÿ€€ÿr€€çú72ꀉ€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetSrc(String src) Î8C¯D–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€çq,ÿ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetWidth(String width) 'áCÖD# €€€‚ÿ E¯DfEK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆÖD—F©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'fEŸF# €€€‚ÿ ™<—FWG]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYŸFÁJ#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'WGèJ# €€€‚ÿ „9ÁJlKK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆèJN]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)lKžN$ € €€‚‚ÿ TN OB#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailˆ1žN”OW ~€b€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()Ù³ Oy€& €g€ä€‚‚ÿAligns this object (vertically or horizontally) with respect to its s”Oy€?Çurrounding text. See the align attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&”OŸ€# €€€‚ÿ*y€ɀ' €€ ”€ ‚ÿž?Ÿ€g_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*ɀ‘' €€ ”€ ‚ÿš?g+‚[ †€~€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetFrameBorderpublic String getFrameBorder()uP‘ ‚% € €ä€‚‚ÿRequest frame borders. See the frameborder attribute definition in HTML 4.0.&+‚Ƃ# €€€‚ÿ* ‚ð‚' €€ ”€ ‚ÿ°QƂ ƒ_ Ž€¢€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetFrameBorderpublic void setFrameBorder(String frameBorder)*ð‚ʃ' €€ ”€ ‚ÿ5 ƒZ„[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHeightpublic String getHeight()gBʃÁ„% €„€ä€‚‚ÿFrame height. See the height attribute definition in HTML 4.0.&Z„ç„# €€€‚ÿ*Á„…' €€ ”€ ‚ÿ¡B焲…_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHeightpublic void setHeight(String height)*…܅' €€ ”€ ‚ÿ”9²…p†[ †€r€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetLongDescpublic String getLongDesc()–q܅‡% €â€ä€‚‚ÿURI designating a long description of this image or frame. See the longdesc attribute definition in HTML 4.0.&p†,‡# €€€‚ÿ*‡V‡' €€ ”€ ‚ÿ§H,‡ý‡_ Ž€€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetLongDescpublic void setLongDesc(String longDesc)*V‡'ˆ' €€ ”€ ‚ÿœAý‡È[ †€‚€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetMarginHeightpublic String getMarginHeight()Z'ˆB‰% €Ž€ä€‚‚ÿFrame margin height, in pixels. See the marginheight attribute definition in HTML 4.0.&Èh‰# €€€‚ÿ*B‰’‰' €€ ”€ ‚ÿ³Th‰EŠ_ Ž€š€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetMarginHeightpublic void setMarginHeight(String marginHeight)*’‰oŠ' €€ ”€ ‚ÿš?EŠ ‹[ †€~€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetMarginWidthpublic String getMarginWidth()}XoІ‹% €°€ä€‚‚ÿFrame margin width, in pixels. See the marginwidth attribute definition in HTML 4.0.& ‹¬‹# €€€‚ÿ*†‹֋' €€ ”€ ‚ÿ°Q¬‹†Œ_ Ž€¢€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetMarginWidthpublic void setMarginWidth(String marginWidth)*֋°Œ' €€ ”€ ‚ÿŒ1†Œ<[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetNamepublic String getName()e°Œ̍+ &€Ê€ä€€€‚‚ÿThe frame name (object of the target attribute). See the name attribute definition in HTML 4.0.&<ò# €€€‚ÿ*̍Ž' €€ ”€ ‚ÿ›<ò·Ž_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetNamepublic void setName(String name)*ŽáŽ' €€ ”€ ‚ÿ–;·Žw[ †€v€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetScrollingpublic String getScrolling()•páŽÀ% €à€ä€‚‚ÿSpecify whether or not the frame should have scrollbars. See the scrolling attribute definition in wÀ?ÇHTML 4.0.&w>À# €€€‚ÿ*ÀhÀ' €€ ”€ ‚ÿªK>ÀÁ_ Ž€–€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetScrollingpublic void setScrolling(String scrolling)*hÀ<Á' €€ ”€ ‚ÿŠ/ÁÆÁ[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetSrcpublic String getSrc()„_<ÁJÂ% €Ÿ€ä€‚‚ÿA URI designating the initial frame contents. See the src attribute definition in HTML 4.0.&ÆÁpÂ# €€€‚ÿ*JšÂ' €€ ”€ ‚ÿ˜9pÂ2Ã_ Ž€r€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetSrcpublic void setSrc(String src)*šÂ\Ã' €€ ”€ ‚ÿŽ32ÃêÃ[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetWidthpublic String getWidth()e@\ÃOÄ% €€€ä€‚‚ÿFrame width. See the width attribute definition in HTML 4.0.&êÃuÄ# €€€‚ÿ*OÄŸÄ' €€ ”€ ‚ÿž?uÄ=Å_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetWidthpublic void setWidth(String width)*ŸÄgÅ' €€ ”€ ‚ÿ€I=Å Æ[ †€’€€‚€‚€€‚‚€ïxŽ—YJdk14doc.4.hlp€‰€€€€‚ÿgetContentDocumentpublic Document getContentDocument()šhgÅ¥Æ2 4€Ð€ä€€€‚‚€€‚ÿThe document this frame contains, if there is any and it is available, or null otherwise.Since:5 ÆÚÆ& €€ɀ€‚‚ÿDOM Level 2&¥ÆÇ# €€€‚ÿ*ÚÆ*Ç' €€ ”€ ‚ÿ&ÇPÇ# €€€‚ÿÜy*Ç,Éc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€犖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITPÇ-Ê­#*šÂ€€ÿF€€€羕—Y€‰€çە—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç䕗Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V,ÉßÊ\#ˆ€¬ÂÂ.€€€çG-€ ‰€‚ÿ.€`€€çH¯Ò€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&-ÊË# €€€‚ÿ*ßÊ/Ë' €€ ”€ ‚ÿfûË•Ìk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1/ËÆÌ1UÿÿÿÿÿÿÿÿyÿÿÿÿÆÌêÌ$•ÌêÌ" €€€ ÿR!ÆÌ<Í1Mw‚+ó0z<͇Íd HTMLImageElement (Common DOM API)K%ê̇Í& €J€€€‚ÿHTMLImageElement (Common DOM API)Üy<ÍcÏc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€狖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT‡Íp­#*šÂ€€ÿF€€€ç䕗Y€‰€çܕ—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çە—Y€‰€ï‡—YJdk14doc.4cÏpêÌ.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VcÏ"\#ˆ€¬ÂÂ.€€€çlF(˜€ ‰€‚ÿ.€`€€çï›÷p€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&pH# €€€‚ÿ*"r' €€ ”€ ‚ÿ‡MHù: D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLImageElementAll Superinterfaces: )rzX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&ù # €€€‚ÿ*zÊ' €€ ”€ ‚ÿSÇ Œ 怏€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLImageElementextends HTMLElementEmbedded image. See the IMG element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*ÊG' €€ ”€ ‚ÿ,s' € €€‚€‚ÿTGÇB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'sî# €€€‚ÿ ƒ8ÇqK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇî8Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'q_# €€€‚ÿ U8ŽB#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summary_É”#ö€÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çYYuŽ€‰€€‚ÿÿÿ StringgetAlign() Aligns this object (vertically or horizontally) with respect to its surrounding text. zŽÖ “#ö€ô÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç¹”{€‰€€‚ÿÿÿ StringgetAlt() Alternate text for user agents not rendering the normal content of this element.ÝJɳ “#ö€”÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çàšë€€‚ÿÿÿ StringgetBorder() Width of border around image.Ð=Ö ƒ “#ö€z÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çCéÄ£€‰€€‚ÿÿÿ StringgetHeight() Override height.õb³ x “#ö€Ä÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çÂsÐz€‰€€‚ÿÿÿ StringgetHspace() Horizontal space to the left and right of this image.ŒDƒ 4 x#À€ˆ÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç‚Àג€‰€€‚ÿÿÿ booleangetIsMap() Use server-side image map.üix 0“#ö€Ò÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çùì#²€‰€€‚ÿÿÿ StringgetLongDesc() URI designating a long description of this image or frame.q4 4“#ö€â÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çdÏ]ÿ€‰€€‚ÿÿÿ StringgetLowSrc() URI designating the source of this image, for low-resolution output.ôa04@“#ö€Â÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çÇEƒ1€‰€€‚ÿÿÿ StringgetName() The name of the 44@êÌelement (for backwards compatibility).æS4A“#ö€Š÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çÔåE€‰€€‚ÿÿÿ StringgetSrc() URI designating the source of this image.ÚG4@ôA“#ö€Ž÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €療Vڀ‰€€‚ÿÿÿ StringgetUseMap() Use client-side image map.êWAÞB“#ö€®÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç¬Zð€‰€€‚ÿÿÿ StringgetVspace() Vertical space above and below this image.Î;ôA¬C“#ö€v÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çÚ3nԀ‰€€‚ÿÿÿ StringgetWidth() Override width.Î8ÞBzD–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€ç<È㰀‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) Ê4¬CDE–#ü€h÷€€ÿ"€€€€‚ÿ€€ÿr€€çŒ_7€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlt(String alt) Ð:zDF–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€ç«p;–€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetBorder(String border) Ð:DEäF–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€çNÉ*µ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHeight(String height) Ð:FŽG–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€ç s‚.€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHspace(String hspace) ­5äFaHx#À€j÷€€ÿ"€€€€‚ÿ€€ÿ6€€çš³œ"€‰€€‚ÿÿÿ voidsetIsMap(boolean isMap) Ô>ŽG5I–#ü€|÷€€ÿ"€€€€‚ÿ€€ÿr€€ç$S‹Ê€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetLongDesc(String longDesc) Ð:aHJ–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€ç/$£€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetLowSrc(String lowSrc) Ì65IÑJ–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ç2þ‰Ü€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetName(String name) Ê4J›K–#ü€h÷€€ÿ"€€€€‚ÿ€€ÿr€€çAÐP€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetSrc(String src) Ð:ÑJkL–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€ç$ãÁ³€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetUseMap(String useMap) Ð:›K;M–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€çw ­Á€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetVspace(String vspace) Î8kL N–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€ç}Cœ*€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetWidth(String width) ';M0N# €€€‚ÿ E NÀNK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ0N €©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitleÀN €êÌ'ÀN3€# €€€‚ÿ ™< €̀]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY3€6„#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'̀]„# €€€‚ÿ „96„á„K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ]„ˆ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)á„-ˆ$ € €€‚‚ÿ TˆˆB#T€$„€€ÿ"€€€€‚ÿÿÿMethod DetailŠ3-ˆ ‰W ~€f€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetLowSrcpublic String getLowSrc()mHˆx‰% €€ä€‚‚ÿURI designating the source of this image, for low-resolution output.& ‰ž‰# €€€‚ÿ*x‰ȉ' €€ ”€ ‚ÿ¡Bž‰iŠ_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetLowSrcpublic void setLowSrc(String lowSrc)*ȉ“Š' €€ ”€ ‚ÿŒ1iŠ‹[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetNamepublic String getName()_:“Š~‹% €t€ä€‚‚ÿThe name of the element (for backwards compatibility).&‹€‹# €€€‚ÿ*~‹΋' €€ ”€ ‚ÿ›<€‹iŒ_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetNamepublic void setName(String name)*΋“Œ' €€ ”€ ‚ÿŽ3iŒ![ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()Ù³“Œú& €g€ä€‚‚ÿAligns this object (vertically or horizontally) with respect to its surrounding text. See the align attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&! Ž# €€€‚ÿ*úJŽ' €€ ”€ ‚ÿž? ŽèŽ_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*JŽ' €€ ”€ ‚ÿŠ/莜[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAltpublic String getAlt()š‚PÀ& €€ä€‚‚ÿAlternate text for user agents not rendering the normal conteœPÀêÌnt of this element. See the alt attribute definition in HTML 4.0.&œvÀ# €€€‚ÿ*PÀ À' €€ ”€ ‚ÿ˜9vÀ8Á_ Ž€r€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAltpublic void setAlt(String alt)* ÀbÁ' €€ ”€ ‚ÿ58ÁòÁ[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetBorderpublic String getBorder()¡|bÁ“Â% €ø€ä€‚‚ÿWidth of border around image. See the border attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&òÁ¹Â# €€€‚ÿ*“ÂãÂ' €€ ”€ ‚ÿ¡B¹Â„Ã_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetBorderpublic void setBorder(String border)*ã®Ã' €€ ”€ ‚ÿ5„Ã>Ä[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHeightpublic String getHeight()jE®ÃšÄ% €Š€ä€‚‚ÿOverride height. See the height attribute definition in HTML 4.0.&>ÄÎÄ# €€€‚ÿ*šÄøÄ' €€ ”€ ‚ÿ¡BÎÄ™Å_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHeightpublic void setHeight(String height)*øÄÃÅ' €€ ”€ ‚ÿ5™ÅSÆ[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHspacepublic String getHspace()º”ÃÅ Ç& €)€ä€‚‚ÿHorizontal space to the left and right of this image. See the hspace attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&SÆ3Ç# €€€‚ÿ* Ç]Ç' €€ ”€ ‚ÿ¡B3ÇþÇ_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHspacepublic void setHspace(String hspace)*]Ç(È' €€ ”€ ‚ÿm0þÇ•È= J€`€€‚€‚€€‚‚€€€€‚ÿgetIsMappublic boolean getIsMap()sN(ÈÉ% €œ€ä€‚‚ÿUse server-side image map. See the ismap attribute definition in HTML 4.0.&•È.É# €€€‚ÿ*ÉXÉ' €€ ”€ ‚ÿ}<.ÉÕÉA R€x€€‚€‚€€‚‚€€€€‚€‚ÿsetIsMappublic void setIsMap(boolean isMap)*XÉÿÉ' €€ ”€ ‚ÿ”9ÕÉ“Ê[ †€r€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetLongDescpublic String getLongDesc()–qÿÉ)Ë% €â€ä€‚‚ÿURI designating a long description of this image or frame. See the longdesc attribute definition in HTML 4.0.&“ÊOË# €€€‚ÿ*)ËyË' €€ ”€ ‚ÿ§HOË Ì_ Ž€€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetLongDescpublic void setLongDesc(String longDesc)*yËJÌ' €€ ”€ ‚ÿŠ/ ÌÔÌ[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetSrcpublic String getSrc()€[JÌTÍ% €¶€ä€‚‚ÿURI designating the source of this image. See the src attribute definition in HTML 4.0.&ÔÌzÍ# €€€‚ÿ*TÍ€Í' €€ ”€ ‚ÿ˜9zÍ<Î_ Ž€r€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetSrcpublic void setSrc(String src)*€ÍfÎ' €€ ”€ ‚ÿ5<ÎöÎ[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetUseMappublic String getUseMap()tOfÎjÏ% €ž€ä€‚‚ÿUse client-side image map. See the usemap attribute definition in HTML 4.0.&öΐÏ# €€€‚ÿ*jϺÏ' €€ ”€ ‚ÿ¡BÏg_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doºÏgêÌc.2.hlp€‰€€‚€‚ÿsetUseMappublic void setUseMap(String useMap)*ºÏ‘' €€ ”€ ‚ÿ5g![ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetVspacepublic String getVspace()¯‰‘Ð& €€ä€‚‚ÿVertical space above and below this image. See the vspace attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&!ö# €€€‚ÿ*Ð ' €€ ”€ ‚ÿ¡BöÁ_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetVspacepublic void setVspace(String vspace)* ë' €€ ”€ ‚ÿŽ3Áy[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetWidthpublic String getWidth()hCëá% €†€ä€‚‚ÿOverride width. See the width attribute definition in HTML 4.0.&y# €€€‚ÿ*á1' €€ ”€ ‚ÿž?Ï_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetWidthpublic void setWidth(String width)*1ù' €€ ”€ ‚ÿ&Ï# €€€‚ÿÜyùûc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€狖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITü­#*šÂ€€ÿF€€€ç䕗Y€‰€çܕ—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çە—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vû®\#ˆ€¬ÂÂ.€€€çlF(˜€ ‰€‚ÿ.€`€€çï›÷p€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&üÔ# €€€‚ÿ*®þ' €€ ”€ ‚ÿfûÔd k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1þ• 1Uÿÿÿÿÿÿÿÿ{ÿÿÿÿ• ¹ $d ¹ " €€€ ÿR!•  1yo΄-æƒ3| V KÉHTMLInputElement (Common DOM API)K%¹ V & €J€€€‚ÿHTMLInputElement (Common DOM API)Üy 2 c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€猖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITV 3­#*šÂ€€ÿF€€€çە—Y€‰€çݕ—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çܕ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V2 å\#ˆ€¬ÂÂ.€€€ç/'룀 ‰€‚ÿ.€`€€çžYa_€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&3 # €€€‚ÿ*å5' €€ ”€ ‚ÿ‡M Œ: D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLInputElementAll Superinterfaces: )5I@X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€ŒI@¹ ‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&Œo@# €€€‚ÿ*I@™@' €€ ”€ ‚ÿ;Žo@ÔB‡ ܀i€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚ÿpublic interface HTMLInputElementextends HTMLElementForm control. Note. Depending upon the environment in which the page is being viewed, the value property may be read-only for the file upload input type. For the "password" input type, the actual value returned may be masked to prevent unauthorized use. See the INPUT element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.,™@C' € €€‚€‚ÿ*ÔB*C' €€ ”€ ‚ÿ,CVC' € €€‚€‚ÿT*CªCB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'VCÑC# €€€‚ÿ ƒ8ªCTDK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇÑCFÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'TDBF# €€€‚ÿ UF—FB#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÄLBF[Gx#À€˜¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çøýû7€‰€€‚ÿÿÿ voidblur() Removes keyboard focus from this element.³;—FHx#À€v¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çS3˜Ý€‰€€‚ÿÿÿ voidclick() Simulate a mouse-click.ÁI[GÏHx#À€’¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç·Ïa€‰€€‚ÿÿÿ voidfocus() Gives keyboard focus to this element."ŽHñI”#ö€¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çáøJ,€‰€€‚ÿÿÿ StringgetAccept() A comma-separated list of content types that a server processing this form will handle correctly.qÏHõJ“#ö€â¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çVq蜀‰€€‚ÿÿÿ StringgetAccessKey() A single character access key to give access to the form control.ñI L”#ö€¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç ‘¢€‰€€‚ÿÿÿ StringgetAlign() Aligns this object (vertically or horizontally) with respect to its surrounding text. zõJM“#ö€ô¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç®q€‰€€‚ÿÿÿ StringgetAlt() Alternate text for user agents not rendering the normal content of this element.MÎ LdN#̀¥ß€€ÿ"€€€€‚ÿ€€ÿB€€碮Ú}€‰€€€€‚ÿÿÿ booleangetChecked() When the type attribute of the element has the value "Radio" or "Checkbox", this represents the current state of the form control, in an interactive user agent.žMO#̀=¥ß€€ÿ"€€€€‚ÿ€€ÿB€€çSÉðŒ€‰€€€€‚ÿÿÿ booleangetDefaultChecked() When type has the value "Radio" or "Checkbox", this represents the HTML checked attribute of the element.ZÀdN瀚#¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €O瀹 çõ¢Ý@€‰€€€€‚ÿÿÿ StringgetDefaultValue() When the type attribute of the element has the value "Text", "File" or "Password", this represents the HTML value attribute of the element.ÐXO·x#À€°¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çmý@€‰€€‚ÿÿÿ booleangetDisabled() The control is unavailable in this context.îg瀥‚‡#ހΥ߀€ÿ4€€€粕—Y€‰€‚ÿ€0€ÿB€2€çÝâ€D€‰€€€€‚ÿÿÿ HTMLFormElementgetForm() Returns the FORM element containing this control.‡·«ƒ#̀¥ß€€ÿ"€€€€‚ÿ€€ÿB€€çچ‰€€€€‚ÿÿÿ intgetMaxLength() Maximum number of characters for text fields, when type has the value "Text" or "Password".õb¥‚ „“#ö€Ä¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç` Ý‡€‰€€‚ÿÿÿ StringgetName() Form control or object name when submitted with a form.¿G«ƒ_…x#À€Ž¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç[F选€€‚ÿÿÿ booleangetReadOnly() This control is read-only.Ï< „.†“#ö€x¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç–^µ€‰€€‚ÿÿÿ StringgetSize() Size information.[Á_…‰‡š#ƒ¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €çÐ_u€‰€€€€‚ÿÿÿ StringgetSrc() When the type attribute has the value "Image", this attribute specifies the location of the image to be used to decorate the graphical submit button.ãk.†lˆx#À€Ö¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç:×ô€‰€€‚ÿÿÿ intgetTabIndex() Index that represents the element's position in the tabbing order.ÚG‰‡F‰“#ö€Ž¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çKXÁ€‰€€‚ÿÿÿ StringgetType() The type of control created.ÚGlˆ Š“#ö€Ž¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çªÝ‰€€‚ÿÿÿ StringgetUseMap() Use client-side image map.€æF‰ ‹š#Í¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €çŒ+\˜€‰€€€€‚ÿÿÿ StringgetValue() When the type attribute of the element has the value "Text", "File" or "Password", this represents the current contents of the corresponding form control, in an interactive user agent.ÂJ ŠbŒx#À€”¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çi˜, €‰€€‚ÿÿÿ voidselect() Select the contents of the text area.Ð: ‹2–#ü€t¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çl]D€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAccept(String accept) Ö@bŒŽ–#ü€€¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç¹@œ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAccessKey(String accessKey) Î82֎–#ü€p¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç/‚È€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) Ê4Ž –#ü€h¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çGBB)€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlt(String alt) ±9֎]Àx#À€r¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ ]À¹ çšÀ,ò€‰€€‚ÿÿÿ voidsetChecked(boolean checked) ¿G Áx#À€Ž¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç3B€‰€€‚ÿÿÿ voidsetDefaultChecked(boolean defaultChecked) ÜF]ÀøÁ–#ü€Œ¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç`zJz€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetDefaultValue(String defaultValue) ³;Á«Âx#À€v¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç!4¯’€‰€€‚ÿÿÿ voidsetDisabled(boolean disabled) ±9øÁ\Ãx#À€r¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çJÛHڀ‰€€‚ÿÿÿ voidsetMaxLength(int maxLength) Ì6«Â(Ä–#ü€l¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç‹ ^¹€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetName(String name) ³;\ÃÛÄx#À€v¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€竈î瀉€€‚ÿÿÿ voidsetReadOnly(boolean readOnly) Ì6(ħŖ#ü€l¥ß€€ÿ"€€€€‚ÿ€€ÿr€€籜Š€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetSize(String size) Ê4ÛÄqÆ–#ü€h¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç¢#Ûa€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetSrc(String src) ¯7§Å Çx#À€n¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çÉ;9€‰€€‚ÿÿÿ voidsetTabIndex(int tabIndex) Ð:qÆðÇ–#ü€t¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çõJV«€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetUseMap(String useMap) Î8 ÇŸÈ–#ü€p¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç߀?€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetValue(String value) 'ðÇåÈ# €€€‚ÿ EŸÈuÉK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆåÈŠÊ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'uÉÍÊ# €€€‚ÿ ™<ŠÊfË]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYÍÊÐÎ#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'fË÷Î# €€€‚ÿ „9ÐÎ{ÏK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ÷Ϊ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›{Ϫ¹ ’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix){ÏÓ$ € €€‚‚ÿ Tª'B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail–?ÓœW ~€~€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetDefaultValuepublic String getDefaultValue()Ÿ’'{, &€%€ä€€€‚‚ÿWhen the type attribute of the element has the value "Text", "File" or "Password", this represents the HTML value attribute of the element. The value of this attribute does not change if the contents of the corresponding form control, in an interactive user agent, changes. Changing this attribute, however, resets the contents of the form control. See the value attribute definition in HTML 4.0.&œ¡# €€€‚ÿ*{Ë' €€ ”€ ‚ÿ³T¡~_ Ž€š€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetDefaultValuepublic void setDefaultValue(String defaultValue)*Ëš' €€ ”€ ‚ÿB~'= J€„€€‚€‚€€‚‚€€€€‚ÿgetDefaultCheckedpublic boolean getDefaultChecked()šnšÁ, &€Ý€ä€€€‚‚ÿWhen type has the value "Radio" or "Checkbox", this represents the HTML checked attribute of the element. The value of this attribute does not change if the state of the corresponding form control, in an interactive user agent, changes. Changes to this attribute, however, resets the state of the form control. See the checked attribute definition in HTML 4.0.&'ç# €€€‚ÿ*Á ' €€ ”€ ‚ÿ˜Wç© A R€®€€‚€‚€€‚‚€€€€‚€‚ÿsetDefaultCheckedpublic void setDefaultChecked(boolean defaultChecked)* Ó ' €€ ”€ ‚ÿƒ:© V I b€t€€‚€‚€€‚‚€粕—Y€‰€€€€‚ÿgetFormpublic HTMLFormElement getForm()¬{Ó  1 2€ö€ä€€€€€‚‚ÿReturns the FORM element containing this control. Returns null if this control is not within the context of a form.&V ( # €€€‚ÿ* R ' €€ ”€ ‚ÿ5( â [ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAcceptpublic String getAccept()Œ–R ž & €-€ä€‚‚ÿA comma-separated list of content types that a server processing this form will handle correctly. See the accept attribute definition in HTML 4.0.&â Ä # €€€‚ÿ*ž î ' €€ ”€ ‚ÿ¡BÄ  _ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAcceptpublic void setAccept(String accept)*î ¹ ' €€ ”€ ‚ÿ–; O[ †€v€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAccessKeypublic String getAccessKey()žy¹ í% €ò€ä€‚‚ÿA single character access key to give access to the form control. See the accesskey attribute definition in HTML 4.0.&O# €€€‚ÿ*í=' €€ ”€ ‚ÿªK @_ Ž€–€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAccessKeypublic void setAccessKey(String accessKey)= @¹ *=6@' €€ ”€ ‚ÿŽ3 @Ä@[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()Ù³6@A& €g€ä€‚‚ÿAligns this object (vertically or horizontally) with respect to its surrounding text. See the align attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&Ä@ÃA# €€€‚ÿ*AíA' €€ ”€ ‚ÿž?ÃA‹B_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*íAµB' €€ ”€ ‚ÿŠ/‹B?C[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAltpublic String getAlt()š‚µBçC& €€ä€‚‚ÿAlternate text for user agents not rendering the normal content of this element. See the alt attribute definition in HTML 4.0.&?C D# €€€‚ÿ*çC7D' €€ ”€ ‚ÿ˜9 DÏD_ Ž€r€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAltpublic void setAlt(String alt)*7DùD' €€ ”€ ‚ÿq4ÏDjE= J€h€€‚€‚€€‚‚€€€€‚ÿgetCheckedpublic boolean getChecked()Z.ùDÄF, &€]€ä€€€‚‚ÿWhen the type attribute of the element has the value "Radio" or "Checkbox", this represents the current state of the form control, in an interactive user agent. Changes to this attribute change the state of the form control, but do not change the value of the HTML value attribute of the element.&jEêF# €€€‚ÿ*ÄFG' €€ ”€ ‚ÿƒBêF—GA R€„€€‚€‚€€‚‚€€€€‚€‚ÿsetCheckedpublic void setChecked(boolean checked)*GÁG' €€ ”€ ‚ÿs6—G4H= J€l€€‚€‚€€‚‚€€€€‚ÿgetDisabledpublic boolean getDisabled()‡bÁG»H% €Ä€ä€‚‚ÿThe control is unavailable in this context. See the disabled attribute definition in HTML 4.0.&4HáH# €€€‚ÿ*»H I' €€ ”€ ‚ÿ†EáH‘IA R€Š€€‚€‚€€‚‚€€€€‚€‚ÿsetDisabledpublic void setDisabled(boolean disabled)* I»I' €€ ”€ ‚ÿq4‘I,J= J€h€€‚€‚€€‚‚€€€€‚ÿgetMaxLengthpublic int getMaxLength()Á•»IíJ, &€+€ä€€€‚‚ÿMaximum number of characters for text fields, when type has the value "Text" or "Password". See the maxlength attribute definition in HTML 4.0.&,JK# €€€‚ÿ*íJ=K' €€ ”€ ‚ÿ…DKÂKA R€ˆ€€‚€‚€€‚‚€€€€‚€‚ÿsetMaxLengthpublic void setMaxLength(int maxLength)*=KìK' €€ ”€ ‚ÿŒ1ÂKxL[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetNamepublic String getName()jìKM% €Ô€ä€‚‚ÿForm control or object name when submitted with a form. See the name attribute definition in HTML 4.0.&xL-M# €€€‚ÿ*MWM' €€ ”€ ‚ÿ›<-MòM_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetNamepublic void setName(String name)*WMN' €€ ”€ ‚ÿs6òMN= J€l€€‚€‚€€‚‚€€€€‚ÿgetReadOnlypublic boolean getReadOnly()»NJO, &€€ä€€€‚‚ÿThis control is read-only. Relevant only when type has the value "Text" or "Password". See the readonly attribute definition in HTML 4.0.&NpO# €€€‚ÿ*JOšO' €€ ”€ ‚ÿ†EpO,€A R€Š€€‚€‚€€‚‚€€€€‚€‚ÿsetReadOnlypublic void setRšO,€¹ eadOnly(boolean readOnly)*šOV€' €€ ”€ ‚ÿŒ1,€â€[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetSizepublic String getSize() {V€‚% €ö€ä€‚‚ÿSize information. The precise meaning is specific to each type of field. See the size attribute definition in HTML 4.0.&‚# €€€‚ÿ*‚ҁ' €€ ”€ ‚ÿ›<šm‚_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetSizepublic void setSize(String size)*ҁ—‚' €€ ”€ ‚ÿŠ/m‚!ƒ[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetSrcpublic String getSrc()õɗ‚„, &€“€ä€€€‚‚ÿWhen the type attribute has the value "Image", this attribute specifies the location of the image to be used to decorate the graphical submit button. See the src attribute definition in HTML 4.0.&!ƒ<„# €€€‚ÿ*„f„' €€ ”€ ‚ÿ˜9<„þ„_ Ž€r€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetSrcpublic void setSrc(String src)*f„(…' €€ ”€ ‚ÿo2þ„—…= J€d€€‚€‚€€‚‚€€€€‚ÿgetTabIndexpublic int getTabIndex()žy(…5†% €ò€ä€‚‚ÿIndex that represents the element's position in the tabbing order. See the tabindex attribute definition in HTML 4.0.&—…[†# €€€‚ÿ*5†…†' €€ ”€ ‚ÿ‚A[†‡A R€‚€€‚€‚€€‚‚€€€€‚€‚ÿsetTabIndexpublic void setTabIndex(int tabIndex)*…†1‡' €€ ”€ ‚ÿŒ1‡œ‡[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTypepublic String getType()tO1‡1ˆ% €ž€ä€‚‚ÿThe type of control created. See the type attribute definition in HTML 4.0.&œ‡Wˆ# €€€‚ÿ*1ˆˆ' €€ ”€ ‚ÿ5Wˆ‰[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetUseMappublic String getUseMap()tOˆ…‰% €ž€ä€‚‚ÿUse client-side image map. See the usemap attribute definition in HTML 4.0.&‰«‰# €€€‚ÿ*…‰Չ' €€ ”€ ‚ÿ¡B«‰vŠ_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetUseMappublic void setUseMap(String useMap)*Չ Š' €€ ”€ ‚ÿŽ3vŠ.‹[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetValuepublic String getValue()a0 Š1 0€a€ä€€€€€‚ÿWhen the type attribute of the element has the value "Text", "File" or "Password", this represents the current contents of the corresponding form control, in an interactive user agent. Changing this attribute changes the contents of the form control, but does not change the value of the HTML value attribute of the element. When the type attribute of the element has the value "Button", "Hidden", "Submit", "Reset", "Image", "Checkbox" or "Radio", this represents the HTML value attribute of the element. See the value attribute definition in HTML 4.0.'.‹¶$ €€ä€‚ÿ&܍# €€€‚ÿ*¶Ž' €€ ”€ ‚ÿž?܍€Ž_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetValuepublic void setValue(String value)*ŽΎ' €€ ”€ ‚ÿb%€Ž0= J€J€€‚€‚€€‚‚€€€€‚ÿblurpublic void blur()R-Ύ‚% €Z€ä€‚‚ÿRemoves keyboard focus from this element.&0š# €€€‚ÿ*‚ҏ' €€ ”€ ‚ÿd'šBÀ= J€N€€‚€‚€€‚‚ҏBÀ¹ €€€€‚ÿfocuspublic void focus()N)ҏÀ% €R€ä€‚‚ÿGives keyboard focus to this element.&BÀ¶À# €€€‚ÿ*ÀàÀ' €€ ”€ ‚ÿf)¶ÀFÁ= J€R€€‚€‚€€‚‚€€€€‚ÿselectpublic void select()ǕàÀ Â2 2€+€ä€€€€€‚‚ÿSelect the contents of the text area. For INPUT elements whose type attribute has one of the following values: "Text", "File", or "Password".&FÁ3Â# €€€‚ÿ* Â]Â' €€ ”€ ‚ÿd'3ÂÁÂ= J€N€€‚€‚€€‚‚€€€€‚ÿclickpublic void click()ϝ]Ã2 2€;€ä€€€€€‚‚ÿSimulate a mouse-click. For INPUT elements whose type attribute has one of the following values: "Button", "Checkbox", "Radio", "Reset", or "Submit".&Á¶Ã# €€€‚ÿ*ÃàÃ' €€ ”€ ‚ÿ&¶ÃÄ# €€€‚ÿÜyàÃâÅc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€猖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITÄãÆ­#*šÂ€€ÿF€€€çە—Y€‰€çݕ—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çܕ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VâÅ•Ç\#ˆ€¬ÂÂ.€€€ç/'룀 ‰€‚ÿ.€`€€çžYa_€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ãÆ»Ç# €€€‚ÿ*•ÇåÇ' €€ ”€ ‚ÿfû»ÇKÉk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1åÇ|É1Uÿÿÿÿÿÿÿÿ}ÿÿÿÿ|É É$KÉ É" €€€ ÿT#|ÉôÉ1£"ó0ëƒ4~ôÉAÊßJHTMLIsIndexElement (Common DOM API)M' ÉAÊ& €N€€€‚ÿHTMLIsIndexElement (Common DOM API)ÜyôÉÌc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€獖—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITAÊÍ­#*šÂ€€ÿF€€€çܕ—Y€‰€çޕ—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çݕ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÌÐÍ\#ˆ€¬ÂÂ.€€€çò®¯€ ‰€‚ÿ.€`€€çËM€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ÍöÍ# €€€‚ÿ*ÐÍ Î' €€ ”€ ‚ÿ‰OöÍ©Î: D€ž€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLIsIndexElementAll Superinterfaces: ) Î*ÏX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&©ÎPÏ# €€€‚ÿ**ÏzÏ' €€ ”€ ‚ÿ¢PÏ(Œ æ€-€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚zÏ( É‚€‚ÿpublic interface HTMLIsIndexElementextends HTMLElementThis element is used for single-line text input. See the ISINDEX element definition in HTML 4.0. This element is deprecated in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*zÏR' €€ ”€ ‚ÿ,(~' € €€‚€‚ÿTRÒB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'~ù# €€€‚ÿ ƒ8Ò|K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇùCÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'|j# €€€‚ÿ UC¿B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summaryîgj­‡#ހΥ߀€ÿ4€€€粕—Y€‰€‚ÿ€0€ÿB€2€çv=ÿš€‰€€€€‚ÿÿÿ HTMLFormElementgetForm() Returns the FORM element containing this control.Ó@¿€“#ö€€¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çò€.®€‰€€‚ÿÿÿ StringgetPrompt() The prompt message.Ð:­P–#ü€t¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç=ˆy+€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetPrompt(String prompt) '€w# €€€‚ÿ EPK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆw8 ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'_ # €€€‚ÿ ™<8 ø ]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY_ b #ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'ø ‰ # €€€‚ÿ „9b  K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Ɖ Ã~#̀ž÷€€ÿ"€€€€‚ÿ€€ÿB€€çˆ €‰€€€€‚ÿÿÿ intgetValue() Reset sequence number when used in OL .Ì6q Ė#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çâ1ðM€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetType(String type) ©1>óÄx#À€b÷€€ÿ"€€€€‚ÿ€€ÿ6€€çnœ2€‰€€‚ÿÿÿ voidsetValue(int value) ' ÄÚÄ# €€€‚ÿ E³ÄjÅK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆÚěƩ# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'jÅÂÆ# €€€‚ÿ ™<›Æ[Ç]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYÂÆÅÊ#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'[ÇìÊ# €€€‚ÿ „9ÅÊpËK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆìÊ“Î]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)pËŒÎ$ € €€‚‚ÿ T“ÎÏB#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail†/ŒÎ–ÏW ~€^€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTypepublic String getType()™tÏ;% €è€ä€‚‚ÿList item bullet style. See the type attribute definition in HTML 4.–Ï;ä†0. This attribute is deprecated in HTML 4.0.&–Ïa# €€€‚ÿ*;‹' €€ ”€ ‚ÿ›<a&_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTypepublic void setType(String type)*‹P' €€ ”€ ‚ÿi,&¹= J€X€€‚€‚€€‚‚€€€€‚ÿgetValuepublic int getValue()³‡Pl, &€€ä€€€‚‚ÿReset sequence number when used in OL . See the value attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&¹’# €€€‚ÿ*lŒ' €€ ”€ ‚ÿy8’5A R€p€€‚€‚€€‚‚€€€€‚€‚ÿsetValuepublic void setValue(int value)*Œ_' €€ ”€ ‚ÿ&5…# €€€‚ÿÜy_ac#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç •—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT…b­#*šÂ€€ÿF€€€çߕ—Y€‰€çᕗY€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çà•—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Va\#ˆ€¬ÂÂ.€€€ç;ªöҀ ‰€‚ÿ.€`€€çÜP€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&b:# €€€‚ÿ*d' €€ ”€ ‚ÿfû:Êk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1dû1Uÿÿÿÿÿÿÿÿ…ÿÿÿÿû $Ê " €€€ ÿQ ûp 1ž=q7n:†p º ©HTMLLinkElement (Common DOM API)J$ º & €H€€€‚ÿHTMLLinkElement (Common DOM API)Üyp – c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITº — ­#*šÂ€€ÿF€€€çà•—Y€‰€ç╗Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çᕗY€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V– I \#ˆ€¬ÂÂ.€€€çþŠ¹Þ€ ‰€‚ÿ.€`€€ç¥r€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&— o # €€€‚ÿ*I ™ ' €€ ”€ ‚ÿ†Lo : D€˜€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLLinkElementAll Superinterfaces: )™  X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&Æ# €€€‚ÿ* ð' €€ ”€ ‚ÿoÆþ@“ ô€ß€€‚€‚€€‚繕—Y€‰€‚‚€€€€‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚ÿpublic interface HTMLLinkElementextends HTMLElementThe LINK element specifies a link to an external resource, ðþ@ and defines this document's relationship to that resource (or vice versa). See the LINK element definition in HTML 4.0 (see also the LinkStyle interface in the module). See also the Document Object Model (DOM) Level 2 Specification.,ð*A' € €€‚€‚ÿ*þ@TA' €€ ”€ ‚ÿ,*A€A' € €€‚€‚ÿTTAÔAB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'€AûA# €€€‚ÿ ƒ8ÔA~BK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇûAEDÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'~BlD# €€€‚ÿ UEDÁDB#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryøelD¹E“#ö€Ê÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çR!¿€‰€€‚ÿÿÿ StringgetCharset() The character encoding of the resource being linked to.¿GÁDxFx#À€Ž÷€€ÿ"€€€€‚ÿ€€ÿ6€€çZà 选€€‚ÿÿÿ booleangetDisabled() Enables/disables the link.ÝJ¹EUG“#ö€”÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç]‡{€‰€€‚ÿÿÿ StringgetHref() The URI of the linked resource.çTxFN¡O–#ü€|÷€€ÿ"€€€€‚ÿ€€ÿr€€çF…Ù€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHreflang(String hreflang) Î8ÍN{€–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€¡O{€ çɳ«€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetMedia(String media) Ê4¡OE–#ü€h÷€€ÿ"€€€€‚ÿ€€ÿr€€çòC0à€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetRel(String rel) Ê4{€‚–#ü€h÷€€ÿ"€€€€‚ÿ€€ÿr€€ç¬7ðB€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetRev(String rev) Ð:E߂–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€çŽS𩀉€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetTarget(String target) Ì6‚«ƒ–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ç;?Ä*€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetType(String type) '߂҃# €€€‚ÿ E«ƒb„K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆÒƒ“…©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'b„º…# €€€‚ÿ ™<“…S†]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYº…œ‰#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'S†ä‰# €€€‚ÿ „9œ‰hŠK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æä‰‹]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)hŠŽ$ € €€‚‚ÿ T‹ŽB#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailm4ŽuŽ9 B€h€€‚€€‚‚€€€€‚ÿgetDisabledpublic boolean getDisabled()¯‰Ž$& €€ä€‚‚ÿEnables/disables the link. This is currently only used for style sheet links, and may be used to activate or deactivate style sheets.&uŽJ# €€€‚ÿ*$t' €€ ”€ ‚ÿ†EJ ÀA R€Š€€‚€‚€€‚‚€€€€‚€‚ÿsetDisabledpublic void setDisabled(boolean disabled)t À *t6À' €€ ”€ ‚ÿ’7 ÀÈÀ[ †€n€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCharsetpublic String getCharset()’m6ÀZÁ% €Ú€ä€‚‚ÿThe character encoding of the resource being linked to. See the charset attribute definition in HTML 4.0.&ÈÀ€Á# €€€‚ÿ*ZÁªÁ' €€ ”€ ‚ÿ€E€ÁNÂ_ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCharsetpublic void setCharset(String charset)*ªÁxÂ' €€ ”€ ‚ÿŒ1NÂÃ[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHrefpublic String getHref()wRxÂ{Ã% €€€ä€‚‚ÿThe URI of the linked resource. See the href attribute definition in HTML 4.0.&áÃ# €€€‚ÿ*{ÃËÃ' €€ ”€ ‚ÿ›<¡ÃfÄ_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHrefpublic void setHref(String href)*ËÐÄ' €€ ”€ ‚ÿ”9fÄ$Å[ †€r€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHreflangpublic String getHreflang()\Ä¥Å% €ž€ä€‚‚ÿLanguage code of the linked resource. See the hreflang attribute definition in HTML 4.0.&$ÅËÅ# €€€‚ÿ*¥ÅõÅ' €€ ”€ ‚ÿ§HËÅœÆ_ Ž€€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHreflangpublic void setHreflang(String hreflang)*õÅÆÆ' €€ ”€ ‚ÿŽ3œÆTÇ[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetMediapublic String getMedia()ˆcÆÆÜÇ% €Æ€ä€‚‚ÿDesigned for use with one or more target media. See the media attribute definition in HTML 4.0.&TÇÈ# €€€‚ÿ*ÜÇ,È' €€ ”€ ‚ÿž?ÈÊÈ_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetMediapublic void setMedia(String media)*,ÈôÈ' €€ ”€ ‚ÿŠ/ÊÈ~É[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetRelpublic String getRel()iDôÈçÉ% €ˆ€ä€‚‚ÿForward link type. See the rel attribute definition in HTML 4.0.&~É Ê# €€€‚ÿ*çÉ7Ê' €€ ”€ ‚ÿ˜9 ÊÏÊ_ Ž€r€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetRelpublic void setRel(String rel)*7ÊùÊ' €€ ”€ ‚ÿŠ/ÏʃË[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetRevpublic String getRev()iDùÊìË% €ˆ€ä€‚‚ÿReverse link type. See the rev attribute definition in HTML 4.0.&ƒËÌ# €€€‚ÿ*ìË<Ì' €€ ”€ ‚ÿ˜9ÌÔÌ_ Ž€r€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetRevpublic void setRev(String rev)*<ÌþÌ' €€ ”€ ‚ÿ5ÔÌŽÍ[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTargetpublic String getTarget()zUþÌÎ% €ª€ä€‚‚ÿFrame to render the resource in. See the target attribute definition in HTML 4.0.&ŽÍ.Î# €€€‚ÿ*ÎXÎ' €€ ”€ ‚ÿ¡B.ÎùÎ_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTargetpublic void setTarget(String target)*XÎ#Ï' €€ ”€ ‚ÿŒ1ùίÏ[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTypepublic String getType()nI#Ï)% €’€ä€‚‚ÿAdvisory content type. See the type attribu¯Ï) te definition in HTML 4.0.&¯ÏO# €€€‚ÿ*)y' €€ ”€ ‚ÿ›<O_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTypepublic void setType(String type)*y>' €€ ”€ ‚ÿ&d# €€€‚ÿÜy>@c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITdA­#*šÂ€€ÿF€€€çà•—Y€‰€ç╗Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çᕗY€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V@ó\#ˆ€¬ÂÂ.€€€çþŠ¹Þ€ ‰€‚ÿ.€`€€ç¥r€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&A# €€€‚ÿ*óC' €€ ”€ ‚ÿfû©k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1CÚ1Uÿÿÿÿÿÿÿÿ‡ÿÿÿÿÚþ$©þ" €€€ ÿPÚN1 b8È;ˆN—|‡HTMLMapElement (Common DOM API)I#þ—& €F€€€‚ÿHTMLMapElement (Common DOM API)ÜyNs c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT—t ­#*šÂ€€ÿF€€€çᕗY€‰€ç㕗Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç╗Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vs & \#ˆ€¬ÂÂ.€€€çÁk|ê€ ‰€‚ÿ.€`€€çnÌÛõ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&t L # €€€‚ÿ*& v ' €€ ”€ ‚ÿ…KL û : D€–€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLMapElementAll Superinterfaces: )v | X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&û ¢ # €€€‚ÿ*| Ì ' €€ ”€ ‚ÿXÌ¢ $Œ 怙€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLMapElementextends HTMLElementClient-side image map. See the MAP element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*Ì N' €€ ”€ ‚ÿ,$z' € €€‚€‚ÿTNÎB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'zõ# €€€‚ÿ ƒ8ÎxK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇõKAÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀xKAþ‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'xrA# €€€‚ÿ UKAÇAB#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summaryá`rAšB#ҀÀœè€€ÿ4€€€爕—Y€‰€‚ÿ€.€ÿ6€0€ç‡mJ€‰€€‚ÿÿÿ HTMLCollectiongetAreas() The list of areas defined for the image map.ëRÇA“C™#€œè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €çö¿û€‰€€€€‚ÿÿÿ StringgetName() Names the map (for use with usemap ).Ì6šB_D–#ü€lœè€€ÿ"€€€€‚ÿ€€ÿr€€ç¡[V怉€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetName(String name) '“C†D# €€€‚ÿ E_DEK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ†DGF©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'EnF# €€€‚ÿ ™<GFG]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYnFqJ#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'G˜J# €€€‚ÿ „9qJKK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ƘJ?N]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)KhN$ € €€‚‚ÿ T?NŒNB#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail~9hN:OE Z€r€€‚€€‚‚€爕—Y€‰€€€€‚ÿgetAreaspublic HTMLCollection getAreas()U0ŒNO% €`€ä€‚‚ÿThe list of areas defined for the image map.&:OµO# €€€‚ÿ*OßO' €€ ”€ ‚ÿŒ1µOw€[ †€b€€ßOw€þ‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetNamepublic String getName()…ZßOü€+ &€Ž€ä€€€‚‚ÿNames the map (for use with usemap ). See the name attribute definition in HTML 4.0.&w€"# €€€‚ÿ*ü€L' €€ ”€ ‚ÿ›<"ç_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetNamepublic void setName(String name)*L‚' €€ ”€ ‚ÿ&ç7‚# €€€‚ÿÜy‚„c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT7‚…­#*šÂ€€ÿF€€€çᕗY€‰€ç㕗Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç╗Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V„ƅ\#ˆ€¬ÂÂ.€€€çÁk|ê€ ‰€‚ÿ.€`€€çnÌÛõ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&…ì…# €€€‚ÿ*ƅ†' €€ ”€ ‚ÿfûì…|‡k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1†­‡1Uÿÿÿÿÿÿÿÿ‰ÿÿÿÿ­‡ч$|‡ч" €€€ ÿQ ­‡"ˆ1Ên:n<Š"ˆlˆ-HTMLMenuElement (Common DOM API)J$чlˆ& €H€€€‚ÿHTMLMenuElement (Common DOM API)Üy"ˆHŠc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITlˆI‹­#*šÂ€€ÿF€€€ç╗Y€‰€ç–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç㕗Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VHŠû‹\#ˆ€¬ÂÂ.€€€ç„L?ö€ ‰€‚ÿ.€`€€ç7ŠEä€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&I‹!Œ# €€€‚ÿ*û‹KŒ' €€ ”€ ‚ÿ†L!Œь: D€˜€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLMenuElementAll Superinterfaces: )KŒRX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&ьx# €€€‚ÿ*R¢' €€ ”€ ‚ÿvêxŒ æ€Õ€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLMenuElementextends HTMLElementMenu list. See the MENU element definition in HTML 4.0. This element is deprecated in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*¢B' €€ ”€ ‚ÿ,n' € €€‚€‚ÿTBB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'n À# €€€‚ÿ  Àчƒ8ÀK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ ÀVÂÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'À}Â# €€€‚ÿ UVÂÒÂB#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÆN}˜Ãx#À€œ÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç[ ®Ž€‰€€‚ÿÿÿ booleangetCompact() Reduce spacing between list items.±9ÒÂIÄx#À€r÷€€ÿ"€€€€‚ÿ€€ÿ6€€çs>)Œ€‰€€‚ÿÿÿ voidsetCompact(boolean compact) '˜ÃpÄ# €€€‚ÿ EIÄÅK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆpÄ1Æ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'ÅXÆ# €€€‚ÿ ™<1ÆñÆ]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYXÆ[Ê#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'ñÆ‚Ê# €€€‚ÿ „9[ÊËK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ‚Ê)Î]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)ËRÎ$ € €€‚‚ÿ T)ΊÎB#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailk2RÎÏ9 B€d€€‚€€‚‚€€€€‚ÿgetCompactpublic boolean getCompact()š‚ŠÎ¹Ï& €€ä€‚‚ÿReduce spacing between list items. See the compact attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&ÏßÏ# €€€‚ÿ*¹Ï' €€ ”ßÏч€ ‚ÿƒBßϘA R€„€€‚€‚€€‚‚€€€€‚€‚ÿsetCompactpublic void setCompact(boolean compact)*Â' €€ ”€ ‚ÿ&˜è# €€€‚ÿÜyÂÄc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITèÅ­#*šÂ€€ÿF€€€ç╗Y€‰€ç–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç㕗Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÄw\#ˆ€¬ÂÂ.€€€ç„L?ö€ ‰€‚ÿ.€`€€ç7ŠEä€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ŝ# €€€‚ÿ*wÇ' €€ ”€ ‚ÿfû-k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1Ç^1Uÿÿÿÿÿÿÿÿ‹ÿÿÿÿ^‚$-‚" €€€ ÿQ ^Ó1ì+È;€=ŒÓqÀHTMLMetaElement (Common DOM API)J$‚& €H€€€‚ÿHTMLMetaElement (Common DOM API)ÜyÓùc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITú ­#*šÂ€€ÿF€€€ç㕗Y€‰€ç–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vù¬ \#ˆ€¬ÂÂ.€€€çîœû€ ‰€‚ÿ.€`€€çÃ(rހ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ú Ò # €€€‚ÿ*¬ ü ' €€ ”€ ‚ÿ†LÒ ‚ : D€˜€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLMetaElementAll Superinterfaces: )ü  X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&‚ ) # €€€‚ÿ* S ' €€ ”€ ‚ÿ~ò) Ñ Œ æ€å€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLMetaElementextends HTMLElementThis contains generic meta-information about the document. See the META element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*S û ' €€ ”€ ‚ÿ,Ñ '' € €€‚€‚ÿTû {B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary''¢# €€€‚ÿ ƒ8{%K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ¢ø@Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDAT%ø@‚A_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'%A# €€€‚ÿ Uø@tAB#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryØEALB“#ö€Š÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çi b?€‰€€‚ÿÿÿ StringgetContent() Associated information.ÝJtA)C“#ö€”÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç"Rx€‰€€‚ÿÿÿ StringgetHttpEquiv() HTTP response header name.ÔALBýC“#ö€‚÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç۬ݻ€‰€€‚ÿÿÿ StringgetName() Meta information name.×D)CÔD“#ö€ˆ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çQ5,€‰€€‚ÿÿÿ StringgetScheme() Select form of content.Ò<ýCŠE–#ü€x÷€€ÿ"€€€€‚ÿ€€ÿr€€ç,$Jð€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetContent(String content) Ö@ÔD|F–#ü€€÷€€ÿ"€€€€‚ÿ€€ÿr€€煺K€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHttpEquiv(String httpEquiv) Ì6ŠEHG–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çFޜ·€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetName(String name) Ð:|FH–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€çܟOž€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetScheme(String scheme) 'HG?H# €€€‚ÿ EHÏHK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ?HJ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'ÏH'J# €€€‚ÿ ™<JÀJ]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY'J*N#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'ÀJQN# €€€‚ÿ „9*NÕNK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆQN‚]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çÕN‚‚žtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)ÕN-‚$ € €€‚‚ÿ T‚‚B#T€$„€€ÿ"€€€€‚ÿÿÿMethod DetailŒ5-‚ ƒW ~€j€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetContentpublic String getContent()rM‚ƒ% €š€ä€‚‚ÿAssociated information. See the content attribute definition in HTML 4.0.& ƒ¥ƒ# €€€‚ÿ*ƒσ' €€ ”€ ‚ÿ€E¥ƒs„_ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetContentpublic void setContent(String content)*σ„' €€ ”€ ‚ÿ–;s„3…[ †€v€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHttpEquivpublic String getHttpEquiv()xS„«…% €Š€ä€‚‚ÿHTTP response header name. See the http-equiv attribute definition in HTML 4.0.&3…х# €€€‚ÿ*«…û…' €€ ”€ ‚ÿªKх¥†_ Ž€–€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHttpEquivpublic void setHttpEquiv(String httpEquiv)*û…φ' €€ ”€ ‚ÿŒ1¥†[‡[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetNamepublic String getName()nIφɇ% €’€ä€‚‚ÿMeta information name. See the name attribute definition in HTML 4.0.&[‡ï‡# €€€‚ÿ*ɇˆ' €€ ”€ ‚ÿ›<ï‡ވ_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetNamepublic void setName(String name)*ˆވ' €€ ”€ ‚ÿ5ވn‰[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetSchemepublic String getScheme()qLވ߉% €˜€ä€‚‚ÿSelect form of content. See the scheme attribute definition in HTML 4.0.&n‰Š# €€€‚ÿ*߉/Š' €€ ”€ ‚ÿ¡BŠЊ_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetSchemepublic void setScheme(String scheme)*/ŠúŠ' €€ ”€ ‚ÿ&Њ ‹# €€€‚ÿÜyúŠüŒc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT ‹ý­#*šÂ€€ÿF€€€ç㕗Y€‰€ç–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VüŒ¯Ž\#ˆ€¬ÂÂ.€€€çîœû€ ‰€‚ÿ.€`€€çÃ(rހ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ýՎ# €€€‚ÿ*¯ŽÿŽ' €€ ”€ ‚ÿfûՎqÀk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun ÿŽqÀ‚Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ÿŽ¢À1Uÿÿÿÿÿÿÿÿÿÿÿÿ¢ÀÆÀ$qÀÆÀ" €€€ ÿP¢ÀÁ1#n<­>ŽÁ_ÁuCHTMLModElement (Common DOM API)I#ÆÀ_Á& €F€€€‚ÿHTMLModElement (Common DOM API)ÜyÁ;Ãc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT_Á<Ä­#*šÂ€€ÿF€€€ç–—Y€‰€ç–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V;ÃîÄ\#ˆ€¬ÂÂ.€€€ç-䑀 ‰€‚ÿ.€`€€ç²|º|€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&<ÄÅ# €€€‚ÿ*îÄ>Å' €€ ”€ ‚ÿ…KÅÃÅ: D€–€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLModElementAll Superinterfaces: )>ÅDÆX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&ÃÅjÆ# €€€‚ÿ*DÆ”Æ' €€ ”€ ‚ÿxìjÆ ÈŒ æ€Ù€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLModElementextends HTMLElementNotice of modification to part of a document. See the INS and DEL element definitions in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*”Æ6È' €€ ”€ ‚ÿ, ÈbÈ' € €€‚€‚ÿT6ȶÈB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'bÈÝÈ# €€€‚ÿ ƒ8¶È`ÉK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇÝÈ'ËÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'`ÉNË# €€€‚ÿ U'Ë£ËB#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryqN˧̓#ö€â÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çþo÷S€‰€€‚ÿÿÿ StringgetCite() A URI designating a document that describes the reason for the change.âO£Ë‰Í“#ö€ž÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çŠH0€‰€€‚ÿÿÿ StringgetDateTime() The date and time of the change.Ì6§ÌUΖ#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ç©ôJ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCite(String cite) Ô>‰Í)Ï–#ü€|÷€€ÿ"€€€€‚ÿ€€ÿr€€çuTꀉ€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetDateTime(String dateTime) 'UÎPÏ# €€€‚ÿ E)ÏàÏK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆPÏ©# „àÏÆÀ€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'àÏD# €€€‚ÿ ™<Ý]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYDG#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'Ýn# €€€‚ÿ „9GòK#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æn ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)ò> $ € €€‚‚ÿ T ’ B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail†/>  W ~€^€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCitepublic String getCite()žy’ ¶ % €ò€ä€‚‚ÿA URI designating a document that describes the reason for the change. See the cite attribute definition in HTML 4.0.& Ü # €€€‚ÿ*¶  ' €€ ”€ ‚ÿ›<Ü ¡ _ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCitepublic void setCite(String cite)* Ë ' €€ ”€ ‚ÿ”9¡ _ [ †€r€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetDateTimepublic String getDateTime()|WË Û % €®€ä€‚‚ÿThe date and time of the change. See the datetime attribute definition in HTML 4.0.&_  # €€€‚ÿ*Û + ' €€ ”€ ‚ÿ§H Ò _ Ž€€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetDateTimepublic void setDateTime(String dateTime)*+ ü ' €€ ”€ ‚ÿ&Ò "# €€€‚ÿÜyü  @c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM API" @ÆÀT" A­#*šÂ€€ÿF€€€ç–—Y€‰€ç–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V @¿A\#ˆ€¬ÂÂ.€€€ç-䑀 ‰€‚ÿ.€`€€ç²|º|€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD& AåA# €€€‚ÿ*¿AB' €€ ”€ ‚ÿfûåAuCk €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1BŠC1UÿÿÿÿÿÿÿÿÿÿÿÿŠCÊC$uCÊC" €€€ ÿS"ŠCD1ªd€=2ƒADiDÈ HTMLObjectElement (Common DOM API)L&ÊCiD& €L€€€‚ÿHTMLObjectElement (Common DOM API)ÜyDEFc#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç •—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITiDFG­#*šÂ€€ÿF€€€ç–—Y€‰€ç–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VEFøG\#ˆ€¬ÂÂ.€€€çð犝€ ‰€‚ÿ.€`€€ç{:$k€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&FGH# €€€‚ÿ*øGHH' €€ ”€ ‚ÿˆNHÐH: D€œ€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLObjectElementAll Superinterfaces: )HHQIX €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&ÐHwI# €€€‚ÿ*QI¡I' €€ ”€ ‚ÿwI§K‡ ܀ÿ€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚ÿpublic interface HTMLObjectElementextends HTMLElementGeneric embedded object. Note. In principle, all properties on the object element are read-write but in some environments some properties may be read-only once the underlying object is instantiated. See the OBJECT element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.,¡IÓK' € €€‚€‚ÿ*§KýK' €€ ”€ ‚ÿ,ÓK)L' € €€‚€‚ÿTýK}LB#T€$„€€ÿ"€€€€‚ÿÿÿField Summary')L€L# €€€‚ÿ ƒ8}L'MK#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ€LîNÁ#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE''MO# €€€‚ÿ UîNjOB#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryO‹€”#ö€¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çì:€‰€€‚ÿÿÿjO‹€ÊC StringgetAlign() Aligns this object (vertically or horizontally) with respect to its surrounding text.âOjOm“#ö€ž¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çvK§È€‰€€‚ÿÿÿ StringgetArchive() Space-separated list of archives.âO‹€O‚“#ö€ž¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çÌA¢€‰€€‚ÿÿÿ StringgetBorder() Width of border around the object.Ð=mƒ“#ö€z¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çaw«€‰€€‚ÿÿÿ StringgetCode() Applet class file.jO‚.„¥#Ô¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿZ€ €çê)û €‰€€€€€€€€‚ÿÿÿ StringgetCodeBase() Base URI for classid , data , and archive attributes.hƒ/…™#Ð¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €çÀ‰€€€€‚ÿÿÿ StringgetCodeType() Content type for data downloaded via classid attribute..”.„]†š#)¥ß€€ÿX€€€ïxŽ—YJdk14doc.4.hlp€‰€‚ÿ€"€ÿB€$€çDÿ_ÿ€‰€€€€‚ÿÿÿ DocumentgetContentDocument() The document this object contains, if there is any and it is available, or null otherwise.ñ^/…N‡“#ö€Œ¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çæƒs±€‰€€‚ÿÿÿ StringgetData() A URI specifying the location of the object's data.èp]†6ˆx#À€à¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çjhšI€‰€€‚ÿÿÿ booleangetDeclare() Declare (for future reference), but do not instantiate, this object.îgN‡$‰‡#ހΥ߀€ÿ4€€€粕—Y€‰€‚ÿ€0€ÿB€2€çÒŀ‰€€€€‚ÿÿÿ HTMLFormElementgetForm() Returns the FORM element containing this control.Ð=6ˆô‰“#ö€z¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç/ôU€‰€€‚ÿÿÿ StringgetHeight() Override height.u$‰üŠ“#ö€ê¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç®-€‰€€‚ÿÿÿ StringgetHspace() Horizontal space to the left and right of this image, applet, or object.õbô‰ñ‹“#ö€Ä¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çØ €‰€€‚ÿÿÿ StringgetName() Form control or object name when submitted with a form.ìYüŠ݌“#ö€²¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç¡ÎPL€‰€€‚ÿÿÿ StringgetStandby() Message to render while loading the object.ãkñ‹Àx#À€Ö¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çý·Ýÿ€‰€€‚ÿÿÿ intgetTabIndex() Index that represents the element's position in the tabbing order.úa݌ºŽ™#Â¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €çÆ‚…B€‰€€€€‚ÿÿÿ StringgetType() Content type for data downloaded via data attribute.ÚGÀ”“#ö€Ž¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç…)†Œ€‰€€‚ÿÿÿ StringgetUseMap() Use client-side image map.ýjºŽÀ“#ö€Ô¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€”ÀÊCÿ6€ €ç˜ 4€‰€€‚ÿÿÿ StringgetVspace() Vertical space above and below this image, applet, or object.Î;”kÁ“#ö€v¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çžÆ3€‰€€‚ÿÿÿ StringgetWidth() Override width.Î8À9–#ü€p¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çnÀ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) Ò<kÁ Ö#ü€x¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çùX8e€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetArchive(String archive) Ð:9ÂÛÖ#ü€t¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç—Hœ#€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetBorder(String border) Ì6 çĖ#ü€l¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çxn €‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCode(String code) Ô>ÛÃ{Å–#ü€|¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çՐµ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCodeBase(String codeBase) Ô>§ÄOÆ–#ü€|¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çš8耉€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCodeType(String codeType) Ì6{ÅÇ–#ü€l¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç‘倉€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetData(String data) ±9OÆÌÇx#À€r¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç“T˜€‰€€‚ÿÿÿ voidsetDeclare(boolean declare) Ð:ǜȖ#ü€t¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç:¡¬B€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHeight(String height) Ð:ÌÇlÉ–#ü€t¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çùJŒ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHspace(String hspace) Ì6œÈ8Ê–#ü€l¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç~IüЀ‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetName(String name) Ò<lÉ Ë–#ü€x¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çd|Ím€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetStandby(String standby) ¯78ʹËx#À€n¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çûNö€‰€€‚ÿÿÿ voidsetTabIndex(int tabIndex) Ì6 Ë…Ì–#ü€l¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çq:>ò€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetType(String type) Ð:¹ËUÍ–#ü€t¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç»CA€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetUseMap(String useMap) Ð:…Ì%Ζ#ü€t¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çcá.O€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetVspace(String vspace) Î8UÍóΖ#ü€p¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çAéÎ9€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetWidth(String width) '%ÎÏ# €€€‚ÿ EóΪÏK#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆÏç ©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§ªÏç ÊC€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'ªÏ # €€€‚ÿ ™<ç § ]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY  #ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'§ 8 # €€€‚ÿ „9 Œ K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ8 ß ]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)Œ  $ € €€‚‚ÿ Tß \ B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail}8 Ù E Z€p€€‚€€‚‚€粕—Y€‰€€€€‚ÿgetFormpublic HTMLFormElement getForm()¬{\ … 1 2€ö€ä€€€€€‚‚ÿReturns the FORM element containing this control. Returns null if this control is not within the context of a form.&Ù « # €€€‚ÿ*… Õ ' €€ ”€ ‚ÿŒ1« a [ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCodepublic String getCode()qFÕ Ò + &€Œ€ä€€€‚‚ÿApplet class file. See the code attribute for HTMLAppletElement.&a ø # €€€‚ÿ*Ò " ' €€ ”€ ‚ÿ›<ø œ _ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCodepublic void setCode(String code)*" ç ' €€ ”€ ‚ÿŽ3œ u [ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()Ù³ç N & €g€ä€‚‚ÿAligns this object (vertically or horizontally) with respect to its surrounding text. See the align attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&u t # €€€‚ÿ*N ž ' €€ ”€ ‚ÿž?t < _ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*ž f ' €€ ”€ ‚ÿ’7< @ [ †€n€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetArchivepublic String getArchive()f @ ÊC|Wf ˆ@ % €®€ä€‚‚ÿSpace-separated list of archives. See the archive attribute definition in HTML 4.0.& @ ®@ # €€€‚ÿ*ˆ@ Ø@ ' €€ ”€ ‚ÿ€E®@ |A _ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetArchivepublic void setArchive(String archive)*Ø@ ŠA ' €€ ”€ ‚ÿ5|A 6B [ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetBorderpublic String getBorder()§ŠA ÝB & €€ä€‚‚ÿWidth of border around the object. See the border attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&6B C # €€€‚ÿ*ÝB -C ' €€ ”€ ‚ÿ¡BC ÎC _ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetBorderpublic void setBorder(String border)*-C øC ' €€ ”€ ‚ÿ”9ÎC ŒD [ †€r€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCodeBasepublic String getCodeBase()©røC 5E 7 >€ä€ä€€€€€€€‚‚ÿBase URI for classid , data , and archive attributes. See the codebase attribute definition in HTML 4.0.&ŒD [E # €€€‚ÿ*5E …E ' €€ ”€ ‚ÿ§H[E ,F _ Ž€€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCodeBasepublic void setCodeBase(String codeBase)*…E VF ' €€ ”€ ‚ÿ”9,F êF [ †€r€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCodeTypepublic String getCodeType()›pVF …G + &€à€ä€€€‚‚ÿContent type for data downloaded via classid attribute. See the codetype attribute definition in HTML 4.0.&êF «G # €€€‚ÿ*…G ÕG ' €€ ”€ ‚ÿ§H«G |H _ Ž€€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCodeTypepublic void setCodeType(String codeType)*ÕG ŠH ' €€ ”€ ‚ÿŒ1|H 2I [ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetDatapublic String getData()‹fŠH œI % €Ì€ä€‚‚ÿA URI specifying the location of the object's data. See the data attribute definition in HTML 4.0.&2I ãI # €€€‚ÿ*œI J ' €€ ”€ ‚ÿ›<ãI šJ _ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetDatapublic void setData(String data)* J ÒJ ' €€ ”€ ‚ÿq4šJ CK = J€h€€‚€‚€€‚‚€€€€‚ÿgetDeclarepublic boolean getDeclare()ŸzÒJ âK % €ô€ä€‚‚ÿDeclare (for future reference), but do not instantiate, this object. See the declare attribute definition in HTML 4.0.&CK L # €€€‚ÿ*âK 2L ' €€ ”€ ‚ÿƒBL µL A R€„€€‚€‚€€‚‚€€€€‚€‚ÿsetDeclarepublic void setDeclare(boolean declare)*2L ßL ' €€ ”€ ‚ÿ5µL oM [ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHeightpublic String getHeight()jEßL ÙM % €Š€ä€‚‚ÿOverride height. See the height attribute definition in HTML 4.0.&oM ÿM # €€€‚ÿ*ÙM )N ' €€ ”€ ‚ÿ¡BÿM ÊN _ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHeightpublic void setHeight(String height)*)N ôN ' €€ ”€ ‚ÿ5ÊN „O [ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHspacepublic String getHspace()ͧôN ]€ & €O€ä€‚‚ÿHorizontal space to the left and right of this image, applet, or object. See the hspa„O ]€ ÊCce attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&„O ƒ€ # €€€‚ÿ*]€ ­€ ' €€ ”€ ‚ÿ¡Bƒ€ N _ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHspacepublic void setHspace(String hspace)*­€ x ' €€ ”€ ‚ÿŒ1N ‚ [ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetNamepublic String getName()jx “‚ % €Ô€ä€‚‚ÿForm control or object name when submitted with a form. See the name attribute definition in HTML 4.0.&‚ ¹‚ # €€€‚ÿ*“‚ ゠' €€ ”€ ‚ÿ›<¹‚ ~ƒ _ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetNamepublic void setName(String name)*゠šƒ ' €€ ”€ ‚ÿ’7~ƒ :„ [ †€n€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetStandbypublic String getStandby()†ašƒ À„ % €Â€ä€‚‚ÿMessage to render while loading the object. See the standby attribute definition in HTML 4.0.&:„ æ„ # €€€‚ÿ*À„ … ' €€ ”€ ‚ÿ€Eæ„ Ž… _ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetStandbypublic void setStandby(String standby)*… ޅ ' €€ ”€ ‚ÿo2Ž… M† = J€d€€‚€‚€€‚‚€€€€‚ÿgetTabIndexpublic int getTabIndex()žyޅ ë† % €ò€ä€‚‚ÿIndex that represents the element's position in the tabbing order. See the tabindex attribute definition in HTML 4.0.&M† ‡ # €€€‚ÿ*ë† ;‡ ' €€ ”€ ‚ÿ‚A‡ œ‡ A R€‚€€‚€‚€€‚‚€€€€‚€‚ÿsetTabIndexpublic void setTabIndex(int tabIndex)*;‡ ç‡ ' €€ ”€ ‚ÿŒ1œ‡ sˆ [ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTypepublic String getType()”iç‡ ‰ + &€Ò€ä€€€‚‚ÿContent type for data downloaded via data attribute. See the type attribute definition in HTML 4.0.&sˆ -‰ # €€€‚ÿ*‰ W‰ ' €€ ”€ ‚ÿ›<-‰ ò‰ _ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTypepublic void setType(String type)*W‰ Š ' €€ ”€ ‚ÿ5ò‰ ¬Š [ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetUseMappublic String getUseMap()tOŠ ‹ % €ž€ä€‚‚ÿUse client-side image map. See the usemap attribute definition in HTML 4.0.&¬Š F‹ # €€€‚ÿ* ‹ p‹ ' €€ ”€ ‚ÿ¡BF‹ Œ _ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetUseMappublic void setUseMap(String useMap)*p‹ ;Œ ' €€ ”€ ‚ÿ5Œ ˌ [ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetVspacepublic String getVspace()œ;Œ  & €9€ä€‚‚ÿVertical space above and below this image, applet, or object. See the vspace attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&ˌ ³ # €€€‚ÿ* ݍ ' €€ ”€ ‚ÿ¡B³ ~Ž _ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetVspacepublic void setVspace(String vspace)*ݍ šŽ ' €€ ”€ ‚ÿŽ3~Ž 6 [ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetWidthpublic String getWidth()hCšŽ ž % €†€ä€‚‚ÿOverride width. See the width attribute definition in HTML 4.0.&6 ď # €€€‚ÿ*ž À ' €€ ”€ ‚ÿď À ÊCž?ď ªÀ _ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetWidthpublic void setWidth(String width)* À ÔÀ ' €€ ”€ ‚ÿ€IªÀ xÁ [ †€’€€‚€‚€€‚‚€ïxŽ—YJdk14doc.4.hlp€‰€€€€‚ÿgetContentDocumentpublic Document getContentDocument()›iÔÀ  2 4€Ò€ä€€€‚‚€€‚ÿThe document this object contains, if there is any and it is available, or null otherwise.Since:5xÁ H & €€ɀ€‚‚ÿDOM Level 2& n # €€€‚ÿ*H ˜Â ' €€ ”€ ‚ÿ&n ŸÂ # €€€‚ÿÜy˜Â šÄ c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç •—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITŸÂ ›Å ­#*šÂ€€ÿF€€€ç–—Y€‰€ç–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VšÄ MÆ \#ˆ€¬ÂÂ.€€€çð犝€ ‰€‚ÿ.€`€€ç{:$k€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&›Å sÆ # €€€‚ÿ*MÆ Æ ' €€ ”€ ‚ÿfûsÆ È k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1Æ 4È 1Uÿÿÿÿÿÿÿÿ‘ÿÿÿÿ4È XÈ $È XÈ " €€€ ÿR!4È ªÈ 1ü%­>…B’ªÈ õÈ ŸM!HTMLOListElement (Common DOM API)K%XÈ õÈ & €J€€€‚ÿHTMLOListElement (Common DOM API)ÜyªÈ ÑÊ c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç •—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITõÈ ÒË ­#*šÂ€€ÿF€€€ç–—Y€‰€ç –—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÑÊ „Ì \#ˆ€¬ÂÂ.€€€ç³Èi©€ ‰€‚ÿ.€`€€çDøY€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ÒË ªÌ # €€€‚ÿ*„Ì ÔÌ ' €€ ”€ ‚ÿ‡MªÌ [Í : D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLOListElementAll Superinterfaces: )ÔÌ ÜÍ X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&[Í Î # €€€‚ÿ*ÜÍ ,Î ' €€ ”€ ‚ÿPÄÎ |Ï Œ 怉€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLOListElementextends HTMLElementOrdered list. See the OL element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*,Î ŠÏ ' €€ ”€ ‚ÿ,|Ï ÒÏ ' € €€‚€‚ÿTŠÏ 2!B#T€$„€€ÿ"ÒÏ 2!XÈ €€€€‚ÿÿÿField Summary'ÒÏ Y!# €€€‚ÿ ƒ82!Ü!K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇY!£!Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'Ü!Ê!# €€€‚ÿ U£!!B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÆNÊ!å!x#À€œ÷€€ÿ"€€€€‚ÿ€€ÿ6€€çŒ¥€‰€€‚ÿÿÿ booleangetCompact() Reduce spacing between list items.·?!œ!x#À€~÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç)瀉€€‚ÿÿÿ intgetStart() Starting sequence number.Î;å!j!“#ö€v÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç_Ýߘ€‰€€‚ÿÿÿ StringgetType() Numbering style.±9œ!!x#À€r÷€€ÿ"€€€€‚ÿ€€ÿ6€€çÈÙڞ€‰€€‚ÿÿÿ voidsetCompact(boolean compact) ©1j!Ä!x#À€b÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç]€‰€€‚ÿÿÿ voidsetStart(int start) Ì6!!–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çÊGπ‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetType(String type) 'Ä!·!# €€€‚ÿ E!G!K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ·!x !©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'G!Ÿ !# €€€‚ÿ ™<x !8 !]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYŸ !¢ !#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'8 !É !# €€€‚ÿ „9¢ !M!K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆÉ !|A!]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChildM!|A!XÈ , getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)M!¥A!$ € €€‚‚ÿ T|A!ùA!B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailk2¥A!dB!9 B€d€€‚€€‚‚€€€€‚ÿgetCompactpublic boolean getCompact()š‚ùA! C!& €€ä€‚‚ÿReduce spacing between list items. See the compact attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&dB!2C!# €€€‚ÿ* C!\C!' €€ ”€ ‚ÿƒB2C!ßC!A R€„€€‚€‚€€‚‚€€€€‚€‚ÿsetCompactpublic void setCompact(boolean compact)*\C! D!' €€ ”€ ‚ÿi,ßC!rD!= J€X€€‚€‚€€‚‚€€€€‚ÿgetStartpublic int getStart()œw D!E!% €î€ä€‚‚ÿStarting sequence number. See the start attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&rD!4E!# €€€‚ÿ*E!^E!' €€ ”€ ‚ÿy84E!×E!A R€p€€‚€‚€€‚‚€€€€‚€‚ÿsetStartpublic void setStart(int start)*^E!F!' €€ ”€ ‚ÿŒ1×E!F![ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTypepublic String getType()’mF!G!% €Ú€ä€‚‚ÿNumbering style. See the type attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&F!EG!# €€€‚ÿ*G!oG!' €€ ”€ ‚ÿ›<EG! H!_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTypepublic void setType(String type)*oG!4H!' €€ ”€ ‚ÿ& H!ZH!# €€€‚ÿÜy4H!6J!c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç •—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITZH!7K!­#*šÂ€€ÿF€€€ç–—Y€‰€ç –—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V6J!éK!\#ˆ€¬ÂÂ.€€€ç³Èi©€ ‰€‚ÿ.€`€€çDøY€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&7K!L!# €€€‚ÿ*éK!9L!' €€ ”€ ‚ÿfûL!ŸM!k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.19L!ÐM!1Uÿÿÿÿÿÿÿÿ“ÿÿÿÿÐM!ôM!$ŸM!ôM!" €€€ ÿU$ÐM!IN!1‚"2ƒAD”IN!—N!"HTMLOptGroupElement (Common DOM API)N(ôM!—N!& €P€€€‚ÿHTMLOptGroupElement (Common DOM API)ÜyIN!€!c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç •—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOve—N!€!ôM!rview Package Class Use Tree Deprecated Index Help Common DOM APIT—N!€!­#*šÂ€€ÿF€€€ç–—Y€‰€ç –—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç –—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V€!2‚!\#ˆ€¬ÂÂ.€€€çv©,µ€ ‰€‚ÿ.€`€€ç ¶÷G€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&€!X‚!# €€€‚ÿ*2‚!‚‚!' €€ ”€ ‚ÿŠPX‚! ƒ!: D€ €€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLOptGroupElementAll Superinterfaces: )‚‚!ƒ!X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node& ƒ!³ƒ!# €€€‚ÿ*ƒ!݃!' €€ ”€ ‚ÿ{ﳃ!X…!Œ æ€ß€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLOptGroupElementextends HTMLElementGroup options together in logical subdivisions. See the OPTGROUP element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*݃!‚…!' €€ ”€ ‚ÿ,X…!®…!' € €€‚€‚ÿT‚…!†!B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'®…!)†!# €€€‚ÿ ƒ8†!¬†!K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ)†!sˆ!Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'¬†!šˆ!# €€€‚ÿ Usˆ!ïˆ!B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÐXšˆ!¿‰!x#À€°÷€€ÿ"€€€€‚ÿ€€ÿ6€€çÂj“)€‰€€‚ÿÿÿ booleangetDisabled() The control is unavailable in this context.äQïˆ!£Š!“#ö€¢÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €玠^“€‰€€‚ÿÿÿ StringgetLabel() Assigns a label to this option group.³;¿‰!V‹!x#À€v÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç@ Î:€‰€€‚ÿÿÿ voidsetDisabled(boolean disabled) Î8£Š!$Œ!–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€ç17áꀉ€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetLabel(String label) 'V‹!KŒ!# €€€‚ÿ E$Œ!ی!K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆKŒ! Ž!©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'ی!3Ž!# €€€‚ÿ ™< Ž!̎!]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY3Ž!BÂ!#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp̎!BÂ!ôM!€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'̎!iÂ!# €€€‚ÿ „9BÂ!íÂ!K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆiÂ!Æ!]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)íÂ!9Æ!$ € €€‚‚ÿ TÆ!Æ!B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailm49Æ!úÆ!9 B€h€€‚€€‚‚€€€€‚ÿgetDisabledpublic boolean getDisabled()‡bÆ!Ç!% €Ä€ä€‚‚ÿThe control is unavailable in this context. See the disabled attribute definition in HTML 4.0.&úÆ!§Ç!# €€€‚ÿ*Ç!ÑÇ!' €€ ”€ ‚ÿ†E§Ç!WÈ!A R€Š€€‚€‚€€‚‚€€€€‚€‚ÿsetDisabledpublic void setDisabled(boolean disabled)*ÑÇ!È!' €€ ”€ ‚ÿŽ3WÈ!É![ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetLabelpublic String getLabel()~YÈ!É!% €²€ä€‚‚ÿAssigns a label to this option group. See the label attribute definition in HTML 4.0.&É!³É!# €€€‚ÿ*É!ÝÉ!' €€ ”€ ‚ÿž?³É!{Ê!_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetLabelpublic void setLabel(String label)*ÝÉ!¥Ê!' €€ ”€ ‚ÿ&{Ê!ËÊ!# €€€‚ÿÜy¥Ê!§Ì!c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç •—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITËÊ!šÍ!­#*šÂ€€ÿF€€€ç–—Y€‰€ç –—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç –—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V§Ì!ZÎ!\#ˆ€¬ÂÂ.€€€çv©,µ€ ‰€‚ÿ.€`€€ç ¶÷G€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&šÍ!€Î!# €€€‚ÿ*ZÎ!ªÎ!' €€ ”€ ‚ÿfû€Î!"k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All RighªÎ!"ôM!ts Reserved.1ªÎ!M"1Uÿÿÿÿÿÿÿÿ•ÿÿÿÿM"q"$"q"" €€€ ÿS"M"Ä"1N5…B,‚E–Ä""ÍÅ"HTMLOptionElement (Common DOM API)L&q""& €L€€€‚ÿHTMLOptionElement (Common DOM API)ÜyÄ"ì"c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç •—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT"í"­#*šÂ€€ÿF€€€ç –—Y€‰€ç –—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç –—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vì"Ÿ"\#ˆ€¬ÂÂ.€€€ç9ŠïÀ€ ‰€‚ÿ.€`€€çÖsa6€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&í"Å"# €€€‚ÿ*Ÿ"ï"' €€ ”€ ‚ÿˆNÅ"w": D€œ€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLOptionElementAll Superinterfaces: )ï"ø"X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&w""# €€€‚ÿ*ø"H"' €€ ”€ ‚ÿ\Ð"€"Œ 怡€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLOptionElementextends HTMLElementA selectable choice. See the OPTION element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*H"Î"' €€ ”€ ‚ÿ,€"ú"' € €€‚€‚ÿTÎ"N"B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'ú"u"# €€€‚ÿ ƒ8N"ø"K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇu"¿ "Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'ø"æ "# €€€‚ÿ U¿ "; "B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summaryàhæ " "x#À€Ð¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç• Œ€‰€€‚ÿÿÿ booleangetDefaultSelected() Represents the value of the HTML selected attribute.ÐX; "ë "x#À€°¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç‹(ý€‰€€‚ÿÿÿ booleangetDisabled() The control is unavailable in this context.îg "Ù "‡#ހΥ߀€ÿ4€€€粕—Y€‰€‚ÿ€0€ÿB€2€ç[*áȀ‰€€€€‚ÿÿÿ HTMLFormElementgetForm() Returns the FORM element containing this control.îjë "Ç"„#؀ԥ߀€ÿ"€€€€‚ÿ€€ÿN€€瓳„€‰€€€€€€‚ÿÿÿ intgetIndex() The index of this OPTION in its parent SELECT , starting from 0.êWÙ "±"“#ö€®¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çA؋€‰€€‚ÿÿÿ StringgetLabel() Option label for use in hierarchical menus.ŠÇ"À@"y#À€¥ß€€ÿ"€€€€‚ÿ€€±"À@"q"ÿ6€€çޘ]ñ€‰€€‚ÿÿÿ booleangetSelected() Represents the current state of the corresponding form control, in an interactive user agent.ëX±"«A"“#ö€°¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç¬]‹A€‰€€‚ÿÿÿ StringgetText() The text contained within the option element.ÞKÀ@"‰B"“#ö€–¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çæ-|΀‰€€‚ÿÿÿ StringgetValue() The current form control value.ÁI«A"JC"x#À€’¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çáì]@€‰€€‚ÿÿÿ voidsetDefaultSelected(boolean defaultSelected) ³;‰B"ýC"x#À€v¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç;CW €‰€€‚ÿÿÿ voidsetDisabled(boolean disabled) Î8JC"ËD"–#ü€p¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç$u€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetLabel(String label) ³;ýC"~E"x#À€v¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç#dz€‰€€‚ÿÿÿ voidsetSelected(boolean selected) Î8ËD"LF"–#ü€p¥ß€€ÿ"€€€€‚ÿ€€ÿr€€ç‰Ær}€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetValue(String value) '~E"sF"# €€€‚ÿ ELF"G"K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆsF"4H"©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'G"[H"# €€€‚ÿ ™<4H"ôH"]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY[H"^L"#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'ôH"…L"# €€€‚ÿ „9^L" M"K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ…L"8€"]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, repla M"8€"q"ceChild, setNodeValue, setPrefix) M"a€"$ € €€‚‚ÿ T8€"µ€"B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail}8a€"2"E Z€p€€‚€€‚‚€粕—Y€‰€€€€‚ÿgetFormpublic HTMLFormElement getForm()¬{µ€"ށ"1 2€ö€ä€€€€€‚‚ÿReturns the FORM element containing this control. Returns null if this control is not within the context of a form.&2"‚"# €€€‚ÿ*ށ".‚"' €€ ”€ ‚ÿD‚"¯‚"= J€ˆ€€‚€‚€€‚‚€€€€‚ÿgetDefaultSelectedpublic boolean getDefaultSelected()f:.‚"„", &€u€ä€€€‚‚ÿRepresents the value of the HTML selected attribute. The value of this attribute does not change if the state of the corresponding form control, in an interactive user agent, changes. Changing defaultSelected , however, resets the state of the form control. See the selected attribute definition in HTML 4.0.&¯‚";„"# €€€‚ÿ*„"e„"' €€ ”€ ‚ÿ›Z;„"…"A R€Ž€€‚€‚€€‚‚€€€€‚€‚ÿsetDefaultSelectedpublic void setDefaultSelected(boolean defaultSelected)*e„"*…"' €€ ”€ ‚ÿŒ1…"¶…"[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTextpublic String getText()V1*…" †"% €b€ä€‚‚ÿThe text contained within the option element.&¶…"2†"# €€€‚ÿ* †"\†"' €€ ”€ ‚ÿi,2†"ņ"= J€X€€‚€‚€€‚‚€€€€‚ÿgetIndexpublic int getIndex()yH\†">‡"1 2€€ä€€€€€‚‚ÿThe index of this OPTION in its parent SELECT , starting from 0.&ņ"d‡"# €€€‚ÿ*>‡"އ"' €€ ”€ ‚ÿs6d‡"ˆ"= J€l€€‚€‚€€‚‚€€€€‚ÿgetDisabledpublic boolean getDisabled()‡bއ"ˆˆ"% €Ä€ä€‚‚ÿThe control is unavailable in this context. See the disabled attribute definition in HTML 4.0.&ˆ"®ˆ"# €€€‚ÿ*ˆˆ"؈"' €€ ”€ ‚ÿ†E®ˆ"^‰"A R€Š€€‚€‚€€‚‚€€€€‚€‚ÿsetDisabledpublic void setDisabled(boolean disabled)*؈"ˆ‰"' €€ ”€ ‚ÿŽ3^‰"Š"[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetLabelpublic String getLabel()„_ˆ‰"šŠ"% €Ÿ€ä€‚‚ÿOption label for use in hierarchical menus. See the label attribute definition in HTML 4.0.&Š"ÀŠ"# €€€‚ÿ*šŠ"êŠ"' €€ ”€ ‚ÿž?ÀŠ"ˆ‹"_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetLabelpublic void setLabel(String label)*êŠ"²‹"' €€ ”€ ‚ÿs6ˆ‹"%Œ"= J€l€€‚€‚€€‚‚€€€€‚ÿgetSelectedpublic boolean getSelected()í²‹"8"& €Û€ä€‚‚ÿRepresents the current state of the corresponding form control, in an interactive user agent. Changing this attribute changes the state of the form control, but does not change the value of the HTML selected attribute of the element.&%Œ"^"# €€€‚ÿ*8"ˆ"' €€ ”€ ‚ÿ†E^"Ž"A R€Š€€‚€‚€€‚‚€€€€‚€‚ÿsetSelectedpublic void setSelected(boolean selected)*ˆ"8Ž"' €€ ”€ ‚ÿŽ3Ž"Ǝ"[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetValuepublic String getValue()xS8Ž">"% €Š€ä€‚‚ÿThe current form control value. See the value attribute definition in HTML 4.0.&Ǝ"d"# €€€‚ÿ*>"Ž"' €€ ”€ ‚ÿž?d"8À"_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetValuepuŽ"8À"q"blic void setValue(String value)*Ž"bÀ"' €€ ”€ ‚ÿ&8À"ˆÀ"# €€€‚ÿÜybÀ"dÂ"c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç •—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITˆÀ"eÃ"­#*šÂ€€ÿF€€€ç –—Y€‰€ç –—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç –—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VdÂ"Ä"\#ˆ€¬ÂÂ.€€€ç9ŠïÀ€ ‰€‚ÿ.€`€€çÖsa6€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&eÃ"=Ä"# €€€‚ÿ*Ä"gÄ"' €€ ”€ ‚ÿfû=Ä"ÍÅ"k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1gÄ"þÅ"1Uÿÿÿÿÿÿÿÿ—ÿÿÿÿþÅ""Æ"$ÍÅ""Æ"" €€€ ÿV%þÅ"xÆ"1ÎD­F˜xÆ"ÇÆ"®D#HTMLParagraphElement (Common DOM API)O)"Æ"ÇÆ"& €R€€€‚ÿHTMLParagraphElement (Common DOM API)ÜyxÆ"£È"c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç8•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITÇÆ"€É"­#*šÂ€€ÿF€€€ç –—Y€‰€ç –—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç –—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V£È"VÊ"\#ˆ€¬ÂÂ.€€€çüj²Ì€ ‰€‚ÿ.€`€€çŸ1Ë$€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&€É"|Ê"# €€€‚ÿ*VÊ"ŠÊ"' €€ ”€ ‚ÿ‹Q|Ê"1Ë": D€¢€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLParagraphElementAll Superinterfaces: )ŠÊ"²Ë"X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&1Ë"ØË"# €€€‚ÿ*²Ë"Ì"' €€ ”€ ‚ÿQÅØË"SÍ"Œ 怋€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLParagraphElementextends HTMLElementParagraphs. See the P element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*Ì"}Í"' €€ ”€ ‚ÿ,SÍ"©Í"' € €€‚€‚ÿT}Í"ýÍ"B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'©Í"$Î"# €€€‚ÿ ƒ8ýÍ"§Î"K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ$Î"z#Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, §Î"z#"Æ"ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'§Î"¡## €€€‚ÿ Uz#ö#B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÙF¡#Ï#“#ö€Œ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çéÊïÆ€‰€€‚ÿÿÿ StringgetAlign() Horizontal text alignment.Î8ö##–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€çÌe€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) 'Ï#Ä## €€€‚ÿ E#T#K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆÄ#…#©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'T#¬## €€€‚ÿ ™<…#E#]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY¬#¯##ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'E#Ö## €€€‚ÿ „9¯#Z #K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆÖ#} #]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)Z #Š #$ € €€‚‚ÿ T} #ú #B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailˆ1Š #‚ #W ~€b€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()xú ##% €ð€ä€‚‚ÿHorizontal text alignment. See the align attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&‚ #E## €€€‚ÿ*#o#' €€ ”€ ‚ÿž?E# #_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*o#7#' €€ ”€ ‚ÿ& #]## €€€‚ÿÜy7#EA#c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç8•—Y€‰]#EA#"Æ"€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT]#FB#­#*šÂ€€ÿF€€€ç –—Y€‰€ç –—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç –—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VEA#øB#\#ˆ€¬ÂÂ.€€€çüj²Ì€ ‰€‚ÿ.€`€€çŸ1Ë$€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&FB#C## €€€‚ÿ*øB#HC#' €€ ”€ ‚ÿfûC#®D#k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1HC#ßD#1Uÿÿÿÿÿÿÿÿ™ÿÿÿÿßD#E#$®D#E#" €€€ ÿR!ßD#UE#1++,‚EHšUE# E#¹Ï#HTMLParamElement (Common DOM API)K%E# E#& €J€€€‚ÿHTMLParamElement (Common DOM API)ÜyUE#|G#c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç/•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT E#}H#­#*šÂ€€ÿF€€€ç –—Y€‰€ç –—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç –—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V|G#/I#\#ˆ€¬ÂÂ.€€€ç¿Ku؀ ‰€‚ÿ.€`€€çhï4€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&}H#UI## €€€‚ÿ*/I#I#' €€ ”€ ‚ÿ‡MUI#J#: D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLParamElementAll Superinterfaces: )I#‡J#X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&J#­J## €€€‚ÿ*‡J#×J#' €€ ”€ ‚ÿsá­J#JL#’ ò€Ã€€‚€‚€€‚繕—Y€‰€‚‚€€‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLParamElementextends HTMLElementParameters fed to the OBJECT element. See the PARAM element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*×J#tL#' €€ ”€ ‚ÿ,JL# L#' € €€‚€‚ÿTtL#ôL#B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary' L#M## €€€‚ÿ ƒ8ôL#žM#K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇM#eO#Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'žM#ŒO## €€€‚ÿ UeO#áO#B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryßLŒO#̀#“#ö€˜÷áO#̀#E#€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çÎž€‰€€‚ÿÿÿ StringgetName() The name of a run-time parameter.wáO#â#Ÿ#î÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿN€ €çÃGIò€‰€€€€€€‚ÿÿÿ StringgetType() Content type for the value attribute when valuetype has the value "ref".áǸ#Â#“#ö€œ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çLÖЀ‰€€‚ÿÿÿ StringgetValue() The value of a run-time parameter.mâ#Ƀ#™#Ú÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €çþ>]€‰€€€€‚ÿÿÿ StringgetValueType() Information about the meaning of the value attribute value.Ì6Â#•„#–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ç;Œ !€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetName(String name) Ì6Ƀ#a…#–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ç.}bB€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetType(String type) Î8•„#/†#–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€çoB¯¬€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetValue(String value) Ö@a…#‡#–#ü€€÷€€ÿ"€€€€‚ÿ€€ÿr€€çaL‚€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetValueType(String valueType) '/†#,‡## €€€‚ÿ E‡#Œ‡#K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ,‡#íˆ#©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'Œ‡#‰## €€€‚ÿ ™<íˆ#­‰#]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY‰###ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'­‰#>## €€€‚ÿ „9##K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ>#ñÀ#]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOw#ñÀ#E#nerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)#Á#$ € €€‚‚ÿ TñÀ#nÁ#B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail†/Á#ôÁ#W ~€^€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetNamepublic String getName()yTnÁ#mÂ#% €š€ä€‚‚ÿThe name of a run-time parameter. See the name attribute definition in HTML 4.0.&ôÁ#“Â## €€€‚ÿ*mÂ#œÂ#' €€ ”€ ‚ÿ›<“Â#XÃ#_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetNamepublic void setName(String name)*œÂ#‚Ã#' €€ ”€ ‚ÿŒ1XÃ#Ä#[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTypepublic String getType()°‚Ã#ŸÄ#1 2€þ€ä€€€€€‚‚ÿContent type for the value attribute when valuetype has the value "ref". See the type attribute definition in HTML 4.0.&Ä#äÄ## €€€‚ÿ*ŸÄ#Å#' €€ ”€ ‚ÿ›<äÄ#©Å#_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTypepublic void setType(String type)*Å#ÓÅ#' €€ ”€ ‚ÿŽ3©Å#aÆ#[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetValuepublic String getValue(){VÓÅ#ÜÆ#% €¬€ä€‚‚ÿThe value of a run-time parameter. See the value attribute definition in HTML 4.0.&aÆ#Ç## €€€‚ÿ*ÜÆ#,Ç#' €€ ”€ ‚ÿž?Ç#ÊÇ#_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetValuepublic void setValue(String value)*,Ç#ôÇ#' €€ ”€ ‚ÿ–;ÊÇ#ŠÈ#[ †€v€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetValueTypepublic String getValueType() uôÇ#*É#+ &€ê€ä€€€‚‚ÿInformation about the meaning of the value attribute value. See the valuetype attribute definition in HTML 4.0.&ŠÈ#PÉ## €€€‚ÿ**É#zÉ#' €€ ”€ ‚ÿªKPÉ#$Ê#_ Ž€–€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetValueTypepublic void setValueType(String valueType)*zÉ#NÊ#' €€ ”€ ‚ÿ&$Ê#tÊ## €€€‚ÿÜyNÊ#PÌ#c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç/•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITtÊ#QÍ#­#*šÂ€€ÿF€€€ç –—Y€‰€ç –—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç –—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VPÌ#Î#\#ˆ€¬ÂÂ.€€€ç¿Ku؀ ‰€‚ÿ.€`€€çhï4€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&QÍ#)Î## €€€‚ÿ*Î#SÎ#' €€ ”€ ‚ÿfû)Î#¹Ï#k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1SÎ# $1Uÿÿÿÿÿÿÿÿ›ÿÿÿÿ $0$¹Ï# $¹Ï#$¹Ï#0$" €€€ ÿP $€$1$­F$…Hœ€$É$ N$HTMLPreElement (Common DOM API)I#0$É$& €F€€€‚ÿHTMLPreElement (Common DOM API)Üy€$¥$c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç0•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITÉ$Š$­#*šÂ€€ÿF€€€ç –—Y€‰€ç–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç –—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V¥$X$\#ˆ€¬ÂÂ.€€€ç‚,8ä€ ‰€‚ÿ.€`€€ç1­ž€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Š$~$# €€€‚ÿ*X$š$' €€ ”€ ‚ÿ…K~$-$: D€–€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLPreElementAll Superinterfaces: )š$®$X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&-$Ô$# €€€‚ÿ*®$þ$' €€ ”€ ‚ÿTÈÔ$R$Œ 怑€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLPreElementextends HTMLElementPreformatted text. See the PRE element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*þ$|$' €€ ”€ ‚ÿ,R$š$' € €€‚€‚ÿT|$ü$B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'š$#$# €€€‚ÿ ƒ8ü$Š$K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ#$m $Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'Š$” $# €€€‚ÿ Um $é $B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summary¶>” $Ÿ $x#À€|÷€€ÿ"€€€€‚ÿ€€ÿ6€€çÐC€‰€€‚ÿÿÿ intgetWidth() Fixed width for content.©1é $H $x#À€b÷€€ÿ"€€€€‚ÿ€€ÿ6€€çç…ì]€‰€€‚ÿÿÿ voidsetWidth(int width) 'Ÿ $o $# €€€‚ÿ EH $ÿ $K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆo $0$©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'ÿ $W$# €€€‚ÿ ™<0$ð$]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYW$fB$#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.ð$fB$0$4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'ð$B$# €€€‚ÿ „9fB$C$K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ƍB$4F$]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)C$]F$$ € €€‚‚ÿ T4F$±F$B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailc*]F$G$9 B€T€€‚€€‚‚€€€€‚ÿgetWidthpublic int getWidth()›v±F$¯G$% €ì€ä€‚‚ÿFixed width for content. See the width attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&G$ÕG$# €€€‚ÿ*¯G$ÿG$' €€ ”€ ‚ÿy8ÕG$xH$A R€p€€‚€‚€€‚‚€€€€‚€‚ÿsetWidthpublic void setWidth(int width)*ÿG$¢H$' €€ ”€ ‚ÿ&xH$ÈH$# €€€‚ÿÜy¢H$€J$c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç0•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITÈH$¥K$­#*šÂ€€ÿF€€€ç –—Y€‰€ç–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç –—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V€J$WL$\#ˆ€¬ÂÂ.€€€ç‚,8ä€ ‰€‚ÿ.€`€€ç1­ž€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&¥K$}L$# €€€‚ÿ*WL$§L$' €€ ”€ ‚ÿfû}L$ N$k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1§L$>N$1Uÿÿÿÿÿÿÿÿÿÿÿÿ>N$bN$$ N$bN$" €€€ ÿR!>N$ŽN$1H…IžŽN$ÿN$üÌ$HTMLQuoteElement (Common DOM API)K%bN$ÿN$& €J€€€‚ÿHTMLQuoteElement (Common DOM API)ÜyŽN$ç€$c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç1•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdÿN$ç€$bN$k14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITÿN$è$­#*šÂ€€ÿF€€€ç –—Y€‰€ç:–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vç€$š‚$\#ˆ€¬ÂÂ.€€€çE ûï€ ‰€‚ÿ.€`€€çújð€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&è$À‚$# €€€‚ÿ*š‚$ê‚$' €€ ”€ ‚ÿ‡MÀ‚$qƒ$: D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLQuoteElementAll Superinterfaces: )ê‚$òƒ$X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&qƒ$„$# €€€‚ÿ*òƒ$B„$' €€ ”€ ‚ÿtÜ„$¶…$˜ þ€¹€€‚€‚€€‚繕—Y€‰€‚‚€€€€‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLQuoteElementextends HTMLElementFor the Q and BLOCKQUOTE elements. See the Q element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*B„$à…$' €€ ”€ ‚ÿ,¶…$ †$' € €€‚€‚ÿTà…$`†$B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary' †$‡†$# €€€‚ÿ ƒ8`†$ ‡$K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeLJ†$ш$Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE' ‡$øˆ$# €€€‚ÿ Uш$M‰$B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryíZøˆ$:Š$“#ö€Ž÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çÆDÊ€‰€€‚ÿÿÿ StringgetCite() A URI designating a source document or message.Ì6M‰$‹$–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çq|”1€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCite(String cite) ':Š$-‹$# €€€‚ÿ E‹$œ‹$K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ-‹$îŒ$©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'œ‹$$# €€€‚ÿ ™<îŒ$®$]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY$$Á$#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, ®$$Á$bN$getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'®$KÁ$# €€€‚ÿ „9$Á$ÏÁ$K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆKÁ$òÄ$]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)ÏÁ$Å$$ € €€‚‚ÿ TòÄ$oÅ$B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail†/Å$õÅ$W ~€^€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCitepublic String getCite()‡boÅ$|Æ$% €Ä€ä€‚‚ÿA URI designating a source document or message. See the cite attribute definition in HTML 4.0.&õÅ$¢Æ$# €€€‚ÿ*|Æ$ÌÆ$' €€ ”€ ‚ÿ›<¢Æ$gÇ$_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCitepublic void setCite(String cite)*ÌÆ$‘Ç$' €€ ”€ ‚ÿ&gÇ$·Ç$# €€€‚ÿÜy‘Ç$“É$c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç1•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT·Ç$”Ê$­#*šÂ€€ÿF€€€ç –—Y€‰€ç:–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V“É$FË$\#ˆ€¬ÂÂ.€€€çE ûï€ ‰€‚ÿ.€`€€çújð€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&”Ê$lË$# €€€‚ÿ*FË$–Ë$' €€ ”€ ‚ÿfûlË$üÌ$k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1–Ë$-Í$1UÿÿÿÿÿÿÿÿŸÿÿÿÿ-Í$QÍ$$üÌ$QÍ$" €€€ ÿS"-Í$€Í$1r4$…HK €Í$ðÍ$óÁ%HTMLScriptElement (Common DOM API)L&QÍ$ðÍ$& €L€€€‚ÿHTMLScriptElement (Common DOM API)Üy€Í$ÌÏ$c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç2•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITðÍ$Ù%­#*šÂ€€ÿF€ÌÏ$Ù%QÍ$€€ç–—Y€‰€ç1–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç:–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÌÏ$‹%\#ˆ€¬ÂÂ.€€€çÉ®yõ€ ‰€‚ÿ.€`€€ç† 5ê€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Ù%±%# €€€‚ÿ*‹%Û%' €€ ”€ ‚ÿˆN±%c%: D€œ€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLScriptElementAll Superinterfaces: )Û%ä%X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&c% %# €€€‚ÿ*ä%4%' €€ ”€ ‚ÿZÎ %Ž%Œ 思€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLScriptElementextends HTMLElementScript statements. See the SCRIPT element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*4%ž%' €€ ”€ ‚ÿ,Ž%ä%' € €€‚€‚ÿTž%8%B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'ä%_%# €€€‚ÿ ƒ88%â%K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ_%©%Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'â%Ð%# €€€‚ÿ U©%%%B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summaryï\Ð% %“#ö€ž÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çu€Xù€‰€€‚ÿÿÿ StringgetCharset() The character encoding of the linked resource.ãk%%÷ %x#À€Ö÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç ¡ª€‰€€‚ÿÿÿ booleangetDefer() Indicates that the user agent can defer processing of the script.×D %Î %“#ö€ˆ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çO6ž€‰€€‚ÿÿÿ StringgetEvent() Reserved for future use.ÙF÷ %§ %“#ö€Œ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çׂ‚º€‰€€‚ÿÿÿ StringgetHtmlFor() Reserved for future use.àMÎ %‡ %“#ö€š÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç©×ãҀ‰€€‚ÿÿÿ StringgetSrc() URI designating an external script.àM§ %g %“#ö€š÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç\Z|r€‰€€‚ÿÿÿ StringgetText() The script content of the element.æS‡ %M%“#ö€Š÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çA…v€‰€€‚ÿÿÿ StringgetType() The content type of the script language.Ò<g %%–#ü€x÷€€ÿ"€€€€‚ÿ€€ÿr€€ç8Õ¿€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCharset(String charset) ­5M%Ì%x#À€j÷€€ÿ"€€€€‚ÿ€€ÿ6€€çïÓG€‰€€‚ÿÿÿ voidsetDefer(boolean defer) Î8%Š@%–#ü€p÷€€ÿÌ%Š@%QÍ$"€€€€‚ÿ€€ÿr€€ç²ÁŸõ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetEvent(String event) Ò<Ì%xA%–#ü€x÷€€ÿ"€€€€‚ÿ€€ÿr€€çÙàñ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHtmlFor(String htmlFor) Ê4Š@%BB%–#ü€h÷€€ÿ"€€€€‚ÿ€€ÿr€€ç¬RÚ£€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetSrc(String src) Ì6xA%C%–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ç‡B™€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetText(String text) Ì6BB%ÚC%–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€ç,ã|ð€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetType(String type) 'C%D%# €€€‚ÿ EÚC%‘D%K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆD%ÂE%©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'‘D%éE%# €€€‚ÿ ™<ÂE%‚F%]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYéE%ìI%#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'‚F%J%# €€€‚ÿ „9ìI%—J%K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆJ%ºM%]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)—J%ãM%$ € €€‚‚ÿ TºM%7N%B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail†/ãM%œN%W ~€^€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTextpublic String getText()K&7N%O%% €L€ä€‚‚ÿThe script content of the element.&œN%.O%# €€€‚ÿ*O%XO%' €€ ”€ ‚ÿ›<.O% €%_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTextpublic void setText(String text)XO% €%QÍ$*XO%6€%' €€ ”€ ‚ÿ’7 €%Ȁ%[ †€n€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHtmlForpublic String getHtmlFor()A6€% %% €8€ä€‚‚ÿReserved for future use.&Ȁ%/%# €€€‚ÿ* %Y%' €€ ”€ ‚ÿ€E/%ý%_ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHtmlForpublic void setHtmlFor(String htmlFor)*Y%'‚%' €€ ”€ ‚ÿŽ3ý%µ‚%[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetEventpublic String getEvent()A'‚%ö‚%% €8€ä€‚‚ÿReserved for future use.&µ‚%ƒ%# €€€‚ÿ*ö‚%Fƒ%' €€ ”€ ‚ÿž?ƒ%äƒ%_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetEventpublic void setEvent(String event)*Fƒ%„%' €€ ”€ ‚ÿ’7äƒ% „%[ †€n€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCharsetpublic String getCharset()‰d„%)…%% €È€ä€‚‚ÿThe character encoding of the linked resource. See the charset attribute definition in HTML 4.0.& „%O…%# €€€‚ÿ*)…%y…%' €€ ”€ ‚ÿ€EO…%†%_ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCharsetpublic void setCharset(String charset)*y…%G†%' €€ ”€ ‚ÿm0†%ކ%= J€`€€‚€‚€€‚‚€€€€‚ÿgetDeferpublic boolean getDefer()šuG†%N‡%% €ê€ä€‚‚ÿIndicates that the user agent can defer processing of the script. See the defer attribute definition in HTML 4.0.&ކ%t‡%# €€€‚ÿ*N‡%ž‡%' €€ ”€ ‚ÿ}<t‡%ˆ%A R€x€€‚€‚€€‚‚€€€€‚€‚ÿsetDeferpublic void setDefer(boolean defer)*ž‡%Eˆ%' €€ ”€ ‚ÿŠ/ˆ%ψ%[ †€^€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetSrcpublic String getSrc()zUEˆ%I‰%% €ª€ä€‚‚ÿURI designating an external script. See the src attribute definition in HTML 4.0.&ψ%o‰%# €€€‚ÿ*I‰%™‰%' €€ ”€ ‚ÿ˜9o‰%1Š%_ Ž€r€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetSrcpublic void setSrc(String src)*™‰%[Š%' €€ ”€ ‚ÿŒ11Š%çŠ%[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTypepublic String getType()€[[Š%g‹%% €¶€ä€‚‚ÿThe content type of the script language. See the type attribute definition in HTML 4.0.&çŠ%‹%# €€€‚ÿ*g‹%·‹%' €€ ”€ ‚ÿ›<‹%RŒ%_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTypepublic void setType(String type)*·‹%|Œ%' €€ ”€ ‚ÿ&RŒ%¢Œ%# €€€‚ÿÜy|Œ%~Ž%c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç2•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT¢Œ%%­#*šÂ€€ÿF€€€ç–—Y€‰€ç1–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç:–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V~Ž%=À%\#ˆ€¬ÂÂ.€€€çÉ®yõ€ ‰€‚ÿ.€`€€ç† 5ê€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | %=À%QÍ$METHODDETAIL: FIELD | CONSTR | METHOD&%cÀ%# €€€‚ÿ*=À%À%' €€ ”€ ‚ÿfûcÀ%óÁ%k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1À%$Â%1Uÿÿÿÿÿÿÿÿ¡ÿÿÿÿ$Â%HÂ%$óÁ%HÂ%" €€€ ÿS"$Â%›Â%1SJ…IÀ„M¢›Â%çÂ%:Ì&HTMLSelectElement (Common DOM API)L&HÂ%çÂ%& €L€€€‚ÿHTMLSelectElement (Common DOM API)Üy›Â%ÃÄ%c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç3•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITçÂ%ÄÅ%­#*šÂ€€ÿF€€€ç:–—Y€‰€ç2–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç1–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÃÄ%vÆ%\#ˆ€¬ÂÂ.€€€çîǟ‹€ ‰€‚ÿ.€`€€çu]}ˆ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ÄÅ%œÆ%# €€€‚ÿ*vÆ%ÆÆ%' €€ ”€ ‚ÿˆNœÆ%NÇ%: D€œ€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLSelectElementAll Superinterfaces: )ÆÆ%ÏÇ%X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&NÇ%õÇ%# €€€‚ÿ*ÏÇ%È%' €€ ”€ ‚ÿØLõÇ%÷É%Œ 怙€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLSelectElementextends HTMLElementThe select element allows the selection of an option. The contained options can be directly accessed through the select element as a collection. See the SELECT element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*È%!Ê%' €€ ”€ ‚ÿ,÷É%MÊ%' € €€‚€‚ÿT!Ê%¡Ê%B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'MÊ%ÈÊ%# €€€‚ÿ ƒ8¡Ê%KË%K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇÈÊ%Í%Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'KË%9Í%# €€€‚ÿ UÍ%ŽÍ%B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summary:9Í%ÈÎ%#;¥ß€€ÿ"€€€€‚ÿ€€ÿ~€€çG$"€‰€繕—Y€‰€繕—Y€‰€€€€€€‚ÿÿÿ voidadd(HTMLElement element, HTMLElement before) Add a new element to the collection of OPTION elements for this SELECT .ÄLŽÍ%ŒÏ%x#À€˜¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çAb¬€‰€€‚ÿÿÿ voidblur() Removes keyboard focus from this element.ÁIÈÎ%Y&x#À€’¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çìE€€ŒÏ%Y&HÂ%‚ÿÿÿ voidfocus() Gives keyboard focus to this element.ÐXŒÏ%)&x#À€°¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç*j€‰€€‚ÿÿÿ booleangetDisabled() The control is unavailable in this context.îgY&&‡#ހΥ߀€ÿ4€€€粕—Y€‰€‚ÿ€0€ÿB€2€çª÷€ð€‰€€€€‚ÿÿÿ HTMLFormElementgetForm() Returns the FORM element containing this control.ÍO)&ä&~#̀ž¥ß€€ÿ"€€€€‚ÿ€€ÿB€€çdúlõ€‰€€€€‚ÿÿÿ intgetLength() The number of options in this SELECT .÷s&Û&„#؀æ¥ß€€ÿ"€€€€‚ÿ€€ÿN€€çÎù怉€€€€€€‚ÿÿÿ booleangetMultiple() If true, multiple OPTION elements may be selected in this SELECT .õbä&Ð&“#ö€Ä¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç-µÝ3€‰€€‚ÿÿÿ StringgetName() Form control or object name when submitted with a form.ûtÛ&Ë&‡#ހè¥ß€€ÿ4€€€爕—Y€‰€‚ÿ€.€ÿB€0€ç̎Èe€‰€€€€‚ÿÿÿ HTMLCollectiongetOptions() The collection of OPTION elements contained by this element.àhÐ&«&x#À€Ð¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç­OlB€‰€€‚ÿÿÿ intgetSelectedIndex() The ordinal index of the selected option, starting from 0.Ž<Ë&_&x#À€x¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çÓª^a€‰€€‚ÿÿÿ intgetSize() Number of visible rows.ãk«&B&x#À€Ö¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç÷Ú6€‰€€‚ÿÿÿ intgetTabIndex() Index that represents the element's position in the tabbing order.ÜI_& &“#ö€’¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çà_Xm€‰€€‚ÿÿÿ StringgetType() The type of this form control.ÞKB&ü &“#ö€–¥ß€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç+ª_|€‰€€‚ÿÿÿ StringgetValue() The current form control value.| &ü &„#؀ø¥ß€€ÿ"€€€€‚ÿ€€ÿN€€ç—p£€‰€€€€€€‚ÿÿÿ voidremove(int index) Remove an element from the collection of OPTION elements for this SELECT .³;ü &¯ &x#À€v¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çxÊ>Ѐ‰€€‚ÿÿÿ voidsetDisabled(boolean disabled) ³;ü &b &x#À€v¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çäKÃр‰€€‚ÿÿÿ voidsetMultiple(boolean multiple) Ì6¯ &. &–#ü€l¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çzÆ €‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetName(String name) ¹Ab &ç &x#À€‚¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€çNåkȀ‰€€‚ÿÿÿ voidsetSelectedIndex(int selectedIndex) §/. &Ž&x#À€^¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç8£eš€‰€€‚ÿÿÿ voidsetSize(int size) ¯7ç &=&x#À€n¥ß€€ÿ"€€€€‚ÿ€€ÿ6€€ç€ÌØÀ€‰€€‚ÿÿÿ voidsetTabIndex(int tabIndex) Î8Ž&@&–#ü€p¥ß€€ÿ"€€€€‚ÿ€€ÿr€€çŽ6Ž€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetValue(String value) =&@&HÂ% '=&>@&# €€€‚ÿ E@&Î@&K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ>@&ÿA&©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'Î@&&B&# €€€‚ÿ ™<ÿA&¿B&]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY&B&)F&#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'¿B&PF&# €€€‚ÿ „9)F&ÔF&K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆPF&÷I&]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)ÔF& J&$ € €€‚‚ÿ T÷I&tJ&B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail†/ J&úJ&W ~€^€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTypepublic String getType()ʘtJ&ÄK&2 2€1€ä€€€€€‚‚ÿThe type of this form control. This is the string "select-multiple" when the multiple attribute is true and the string "select-one" when false .&úJ&êK&# €€€‚ÿ*ÄK&L&' €€ ”€ ‚ÿy<êK&L&= J€x€€‚€‚€€‚‚€€€€‚ÿgetSelectedIndexpublic int getSelectedIndex()îÈL&{M&& €‘€ä€‚‚ÿThe ordinal index of the selected option, starting from 0. The value -1 is returned if no element is selected. If multiple options are selected, the index of the first selected option is returned.&L&¡M&# €€€‚ÿ*{M&ËM&' €€ ”€ ‚ÿ‘P¡M&\N&A R€ €€‚€‚€€‚‚€€€€‚€‚ÿsetSelectedIndexpublic void setSelectedIndex(int selectedIndex)*ËM&†N&' €€ ”€ ‚ÿŽ3\N&O&[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetValuepublic String getValue()H#†N&\O&% €F€ä€‚‚ÿThe current form control value.&O&‚O&# €€€‚ÿ*\O&¬O&' €€ ”€ ‚ÿž?‚O&V€&_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€¬O&V€&HÂ%€‚€‚ÿsetValuepublic void setValue(String value)*¬O&€€&' €€ ”€ ‚ÿk.V€&ë€&= J€\€€‚€‚€€‚‚€€€€‚ÿgetLengthpublic int getLength()W,€€&B&+ &€X€ä€€€‚‚ÿThe number of options in this SELECT .&ë€&h&# €€€‚ÿ*B&’&' €€ ”€ ‚ÿƒ:h&‚&I b€t€€‚€‚€€‚‚€粕—Y€‰€€€€‚ÿgetFormpublic HTMLFormElement getForm()¬{’&Á‚&1 2€ö€ä€€€€€‚‚ÿReturns the FORM element containing this control. Returns null if this control is not within the context of a form.&‚&ç‚&# €€€‚ÿ*Á‚&ƒ&' €€ ”€ ‚ÿˆ?ç‚&™ƒ&I b€~€€‚€‚€€‚‚€爕—Y€‰€€€€‚ÿgetOptionspublic HTMLCollection getOptions()mBƒ&„&+ &€„€ä€€€‚‚ÿThe collection of OPTION elements contained by this element.&™ƒ&,„&# €€€‚ÿ*„&V„&' €€ ”€ ‚ÿs6,„&Ʉ&= J€l€€‚€‚€€‚‚€€€€‚ÿgetDisabledpublic boolean getDisabled()‡bV„&P…&% €Ä€ä€‚‚ÿThe control is unavailable in this context. See the disabled attribute definition in HTML 4.0.&Ʉ&v…&# €€€‚ÿ*P…& …&' €€ ”€ ‚ÿ†Ev…&&†&A R€Š€€‚€‚€€‚‚€€€€‚€‚ÿsetDisabledpublic void setDisabled(boolean disabled)* …&P†&' €€ ”€ ‚ÿs6&†&Æ&= J€l€€‚€‚€€‚‚€€€€‚ÿgetMultiplepublic boolean getMultiple()®}P†&q‡&1 2€ú€ä€€€€€‚‚ÿIf true, multiple OPTION elements may be selected in this SELECT . See the multiple attribute definition in HTML 4.0.&Æ&—‡&# €€€‚ÿ*q‡&Á‡&' €€ ”€ ‚ÿ†E—‡&Gˆ&A R€Š€€‚€‚€€‚‚€€€€‚€‚ÿsetMultiplepublic void setMultiple(boolean multiple)*Á‡&qˆ&' €€ ”€ ‚ÿŒ1Gˆ&ýˆ&[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetNamepublic String getName()jqˆ&Œ‰&% €Ô€ä€‚‚ÿForm control or object name when submitted with a form. See the name attribute definition in HTML 4.0.&ýˆ&²‰&# €€€‚ÿ*Œ‰&܉&' €€ ”€ ‚ÿ›<²‰&wŠ&_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetNamepublic void setName(String name)*܉&¡Š&' €€ ”€ ‚ÿg*wŠ&‹&= J€T€€‚€‚€€‚‚€€€€‚ÿgetSizepublic int getSize()oJ¡Š&w‹&% €”€ä€‚‚ÿNumber of visible rows. See the size attribute definition in HTML 4.0.&‹&‹&# €€€‚ÿ*w‹&Nj&' €€ ”€ ‚ÿv5‹&=Œ&A R€j€€‚€‚€€‚‚€€€€‚€‚ÿsetSizepublic void setSize(int size)*Nj&gŒ&' €€ ”€ ‚ÿo2=Œ&֌&= J€d€€‚€‚€€‚‚€€€€‚ÿgetTabIndexpublic int getTabIndex()žygŒ&t&% €ò€ä€‚‚ÿIndex that represents the element's position in the tabbing order. See the tabindex attribute definition in HTML 4.0.&֌&š&# €€€‚ÿ*t&č&' €€ ”€ ‚ÿ‚Aš&FŽ&A R€‚€€‚€‚€€‚‚€€€€‚€‚ÿsetTabIndexpublic void setTabIndex(int tabIndex)*č&pŽ&' €€ ”€ ‚ÿùƒFŽ&i&v º€€€‚€‚€€‚‚€€€繕—Y€‰€ç¹•—Y€‰€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿaddpublic void add(HTMLElement element, HTMLElement before) throws DOMException2pŽ&Á&] ˆ€e€ä€€€€€€€€€€€€€€€€€‚‚€€‚ÿAdd a new element to the collection of OPTION elements i&Á&HÂ%for this SELECT . This method is the equivalent of the appendChild method of the Node interface if the before parameter is null . It is equivalent to the insertBefore method on the parent of before in all other cases.Parameters:£ni&§Á&5 :€Ü€ɀ€€‚€€€€‚ÿelement - The element to add.before - The element to insert before, or null for the tail of the list.2 Á&ÙÁ&' €€ä€€‚ÿThrows:±d§Á&ŠÂ&M j€È€ɀï{Ž—YJdk14doc.4.hlp€‰€€€€€‚‚ÿDOMException - NOT_FOUND_ERR: Raised if before is not a descendant of the SELECT element.&ÙÁ&°Â&# €€€‚ÿ*ŠÂ&ÚÂ&' €€ ”€ ‚ÿo2°Â&IÃ&= J€d€€‚€‚€€‚‚€€€€‚ÿremovepublic void remove(int index)ɐÚÂ&Ä&9 @€!€ä€€€€€‚‚€€‚ÿRemove an element from the collection of OPTION elements for this SELECT . Does nothing if no element has the given index.Parameters:g>IÃ&yÄ&) "€|€ɀ€€‚‚ÿindex - The index of the item to remove, starting from 0.&Ä&ŸÄ&# €€€‚ÿ*yÄ&ÉÄ&' €€ ”€ ‚ÿb%ŸÄ&+Å&= J€J€€‚€‚€€‚‚€€€€‚ÿblurpublic void blur()R-ÉÄ&}Å&% €Z€ä€‚‚ÿRemoves keyboard focus from this element.&+Å&£Å&# €€€‚ÿ*}Å&ÍÅ&' €€ ”€ ‚ÿd'£Å&1Æ&= J€N€€‚€‚€€‚‚€€€€‚ÿfocuspublic void focus()N)ÍÅ&Æ&% €R€ä€‚‚ÿGives keyboard focus to this element.&1Æ&¥Æ&# €€€‚ÿ*Æ&ÏÆ&' €€ ”€ ‚ÿ&¥Æ&õÆ&# €€€‚ÿÜyÏÆ&ÑÈ&c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç3•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITõÆ&ÒÉ&­#*šÂ€€ÿF€€€ç:–—Y€‰€ç2–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç1–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÑÈ&„Ê&\#ˆ€¬ÂÂ.€€€çîǟ‹€ ‰€‚ÿ.€`€€çu]}ˆ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ÒÉ&ªÊ&# €€€‚ÿ*„Ê&ÔÊ&' €€ ”€ ‚ÿfûªÊ&:Ì&k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ÔÊ&kÌ&1Uÿÿÿÿÿÿÿÿ£ÿÿÿÿkÌ&Ì&$:Ì&Ì&" €€€ ÿR!kÌ&áÌ&1Å&KYO€áÌ&,Í&t‚'HTMLStyleElement (Common DOM API)K%Ì&,Í&& €J€€€‚ÿHTMLStyleElement (Common DOM API)ÜyáÌ&Ï&c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç4•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT,Í&'­#*šÂ€€ÿF€€€ç1–—Y€‰€ç3–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç2–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All ClÏ&'Ì&asses²VÏ&Ç'\#ˆ€¬ÂÂ.€€€籚b—€ ‰€‚ÿ.€`€€ç>çv€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&'í'# €€€‚ÿ*Ç''' €€ ”€ ‚ÿ‡Mí'ž': D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLStyleElementAll Superinterfaces: )''X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&ž'E'# €€€‚ÿ*'o'' €€ ”€ ‚ÿ–E''’ ò€ €€‚€‚€€‚繕—Y€‰€‚‚€€‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLStyleElementextends HTMLElementStyle information. See the STYLE element definition in HTML 4.0, the module and the LinkStyle interface in the module. See also the Document Object Model (DOM) Level 2 Specification.*o'/'' €€ ”€ ‚ÿ,'['' € €€‚€‚ÿT/'¯'B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'['Ö'# €€€‚ÿ ƒ8¯'Y'K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇÖ' 'Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'Y'G'# €€€‚ÿ U 'œ'B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÆNG'b'x#À€œ÷€€ÿ"€€€€‚ÿ€€ÿ6€€çóςX€‰€€‚ÿÿÿ booleangetDisabled() Enables/disables the style sheet.î[œ'P '“#ö€¶÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çÉsÞ߀‰€€‚ÿÿÿ StringgetMedia() Designed for use with one or more target media.ëXb'; '“#ö€°÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çyº²Ã€‰€€‚ÿÿÿ StringgetType() The content type pf the style sheet language.³;P 'î 'x#À€v÷€€ÿ"€€€€‚ÿ€€ÿ6€€çsÈ €‰€€‚ÿÿÿ voidsetDisabled(boolean disabled) Î8; 'Œ '–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€笶Ä$€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetMedia(String media) Ì6î 'ˆ '–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çdxÜ €‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetType(String type) 'Œ '¯ '# €€€‚ÿ Eˆ '? 'K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ¯ 'p'©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'? '—'# €€€‚ÿ ™<p'0']#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY—'ŠB'#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk140'ŠB'Ì&doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'0'ÍB'# €€€‚ÿ „9ŠB'QC'K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆÍB'tF']#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)QC'F'$ € €€‚‚ÿ TtF'ñF'B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailm4F'^G'9 B€h€€‚€€‚‚€€€€‚ÿgetDisabledpublic boolean getDisabled()J%ñF'šG'% €J€ä€‚‚ÿEnables/disables the style sheet.&^G'ÎG'# €€€‚ÿ*šG'øG'' €€ ”€ ‚ÿ†EÎG'~H'A R€Š€€‚€‚€€‚‚€€€€‚€‚ÿsetDisabledpublic void setDisabled(boolean disabled)*øG'šH'' €€ ”€ ‚ÿŽ3~H'6I'[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetMediapublic String getMedia()ˆcšH'ŸI'% €Æ€ä€‚‚ÿDesigned for use with one or more target media. See the media attribute definition in HTML 4.0.&6I'äI'# €€€‚ÿ*ŸI'J'' €€ ”€ ‚ÿž?äI'¬J'_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetMediapublic void setMedia(String media)*J'ÖJ'' €€ ”€ ‚ÿŒ1¬J'bK'[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTypepublic String getType()…`ÖJ'çK'% €À€ä€‚‚ÿThe content type pf the style sheet language. See the type attribute definition in HTML 4.0.&bK' L'# €€€‚ÿ*çK'7L'' €€ ”€ ‚ÿ›< L'ÒL'_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTypepublic void setType(String type)*7L'üL'' €€ ”€ ‚ÿ&ÒL'"M'# €€€‚ÿÜyüL'þN'c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç4•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT"M' €'­#*šÂ€€ÿF€€€ç1–—Y€‰€ç3–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç2–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All ClassesþN' €'Ì&²VþN'Ÿ€'\#ˆ€¬ÂÂ.€€€籚b—€ ‰€‚ÿ.€`€€ç>çv€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD& €'ä€'# €€€‚ÿ*Ÿ€''' €€ ”€ ‚ÿfûä€'t‚'k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1'¥‚'1Uÿÿÿÿÿÿÿÿ¥ÿÿÿÿ¥‚'ɂ'$t‚'ɂ'" €€€ ÿY(¥‚'"ƒ'1:À„MPŠ"ƒ'tƒ'œ(HTMLTableCaptionElement (Common DOM API)R,ɂ'tƒ'& €X€€€‚ÿHTMLTableCaptionElement (Common DOM API)Üy"ƒ'P…'c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç5•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITtƒ'Q†'­#*šÂ€€ÿF€€€ç2–—Y€‰€ç4–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç3–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VP…'‡'\#ˆ€¬ÂÂ.€€€çt‰%£€ ‰€‚ÿ.€`€€çÙPe€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Q†')‡'# €€€‚ÿ*‡'S‡'' €€ ”€ ‚ÿŽT)‡'á‡': D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLTableCaptionElementAll Superinterfaces: )S‡'bˆ'X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&á‡'ˆˆ'# €€€‚ÿ*bˆ'²ˆ'' €€ ”€ ‚ÿ\Јˆ'Š'Œ 怡€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLTableCaptionElementextends HTMLElementTable caption See the CAPTION element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*²ˆ'8Š'' €€ ”€ ‚ÿ,Š'dŠ'' € €€‚€‚ÿT8Š'žŠ'B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'dŠ'ߊ'# €€€‚ÿ ƒ8žŠ'b‹'K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇߊ')'Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'b‹'P'# €€€‚ÿ U)'¥'B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryëXP'Ž'“#ö€°÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çá~ö€‰€€‚ÿÿÿ StringgetAlign() Caption alignment with respect to the table.Î8¥'^'–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€çÄIπ‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) 'Ž'…'# €€€‚ÿ E^'!À'K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.h…'!À'ɂ'tml.HTMLElement1ˆ…'RÁ'©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'!À'yÁ'# €€€‚ÿ ™<RÁ'Â']#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYyÁ'|Å'#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'Â'£Å'# €€€‚ÿ „9|Å''Æ'K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ£Å'JÉ']#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)'Æ'sÉ'$ € €€‚‚ÿ TJÉ'ÇÉ'B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailˆ1sÉ'OÊ'W ~€b€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()°ŠÇÉ'ÿÊ'& €€ä€‚‚ÿCaption alignment with respect to the table. See the align attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&OÊ'%Ë'# €€€‚ÿ*ÿÊ'OË'' €€ ”€ ‚ÿž?%Ë'íË'_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*OË'Ì'' €€ ”€ ‚ÿ&íË'=Ì'# €€€‚ÿÜyÌ'Î'c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç5•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT=Ì'Ï'­#*šÂ€€ÿF€€€ç2–—Y€‰€ç4–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç3–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÎ'ÌÏ'\#ˆ€¬ÂÂ.€€€çt‰%£€ ‰€‚ÿ.€`€€çÙPe€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Ï' (# €€€‚ÿÌÏ' (ɂ'*ÌÏ'6(' €€ ”€ ‚ÿfû (œ(k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.16(Í(1Uÿÿÿÿÿÿÿÿ§ÿÿÿÿÍ(ñ($œ(ñ(" €€€ ÿV%Í(G(1}QYO­RšG(–(uC)HTMLTableCellElement (Common DOM API)O)ñ(–(& €R€€€‚ÿHTMLTableCellElement (Common DOM API)ÜyG(r(c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç6•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT–(s(­#*šÂ€€ÿF€€€ç3–—Y€‰€ç5–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç4–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vr(%(\#ˆ€¬ÂÂ.€€€ç7j讀 ‰€‚ÿ.€`€€çЖºS€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&s(K(# €€€‚ÿ*%(u(' €€ ”€ ‚ÿ‹QK((: D€¢€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLTableCellElementAll Superinterfaces: )u((X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&(§(# €€€‚ÿ*(Ñ(' €€ ”€ ‚ÿ‹ó§(\ (˜ þ€ç€€‚€‚€€‚繕—Y€‰€‚‚€€€€‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLTableCellElementextends HTMLElementThe object used to represent the TH and TD elements. See the TD element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*Ñ(† (' €€ ”€ ‚ÿ,\ (² (' € €€‚€‚ÿT† ( (B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'² (- (# €€€‚ÿ ƒ8 (° (K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ- (w (Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'° (ž (# €€€‚ÿ Uw (ó (B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÜIž (Ï (“#ö€’÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €矌*ŀ‰€€‚ÿÿÿ StringgetAbbr() Abbreviation for header cells.äQó (³(“#ö€¢÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €甶-w€‰€€‚ÿÿÿ StringgetAlign() Horizontal alignment of data in cell.ÝJÏ ((“#ö€”÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç2í®É€‰€€‚ÿÿÿ StringgetAxis() Names group of related headers.×D³(s@(“#ö€ˆ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€(s@(ñ(ÿ6€ €çeg)€‰€€‚ÿÿÿ StringgetBgColor() Cell background color.Õ](HA(x#À€º÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç3²ˆ¶€‰€€‚ÿÿÿ intgetCellIndex() The index of this cell in the row, starting from 0.æSs@(.B(“#ö€Š÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç"â/€‰€€‚ÿÿÿ StringgetCh() Alignment character for cells in a column.ÝJHA( C(“#ö€”÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çEHéF€‰€€‚ÿÿÿ StringgetChOff() Offset of alignment character.ÂJ.B(ÍC(x#À€”÷€€ÿ"€€€€‚ÿ€€ÿ6€€çQ8€‰€€‚ÿÿÿ intgetColSpan() Number of columns spanned by cell.ö] C(ÃD(™#º÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €ç¥ø|€‰€€€€‚ÿÿÿ StringgetHeaders() List of id attribute values for header cells.Ì9ÍC(E(“#ö€r÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç,’Œº€‰€€‚ÿÿÿ StringgetHeight() Cell height.ºBÃD(IF(x#À€„÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç¿Z©€‰€€‚ÿÿÿ booleangetNoWrap() Suppress word wrapping.¿GE(G(x#À€Ž÷€€ÿ"€€€€‚ÿ€€ÿ6€€çƒCú€‰€€‚ÿÿÿ intgetRowSpan() Number of rows spanned by cell.ÝJIF(åG(“#ö€”÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç³«§€‰€€‚ÿÿÿ StringgetScope() Scope covered by header cells.ãPG(ÈH(“#ö€ ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çŽkù€‰€€‚ÿÿÿ StringgetVAlign() Vertical alignment of data in cell.Ê7åG(’I(“#ö€n÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç‘&œ€‰€€‚ÿÿÿ StringgetWidth() Cell width.Ì6ÈH(^J(–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çiîp쀉€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAbbr(String abbr) Î8’I(,K(–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€ç·Qçæ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) Ì6^J(øK(–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çÝu,±€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAxis(String axis) Ò<,K(ÊL(–#ü€x÷€€ÿ"€€€€‚ÿ€€ÿr€€ç(𳀉€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetBgColor(String bgColor) È2øK(’M(–#ü€d÷€€ÿ"€€€€‚ÿ€€ÿr€€ç-‘Øi€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCh(String ch) Î8ÊL(`N(–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€ç(èßŀ‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetChOff(String chOff) ­5’M( O(x#À€j÷€€ÿ"€€€€‚ÿ€€ÿ6€€çšdð€‰€€‚ÿÿÿ voidsetColSpan(int colSpan) Ò<`N(ßO(–#ü€x÷€€ÿ"€€€€‚ÿ€€ÿr€€çh)M7€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHeaders(String headers) Ð: O(»€(–#ü€t÷ßO(»€(ñ(€€ÿ"€€€€‚ÿ€€ÿr€€ç÷àÂǀ‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetHeight(String height) ¯7ßO(j(x#À€n÷€€ÿ"€€€€‚ÿ€€ÿ6€€çfn°E€‰€€‚ÿÿÿ voidsetNoWrap(boolean noWrap) ­5»€(‚(x#À€j÷€€ÿ"€€€€‚ÿ€€ÿ6€€çP¹³*€‰€€‚ÿÿÿ voidsetRowSpan(int rowSpan) Î8j(å‚(–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€ç#ý€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetScope(String scope) Ð:‚(µƒ(–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€ççÐòŸ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetVAlign(String vAlign) Î8å‚(ƒ„(–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€çøÌŸ`€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetWidth(String width) 'µƒ(ª„(# €€€‚ÿ Eƒ„(:…(K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆª„(k†(©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle':…(’†(# €€€‚ÿ ™<k†(+‡(]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY’†(•Š(#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'+‡(ŒŠ(# €€€‚ÿ „9•Š(@‹(K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆŒŠ(cŽ(]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)@‹(ŒŽ($ € €€‚‚ÿ TcŽ(àŽ(B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailk2ŒŽ(K(9 B€d€€‚€€‚‚€€€€‚ÿgetCellIndexpublic int getCellIndex()˜sàŽ( À(% €æ€ä€‚‚ÿThe index of this cell in the row, starting from 0. This index is in document tree order and not display order.K( À(ñ(&K(2À(# €€€‚ÿ* À(\À(' €€ ”€ ‚ÿŒ12À(èÀ([ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAbbrpublic String getAbbr()vQ\À(^Á(% €¢€ä€‚‚ÿAbbreviation for header cells. See the abbr attribute definition in HTML 4.0.&èÀ(„Á(# €€€‚ÿ*^Á(®Á(' €€ ”€ ‚ÿ›<„Á(IÂ(_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAbbrpublic void setAbbr(String abbr)*®Á(sÂ(' €€ ”€ ‚ÿŽ3IÂ(Ã([ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()~YsÂ(Ã(% €²€ä€‚‚ÿHorizontal alignment of data in cell. See the align attribute definition in HTML 4.0.&Ã(¥Ã(# €€€‚ÿ*Ã(ÏÃ(' €€ ”€ ‚ÿž?¥Ã(mÄ(_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*ÏÃ(—Ä(' €€ ”€ ‚ÿŒ1mÄ(#Å([ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAxispublic String getAxis()wR—Ä(šÅ(% €€€ä€‚‚ÿNames group of related headers. See the axis attribute definition in HTML 4.0.&#Å(ÀÅ(# €€€‚ÿ*šÅ(êÅ(' €€ ”€ ‚ÿ›<ÀÅ(…Æ(_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAxispublic void setAxis(String axis)*êÅ(¯Æ(' €€ ”€ ‚ÿ’7…Æ(AÇ([ †€n€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetBgColorpublic String getBgColor()›v¯Æ(ÜÇ(% €ì€ä€‚‚ÿCell background color. See the bgcolor attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&AÇ(È(# €€€‚ÿ*ÜÇ(,È(' €€ ”€ ‚ÿ€EÈ(ÐÈ(_ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetBgColorpublic void setBgColor(String bgColor)*,È(úÈ(' €€ ”€ ‚ÿˆ-ÐÈ(‚É([ †€Z€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetChpublic String getCh()‚]úÈ(Ê(% €º€ä€‚‚ÿAlignment character for cells in a column. See the char attribute definition in HTML 4.0.&‚É(*Ê(# €€€‚ÿ*Ê(TÊ(' €€ ”€ ‚ÿ•6*Ê(éÊ(_ Ž€l€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetChpublic void setCh(String ch)*TÊ(Ë(' €€ ”€ ‚ÿŽ3éÊ(¡Ë([ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetChOffpublic String getChOff()yTË(Ì(% €š€ä€‚‚ÿOffset of alignment character. See the charoff attribute definition in HTML 4.0.&¡Ë(@Ì(# €€€‚ÿ*Ì(jÌ(' €€ ”€ ‚ÿž?@Ì(Í(_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetChOffpublic void setChOff(String chOff)*jÌ(2Í(' €€ ”€ ‚ÿm0Í(ŸÍ(= J€`€€‚€‚€€‚‚€€€€‚ÿgetColSpanpublic int getColSpan()}X2Í(Î(% €°€ä€‚‚ÿNumber of columns spanned by cell. See the colspan attribute definition in HTML 4.0.&ŸÍ(BÎ(# €€€‚ÿ*Î(lÎ(' €€ ”€ ‚ÿ>BÎ(ëÎ(A R€|€€‚€‚€€‚‚€€€€‚€‚ÿsetColSpanpublic void setColSpan(int colSpan)*lÎ(Ï(' €€ ”€ ‚ÿ’7ëÎ(§Ï([ †€n€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHeaderspublic String getHeaders()eÏ(C)+ &€Ê€ä€€€‚‚ÿList of id attribute values for header cell§Ï(C)ñ(s. See the headers attribute definition in HTML 4.0.&§Ï(i)# €€€‚ÿ*C)“)' €€ ”€ ‚ÿ€Ei)7)_ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHeaderspublic void setHeaders(String headers)*“)a)' €€ ”€ ‚ÿ57)ñ)[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHeightpublic String getHeight()ka))% €Ö€ä€‚‚ÿCell height. See the height attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&ñ)§)# €€€‚ÿ*)Ñ)' €€ ”€ ‚ÿ¡B§)r)_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetHeightpublic void setHeight(String height)*Ñ)œ)' €€ ”€ ‚ÿo2r) )= J€d€€‚€‚€€‚‚€€€€‚ÿgetNoWrappublic boolean getNoWrap()›vœ)Š)% €ì€ä€‚‚ÿSuppress word wrapping. See the nowrap attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.& )Ì)# €€€‚ÿ*Š)ö)' €€ ”€ ‚ÿ€?Ì)v)A R€~€€‚€‚€€‚‚€€€€‚€‚ÿsetNoWrappublic void setNoWrap(boolean noWrap)*ö) )' €€ ”€ ‚ÿm0v) )= J€`€€‚€‚€€‚‚€€€€‚ÿgetRowSpanpublic int getRowSpan()zU )‡)% €ª€ä€‚‚ÿNumber of rows spanned by cell. See the rowspan attribute definition in HTML 4.0.& )­)# €€€‚ÿ*‡)×)' €€ ”€ ‚ÿ>­)V)A R€|€€‚€‚€€‚‚€€€€‚€‚ÿsetRowSpanpublic void setRowSpan(int rowSpan)*×)€)' €€ ”€ ‚ÿŽ3V))[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetScopepublic String getScope()wR€)…)% €€€ä€‚‚ÿScope covered by header cells. See the scope attribute definition in HTML 4.0.&)«)# €€€‚ÿ*…)Õ)' €€ ”€ ‚ÿž?«)s )_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetScopepublic void setScope(String scope)*Õ) )' €€ ”€ ‚ÿ5s )- )[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetVAlignpublic String getVAlign()}X )ª )% €°€ä€‚‚ÿVertical alignment of data in cell. See the valign attribute definition in HTML 4.0.&- )Ð )# €€€‚ÿ*ª )ú )' €€ ”€ ‚ÿ¡BÐ )› )_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetVAlignpublic void setVAlign(String vAlign)*ú )Å )' €€ ”€ ‚ÿŽ3› )S )[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetWidthpublic String getWidth()ŽiÅ )á )% €Ò€ä€‚‚ÿCell width. See the width attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&S ) )# €€€‚ÿ*á )1 )' €€ ”€ ‚ÿž? )Ï )_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetWidthpublic void setWidth(String width)*1 )ù )' €€ ”€ ‚ÿ&Ï ))# €€€‚ÿÜyù ) @)c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç6•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM API) @)ñ(T) A)­#*šÂ€€ÿF€€€ç3–—Y€‰€ç5–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç4–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V @)¿A)\#ˆ€¬ÂÂ.€€€ç7j讀 ‰€‚ÿ.€`€€çЖºS€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD& A)åA)# €€€‚ÿ*¿A)B)' €€ ”€ ‚ÿfûåA)uC)k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1B)ŠC)1Uÿÿÿÿÿÿÿÿ©ÿÿÿÿŠC)ÊC)$uC)ÊC)" €€€ ÿU$ŠC)D)1ä2P&TªD)mD)Q*HTMLTableColElement (Common DOM API)N(ÊC)mD)& €P€€€‚ÿHTMLTableColElement (Common DOM API)ÜyD)IF)c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç7•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITmD)JG)­#*šÂ€€ÿF€€€ç4–—Y€‰€ç6–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç5–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VIF)üG)\#ˆ€¬ÂÂ.€€€çúJ«º€ ‰€‚ÿ.€`€€ç™T$B€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&JG)"H)# €€€‚ÿ*üG)LH)' €€ ”€ ‚ÿŠP"H)ÖH): D€ €€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLTableColElementAll Superinterfaces: )LH)WI)X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&ÖH)}I)# €€€‚ÿ*WI)§I)' €€ ”€ ‚ÿ~æ}I)%K)˜ þ€Í€€‚€‚€€‚繕—Y€‰€‚‚€€€€‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLTableColElementextends HTMLElementRegroups the COL and COLGROUP elements. See the COL element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*§I)OK)' €€ ”€ ‚ÿ,%K){K)' € €€‚€‚ÿTOK)ÏK)B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'{K)öK)# €€€‚ÿ ƒ8ÏK)yL)K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇöK)@N)Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'yL)gN)# €€€‚ÿ U@N)ŒN)B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryëXgN)§O)“#ö€°÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çGîZø€‰€€‚ÿÿÿ StringgetAlign() Horizontal alignment of cell data in column.æSŒN)™€)“#ö€Š÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp§O)™€)ÊC)€‰€‚ÿ€€ÿ6€ €烢莀‰€€‚ÿÿÿ StringgetCh() Alignment character for cells in a column.ÝJ§O)v)“#ö€”÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çøȀ‰€€‚ÿÿÿ StringgetChOff() Offset of alignment character.âj™€)X‚)x#À€Ô÷€€ÿ"€€€€‚ÿ€€ÿ6€€çŽ,Œ€‰€€‚ÿÿÿ intgetSpan() Indicates the number of columns in a group or affected by a grouping.êWv)Bƒ)“#ö€®÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç-鬀‰€€‚ÿÿÿ StringgetVAlign() Vertical alignment of cell data in column.ÔAX‚)„)“#ö€‚÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çÈÈS>€‰€€‚ÿÿÿ StringgetWidth() Default column width.Î8Bƒ)ä„)–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€窏…þ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) È2„)¬…)–#ü€d÷€€ÿ"€€€€‚ÿ€€ÿr€€çNšmR€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCh(String ch) Î8ä„)z†)–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€ç&~݀‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetChOff(String chOff) §/¬…)!‡)x#À€^÷€€ÿ"€€€€‚ÿ€€ÿ6€€çk­ž€‰€€‚ÿÿÿ voidsetSpan(int span) Ð:z†)ñ‡)–#ü€t÷€€ÿ"€€€€‚ÿ€€ÿr€€çž8‡¶€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetVAlign(String vAlign) Î8!‡)¿ˆ)–#ü€p÷€€ÿ"€€€€‚ÿ€€ÿr€€çë >x€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetWidth(String width) 'ñ‡)æˆ)# €€€‚ÿ E¿ˆ)v‰)K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆæˆ)§Š)©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'v‰)Ί)# €€€‚ÿ ™<§Š)g‹)]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYΊ)ю)#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'g‹)øŽ)# €€€‚ÿ „9ю)|)K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆøŽ)«Â)]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ|)«Â)ÊC)›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)|)ÔÂ)$ € €€‚‚ÿ T«Â)(Ã)B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailˆ1ÔÂ)°Ã)W ~€b€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()…`(Ã)5Ä)% €À€ä€‚‚ÿHorizontal alignment of cell data in column. See the align attribute definition in HTML 4.0.&°Ã)[Ä)# €€€‚ÿ*5Ä)…Ä)' €€ ”€ ‚ÿž?[Ä)#Å)_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*…Ä)MÅ)' €€ ”€ ‚ÿˆ-#Å)ÕÅ)[ †€Z€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetChpublic String getCh()‚]MÅ)WÆ)% €º€ä€‚‚ÿAlignment character for cells in a column. See the char attribute definition in HTML 4.0.&ÕÅ)}Æ)# €€€‚ÿ*WÆ)§Æ)' €€ ”€ ‚ÿ•6}Æ)<Ç)_ Ž€l€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetChpublic void setCh(String ch)*§Æ)fÇ)' €€ ”€ ‚ÿŽ3<Ç)ôÇ)[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetChOffpublic String getChOff()yTfÇ)mÈ)% €š€ä€‚‚ÿOffset of alignment character. See the charoff attribute definition in HTML 4.0.&ôÇ)“È)# €€€‚ÿ*mÈ)œÈ)' €€ ”€ ‚ÿž?“È)[É)_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetChOffpublic void setChOff(String chOff)*œÈ)…É)' €€ ”€ ‚ÿg*[É)ìÉ)= J€T€€‚€‚€€‚‚€€€€‚ÿgetSpanpublic int getSpan()x…É)‰Ê)% €ð€ä€‚‚ÿIndicates the number of columns in a group or affected by a grouping. See the span attribute definition in HTML 4.0.&ìÉ)¯Ê)# €€€‚ÿ*‰Ê)ÙÊ)' €€ ”€ ‚ÿv5¯Ê)OË)A R€j€€‚€‚€€‚‚€€€€‚€‚ÿsetSpanpublic void setSpan(int span)*ÙÊ)yË)' €€ ”€ ‚ÿ5OË) Ì)[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetVAlignpublic String getVAlign()„_yË)Ì)% €Ÿ€ä€‚‚ÿVertical alignment of cell data in column. See the valign attribute definition in HTML 4.0.& Ì)³Ì)# €€€‚ÿ*Ì)ÝÌ)' €€ ”€ ‚ÿ¡B³Ì)~Í)_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetVAlignpublic void setVAlign(String vAlign)*ÝÌ)šÍ)' €€ ”€ ‚ÿŽ3~Í)6Î)[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetWidthpublic String getWidth()nIšÍ)€Î)% €’€ä€‚‚ÿDefault column width. See the width attribute definition in HTML 4.0.&6Î)ÊÎ)# €€€‚ÿ*€Î)ôÎ)' €€ ”€ ‚ÿž?ÊÎ)’Ï)_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetWidthpublic void setWidth(String width)*ôÎ)ŒÏ)' €€ ”€ ‚ÿ&’Ï) *# €€€‚ÿŒÏ) *ÊC)ÜyŒÏ)è*c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç7•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT *é*­#*šÂ€€ÿF€€€ç4–—Y€‰€ç6–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç5–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vè*›*\#ˆ€¬ÂÂ.€€€çúJ«º€ ‰€‚ÿ.€`€€ç™T$B€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&é*Á*# €€€‚ÿ*›*ë*' €€ ”€ ‚ÿfûÁ*Q*k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ë*‚*1Uÿÿÿÿÿÿÿÿ«ÿÿÿÿ‚*Š*$Q*Š*" €€€ ÿR!‚*ø*1Šh­RtW¬ø*C*ZŽ+HTMLTableElement (Common DOM API)K%Š*C*& €J€€€‚ÿHTMLTableElement (Common DOM API)Üyø**c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€çc•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITC* *­#*šÂ€€ÿF€€€ç5–—Y€‰€ç7–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç6–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V*Ò *\#ˆ€¬ÂÂ.€€€çœ+nƀ ‰€‚ÿ.€`€€çbŽ0€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD& *ø *# €€€‚ÿ*Ò *" *' €€ ”€ ‚ÿ‡Mø *© *: D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLTableElementAll Superinterfaces: )" ** *X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&© *P *# €€€‚ÿ** *z *' €€ ”€ ‚ÿÈP *’ *P n€‘€€‚€‚€€‚繕—Y€‰€‚‚€€€€€€‚ÿpublic interface HTMLTableElementextends HTMLElementThe create* and delete* methods on the table allow authors to construct and modify tables. HTML 4.0 specifies that only one of each of the CAPTION , THEAD , and TFOOT elements may exist in a table. Therefore, if one exists, and the createTHead() or createTFoot() method is called, the method returns the existing THead or TFoot element. See the TABLE element definition in HTML 4.0. ºJz *L*p °€”€€‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿSee also the Document Object Model (DOM) Level 2 Specification.*’ *v*' €€ ”€ ‚ÿ,L*¢*' € €€‚€‚ÿTv*ö*B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'¢**# €€€‚ÿ ƒ8ö* *K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ*sA*Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪ *sA*Š*æÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE' *šA*# €€€‚ÿ UsA*ïA*B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryóršA*âB*#Ҁäí—€€ÿ4€€€繕—Y€‰€‚ÿ€(€ÿ6€*€çMے€‰€€‚ÿÿÿ HTMLElementcreateCaption() Create a new table caption object or return an existing one.éhïA*ËC*#ҀÐí—€€ÿ4€€€繕—Y€‰€‚ÿ€(€ÿ6€*€çk¬7€‰€€‚ÿÿÿ HTMLElementcreateTFoot() Create a table footer row or return an existing one.éhâB*ŽD*#ҀÐí—€€ÿ4€€€繕—Y€‰€‚ÿ€(€ÿ6€*€ç]颀‰€€‚ÿÿÿ HTMLElementcreateTHead() Create a table header row or return an existing one.ÌTËC*€E*x#À€ší—€€ÿ"€€€€‚ÿ€€ÿ6€€çðŒum€‰€€‚ÿÿÿ voiddeleteCaption() Delete the table caption, if one exists.ŒDŽD*ˆ*–#ü€xí—€€ÿ"€€€€‚ÿ€€ÿr€€ç^ˆŽ«€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetBgColor(String bgColor) Ð:l‡*‰*–#ü€tí—€€ÿ"€€€€‚ÿ€€ÿr€€çöWü—€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetBorder(String border) ÑM>ˆ*߉*„#؀ší—€€ÿ"€€€€‚ÿ€€ÿN€€ç*rÊø€‰€ç3–—Y€‰€€‚ÿÿÿ voidsetCaption(HTMLTableCaptionElement caption) ÚD‰*¹Š*–#ü€ˆí—€€ÿ"€€€€‚ÿ€€ÿr€€çsÞ‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCellPadding(String cellPadding) ÚD߉*“‹*–#ü€ˆí—€€ÿ"€€€€‚ÿ€€ÿr€€ç­ @,€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCellSpacing(String cellSpacing) Î8¹Š*aŒ*–#ü€pí—€€ÿ"€€€€‚ÿ€€ÿr€€çõ@%€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetFrame(String frame) Î8“‹*/*–#ü€pí—€€ÿ"€€€€‚ÿ€€ÿr€€糝¢î€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetRules(String rules) Ò<aŒ*Ž*–#ü€xí—€€ÿ"€€€€‚ÿ€€ÿr€€ç ‚0쀉€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetSummary(String summary) ÍI/*Ύ*„#؀’í—€€ÿ"€€€€‚ÿ€€ÿN€€ç1!X€‰€ç8–—Y€‰€€‚ÿÿÿ voidsetTFoot(HTMLTableSectionElement tFoot) ÍIŽ*›*„#؀’í—€€ÿ"€€€€‚ÿ€€ÿN€€çãÝ€‰€ç8–—Y€‰€€‚ÿÿÿ voidsetTHead(HTMLTableSectionElement tHead) Î8Ύ*uÀ*–#ü€pí—€€ÿ"€€€€‚ÿ€€ÿr€€盏*uÀ*Š*ÞH܏€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetWidth(String width) '›*œÀ*# €€€‚ÿ EuÀ*,Á*K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆœÀ*]Â*©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle',Á*„Â*# €€€‚ÿ ™<]Â*Ã*]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY„Â*‡Æ*#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'Ã*®Æ*# €€€‚ÿ „9‡Æ*2Ç*K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ®Æ*UÊ*]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)2Ç*~Ê*$ € €€‚‚ÿ TUÊ*ÒÊ*B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail‹F~Ê*]Ë*E Z€Œ€€‚€€‚‚€ç3–—Y€‰€€€€‚ÿgetCaptionpublic HTMLTableCaptionElement getCaption()f;ÒÊ*ÃË*+ &€v€ä€€€‚‚ÿReturns the table's CAPTION , or void if none exists.&]Ë*éË*# €€€‚ÿ*ÃË*Ì*' €€ ”€ ‚ÿ£VéË*¶Ì*M j€¬€€‚€‚€€‚‚€€€ç3–—Y€‰€€‚€‚ÿsetCaptionpublic void setCaption(HTMLTableCaptionElement caption)*Ì*àÌ*' €€ ”€ ‚ÿD¶Ì*mÍ*I b€ˆ€€‚€‚€€‚‚€ç8–—Y€‰€€€€‚ÿgetTHeadpublic HTMLTableSectionElement getTHead()l;àÌ*ÙÍ*1 2€v€ä€€€€€‚‚ÿReturns the table's THEAD , or null if none exists.&mÍ*ÿÍ*# €€€‚ÿ*ÙÍ*)Î*' €€ ”€ ‚ÿPÿÍ*ÆÎ*M j€ €€‚€‚€€‚‚€€€ç8–—Y€‰€€‚€‚ÿsetTHeadpublic void setTHead(HTMLTableSectionElement tHead)*)Î*ðÎ*' €€ ”€ ‚ÿDÆÎ*}Ï*I b€ˆ€€‚€‚€€‚‚€ç8–—Y€‰€€€€‚ÿgetTFootpublic HTMLTableSectionElement getTFoot()l;ðÎ* +1 2€v€ä€€€€€‚‚ÿReturns the table's TFOOT , or null if none exists.}Ï* +Š*&}Ï*2+# €€€‚ÿ* +\+' €€ ”€ ‚ÿP2+ù+M j€ €€‚€‚€€‚‚€€€ç8–—Y€‰€€‚€‚ÿsetTFootpublic void setTFoot(HTMLTableSectionElement tFoot)*\+#+' €€ ”€ ‚ÿ‚9ù+¥+I b€r€€‚€‚€€‚‚€爕—Y€‰€€€€‚ÿgetRowspublic HTMLCollection getRows()šq#+M+7 >€â€ä€€€€€€€‚‚ÿReturns a collection of all the rows in the table, including all in THEAD , TFOOT , all TBODY elements.&¥+s+# €€€‚ÿ*M++' €€ ”€ ‚ÿˆ?s+%+I b€~€€‚€‚€€‚‚€爕—Y€‰€€€€‚ÿgetTBodiespublic HTMLCollection getTBodies()Z5++% €j€ä€‚‚ÿReturns a collection of the defined table bodies.&%+¥+# €€€‚ÿ*+Ï+' €€ ”€ ‚ÿŽ3¥+]+[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()ÌŠÏ+)+& €M€ä€‚‚ÿSpecifies the table's position with respect to the rest of the document. See the align attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&]+O+# €€€‚ÿ*)+y+' €€ ”€ ‚ÿž?O++_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*y+A+' €€ ”€ ‚ÿ’7+Ó+[ †€n€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetBgColorpublic String getBgColor()›vA+n+% €ì€ä€‚‚ÿCell background color. See the bgcolor attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&Ó+”+# €€€‚ÿ*n+Ÿ+' €€ ”€ ‚ÿ€E”+b+_ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetBgColorpublic void setBgColor(String bgColor)*Ÿ+Œ+' €€ ”€ ‚ÿ5b+ +[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetBorderpublic String getBorder()ƒ^Œ+Ÿ +% €Œ€ä€‚‚ÿThe width of the border around the table. See the border attribute definition in HTML 4.0.& +Å +# €€€‚ÿ*Ÿ +ï +' €€ ”€ ‚ÿ¡BÅ + +_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetBorderpublic void setBorder(String border)*ï +º +' €€ ”€ ‚ÿš? +T +[ †€~€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCellPaddingpublic String getCellPadding()²Œº + +& €€ä€‚‚ÿSpecifies the horizontal and vertical space between cell content and cell borders. See the cellpadding attribute definition in HTML 4.0.&T +, +# €€€‚ÿ* +V +' €€ ”€ ‚ÿ°Q, + +_ Ž€¢€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCellPaddingpublic void setCellPadding(String cellPadding)*V +0 +' €€ ”€ ‚ÿš? +Ê +[ †€~€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetCellSpacingpublic String getCellSpacing()žy0 +h+% €ò€ä€‚‚ÿSpecifies the horizontal and vertical separation between cells. See the cellspacing attribute definition in HTML 4.0.&Ê +Ž+# €€€‚ÿ*h+ž+' €€ ”€ ‚ÿ°QŽ+h+_ Ž€¢€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetCellSpacingpublic void setCellSpacing(String cellSpacing)*ž+’+' €€ ”€ ‚ÿŽ3h+,@+[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetFramepu’+,@+Š*blic String getFrame()Še’+¶@+% €Ê€ä€‚‚ÿSpecifies which external table borders to render. See the frame attribute definition in HTML 4.0.&,@+Ü@+# €€€‚ÿ*¶@+A+' €€ ”€ ‚ÿž?Ü@+€A+_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetFramepublic void setFrame(String frame)*A+ÎA+' €€ ”€ ‚ÿŽ3€A+\B+[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetRulespublic String getRules()ŠeÎA+æB+% €Ê€ä€‚‚ÿSpecifies which internal table borders to render. See the rules attribute definition in HTML 4.0.&\B+ C+# €€€‚ÿ*æB+6C+' €€ ”€ ‚ÿž? C+ÔC+_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetRulespublic void setRules(String rules)*6C+þC+' €€ ”€ ‚ÿ’7ÔC+D+[ †€n€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetSummarypublic String getSummary()‘lþC+!E+% €Ø€ä€‚‚ÿDescription about the purpose or structure of a table. See the summary attribute definition in HTML 4.0.&D+GE+# €€€‚ÿ*!E+qE+' €€ ”€ ‚ÿ€EGE+F+_ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetSummarypublic void setSummary(String summary)*qE+?F+' €€ ”€ ‚ÿŽ3F+ÍF+[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetWidthpublic String getWidth(){V?F+HG+% €¬€ä€‚‚ÿSpecifies the desired table width. See the width attribute definition in HTML 4.0.&ÍF+nG+# €€€‚ÿ*HG+˜G+' €€ ”€ ‚ÿž?nG+6H+_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetWidthpublic void setWidth(String width)*˜G+`H+' €€ ”€ ‚ÿ‡>6H+çH+I b€|€€‚€‚€€‚‚€繕—Y€‰€€€€‚ÿcreateTHeadpublic HTMLElement createTHead()oC`H+VI+, (€†€ä€‚‚€€‚ÿCreate a table header row or return an existing one.Returns:V*çH+¬I+, (€T€ɀ€€€‚‚ÿA new table header element (THEAD ).&VI+ÒI+# €€€‚ÿ*¬I+üI+' €€ ”€ ‚ÿp3ÒI+lJ+= J€f€€‚€‚€€‚‚€€€€‚ÿdeleteTHeadpublic void deleteTHead()Y4üI+ÅJ+% €h€ä€‚‚ÿDelete the header from the table, if one exists.&lJ+ëJ+# €€€‚ÿ*ÅJ+K+' €€ ”€ ‚ÿ‡>ëJ+œK+I b€|€€‚€‚€€‚‚€繕—Y€‰€€€€‚ÿcreateTFootpublic HTMLElement createTFoot()oCK+ L+, (€†€ä€‚‚€€‚ÿCreate a table footer row or return an existing one.Returns:L œK+WL+, (€@€ɀ€€€‚‚ÿA footer element (TFOOT ).& L+}L+# €€€‚ÿ*WL+§L+' €€ ”€ ‚ÿp3}L+M+= J€f€€‚€‚€€‚‚€€€€‚ÿdeleteTFootpublic void deleteTFoot()Y4§L+pM+% €h€ä€‚‚ÿDelete the footer from the table, if one exists.&M+–M+# €€€‚ÿ*pM+ÀM+' €€ ”€ ‚ÿ‹B–M+KN+I b€„€€‚€‚€€‚‚€繕—Y€‰€€€€‚ÿcreateCaptionpublic HTMLElement createCaption()wKÀM+ÂN+, (€–€ä€‚‚€€‚ÿCreate a new table caption object or return an existing one.Returns:DKN+O+, (€0€ɀ€€€‚‚ÿA CAPTION element.&ÂN+,O+# €€€‚ÿ*O+VO+' €€ ”€ ‚ÿt7,O+ÊO+= J€n€€‚€‚€€‚‚€€€€‚ÿdeleteCaptionpublic void deleteCaption()Q,VO+'€+% €X€ä€‚‚ÿDelete the tableÊO+'€+Š* caption, if one exists.&ÊO+M€+# €€€‚ÿ*'€+w€+' €€ ”€ ‚ÿÙqM€+P+h  €â€€‚€‚€€‚‚€繕—Y€‰€€€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿinsertRowpublic HTMLElement insertRow(int index) throws DOMExceptionæ§w€+6ƒ+? L€O€ä€€€€€€€‚‚€€‚ÿInsert a new empty row in the table. The new row is inserted immediately before and in the same section as the current index th row in the table. If index is equal to the number of rows, the new row is appended. In addition, when the table is empty the row is inserted into a TBODY which is created and inserted into the table. Note. A table row cannot be empty according to HTML 4.0 Recommendation.Parameters:Ô«P+ „+) €W€ɀ€€‚ÿindex - The row number where to insert a new row. This index starts from 0 and is relative to all the rows contained inside the table, regardless of section parentage.3 6ƒ+=„+' €€ä€€‚ÿReturns:> „+{„+% €2€ɀ€‚ÿThe newly created row.2 =„+­„+' €€ä€€‚ÿThrows:Ń{„+r…+B R€€ɀï{Ž—YJdk14doc.4.hlp€‰€‚‚ÿDOMException - INDEX_SIZE_ERR: Raised if the specified index is greater than the number of rows or if the index is negative.&­„+˜…+# €€€‚ÿ*r…+…+' €€ ”€ ‚ÿ»_˜…+}†+\ ˆ€Ÿ€€‚€‚€€‚‚€€€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿdeleteRowpublic void deleteRow(int index) throws DOMExceptionQ%…+Ά+, (€J€ä€‚‚€€‚ÿDelete a table row.Parameters:Î¥}†+œ‡+) €K€ɀ€€‚ÿindex - The index of the row to be deleted. This index starts from 0 and is relative to all the rows contained inside the table, regardless of section parentage.2 Ά+·+' €€ä€€‚ÿThrows:яœ‡+Ÿˆ+B R€€ɀï{Ž—YJdk14doc.4.hlp€‰€‚‚ÿDOMException - INDEX_SIZE_ERR: Raised if the specified index is greater than or equal to the number of rows or if the index is negative.&·+ň+# €€€‚ÿ*Ÿˆ+ïˆ+' €€ ”€ ‚ÿ&ň+‰+# €€€‚ÿÜyïˆ+ñŠ+c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€çc•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT‰+ò‹+­#*šÂ€€ÿF€€€ç5–—Y€‰€ç7–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç6–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VñŠ+€Œ+\#ˆ€¬ÂÂ.€€€çœ+nƀ ‰€‚ÿ.€`€€çbŽ0€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ò‹+ʌ+# €€€‚ÿ*€Œ+ôŒ+' €€ ”€ ‚ÿfûʌ+ZŽ+k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ôŒ+‹Ž+1Uÿÿÿÿÿÿÿÿ­ÿÿÿÿ‹Ž+¯Ž+$ZŽ+¯Ž+" €€€ ÿU$‹Ž++1?&TY®+R+šŒ,HTMLTableRowElement (Common DOM API)N(¯Ž+R+& €P€€€‚ÿHTMLTableRowElement (Common DOM API)Üy+:Á+c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€çZ•—Y€‰€‚ÿ(€fR+:Á+¯Ž+€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITR+;Â+­#*šÂ€€ÿF€€€ç6–—Y€‰€ç8–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç7–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V:Á+íÂ+\#ˆ€¬ÂÂ.€€€ç€ 1Ҁ ‰€‚ÿ.€`€€ç+Ð÷€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&;Â+Ã+# €€€‚ÿ*íÂ+=Ã+' €€ ”€ ‚ÿŠPÃ+ÇÃ+: D€ €€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLTableRowElementAll Superinterfaces: )=Ã+HÄ+X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&ÇÃ+nÄ+# €€€‚ÿ*HÄ+˜Ä+' €€ ”€ ‚ÿWËnÄ+ïÅ+Œ 怗€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLTableRowElementextends HTMLElementA row in a table. See the TR element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*˜Ä+Æ+' €€ ”€ ‚ÿ,ïÅ+EÆ+' € €€‚€‚ÿTÆ+™Æ+B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'EÆ+ÀÆ+# €€€‚ÿ ƒ8™Æ+CÇ+K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇÀÆ+ É+Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'CÇ+1É+# €€€‚ÿ U É+†É+B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÍU1É+SÊ+x#À€ªœè€€ÿ"€€€€‚ÿ€€ÿ6€€çà°b€‰€€‚ÿÿÿ voiddeleteCell(int index) Delete a cell from the current row.õb†É+HË+“#ö€Äœè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç­]µú€‰€€‚ÿÿÿ StringgetAlign() Horizontal alignment of data within cells of this row.ÛHSÊ+#Ì+“#ö€œè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çöJË'€‰€€‚ÿÿÿ StringgetBgColor() Background color for rows.ÙXHË+üÌ+#Ҁ°œè€€ÿ4€€€爕—Y€‰€‚ÿ€.€ÿ6€0€çq‘’¯€‰€€‚ÿÿÿ HTMLCollectiongetCells() The collection of cells in this row.æS#Ì+âÍ+“#ö€Šœè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çE¿õL€‰€€‚ÿÿÿ StringgetCh() Alignment character for cells in a column.ÝJüÌ+¿Î+“#ö€”œè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç^ïpʀ‰€€‚ÿÿÿ StringgetChOff() Offset of alignment character.ænâÍ+¥Ï+x#À€Üœè€€ÿ"€€€€‚ÿ€€ÿ6€€çĉ€‰€€‚ÿÿÿ intgetRowIndex() The index of this row, relative to the entire table, starting from 0.&›¿Î+×,‹#ä€7œè€€ÿ"€€€€‚ÿ€€ÿZ¥Ï+×,¯Ž+€€ç1þ²Û€‰€€€€€€€€‚ÿÿÿ intgetSectionRowIndex() The index of this row, relative to the current section ( THEAD , TFOOT , or TBODY ), starting from 0.ôa¥Ï+Ë,“#ö€Âœè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çOŸ4€‰€€‚ÿÿÿ StringgetVAlign() Vertical alignment of data within cells of this row.ëd×,¶,‡#ހȜ耀ÿ4€€€繕—Y€‰€‚ÿ€(€ÿB€*€ç*“u§€‰€€€€‚ÿÿÿ HTMLElementinsertCell(int index) Insert an empty TD cell into this row.Î8Ë,„,–#ü€pœè€€ÿ"€€€€‚ÿ€€ÿr€€ç Â-€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) Ò<¶,V,–#ü€xœè€€ÿ"€€€€‚ÿ€€ÿr€€çyø{A€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetBgColor(String bgColor) È2„,,–#ü€dœè€€ÿ"€€€€‚ÿ€€ÿr€€çÖ—#€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCh(String ch) Î8V,ì,–#ü€pœè€€ÿ"€€€€‚ÿ€€ÿr€€ç¢º €‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetChOff(String chOff) Ð:,Œ,–#ü€tœè€€ÿ"€€€€‚ÿ€€ÿr€€çZ°¥€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetVAlign(String vAlign) 'ì,ã,# €€€‚ÿ EŒ,s,K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆã,€,©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle's,Ë,# €€€‚ÿ ™<€,d ,]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYË,Î ,#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'd ,õ ,# €€€‚ÿ „9Î ,y ,K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æõ ,š@,]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, y ,š@,¯Ž+hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)y ,Ñ@,$ € €€‚‚ÿ Tš@,%A,B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detaili0Ñ@,ŽA,9 B€`€€‚€€‚‚€€€€‚ÿgetRowIndexpublic int getRowIndex()%ç%A,³B,> J€Ï€ä€€€€€€€€€‚‚ÿThe index of this row, relative to the entire table, starting from 0. This is in document tree order and not display order. The rowIndex does not take into account sections ( THEAD , TFOOT , or TBODY ) within the table.&ŽA,ÙB,# €€€‚ÿ*³B,C,' €€ ”€ ‚ÿ}@ÙB,€C,= J€€€€‚€‚€€‚‚€€€€‚ÿgetSectionRowIndexpublic int getSectionRowIndex()ŠoC,&D,7 >€Þ€ä€€€€€€€‚‚ÿThe index of this row, relative to the current section ( THEAD , TFOOT , or TBODY ), starting from 0.&€C,LD,# €€€‚ÿ*&D,vD,' €€ ”€ ‚ÿ„;LD,úD,I b€v€€‚€‚€€‚‚€爕—Y€‰€€€€‚ÿgetCellspublic HTMLCollection getCells()M(vD,GE,% €P€ä€‚‚ÿThe collection of cells in this row.&úD,mE,# €€€‚ÿ*GE,—E,' €€ ”€ ‚ÿŽ3mE,%F,[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()j—E,ŽF,% €Ô€ä€‚‚ÿHorizontal alignment of data within cells of this row. See the align attribute definition in HTML 4.0.&%F,ÚF,# €€€‚ÿ*ŽF,G,' €€ ”€ ‚ÿž?ÚF,¢G,_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*G,ÌG,' €€ ”€ ‚ÿ’7¢G,^H,[ †€n€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetBgColorpublic String getBgColor()ŸzÌG,ýH,% €ô€ä€‚‚ÿBackground color for rows. See the bgcolor attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&^H,#I,# €€€‚ÿ*ýH,MI,' €€ ”€ ‚ÿ€E#I,ñI,_ ހЀ€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetBgColorpublic void setBgColor(String bgColor)*MI,J,' €€ ”€ ‚ÿˆ-ñI,£J,[ †€Z€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetChpublic String getCh()‚]J,%K,% €º€ä€‚‚ÿAlignment character for cells in a column. See the char attribute definition in HTML 4.0.&£J,KK,# €€€‚ÿ*%K,uK,' €€ ”€ ‚ÿ•6KK, L,_ Ž€l€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetChpublic void setCh(String ch)*uK,4L,' €€ ”€ ‚ÿŽ3 L,ÂL,[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetChOffpublic String getChOff()yT4L,;M,% €š€ä€‚‚ÿOffset of alignment character. See the charoff attribute definition in HTML 4.0.&ÂL,aM,# €€€‚ÿ*;M,‹M,' €€ ”€ ‚ÿž?aM,)N,_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetChOffpublic void setChOff(String chOff)*‹M,SN,' €€ ”€ ‚ÿ5)N,ãN,[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetVAlignpublic String getVAlign()ŽiSN,qO,% €Ò€ä€‚‚ÿVertical alignment of data within cells of this row. See the valign attribute definition in HTML 4.0.&ãN,—O,# €€€‚ÿ*qO,ÁO,' €€ ”€ ‚ÿ¡B—O,n€,_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYÁO,n€,¯Ž+Jdk14doc.2.hlp€‰€€‚€‚ÿsetVAlignpublic void setVAlign(String vAlign)*ÁO,˜€,' €€ ”€ ‚ÿÜtn€,t,h  €è€€‚€‚€€‚‚€繕—Y€‰€€€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿinsertCellpublic HTMLElement insertCell(int index) throws DOMException·˜€,+‚,8 @€þ€ä€€€€€‚‚€€‚ÿInsert an empty TD cell into this row. If index is equal to the number of cells, the new cell is appendedParameters:b:t,‚,( €t€ɀ€€‚ÿindex - The place to insert the cell, starting from 0.3 +‚,À‚,' €€ä€€‚ÿReturns:?‚,ÿ‚,% €4€ɀ€‚ÿThe newly created cell.2 À‚,1ƒ,' €€ä€€‚ÿThrows:Άÿ‚,ÿƒ,H ^€ €ɀï{Ž—YJdk14doc.4.hlp€‰€€€‚‚ÿDOMException - INDEX_SIZE_ERR: Raised if the specified index is greater than the number of cells or if the index is negative.&1ƒ,%„,# €€€‚ÿ*ÿƒ,O„,' €€ ”€ ‚ÿŸb%„, …,\ ˆ€Ä€€‚€‚€€‚‚€€€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿdeleteCellpublic void deleteCell(int index) throws DOMExceptiona5O„,n…,, (€j€ä€‚‚€€‚ÿDelete a cell from the current row.Parameters:e= …,Ӆ,( €z€ɀ€€‚ÿindex - The index of the cell to delete, starting from 0.2 n…,†,' €€ä€€‚ÿThrows:ڒӅ,߆,H ^€%€ɀï{Ž—YJdk14doc.4.hlp€‰€€€‚‚ÿDOMException - INDEX_SIZE_ERR: Raised if the specified index is greater than or equal to the number of cells or if the index is negative.&†,‡,# €€€‚ÿ*߆,/‡,' €€ ”€ ‚ÿ&‡,U‡,# €€€‚ÿÜy/‡,1‰,c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€çZ•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITU‡,2Š,­#*šÂ€€ÿF€€€ç6–—Y€‰€ç8–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç7–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V1‰,äŠ,\#ˆ€¬ÂÂ.€€€ç€ 1Ҁ ‰€‚ÿ.€`€€ç+Ð÷€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&2Š, ‹,# €€€‚ÿ*äŠ,4‹,' €€ ”€ ‚ÿfû ‹,šŒ,k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.14‹,ˌ,1Uÿÿÿÿÿÿÿÿ¯ÿÿÿÿˌ,ïŒ,$šŒ,ïŒ," €€€ ÿY(ˌ,H,1‡5tWY[°H,š,‚-HTMLTableSectionElement (Common DOM API)R,ïŒ,š,& €X€€€‚ÿHTMLTableSectionElement (Common DOM API)ÜyH,v,c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç[•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITš,ƒÀ,­#*šÂ€€ÿF€€€ç7–—Y€‰€ç9–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç8–—Y€‰€v,ƒÀ,ïŒ,YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vv,5Á,\#ˆ€¬ÂÂ.€€€çCíó݀ ‰€‚ÿ.€`€€çôa € ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ƒÀ,[Á,# €€€‚ÿ*5Á,…Á,' €€ ”€ ‚ÿŽT[Á,Â,: D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLTableSectionElementAll Superinterfaces: )…Á,”Â,X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&Â,ºÂ,# €€€‚ÿ*”Â,äÂ,' €€ ”€ ‚ÿ^ÀºÂ,BÄ,ž €€‚€‚€€‚繕—Y€‰€‚‚€€€€€€‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLTableSectionElementextends HTMLElementThe THEAD , TFOOT , and TBODY elements. See also the Document Object Model (DOM) Level 2 Specification.*äÂ,lÄ,' €€ ”€ ‚ÿ,BÄ,˜Ä,' € €€‚€‚ÿTlÄ,ìÄ,B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'˜Ä,Å,# €€€‚ÿ ƒ8ìÄ,–Å,K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇÅ,]Ç,Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'–Å,„Ç,# €€€‚ÿ U]Ç,ÙÇ,B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÈP„Ç,¡È,x#À€ œè€€ÿ"€€€€‚ÿ€€ÿ6€€çù?8€‰€€‚ÿÿÿ voiddeleteRow(int index) Delete a row from this section.åRÙÇ,†É,“#ö€€œè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç`•â{€‰€€‚ÿÿÿ StringgetAlign() Horizontal alignment of data in cells.æS¡È,lÊ,“#ö€Šœè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çŠMü«€‰€€‚ÿÿÿ StringgetCh() Alignment character for cells in a column.ÝJ†É,IË,“#ö€”œè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç'žK€‰€€‚ÿÿÿ StringgetChOff() Offset of alignment character.á`lÊ,*Ì,#ҀÀœè€€ÿ4€€€爕—Y€‰€‚ÿ€.€ÿ6€0€çÒºI¶€‰€€‚ÿÿÿ HTMLCollectiongetRows() The collection of rows in this table section.äQIË,Í,“#ö€¢œè€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç`úÌÀ‰€€‚ÿÿÿ StringgetVAlign() Vertical alignment of data in cells.ÛZ*Ì,éÍ,#ҀŽœè€€ÿ4€€€繕—Y€‰€‚ÿ€(€ÿ6€*€ç×÷9«€‰€€‚ÿÿÿ HTMLElementinsertRow(int index) Insert a row into this section.Î8Í,·Î,–#ü€pœè€€ÿ"€€€€‚ÿ€€ÿr€€çƒI`E€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetAlign(String align) È2éÍ,Ï,–#ü€dœè€€ÿ"€€€€‚ÿ€€ÿr€€ç±í, €‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetCh(String ch) Î8·Î,Y-–#ü€pœè€€ÿ"€€€€‚ÿ€€ÿr€€çôßX$€‰€ïÐۓYJdk14doc.Ï,Y-ïŒ,2.hlp€‰€€‚ÿÿÿ voidsetChOff(String chOff) Ð:Ï,)-–#ü€tœè€€ÿ"€€€€‚ÿ€€ÿr€€ç+pD€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetVAlign(String vAlign) 'Y-P-# €€€‚ÿ E)-à-K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆP--©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'à-8-# €€€‚ÿ ™<-Ñ-]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjY8-;-#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'Ñ-b-# €€€‚ÿ „9;-æ-K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æb- -]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)æ-2 -$ € €€‚‚ÿ T -† -B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailˆ12 - -W ~€b€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetAlignpublic String getAlign()‘f† -Ÿ -+ &€Ì€ä€€€‚‚ÿHorizontal alignment of data in cells. See the align attribute for HTMLTheadElement for details.& -Å -# €€€‚ÿ*Ÿ -ï -' €€ ”€ ‚ÿž?Å - -_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetAlignpublic void setAlign(String align)*ï -· -' €€ ”€ ‚ÿˆ- -?-[ †€Z€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetChpublic String getCh()‚]· -Á-% €º€ä€‚‚ÿAlignment character for cells in a column. See the char attribute definition in HTML 4.0.&?-ç-# €€€‚ÿ*Á--' €€ ”€ ‚ÿ•6ç-Š-_ Ž€l€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetChpublic void setCh(String ch)*-Ð-' €€ ”€ ‚ÿŽ3Š-j@-[ †€f€€‚€‚€€‚‚€Ð-j@-ïŒ,ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetChOffpublic String getChOff()yTÐ-ã@-% €š€ä€‚‚ÿOffset of alignment character. See the charoff attribute definition in HTML 4.0.&j@- A-# €€€‚ÿ*ã@-3A-' €€ ”€ ‚ÿž? A-ÑA-_ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetChOffpublic void setChOff(String chOff)*3A-ûA-' €€ ”€ ‚ÿ5ÑA-‹B-[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetVAlignpublic String getVAlign()eûA-C-+ &€Ê€ä€€€‚‚ÿVertical alignment of data in cells. See the valign attribute for HTMLTheadElement for details.&‹B-AC-# €€€‚ÿ*C-kC-' €€ ”€ ‚ÿ¡BAC- D-_ Ž€„€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetVAlignpublic void setVAlign(String vAlign)*kC-6D-' €€ ”€ ‚ÿ‚9 D-žD-I b€r€€‚€‚€€‚‚€爕—Y€‰€€€€‚ÿgetRowspublic HTMLCollection getRows()V16D-E-% €b€ä€‚‚ÿThe collection of rows in this table section.&žD-4E-# €€€‚ÿ*E-^E-' €€ ”€ ‚ÿÙq4E-7F-h  €â€€‚€‚€€‚‚€繕—Y€‰€€€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿinsertRowpublic HTMLElement insertRow(int index) throws DOMExceptionÜ^E-LG-9 @€¹€ä€€€€€‚‚€€‚ÿInsert a row into this section. The new row is inserted immediately before the current index th row in this section. If index is equal to the number of rows in this section, the new row is appended.Parameters:Ö­7F-"H-) €[€ɀ€€‚ÿindex - The row number where to insert a new row. This index starts from 0 and is relative only to the rows contained inside this section, not all the rows in the table.3 LG-UH-' €€ä€€‚ÿReturns:>"H-“H-% €2€ɀ€‚ÿThe newly created row.2 UH-ÅH-' €€ä€€‚ÿThrows:Ƅ“H-‹I-B R€ €ɀï{Ž—YJdk14doc.4.hlp€‰€‚‚ÿDOMException - INDEX_SIZE_ERR: Raised if the specified index is greater than the number of rows of if the index is neagative.&ÅH-±I-# €€€‚ÿ*‹I-ÛI-' €€ ”€ ‚ÿ»_±I-–J-\ ˆ€Ÿ€€‚€‚€€‚‚€€€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿdeleteRowpublic void deleteRow(int index) throws DOMException]1ÛI-óJ-, (€b€ä€‚‚€€‚ÿDelete a row from this section.Parameters:Ч–J-ÃK-) €O€ɀ€€‚ÿindex - The index of the row to be deleted. This index starts from 0 and is relative only to the rows contained inside this section, not all the rows in the table.2 óJ-õK-' €€ä€€‚ÿThrows:яÃK-ÆL-B R€€ɀï{Ž—YJdk14doc.4.hlp€‰€‚‚ÿDOMException - INDEX_SIZE_ERR: Raised if the specified index is greater than or equal to the number of rows or if the index is negative.&õK-ìL-# €€€‚ÿ*ÆL-M-' €€ ”€ ‚ÿ&ìL-SM.BN.% €|€ä€‚‚ÿThe type of this form control. This the string "textarea".&ßM.hN.# €€€‚ÿ*BN.’N.' €€ ”€ ‚ÿŽ3hN. O.[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetValuepublic String getValue()qE’N.€., &€‹€ä€€€‚‚ÿRepresents the current contents of the corresponding form control, in an interactive user agent. Changing this attribute changes the contents of the form control, but does not cha O.€.â‚-nge the contents of the element. If the entirety of the data can not fit into a single DOMString , the implementation may truncate the data.& O.À.# €€€‚ÿ*€.í€.' €€ ”€ ‚ÿž?À.‹._ Ž€~€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetValuepublic void setValue(String value)*í€.µ.' €€ ”€ ‚ÿb%‹.‚.= J€J€€‚€‚€€‚‚€€€€‚ÿblurpublic void blur()R-µ.i‚.% €Z€ä€‚‚ÿRemoves keyboard focus from this element.&‚.‚.# €€€‚ÿ*i‚.¹‚.' €€ ”€ ‚ÿd'‚.ƒ.= J€N€€‚€‚€€‚‚€€€€‚ÿfocuspublic void focus()N)¹‚.kƒ.% €R€ä€‚‚ÿGives keyboard focus to this element.&ƒ.‘ƒ.# €€€‚ÿ*kƒ.»ƒ.' €€ ”€ ‚ÿf)‘ƒ.!„.= J€R€€‚€‚€€‚‚€€€€‚ÿselectpublic void select()V+»ƒ.w„.+ &€V€ä€€€‚‚ÿSelect the contents of the TEXTAREA .&!„.„.# €€€‚ÿ*w„.DŽ.' €€ ”€ ‚ÿ&„.í„.# €€€‚ÿÜyDŽ.Ɇ.c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç\•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITí„.ʇ.­#*šÂ€€ÿF€€€ç8–—Y€‰€çe–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç9–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VɆ.|ˆ.\#ˆ€¬ÂÂ.€€€çÎ¶é€ ‰€‚ÿ.€`€€çœKËû€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ʇ.¢ˆ.# €€€‚ÿ*|ˆ.̈.' €€ ”€ ‚ÿfû¢ˆ.2Š.k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1̈.cŠ.1Uÿÿÿÿÿÿÿÿ³ÿÿÿÿcŠ.‡Š.$2Š.‡Š." €€€ ÿR!cŠ.ي.1`Y[Ø^ŽÙŠ.$‹.¹/HTMLTitleElement (Common DOM API)K%‡Š.$‹.& €J€€€‚ÿHTMLTitleElement (Common DOM API)Üyي..c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç]•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT$‹.Ž.­#*šÂ€€ÿF€€€ç9–—Y€‰€ç\–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çe–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V.³Ž.\#ˆ€¬ÂÂ.€€€çŠo5ï€ ‰€‚ÿ.€`€€çIê÷õ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Ž.َ.# €€€‚ÿ*³Ž..' €€ ”€ ‚ÿ‡Mَ.Š.: D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLTitleElementAll Superinterfaces: ).À.X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Š.À.‡Š.Node&Š.=À.# €€€‚ÿ*À.gÀ.' €€ ”€ ‚ÿYÍ=À.ÀÁ.Œ 怛€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLTitleElementextends HTMLElementThe document title. See the TITLE element definition in HTML 4.0. See also the Document Object Model (DOM) Level 2 Specification.*gÀ.êÁ.' €€ ”€ ‚ÿ,ÀÁ.Â.' € €€‚€‚ÿTêÁ.jÂ.B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'Â.‘Â.# €€€‚ÿ ƒ8jÂ.Ã.K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇ‘Â.ÛÄ.Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'Ã.Å.# €€€‚ÿ UÛÄ.WÅ.B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÞKÅ.5Æ.“#ö€–÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç’©ó€‰€€‚ÿÿÿ StringgetText() The specified title as a string.Ì6WÅ.Ç.–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çz€7µ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetText(String text) '5Æ.(Ç.# €€€‚ÿ EÇ.žÇ.K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆ(Ç.éÈ.©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'žÇ.É.# €€€‚ÿ ™<éÈ.©É.]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYÉ.Í.#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'©É.:Í.# €€€‚ÿ „9Í.ŸÍ.K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ:Í.í/]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDŸÍ.í/‡Š.ocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)ŸÍ./$ € €€‚‚ÿ Tí/j/B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail†//ð/W ~€^€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTextpublic String getText()I$j/9/% €H€ä€‚‚ÿThe specified title as a string.&ð/_/# €€€‚ÿ*9/‰/' €€ ”€ ‚ÿ›<_/$/_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTextpublic void setText(String text)*‰/N/' €€ ”€ ‚ÿ&$/t/# €€€‚ÿÜyN/P/c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç]•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITt/Q/­#*šÂ€€ÿF€€€ç9–—Y€‰€ç\–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çe–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VP//\#ˆ€¬ÂÂ.€€€çŠo5ï€ ‰€‚ÿ.€`€€çIê÷õ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Q/)/# €€€‚ÿ*/S/' €€ ”€ ‚ÿfû)/¹/k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1S/ê/1Uÿÿÿÿÿÿÿÿµÿÿÿÿê/ /$¹/ /" €€€ ÿR!ê/` /1Ø!y]_¶` /« /áŠ/HTMLUListElement (Common DOM API)K% /« /& €J€€€‚ÿHTMLUListElement (Common DOM API)Üy` /‡ /c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç^•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIõQ« /| /€#¢Â€€ÿ4€€€çe–—Y€‰€€‚ÿ €B€ï¿‡—YJdk14doc.4.hlp€‰€ç\–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V‡ /. /\#ˆ€¬ÂÂ.€€€篈[…€ ‰€‚ÿ.€`€€ç8>@”€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&| /T /# €€€‚ÿ*. /~ /' €€ ”€ ‚ÿ‡MT //: D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.htmlInterface HTMLUListElementAll Superinterfaces: )~ /†/X €€R€äï}Ž—YJdk14doc.4.hlp€‰€繕—Y€‰€çb–—Y€‰€‚‚ÿElement, HTMLElement, Node&/¬/# €€€‚ÿ*†/Ö/' €€ ”€ ‚ÿRƬ/4@/Œ 怍€€‚€‚€€‚繕—Y€‰€‚‚‚‚Ì=EF("http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510",`',1)€‰€‚‚€‚ÿpublic interface HTMLUListElementextends HTMLElementUnordered list. See the UL element definition in HTML 4.0. See also the Document Object MÖ/4@/ /odel (DOM) Level 2 Specification.*Ö/^@/' €€ ”€ ‚ÿ,4@/Š@/' € €€‚€‚ÿT^@/Þ@/B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'Š@/A/# €€€‚ÿ ƒ8Þ@/ˆA/K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇA/OC/Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'ˆA/vC/# €€€‚ÿ UOC/ËC/B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÆNvC/‘D/x#À€œ÷€€ÿ"€€€€‚ÿ€€ÿ6€€çÞæ0ƒ€‰€€‚ÿÿÿ booleangetCompact() Reduce spacing between list items.Ë8ËC/\E/“#ö€p÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €瓗…€€‚ÿÿÿ StringgetType() Bullet style.±9‘D/ F/x#À€r÷€€ÿ"€€€€‚ÿ€€ÿ6€€çÜj¥€‰€€‚ÿÿÿ voidsetCompact(boolean compact) Ì6\E/ÙF/–#ü€l÷€€ÿ"€€€€‚ÿ€€ÿr€€çþšŠD€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetType(String type) ' F/G/# €€€‚ÿ EÙF/G/K#f€Š„€€ÿ4€€€繕—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.html.HTMLElement1ˆG/ÁH/©# „€ç=$p€‰€ç«È»Ì€‰€çÖ‡€‰€ç+þ§€‰€犥LE€‰€çà ²1€‰€ç.…Þò€‰€ç` BC€‰€ç/‘­#€‰€çI­£€‰€‚ÿÿÿgetClassName, getDir, getId, getLang, getTitle, setClassName, setDir, setId, setLang, setTitle'G/èH/# €€€‚ÿ ™<ÁH/I/]#Š€x„€€ÿX€€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.ElementjYèH/ëL/#ðƒ³„փ€ïYïÙÅJdk14doc.4.hlp€‰€ïûٚÛJdk14doc.4.hlp€‰€ï›P›Jdk14doc.4.hlp€‰€ï6õâJdk14doc.4.hlp€‰€ïÀ慚Jdk14doc.4.hlp€‰€ï“kÎJdk14doc.4.hlp€‰€ï¯uJdk14doc.4.hlp€‰€ï=‚×eJdk14doc.4.hlp€‰€ïœè1aJdk14doc.4.hlp€‰€ïSÙÏ9Jdk14doc.4.hlp€‰€ïŸMçãJdk14doc.4.hlp€‰€ïsãèJdk14doc.4.hlp€‰€ï­žJdk14doc.4.hlp€‰€ïÉË8|Jdk14doc.4.hlp€‰€ïn¬ûJdk14doc.4.hlp€‰€ïßµÎJdk14doc.4.hlp€‰€‚ÿÿÿgetAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS'I/M/# €€€‚ÿ „9ëL/–M/K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆM/ŀ/]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefi–M/ŀ/ /x, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)–M/î€/$ € €€‚‚ÿ Tŀ/B/B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailk2î€/­/9 B€d€€‚€€‚‚€€€€‚ÿgetCompactpublic boolean getCompact()š‚B/U‚/& €€ä€‚‚ÿReduce spacing between list items. See the compact attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&­/{‚/# €€€‚ÿ*U‚/¥‚/' €€ ”€ ‚ÿƒB{‚/(ƒ/A R€„€€‚€‚€€‚‚€€€€‚€‚ÿsetCompactpublic void setCompact(boolean compact)*¥‚/Rƒ/' €€ ”€ ‚ÿŒ1(ƒ/ރ/[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTypepublic String getType()jRƒ/m„/% €Ô€ä€‚‚ÿBullet style. See the type attribute definition in HTML 4.0. This attribute is deprecated in HTML 4.0.&ރ/“„/# €€€‚ÿ*m„/œ„/' €€ ”€ ‚ÿ›<“„/X…/_ Ž€x€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€€‚€‚ÿsetTypepublic void setType(String type)*œ„/‚…/' €€ ”€ ‚ÿ&X…/š…/# €€€‚ÿÜy‚…/„‡/c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€€€‚ÿ(€R€ç^•—Y€‰€‚ÿ(€f€ç_–—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIõQš…/yˆ/€#¢Â€€ÿ4€€€çe–—Y€‰€€‚ÿ €B€ï¿‡—YJdk14doc.4.hlp€‰€ç\–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V„‡/+‰/\#ˆ€¬ÂÂ.€€€篈[…€ ‰€‚ÿ.€`€€ç8>@”€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&yˆ/Q‰/# €€€‚ÿ*+‰/{‰/' €€ ”€ ‚ÿfûQ‰/áŠ/k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1{‰/‹/1Uÿÿÿÿÿÿÿÿ·ÿÿÿÿ‹/6‹/$áŠ/6‹/" €€€ ÿQ ‹/‡‹/1( Ø^€_ž‡‹/ы/Ä/org.w3c.dom.html(Common DOM API)J$6‹/ы/& €H€€€‚ÿorg.w3c.dom.html(Common DOM API)G‡‹/Œ// .€0€€ç^–—Y€‰€‚ÿ org.w3c.dom.htmlÒÃы/öÃ/#셇 „҅€€€€ç_•—Y€‰€ç`•—Y€‰€ça•—Y€‰€çb•—Y€‰€çŽ•—Y€‰€ç…•—Y€‰€ç†•—Y€‰€ç‡•—Y€‰€çˆ•—Y€‰€ç‰•—Y€‰€çŠ•—Y€‰€ç‹•—Y€‰€çŒ•—Y€‰€ç•—Y€‰€ç¹•—Y€‰€ç°•—Y€‰€ç±•—Y€‰€ç²•—Y€‰€ç³•—Y€‰€çŽ•—Y€‰€çµ•—Y€‰€ç¶•—Y€‰€ç·•—Y€‰€çž•—Y€‰€ç䕗Y€‰€çە—Y€‰€çܕ—Y€‰€çݕ—Y€‰€çޕ—Y€‰€çߕ—Y€‰€çà•—Y€‰€çᕗY€‰€ç╗Y€‰€ç㕗Y€‰€ç–—Y€‰€ç–—Y€‰€ç–—Y€‰€ç–—Y€‰€ç –—Y€‰€ç –—Y€‰€ç –—Y€‰€ç –—Y€‰€ç –—Y€‰€ç–—Y€‰€ç:–—Y€‰€ç1–—Y€‰€ç2–—Y€‰€ç3–—Y€‰€ç4–—Y€‰€ç5–—Y€‰€ç6–—Y€‰€ç7–—Y€‰€ç8–—Y€‰€ç9–—Y€‰€çe–—Y€‰€ç\–—Y€‰€‚ÿÿÿInterfaces HTMLAnchorElementHTMLAppletElementHTMLAreaElementHTMLBaseElementHTMLBaseFontElementHTMLBodyElementHTMLBRElementHTMLButtonElementHTMLCollectionHTMLDirectoryŒ/öÃ/6‹/ElementHTMLDivElementHTMLDListElementHTMLDocumentHTMLDOMImplementationHTMLElementHTMLFieldSetElementHTMLFontElementHTMLFormElementHTMLFrameElementHTMLFrameSetElementHTMLHeadElementHTMLHeadingElementHTMLHRElementHTMLHtmlElementHTMLIFrameElementHTMLImageElementHTMLInputElementHTMLIsIndexElementHTMLLabelElementHTMLLegendElementHTMLLIElementHTMLLinkElementHTMLMapElementHTMLMenuElementHTMLMetaElementHTMLModElementHTMLObjectElementHTMLOListElementHTMLOptGroupElementHTMLOptionElementHTMLParagraphElementHTMLParamElementHTMLPreElementHTMLQuoteElementHTMLScriptElementHTMLSelectElementHTMLStyleElementHTMLTableCaptionElementHTMLTableCellElementHTMLTableColElementHTMLTableElementHTMLTableRowElementHTMLTableSectionElementHTMLTextAreaElementHTMLTitleElementHTMLUListElement$Œ/Ä/" €€€ÿ1öÃ/KÄ/1Uÿÿÿÿÿÿÿÿ¹ÿÿÿÿKÄ/oÄ/$Ä/oÄ/" €€€ ÿQ KÄ/ÀÄ/1M(_!…`ºÀÄ/ Å/ãL0org.w3c.dom.html(Common DOM API)J$oÄ/ Å/& €H€€€‚ÿorg.w3c.dom.html(Common DOM API)ÌuÀÄ/ÖÆ/W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ€ €€€‚ÿ€:€‚ÿ(€J€ç`–—Y€‰€‚ÿ(€^€ç_–—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIX Å/íÇ/¿#N°Â€€ÿj€€€ïҎ—YJdk14doc.4.hlp€‰€ç@œ—Y€‰€‚ÿ €P€ï¿‡—YJdk14doc.4.hlp€‰€ç^–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV PACKAGE NEXT PACKAGEFRAMES NO FRAMES All Classes&ÖÆ/È/# €€€‚ÿ*íÇ/=È/' €€ ”€ ‚ÿP!È/È// .€B€€‚€‚€ €‚‚ÿPackage org.w3c.dom.htmlX=È/åÈ/B#T€,„€€ÿ"€€€€‚ÿÿÿInterface Summary|,È/aÉ/P#p€X|.€€ç_•—Y€‰€‚ÿ€.€‚ÿÿÿHTMLAnchorElementThe anchor element.1åÈ/âÉ/P#p€b|.€€ç`•—Y€‰€‚ÿ€.€‚ÿÿÿHTMLAppletElementAn embedded Java applet.=aÉ/oÊ/P#p€z|.€€ça•—Y€‰€‚ÿ€*€‚ÿÿÿHTMLAreaElementClient-side image map area definition.y)âÉ/èÊ/P#p€R|.€€çb•—Y€‰€‚ÿ€*€‚ÿÿÿHTMLBaseElementDocument base URI.u%oÊ/]Ë/P#p€J|.€€玕—Y€‰€‚ÿ€2€‚ÿÿÿHTMLBaseFontElementBase font.~.èÊ/ÛË/P#p€\|.€€煕—Y€‰€‚ÿ€*€‚ÿÿÿHTMLBodyElementThe HTML document body.x(]Ë/SÌ/P#p€P|.€€熕—Y€‰€‚ÿ€&€‚ÿÿÿHTMLBRElementForce a line break.u%ÛË/ÈÌ/P#p€J|.€€燕—Y€‰€‚ÿ€.€‚ÿÿÿHTMLButtonElementPush button.“=SÌ/[Í/V#|€z|.€€爕—Y€‰€‚ÿ"€(€€€‚ÿÿÿHTMLCollectionAn HTMLCollection is a list of nodes.{+ÈÌ/ÖÍ/P#p€V|.€€牕—Y€‰€‚ÿ€4€‚ÿÿÿHTMLDirectoryElementDirectory list.~.[Í/TÎ/P#p€\|.€€犕—Y€‰€‚ÿ€(€‚ÿÿÿHTMLDivElementGeneric block container.x(ÖÍ/ÌÎ/P#p€P|.€€狕—Y€‰€‚ÿ€,€‚ÿÿÿHTMLDListElementDefinition list.»eTÎ/‡Ï/V#|€Ê|.€€猕—Y€‰€‚ÿ"€$€€€‚ÿÿÿHTMLDocumentAn HTMLDocument is the root of the HTML hierarchy and holds the entire content.ÿ¢ÌÎ/’0]#ˆ€E|.€€獕—Y€‰€‚ÿ.€6€€€€€‚ÿÿÿHTMLDOMImplementationT‡Ï/’0oÄ/he HTMLDOMImplementation interface extends the DOMImplementation interface with a method for creating an HTML document instance.–F‡Ï/(0P#p€Œ|.€€繕—Y€‰€‚ÿ€"€‚ÿÿÿHTMLElementAll HTML element interfaces derive from this class.—G’0¿0P#p€Ž|.€€簕—Y€‰€‚ÿ€2€‚ÿÿÿHTMLFieldSetElementOrganizes form controls into logical groups.|,(0;0P#p€X|.€€籕—Y€‰€‚ÿ€*€‚ÿÿÿHTMLFontElementLocal change to font.Œf¿0÷0V#|€Ì|.€€粕—Y€‰€‚ÿ"€*€€€‚ÿÿÿHTMLFormElementThe FORM element encompasses behavior similar to a collection and an element.w';0n0P#p€N|.€€糕—Y€‰€‚ÿ€,€‚ÿÿÿHTMLFrameElementCreate a frame.ƒ3÷0ñ0P#p€f|.€€箕—Y€‰€‚ÿ€2€‚ÿÿÿHTMLFrameSetElementCreate a grid of frames.1n0r0P#p€b|.€€絕—Y€‰€‚ÿ€*€‚ÿÿÿHTMLHeadElementDocument head information.”8ñ00\#ˆ€p|.€€綕—Y€‰€‚ÿ.€0€€€€€‚ÿÿÿHTMLHeadingElementFor the H1 to H6 elements.~.r0„0P#p€\|.€€緕—Y€‰€‚ÿ€&€‚ÿÿÿHTMLHRElementCreate a horizontal rule.€000P#p€`|.€€羕—Y€‰€‚ÿ€*€‚ÿÿÿHTMLHtmlElementRoot of an HTML document.{+„00P#p€V|.€€ç䕗Y€‰€‚ÿ€.€‚ÿÿÿHTMLIFrameElementInline subwindows.w'0ö0P#p€N|.€€çە—Y€‰€‚ÿ€,€‚ÿÿÿHTMLImageElementEmbedded image.u%0k0P#p€J|.€€çܕ—Y€‰€‚ÿ€,€‚ÿÿÿHTMLInputElementForm control.šJö00P#p€”|.€€çݕ—Y€‰€‚ÿ€0€‚ÿÿÿHTMLIsIndexElementThis element is used for single-line text input.~.k0ƒ0P#p€\|.€€çޕ—Y€‰€‚ÿ€,€‚ÿÿÿHTMLLabelElementForm field label text.œF0 0V#|€Œ|.€€çߕ—Y€‰€‚ÿ"€.€€€‚ÿÿÿHTMLLegendElementProvides a caption for a FIELDSET grouping.oƒ0Ž 0P#p€>|.€€çà•—Y€‰€‚ÿ€&€‚ÿÿÿHTMLLIElementList item.õž 0ƒ 0W#|€=|.€€çᕗY€‰€‚ÿ"€*€€€‚ÿÿÿHTMLLinkElementThe LINK element specifies a link to an external resource, and defines this document's relationship to that resource (or vice versa).|,Ž 0ÿ 0P#p€X|.€€ç╗Y€‰€‚ÿ€(€‚ÿÿÿHTMLMapElementClient-side image map.q!ƒ 0p 0P#p€B|.€€ç㕗Y€‰€‚ÿ€*€‚ÿÿÿHTMLMenuElementMenu list.¡Qÿ 0 0P#p€¢|.€€ç–—Y€‰€‚ÿ€*€‚ÿÿÿHTMLMetaElementThis contains generic meta-information about the document.“Cp 0€ 0P#p€†|.€€ç–—Y€‰€‚ÿ€(€‚ÿÿÿHTMLModElementNotice of modification to part of a document.1 0% 0P#p€b|.€€ç–—Y€‰€‚ÿ€.€‚ÿÿÿHTMLObjectElementGeneric embedded object.u%€ 0š 0P#p€J|.€€ç–—Y€‰€‚ÿ€,€‚ÿÿÿHTMLOListElementOrdered list.šJ% 040P#p€”|.€€ç –—Y€‰€‚ÿ€2€‚ÿÿÿHTMLOptGroupElementGroup options together in logical subdivisions.}-š 0±0P#p€Z|.€€ç –—Y€‰€‚ÿ€.€‚ÿÿÿHTMLOptionElementA selectable choice.w'40(0P#p€N|.€€ç –—Y€‰€‚ÿ€4€‚ÿÿÿHTMLParagraphElementParagraphs.•?±0œ0V#|€~|.€€ç –—Y€‰€‚ÿ"€,€€€‚ÿÿÿHTMLParamElementParameters fed to the OBJECT element.x((0A@0P#p€P|.€€ç –—Y€‰€‚ÿ€œ0A@0oÄ/(€‚ÿÿÿHTMLPreElementPreformatted text.š>œ0Û@0\#ˆ€||.€€ç–—Y€‰€‚ÿ.€,€€€€€‚ÿÿÿHTMLQuoteElementFor the Q and BLOCKQUOTE elements.{+A@0VA0P#p€V|.€€ç:–—Y€‰€‚ÿ€.€‚ÿÿÿHTMLScriptElementScript statements.žNÛ@0ôA0P#p€œ|.€€ç1–—Y€‰€‚ÿ€.€‚ÿÿÿHTMLSelectElementThe select element allows the selection of an option.z*VA0nB0P#p€T|.€€ç2–—Y€‰€‚ÿ€,€‚ÿÿÿHTMLStyleElementStyle information.¬\ôA0C0P#p€ž|.€€ç3–—Y€‰€‚ÿ€:€‚ÿÿÿHTMLTableCaptionElementTable caption See the CAPTION element definition in HTML 4.0.°TnB0ÊC0\#ˆ€š|.€€ç4–—Y€‰€‚ÿ.€4€€€€€‚ÿÿÿHTMLTableCellElementThe object used to represent the TH and TD elements.¢FC0lD0\#ˆ€Œ|.€€ç5–—Y€‰€‚ÿ.€2€€€€€‚ÿÿÿHTMLTableColElementRegroups the COL and COLGROUP elements.ÂrÊC0.E0P#p€ä|.€€ç6–—Y€‰€‚ÿ€,€‚ÿÿÿHTMLTableElementThe create* and delete* methods on the table allow authors to construct and modify tables.|,lD0ªE0P#p€X|.€€ç7–—Y€‰€‚ÿ€2€‚ÿÿÿHTMLTableRowElementA row in a table.®L.E0XF0b#”€˜|.€€ç8–—Y€‰€‚ÿ:€:€€€€€€€‚ÿÿÿHTMLTableSectionElementThe THEAD , TFOOT , and TBODY elements.1ªE0ÙF0P#p€b|.€€ç9–—Y€‰€‚ÿ€2€‚ÿÿÿHTMLTextAreaElementMulti-line text field.{+XF0TG0P#p€V|.€€çe–—Y€‰€‚ÿ€,€‚ÿÿÿHTMLTitleElementThe document title.w'ÙF0ËG0P#p€N|.€€ç\–—Y€‰€‚ÿ€,€‚ÿÿÿHTMLUListElementUnordered list./TG0úG0( €€€‚‚€‚ÿ *ËG0$H0' €€ ”€ ‚ÿ&úG0JH0# €€€‚ÿÌu$H0J0W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ€ €€€‚ÿ€:€‚ÿ(€J€ç`–—Y€‰€‚ÿ(€^€ç_–—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIXJH0-K0¿#N°Â€€ÿj€€€ïҎ—YJdk14doc.4.hlp€‰€ç@œ—Y€‰€‚ÿ €P€ï¿‡—YJdk14doc.4.hlp€‰€ç^–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV PACKAGE NEXT PACKAGEFRAMES NO FRAMES All Classes&J0SK0# €€€‚ÿ*-K0}K0' €€ ”€ ‚ÿfûSK0ãL0k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1}K0M01Uÿÿÿÿÿÿÿÿ»ÿÿÿÿM08M0$ãL08M0" €€€ ÿa0M0™M01Ë€_Z…aŒ™M0ãM0fÊ0Common DOM API: org.w3c.dom.html Class HierarchyJ$8M0ãM0& €H€€€‚ÿorg.w3c.dom.html Class HierarchyŒq™M0ŸO0K#f‚â eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€‚ÿ€L€‚ÿ€X€€€‚ÿL€l€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€Ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€Š€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Œ€ÿ€Ÿ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIHãM0²€0¿#NÂ€€ÿj€€€ïӎ—YJdk14doc.4.hlp€‰€çAœ—Y€ŸO0²€08M0‰€‚ÿ €0€ï¿‡—YJdk14doc.4.hlp€‰€ç_–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ŸO0؀0# €€€‚ÿ*²€00' €€ ”€ ‚ÿ&؀0(0# €€€‚ÿX-0€0+ &€Z€€‚€ €‚‚ÿHierarchy For Package org.w3c.dom.html>(0Ÿ0& €0€€€‚ÿPackage Hierarchies:A€0ÿ0. ,€&€ä眜—Y€‰€‚‚ÿAll Packages&Ÿ0%‚0# €€€‚ÿ*ÿ0O‚0' €€ ”€ ‚ÿK%‚0š‚0/ .€8€€‚€‚€ €‚‚ÿInterface Hierarchyx2O‚0ƒ0F \€d€ä€€ï|Ž—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.DOMImplementationp;š‚0‚ƒ05 :€v€ɀ€€獕—Y€‰€‚‚ÿ· interface org.w3c.dom.html.HTMLDOMImplementationžWƒ0 „0G ^€®€ä€€爕—Y€‰€‚€€çb–—Y€‰€‚‚ÿ· interface org.w3c.dom.html.HTMLCollection· interface org.w3c.dom.Nodep)‚ƒ0„0G ^€R€ɀ€€ïxŽ—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.Documentg2 „0÷„05 :€d€-€€猕—Y€‰€‚‚ÿ· interface org.w3c.dom.html.HTMLDocumento(„0f…0G ^€P€ɀ€€ï}Ž—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.Elementf1÷„0̅05 :€b€-€€繕—Y€‰€‚‚ÿ· interface org.w3c.dom.html.HTMLElementlf…0߇0§ Ù€‘€€ç_•—Y€‰€‚€€ç`•—Y€‰€‚€€ça•—Y€‰€‚€€çb•—Y€‰€‚€€玕—Y€‰€‚€€煕—Y€‰€‚€€熕—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLAnchorElement· interface org.w3c.dom.html.HTMLAppletElement· interface org.w3c.dom.html.HTMLAreaElement· interface org.w3c.dom.html.HTMLBaseElement· interface org.w3c.dom.html.HTMLBaseFontElement· interface org.w3c.dom.html.HTMLBodyElement· interface org.w3c.dom.html.HTMLBRElementq̅0÷‰0§ ã€‘€€燕—Y€‰€‚€€牕—Y€‰€‚€€犕—Y€‰€‚€€狕—Y€‰€‚€€簕—Y€‰€‚€€籕—Y€‰€‚€€粕—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLButtonElement· interface org.w3c.dom.html.HTMLDirectoryElement· interface org.w3c.dom.html.HTMLDivElement· interface org.w3c.dom.html.HTMLDListElement· interface org.w3c.dom.html.HTMLFieldSetElement· interface org.w3c.dom.html.HTMLFontElement· interface org.w3c.dom.html.HTMLFormElementn߇0 Œ0§ Ý€‘€€糕—Y€‰€‚€€箕—Y€‰€‚€€絕—Y€‰€‚€€綕—Y€‰€‚€€緕—Y€‰€‚€€羕—Y€‰€‚€€ç䕗Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLFrameElement· interface org.w3c.dom.html.HTMLFrameSetElement· interface org.w3c.dom.html.HTMLHeadElement· interface org.w3c.dom.html.HTMLHeadingElement· interface org.w3c.dom.html.HTMLHRElement· interface org.w3c.dom.html.HTMLHtmlElement· interface org.w3c.dom.html.HTMLIFrameElementl÷‰0Ž0§ Ù€‘€€çە—Y€‰€‚€€çܕ—Y€‰€‚€€çݕ—Y€‰€‚€€çޕ—Y€‰€‚€€çߕ—Y€‰€‚€€çà•—Y€‰€‚€€çᕗY€‰€‚ÿ· interface org.w3c.dom.html.HTMLImageElement· interface org.w3c.dom.html.HTMLInputElement· interface org.w3c.dom.html.HTMLIsIndexElement· interface org.w3c.dom.html.HTMLLabelElement· interface org.w3c.dom.html.HTMLLegendElement· interface org.w3c.dom.html.HTMLLIElement· interface org.w3c.dom.html.HTMLLinkElementk Œ0=À0§ ×€‘€€ç╗Y€‰€‚€€ç㕗Y€‰€‚€€ç–—Y€‰€‚€€ç–—Y€‰€‚€€ç–—Y€‰€‚€€ç–—Y€‰€‚€€ç –—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLMapElement· interface org.w3c.dom.html.HTMLMenuElement· interface org.w3c.dom.html.HTMLMetaElement· interface org.w3c.dom.html.HTMLModElement· interface org.w3c.dom.html.HTMLObjectElement· interface org.w3c.dom.html.HTMLOListElement· intŽ0=À08M0erface org.w3c.dom.html.HTMLOptGroupElementrŽ0VÂ0§ å€‘€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç–—Y€‰€‚€€ç:–—Y€‰€‚€€ç1–—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLOptionElement· interface org.w3c.dom.html.HTMLParagraphElement· interface org.w3c.dom.html.HTMLParamElement· interface org.w3c.dom.html.HTMLPreElement· interface org.w3c.dom.html.HTMLQuoteElement· interface org.w3c.dom.html.HTMLScriptElement· interface org.w3c.dom.html.HTMLSelectElement,…=À0‚Ä0§  €‘€€ç2–—Y€‰€‚€€ç3–—Y€‰€‚€€ç4–—Y€‰€‚€€ç5–—Y€‰€‚€€ç6–—Y€‰€‚€€ç7–—Y€‰€‚€€ç8–—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLStyleElement· interface org.w3c.dom.html.HTMLTableCaptionElement· interface org.w3c.dom.html.HTMLTableCellElement· interface org.w3c.dom.html.HTMLTableColElement· interface org.w3c.dom.html.HTMLTableElement· interface org.w3c.dom.html.HTMLTableRowElement· interface org.w3c.dom.html.HTMLTableSectionElementý¡VÂ0Å0\ †€C€‘€€ç9–—Y€‰€‚€€çe–—Y€‰€‚€€ç\–—Y€‰€‚‚ÿ· interface org.w3c.dom.html.HTMLTextAreaElement· interface org.w3c.dom.html.HTMLTitleElement· interface org.w3c.dom.html.HTMLUListElement&‚Ä0¥Å0# €€€‚ÿ*Å0ÏÅ0' €€ ”€ ‚ÿ&¥Å0õÅ0# €€€‚ÿŒqÏÅ0±Ç0K#f‚â eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€‚ÿ€L€‚ÿ€X€€€‚ÿL€l€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€Ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€Š€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Œ€ÿ€Ÿ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIHõÅ0žÈ0¿#NÂ€€ÿj€€€ïӎ—YJdk14doc.4.hlp€‰€çAœ—Y€‰€‚ÿ €0€ï¿‡—YJdk14doc.4.hlp€‰€ç_–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&±Ç0ÞÈ0# €€€‚ÿ*žÈ0É0' €€ ”€ ‚ÿ^øÞÈ0fÊ0f š€ñ€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1É0—Ê01Uÿÿÿÿÿÿÿÿœÿÿÿÿ—Ê0»Ê0$fÊ0»Ê0" €€€ ÿa0—Ê0Ë01œ !…`bŸË0fË0û1Common DOM API: Uses of Package org.w3c.dom.htmlJ$»Ê0fË0& €H€€€‚ÿUses of Package org.w3c.dom.htmlÌuË02Í0W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€‚ÿ€L€€€‚ÿ(€^€ç_–—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAfË0 Î0˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç`–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&2Í01Î0# €€€‚ÿ* Î0[Î0' €€ ”€ ‚ÿ&1Î0Î0# €€€‚ÿS'[Î0ÔÎ0, (€N€€‚€ ‚€‚‚ÿUses of Packageorg.w3c.dom.htmlu*Î0IÏ0K#f€T„€€ÿ4€€€ç^–—Y€ ‰€‚ÿÿÿPackages that use org.w3c.dom.htmljÔÎ0³Ï0P#p€4„.€€纊|€‰€‚ÿ€,€‚ÿÿÿorg.w3c.dom.html )IÏ0ÜÏ0$ € €€‚‚ÿ —@³Ï01W#~€€„€ÜÏ01»Ê0€ÿL€€€ç^–—Y€ ‰€ç^–—Y€ ‰€‚ÿÿÿClasses in org.w3c.dom.html used by org.w3c.dom.html¢PÜÏ0!1R#t€ „Z€€ï|á>ÇJdk14doc.4.hlp€!‰€€‚ÿÿÿHTMLElement All HTML element interfaces derive from this class./1P1( €€€‚‚€‚ÿ *!1z1' €€ ”€ ‚ÿ&P1 1# €€€‚ÿÌuz1l1W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç^–—Y€‰€‚ÿ€<€‚ÿ€L€€€‚ÿ(€^€ç_–—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA 1E1˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€ç`–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&l1k1# €€€‚ÿ*E1•1' €€ ”€ ‚ÿfûk1û1k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1•1,11Uÿÿÿÿÿÿÿÿ¿ÿÿÿÿ,1P1$û1P1" €€€ ÿN,1ž11Ö@Z…a&dÀž1å1{2NamedNodeMap (Common DOM API)G!P1å1& €B€€€‚ÿNamedNodeMap (Common DOM API)îyž1Ó1u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€€€‚ÿL€R€ïð‡—YJdk14doc.4.hlp€‰€‚ÿ(€f€çÁ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITå1æ 1¿#NšÂ€€ÿj€€€ïŽ—YJdk14doc.4.hlp€‰€çb–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ça–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÓ1˜ 1\#ˆ€¬ÂÂ.€€€ç~ì)À€ ‰€‚ÿ.€`€€ç%óP<€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&æ 1Ÿ 1# €€€‚ÿ*˜ 1è 1' €€ ”€ ‚ÿe.Ÿ 1M 17 >€\€€‚€‚€€ ‚€‚‚€‚ÿorg.w3c.domInterface NamedNodeMap*è 1w 1' €€ ”€ ‚ÿnM 1å 1U x€3€€‚€‚€€‚‚€€€€€€€€€€€€‚ÿpublic interface NamedNodeMapObjects implementing the NamedNodeMap interface are used to represent collections of nodes that can be accessed by name. Note that NamedNodeMap does not inherit from NodeList; NamedNodeMaps are not maintained in any particular order. Objects contained in an object implementing NamedNodeMap may also be accessed by an ordinal index, but this is simply to allow convenient enumeration of the contents of a NamedNodeMap, and does not imply that the DOM specifies an order to these Nodes. û}w 1à1~ ̀ú€€‚€€‚‚ÌCEF("http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113",`',1)€‰€‚‚€‚ÿNamedNodeMap objects in the DOM are live. See also the Document Object Model (DOM) Level 2 Core Specification.*å 1 1' €€ ”€ ‚ÿ,à161' € €€‚€‚ÿU 1‹1B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summary¿G61V@1x#À€Ž÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç” þq€‰€€‚‹1V@1P1ÿÿÿ intgetLength() The number of nodes in this map.ÿ`‹1UA1Ÿ#À÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿr€€çÕ§>h€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ NodegetNamedItem(String name) Retrieves a node specified by name.V˜V@1«B1Ÿ#J1÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿ®€€çÕhš€‰€ïÐۓYJdk14doc.2.hlp€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ NodegetNamedItemNS(String namespaceURI, String localName) Retrieves a node specified by local name and namespace URI.ÜUUA1‡C1‡#ހª÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿB€€çõLV€‰€€€€‚ÿÿÿ Nodeitem(int index) Returns the indexth item in the map.a«B1‡D1Ÿ#Â÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿr€€ççñ©È€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ NoderemoveNamedItem(String name) Removes a node specified by name.W™‡C1ÞE1Ÿ#J3÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿ®€€çÇè’%€‰€ïÐۓYJdk14doc.2.hlp€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ NoderemoveNamedItemNS(String namespaceURI, String localName) Removes a node specified by local name and namespace URI.øe‡D1ÖF1“#ö€Ê÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿZ€€çB7n€‰€çb–—Y€‰€€€€‚ÿÿÿ NodesetNamedItem(Node arg) Adds a node using its nodeName attribute. qÞE1àG1™#â÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿf€€痀ڀɀ€€€€€€€‚ÿIf the new Node replaces an existing node the replaced Node is returned, otherwise null is returned.2 ˆN1^O1' €€ä€€‚ÿThrows:ö”,O1`‚1b ’€)€ɀï{Ž—YJdk14doc.4.hlp€‰€€€‚‚€€€€€€€€‚‚ÿDOMException - WRONG_DOCUMENT_ERR: Raised if arg was creat^O1`‚1P1ed from a different document than the one that created this map. NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly. INUSE_ATTRIBUTE_ERR: Raised if arg is an Attr that is already an attribute of another Element object. The DOM user must explicitly clone Attr nodes to re-use them in other elements. HIERARCHY_REQUEST_ERR: Raised if an attempt is made to add a node doesn't belong in this NamedNodeMap. Examples would include trying to insert something other than an Attr node into an Element's map of attributes, or a non-Entity node into the DocumentType's map of Entities.(^O1ˆ‚1% €€ɀ€‚ÿ&`‚1®‚1# €€€‚ÿ*ˆ‚1؂1' €€ ”€ ‚ÿ{®‚1ك1† ܀ö€€‚€‚€€‚‚€çb–—Y€‰€€€ïÐۓYJdk14doc.2.hlp€‰€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿremoveNamedItempublic Node removeNamedItem(String name) throws DOMExceptionk>؂1D…1- (€}€ä€‚‚€€‚ÿRemoves a node specified by name. When this map contains the attributes attached to an element, if the removed attribute is known to have a default value, an attribute immediately appears containing the default value as well as the corresponding namespace URI, local name, and prefix when applicable.Parameters:^0ك1¢…1. ,€`€ɀ€€€€‚ÿname - The nodeName of the node to remove.3 D…1Յ1' €€ä€€‚ÿReturns:iD¢…1>†1% €ˆ€ɀ€‚ÿThe node removed from this map if a node with such a name exists.2 Յ1p†1' €€ä€€‚ÿThrows:à—>†1P‡1I `€/€ɀï{Ž—YJdk14doc.4.hlp€‰€€€‚‚‚ÿDOMException - NOT_FOUND_ERR: Raised if there is no node named name in this map. NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly.&p†1v‡1# €€€‚ÿ*P‡1 ‡1' €€ ”€ ‚ÿ{2v‡1ˆ1I b€d€€‚€‚€€‚‚€çb–—Y€‰€€€€‚ÿitempublic Node item(int index)ԕ ‡1ïˆ1? L€+€ä€€€€€€€‚‚€€‚ÿReturns the indexth item in the map. If index is greater than or equal to the number of nodes in this map, this returns null.Parameters:H ˆ17‰1( €@€ɀ€€‚ÿindex - Index into this map.3 ïˆ1j‰1' €€ä€€‚ÿReturns:ŒZ7‰1ö‰12 4€Ž€ɀ€€€€€‚‚ÿThe node at the indexth position in the map, or null if that is not a valid index.&j‰1Š1# €€€‚ÿ*ö‰1FŠ1' €€ ”€ ‚ÿk.Š1±Š1= J€\€€‚€‚€€‚‚€€€€‚ÿgetLengthpublic int getLength()›jFŠ1L‹11 2€Ô€ä€€€€€‚‚ÿThe number of nodes in this map. The range of valid child node indices is 0 to length-1 inclusive.&±Š1r‹1# €€€‚ÿ*L‹1œ‹1' €€ ”€ ‚ÿ …r‹1šŒ1‡ ܀ €€‚€‚€€‚‚€çb–—Y€‰€€€ïÐۓYJdk14doc.2.hlp€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿgetNamedItemNSpublic Node getNamedItemNS(String namespaceURI, String localName)^0œ‹1Ž1. *€a€ä€‚‚‚€€‚ÿRetrieves a node specified by local name and namespace URI. Documents which do not support the "XML" feature will permit only the DOM Level 1 calls for creating/setting elements and attributes. Hence, if you specify a non-null namespace URI, these DOMs will never find a matching node.Parameters:¢sšŒ1šŽ1/ .€æ€ɀ€€‚€€‚ÿnamespaceURI - The namespace URI of the node to retrieve.localName - The local name of the node to retrieve.3 Ž1ێ1' €€ä€€‚ÿReturns:Ž‚šŽ112 2€€ɀ€€€€€‚ÿA Node (of any type) with the specified local name and namespace URI, or null if they do not identify any node in this map.1 ێ1À1' €€ä€€‚ÿSince:51 À1& €€ɀ€‚‚ÿDOM Level 2À1 À1P1&À12À1# €€€‚ÿ* À1\À1' €€ ”€ ‚ÿéu2À1EÁ1t ž€ê€€‚€‚€€‚‚€çb–—Y€‰€€€çb–—Y€‰€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿsetNamedItemNSpublic Node setNamedItemNS(Node arg) throws DOMExceptionõŒ\À1:Â19 @€y€ä€€€€€‚‚€€‚ÿAdds a node using its namespaceURI and localName. If a node with that namespace URI and that local name is already present in this map, it is replaced by the new one.Parameters:¿ŠEÁ1ùÂ15 8€€ɀ€€€€€€‚ÿarg - A node to store in this map. The node will later be accessible using the value of its namespaceURI and localName attributes.3 :Â1,Ã1' €€ä€€‚ÿReturns:€mùÂ1ÐÃ17 >€Ú€ɀ€€€€€€€‚ÿIf the new Node replaces an existing node the replaced Node is returned, otherwise null is returned.2 ,Ã1Ä1' €€ä€€‚ÿThrows:÷•ÐÃ1ùÆ1b ’€+€ɀï{Ž—YJdk14doc.4.hlp€‰€€€‚‚€€€€€€€€‚‚ÿDOMException - WRONG_DOCUMENT_ERR: Raised if arg was created from a different document than the one that created this map. NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly. INUSE_ATTRIBUTE_ERR: Raised if arg is an Attr that is already an attribute of another Element object. The DOM user must explicitly clone Attr nodes to re-use them in other elements. HIERARCHY_REQUEST_ERR: Raised if an attempt is made to add a node doesn't belong in this NamedNodeMap. Examples would include trying to insert something other than an Attr node into an Element's map of attributes, or a non-Entity node into the DocumentType's map of Entities. ³‡Ä1¬Ç1, &€€ɀ€€€‚ÿNOT_SUPPORTED_ERR: Always thrown if the current document does not support the "XML" feature, since namespaces were defined by XML.1 ùÆ1ÝÇ1' €€ä€€‚ÿSince:5¬Ç1È1& €€ɀ€‚‚ÿDOM Level 2&ÝÇ18È1# €€€‚ÿ*È1bÈ1' €€ ”€ ‚ÿcœ8È1ÅÉ1Š {€€‚€‚€€‚‚€çb–—Y€‰€€€ïÐۓYJdk14doc.2.hlp€‰€ïÐۓYJdk14doc.2.hlp€‰€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿremoveNamedItemNSpublic Node removeNamedItemNS(String namespaceURI, String localName) throws DOMExceptionœpbÈ1aÌ1, &€á€ä€€€‚‚ÿRemoves a node specified by local name and namespace URI. A removed attribute may be known to have a default value when this map contains the attributes attached to an element, as returned by the attributes attribute of the Node interface. If so, an attribute immediately appears containing the default value as well as the corresponding namespace URI, local name, and prefix when applicable. Documents which do not support the "XML" feature will permit only the DOM Level 1 calls for creating/setting elements and attributes. Hence, if you specify a non-null namespace URI, these DOMs will never find a matching node.<ÅÉ1Ì1+ &€"€ä€‚€€‚ÿParameters:žoaÌ1;Í1/ .€Þ€ɀ€€‚€€‚ÿnamespaceURI - The namespace URI of the node to remove.localName - The local name of the node to remove.3 Ì1nÍ1' €€ä€€‚ÿReturns:\;Í1ïÍ1% €ž€ɀ€‚ÿThe node removed from this map if a node with such a local name and namespace URI exists.2 nÍ1!Î1' €€ä€€‚ÿThrows: »ïÍ1*Ï1N j€w€ɀï{Ž—YJdk14doc.4.hlp€‰€€€€€‚‚ÿDOMException - NOT_FOUND_ERR: Raised if there is no node with the specified namespaceURI and localName in this map. NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly.1 !Î1[Ï1' €€ä€€‚ÿSince:5*Ï1Ï1& €€ɀ€‚‚ÿDOM Level 2&[Ï1¶Ï1# €€€‚ÿ*Ï1àÏ1' €€ ”€ ‚ÿ&¶Ï12# €€€àÏ12P1‚ÿîyàÏ12u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€€€‚ÿL€R€ïð‡—YJdk14doc.4.hlp€‰€‚ÿ(€f€çÁ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT22¿#NšÂ€€ÿj€€€ïŽ—YJdk14doc.4.hlp€‰€çb–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ça–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V2Å2\#ˆ€¬ÂÂ.€€€ç~ì)À€ ‰€‚ÿ.€`€€ç%óP<€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&2ë2# €€€‚ÿ*Å22' €€ ”€ ‚ÿfûë2{2k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.12¬21UÿÿÿÿÿÿÿÿÁÿÿÿÿ¬2Ð2${2Ð2" €€€ ÿF¬221lžbŒ‚iÂ2U2äÆ4Node (Common DOM API)?Ð2U2& €2€€€‚ÿNode (Common DOM API)îy2C2u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€€€‚ÿL€R€ïñ‡—YJdk14doc.4.hlp€‰€‚ÿ(€f€çÁ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITU2D 2­#*šÂ€€ÿF€€€ça–—Y€‰€çc–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çb–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All ClassesÒ^C2 2t#ž€ŒÂÂF€€€ç\ŽOõ€ ‰€çAÍìˀ ‰€‚ÿF€h€€ç¿ýŒ%€ ‰€çî°º*€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&D 2< 2# €€€‚ÿ* 2f 2' €€ ”€ ‚ÿz@< 2à 2: D€€€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.domInterface NodeAll Known Subinterfaces: ‰ f 2uD2ú ‡ €äïÀ‡—YJdk14doc.4.hlp€‰€ïÁ‡—YJdk14doc.4.hlp€‰€ï‡—YJdk14doc.4.hlp€‰€ïP—YJdk14doc.4.hlp€‰€ïxŽ—YJdk14doc.4.hlp€‰€ïyŽ—YJdk14doc.4.hlp€‰€ïzŽ—YJdk14doc.4.hlp€‰€ï}Ž—YJdk14doc.4.hlp€‰€ï~Ž—YJdk14doc.4.hlp€‰€ïŽ—YJdk14doc.4.hlp€‰€ç_•—Y€‰€ç`•—Y€‰€ça•—Y€‰€çb•—Y€‰€玕—Y€‰€煕—Y€‰€熕—Y€‰€燕—Y€‰€牕—Y€‰€犕—Y€‰€狕—Y€‰€猕—Y€‰€繕—Y€‰€簕—Y€‰€籕—Y€‰€粕—Y€‰€糕—Y€‰€箕—Y€‰€絕—Y€‰€綕—Y€‰€緕—Y€‰€羕—Y€‰€ç䕗Y€‰€çە—Y€‰€çܕ—Y€‰€çݕ—Y€‰€çޕ—Y€‰€çߕ—Y€‰€çà•—Y€‰€çᕗY€‰€ç╗Y€‰€ç㕗Y€‰€ç–—Y€‰€ç–—Y€‰€ç–—Y€‰€ç–—Y€‰€ç –—Y€‰€ç –—Y€‰€ç –—Y€‰€ç –—Y€‰€ç –—Y€‰€ç–—Y€‰€ç:–—Y€‰€ç1–—Y€‰€ç2–—Y€‰€ç3–—Y€‰€ç4–—Y€‰€ç5–—Y€‰€ç6–—Y€‰€ç7–—Y€‰€ç8–—Y€‰€ç9–—Y€‰€çe–—Y€‰€ç\–—Y€‰€çd–—Y€‰€çݗY€‰€çEœ—Y€‰€‚ÿAttr, CDATASection, CharacterData, Comment, Document, DocumentFragment, DocumentType, Element, Entity, EntityReference, HTMLAnchorElement, HTMLAppletElement, HTMLAreaElement, HTMLBaseElement, HTMLBaseFontElement, HTMLBodyElement, à 2uD2Ð2HTMLBRElement, HTMLButtonElement, HTMLDirectoryElement, HTMLDivElement, HTMLDListElement, HTMLDocument, HTMLElement, HTMLFieldSetElement, HTMLFontElement, HTMLFormElement, HTMLFrameElement, HTMLFrameSetElement, HTMLHeadElement, HTMLHeadingElement, HTMLHRElement, HTMLHtmlElement, HTMLIFrameElement, HTMLImageElement, HTMLInputElement, HTMLIsIndexElement, HTMLLabelElement, HTMLLegendElement, HTMLLIElement, HTMLLinkElement, HTMLMapElement, HTMLMenuElement, HTMLMetaElement, HTMLModElement, HTMLObjectElement, HTMLOListElement, HTMLOptGroupElement, HTMLOptionElement, HTMLParagraphElement, HTMLParamElement, HTMLPreElement, HTMLQuoteElement, HTMLScriptElement, HTMLSelectElement, HTMLStyleElement, HTMLTableCaptionElement, HTMLTableCellElement, HTMLTableColElement, HTMLTableElement, HTMLTableRowElement, HTMLTableSectionElement, HTMLTextAreaElement, HTMLTitleElement, HTMLUListElement, Notation, ProcessingInstruction, Text'à 2œD2$ €€ä€‚ÿ&uD2ÂD2# €€€‚ÿ*œD2ìD2' €€ ”€ ‚ÿÄÂD2ÿF2O l€‰€€‚€‚€€‚‚€€€€€€€€€€‚ÿpublic interface NodeThe Node interface is the primary datatype for the entire Document Object Model. It represents a single node in the document tree. While all objects implementing the Node interface expose methods for dealing with children, not all objects implementing the Node interface may have children. For example, Text nodes may not have children, and adding children to such nodes results in a DOMException being raised. ?äìD2>I2[ „€É€€‚€€€€€€€€€€€€€€€€€€‚ÿThe attributes nodeName, nodeValue and attributes are included as a mechanism to get at node information without casting down to the specific derived interface. In cases where there is no obvious mapping of these attributes for a specific nodeType (e.g., nodeValue for an Element or attributes for a Comment ), this returns null. Note that the specialized interfaces may contain additional and more convenient mechanisms to get and set the relevant information. gÿF2ÛI26 <€Î€€‚€€€€€€‚ÿThe values of nodeName, nodeValue, and attributes vary according to the node type as follows:Í9>I2šJ2”#ø€rÃðë«€€ÿ$€€€€‚ÿ$€€€€‚ÿ$€8€€€‚ÿ$€T€€€‚ÿÿÿInterfacenodeNamenodeValueattributes£4ÛI2KK2o#®€hÃðë«€€€‚ÿ€€‚ÿ€4€‚ÿ€\€‚ÿÿÿAttrname of attributevalue of attributenullŒGšJ2L2u#º€ŽÃðë«€€€‚ÿ"€€€€‚ÿ€F€‚ÿ€‚€‚ÿÿÿCDATASection"#cdata-section"content of the CDATA Sectionnull«6KK2²L2u#º€lÃðë«€€€‚ÿ"€€€€‚ÿ€0€‚ÿ€`€‚ÿÿÿComment"#comment"content of the commentnull›&L2MM2u#º€LÃðë«€€€‚ÿ"€€€€‚ÿ€4€‚ÿ€@€‚ÿÿÿDocument"#document"nullnull¬7²L2ùM2u#º€nÃðë«€€€‚ÿ"€&€€€‚ÿ€V€‚ÿ€b€‚ÿÿÿDocumentFragment"#document-fragment"nullnullž/MM2—N2o#®€^Ãðë«€€€‚ÿ€€‚ÿ€F€‚ÿ€R€‚ÿÿÿDocumentTypedocument type namenullnull—(ùM2.O2o#®€PÃðë«€€€‚ÿ€€‚ÿ€(€‚ÿ€4€‚ÿÿÿElementtag namenullNamedNodeMap‘"—N2¿O2o#®€DÃðë«€€€‚ÿ€€‚ÿ€,€‚ÿ€8€‚ÿÿÿEntityentity namenullnullš9.O2s€2o#®€rÃðë«€€€‚ÿ¿O2s€2Ð2€$€‚ÿ€Z€‚ÿ€f€‚ÿÿÿEntityReferencename of entity referencednullnull•&¿O22o#®€LÃðë«€€€‚ÿ€€‚ÿ€4€‚ÿ€@€‚ÿÿÿNotationnotation namenullnullºKs€22o#®€–Ãðë«€€€‚ÿ€0€‚ÿ€@€‚ÿ€Š€‚ÿÿÿProcessingInstructiontargetentire content excluding the targetnull§22i‚2u#º€dÃðë«€€€‚ÿ"€€€€‚ÿ€$€‚ÿ€X€‚ÿÿÿText"#text"content of the text nodenullÅO2.ƒ2v Œ€ž€€‚ÌCEF("http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113",`',1)€‰€‚‚€‚ÿSee also the Document Object Model (DOM) Level 2 Core Specification.*i‚2Xƒ2' €€ ”€ ‚ÿ,.ƒ2„ƒ2' € €€‚€‚ÿTXƒ2؃2B#T€$„€€ÿ"€€€€‚ÿÿÿField SummaryÂG„ƒ2š„2{#ƀŽ÷€€ÿ"€€€€‚ÿ€"€ÿ<€$€çŠvšõ€‰€€€‚ÿÿÿstatic shortATTRIBUTE_NODE The node is an Attr.ÍR؃2g…2{#ƀ€÷€€ÿ"€€€€‚ÿ€"€ÿ<€$€çe@™€‰€€€‚ÿÿÿstatic shortCDATA_SECTION_NODE The node is a CDATASection.ÂGš„2)†2{#ƀŽ÷€€ÿ"€€€€‚ÿ€"€ÿ<€$€燒𑀉€€€‚ÿÿÿstatic shortCOMMENT_NODE The node is a Comment.ÕZg…2þ†2{#ƀŽ÷€€ÿ"€€€€‚ÿ€"€ÿ<€$€çÄG` €‰€€€‚ÿÿÿstatic shortDOCUMENT_FRAGMENT_NODE The node is a DocumentFragment.ÄI)†2‡2{#ƀ’÷€€ÿ"€€€€‚ÿ€"€ÿ<€$€çɪæÍ€‰€€€‚ÿÿÿstatic shortDOCUMENT_NODE The node is a Document.ÍRþ†2ˆ2{#ƀ€÷€€ÿ"€€€€‚ÿ€"€ÿ<€$€çòò$L€‰€€€‚ÿÿÿstatic shortDOCUMENT_TYPE_NODE The node is a DocumentType.ÃH‡2R‰2{#ƀ÷€€ÿ"€€€€‚ÿ€"€ÿ<€$€çʟ$à€‰€€€‚ÿÿÿstatic shortELEMENT_NODE The node is an Element.ÁFˆ2Š2{#ƀŒ÷€€ÿ"€€€€‚ÿ€"€ÿ<€$€çų峀‰€€€‚ÿÿÿstatic shortENTITY_NODE The node is an Entity.ÔYR‰2çŠ2{#ƀ²÷€€ÿ"€€€€‚ÿ€"€ÿ<€$€盩¶{€‰€€€‚ÿÿÿstatic shortENTITY_REFERENCE_NODE The node is an EntityReference.ÄIŠ2«‹2{#ƀ’÷€€ÿ"€€€€‚ÿ€"€ÿ<€$€çúŒÒM€‰€€€‚ÿÿÿstatic shortNOTATION_NODE The node is a Notation.ßdçŠ2ŠŒ2{#ƀȍ÷€€ÿ"€€€€‚ÿ€"€ÿ<€$€ç<ñ "€‰€€€‚ÿÿÿstatic shortPROCESSING_INSTRUCTION_NODE The node is a ProcessingInstruction.ÁF«‹2K2{#ƀŒ÷€€ÿ"€€€€‚ÿ€"€ÿ<€$€秄c¥€‰€€€‚ÿÿÿstatic shortTEXT_NODE The node is a Text node.'ŠŒ2r2# €€€‚ÿ UK2Ǎ2B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summary‡r2âŽ2”#ö€÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿZ€€ç[Ÿ·…€‰€çb–—Y€‰€€€€‚ÿÿÿ NodeappendChild(Node newChild) Adds the node newChild to the end of the list of children of this node.ŽÇ2 À2‚#Ҁ÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿ6€€çj”äE€‰€€‚ÿÿÿ NodecloneNode(boolean deep) Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes.âŽ2 À2Ð2/›âŽ2;Á2”#ö€7÷€€ÿ4€€€ça–—Y€‰€‚ÿ€*€ÿZ€,€çVî#o€‰€€€€€€€€‚ÿÿÿ NamedNodeMapgetAttributes() A NamedNodeMap containing the attributes of this node (if it is an Element) or null otherwise.ïh À2*Â2‡#ހЍ÷€€ÿ4€€€çc–—Y€‰€‚ÿ€"€ÿB€$€ç\êI™€‰€€€€‚ÿÿÿ NodeListgetChildNodes() A NodeList that contains all children of this node.ÍL;Á2÷Â2#Ҁ˜÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿ6€€ç Ëà€‰€€‚ÿÿÿ NodegetFirstChild() The first child of this node.ËJ*Â2ÂÃ2#Ҁ”÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿ6€€ç_÷~ €€‚ÿÿÿ NodegetLastChild() The last child of this node.ýj÷Â2¿Ä2“#ö€Ô÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç§Äb€‰€€‚ÿÿÿ StringgetLocalName() Returns the local part of the qualified name of this node. rÂÃ2ÊÅ2™#ä÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €ç8œ›’€‰€€€€‚ÿÿÿ StringgetNamespaceURI() The namespace URI of this node, or null if it is unspecified.ÚY¿Ä2€Æ2#Ҁ²÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿ6€€ç”a€€‚ÿÿÿ NodegetNextSibling() The node immediately following this node.qÊÅ2šÇ2“#ö€â÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çèvÍ܀‰€€‚ÿÿÿ StringgetNodeName() The name of this node, depending on its type; see the table above.ës€Æ2“È2x#À€æ÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç›!H€‰€€‚ÿÿÿ shortgetNodeType() A code representing the type of the underlying object, as defined above.sšÇ2™É2“#ö€æ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç”4¥Ü€‰€€‚ÿÿÿ StringgetNodeValue() The value of this node, depending on its type; see the table above.ÿf“È2˜Ê2™#Ì÷€€ÿX€€€ïxŽ—YJdk14doc.4.hlp€‰€‚ÿ€"€ÿB€$€ç œÎ€‰€€€€‚ÿÿÿ DocumentgetOwnerDocument() The Document object associated with this node.ÈG™É2`Ë2#ҀŽ÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿ6€€çC=ˆˆ€‰€€‚ÿÿÿ NodegetParentNode() The parent of this node.o˜Ê2hÌ2™#Þ÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €灳@€‰€€€€‚ÿÿÿ StringgetPrefix() The namespace prefix of this node, or null if it is unspecified.Þ]`Ë2FÍ2#Ҁº÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿ6€€çÜÚԀ‰€€‚ÿÿÿ NodegetPreviousSibling() The node immediately preceding this node.êrhÌ20Î2x#À€ä÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç¢!˜¬€‰€€‚ÿÿÿ booleanhasAttributes() Returns whether this node (if it is an element) has any attributes.ÒZFÍ2Ï2x#À€Ž÷€€ÿ"€€€€‚ÿ€€ÿ6€€çšŸÖ€‰€€‚ÿÿÿ booleanhasChildNodes() Returns whether this node has any children.>˜0Î2L3Š#1÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿ~€€糕 €‰€çb–—Y€‰€çb–—Y€‰€€€€€€‚ÿÿÿ NodeinsertBefore(Node newChild, Node refChild) Inserts Ï2L3Ð2the node newChild before the existing child node refChild.vÁÏ2Â3µ#8ƒ÷€€ÿ"€€€€‚ÿ€€ÿ®€€ç¿È¡¹€‰€ïÐۓYJdk14doc.2.hlp€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ booleanisSupported(String feature, String version) Tests whether the DOM implementation implements a specific feature and that feature is supported by this node. uL3Î3—#ü€ë÷€€ÿ"€€€€‚ÿ€€ÿr€€粔sµ€‰€€€€€€€€€€€€‚ÿÿÿ voidnormalize() Puts all Text nodes in the full depth of the sub-tree underneath this Node, including attribute nodes, into a "normal" form where only structure (e.g., elements, comments, processing instructions, CDATA sections, and entity references) separates Text nodes, i.e., there are neither adjacent Text nodes nor empty Text nodes.+—Â3ù3”#ö€/÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿZ€€çžtz€‰€çb–—Y€‰€€€€‚ÿÿÿ NoderemoveChild(Node oldChild) Removes the child node indicated by oldChild from the list of children, and returns it.jŸÎ3c3¬#&}÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿŠ€€ç3fl€‰€çb–—Y€‰€çb–—Y€‰€€€€€€€€‚ÿÿÿ NodereplaceChild(Node newChild, Node oldChild) Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.‚ù3|3—#ü€÷€€ÿ"€€€€‚ÿ€€ÿr€€çwòI€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetNodeValue(String nodeValue) The value of this node, depending on its type; see the table above.{c3“3œ#ö÷€€ÿ"€€€€‚ÿ€€ÿ~€€ç Âv퀉€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿÿÿ voidsetPrefix(String prefix) The namespace prefix of this node, or null if it is unspecified.)|3Œ3$ € €€‚‚ÿ S“3 3B#T€"„€€ÿ"€€€€‚ÿÿÿField Detailt>Œ3ƒ 36 <€|€€‚€€‚‚€€€‚ÿELEMENT_NODEpublic static final short ELEMENT_NODE[) 3Þ 32 4€R€ä€€€‚‚€€‚ÿThe node is an Element.See Also:]ƒ 3; 3A R€8€ɀïHS ÃJdk14doc.4.hlp€‰€‚‚ÿConstant Field Values&Þ 3a 3# €€€‚ÿ*; 3‹ 3' €€ ”€ ‚ÿ~Da 3 3: D€ˆ€€‚€‚€€‚‚€€€‚ÿATTRIBUTE_NODEpublic static final short ATTRIBUTE_NODEX&‹ 3a 32 4€L€ä€€€‚‚€€‚ÿThe node is an Attr.See Also:] 3Ÿ 3A R€8€ɀïŽß§ÂJdk14doc.4.hlp€‰€‚‚ÿConstant Field Values&a 3ä 3# €€€‚ÿ*Ÿ 3 3' €€ ”€ ‚ÿt:ä 3‚ 3: D€t€€‚€‚€€‚‚€€€‚ÿTEXT_NODEpublic static final short TEXT_NODE\* 3Þ 32 4€T€ä€€€‚‚€€‚ÿThe node is a Text node.See Also:]‚ 3; 3A R€8€ɀïñ§¥Jdk14doc.4.hlp€‰€‚‚ÿConstant Field Values&Þ 3a 3# €€€‚ÿ*; 3‹ 3' €€ ”€ ‚ÿ†La 33: D€˜€€‚€‚€€‚‚€€€‚ÿCDATA_SECTION_NODEpublic static final short CDATA_SECTION_NODE_-‹ 3p32 4€Z€ä€€€‚‚€€‚ÿThe node is a CDATASection.See Also:]3Í3A R€8€ɀï/óÏJdk14doc.4.hlp€‰€‚‚ÿConstant Field Values&p3ó3# €€€‚ÿ*Í33' €€ ”€ ‚ÿŒRó3©3: D€€€€‚€‚€€‚‚€€€‚ÿENTITY_REFERENCE_NODEpublic static final short ENTITY_REFERENCE_NODEc13@32 4€b€ä€€€‚‚€€‚ÿThe node is an EntityReference.©3@3Ð2See Also:]©3u@3A R€8€ɀï…ka†Jdk14doc.4.hlp€‰€‚‚ÿConstant Field Values&@3›@3# €€€‚ÿ*u@3Å@3' €€ ”€ ‚ÿx>›@3=A3: D€|€€‚€‚€€‚‚€€€‚ÿENTITY_NODEpublic static final short ENTITY_NODEZ(Å@3—A32 4€P€ä€€€‚‚€€‚ÿThe node is an Entity.See Also:]=A3ôA3A R€8€ɀï?h›Jdk14doc.4.hlp€‰€‚‚ÿConstant Field Values&—A3B3# €€€‚ÿ*ôA3DB3' €€ ”€ ‚ÿ˜^B3ÜB3: D€Œ€€‚€‚€€‚‚€€€‚ÿPROCESSING_INSTRUCTION_NODEpublic static final short PROCESSING_INSTRUCTION_NODEh6DB3DC32 4€l€ä€€€‚‚€€‚ÿThe node is a ProcessingInstruction.See Also:]ÜB3¡C3A R€8€ɀï6ê¢cJdk14doc.4.hlp€‰€‚‚ÿConstant Field Values&DC3ÇC3# €€€‚ÿ*¡C3ñC3' €€ ”€ ‚ÿz@ÇC3kD3: D€€€€‚€‚€€‚‚€€€‚ÿCOMMENT_NODEpublic static final short COMMENT_NODEZ(ñC3ÅD32 4€P€ä€€€‚‚€€‚ÿThe node is a Comment.See Also:]kD3"E3A R€8€ɀïFŽtJdk14doc.4.hlp€‰€‚‚ÿConstant Field Values&ÅD3HE3# €€€‚ÿ*"E3rE3' €€ ”€ ‚ÿ|BHE3îE3: D€„€€‚€‚€€‚‚€€€‚ÿDOCUMENT_NODEpublic static final short DOCUMENT_NODE[)rE3IF32 4€R€ä€€€‚‚€€‚ÿThe node is a Document.See Also:]îE3ŠF3A R€8€ɀïóÐ{êJdk14doc.4.hlp€‰€‚‚ÿConstant Field Values&IF3ÌF3# €€€‚ÿ*ŠF3öF3' €€ ”€ ‚ÿ†LÌF3|G3: D€˜€€‚€‚€€‚‚€€€‚ÿDOCUMENT_TYPE_NODEpublic static final short DOCUMENT_TYPE_NODE_-öF3ÛG32 4€Z€ä€€€‚‚€€‚ÿThe node is a DocumentType.See Also:]|G38H3A R€8€ɀï á~œJdk14doc.4.hlp€‰€‚‚ÿConstant Field Values&ÛG3^H3# €€€‚ÿ*8H3ˆH3' €€ ”€ ‚ÿŽT^H3I3: D€š€€‚€‚€€‚‚€€€‚ÿDOCUMENT_FRAGMENT_NODEpublic static final short DOCUMENT_FRAGMENT_NODEc1ˆH3yI32 4€b€ä€€€‚‚€€‚ÿThe node is a DocumentFragment.See Also:]I3ÖI3A R€8€ɀïÚÕJdk14doc.4.hlp€‰€‚‚ÿConstant Field Values&yI3üI3# €€€‚ÿ*ÖI3&J3' €€ ”€ ‚ÿ|BüI3¢J3: D€„€€‚€‚€€‚‚€€€‚ÿNOTATION_NODEpublic static final short NOTATION_NODE[)&J3ýJ32 4€R€ä€€€‚‚€€‚ÿThe node is a Notation.See Also:]¢J3ZK3A R€8€ɀï$³gjJdk14doc.4.hlp€‰€‚‚ÿConstant Field ValuesTýJ3®K3B#T€$„€€ÿ"€€€€‚ÿÿÿMethod DetailŽ7ZK3€Ð€ä€€€€€€€‚‚ÿA NamedNodeMap containing the attributes of this node (if it is an Element) or null otherwise.&ی3 3# €€€‚ÿ*z3ʍ3' €€ ”€ ‚ÿ E 3jŽ3[ †€Š€€‚€‚€€‚‚€ïxŽ—YJdk14doc.4.hlp€‰€€€€‚ÿgetOwnerDocumentpublic Document getOwnerDocument())ßʍ3“3J b€¿€ä€€€€€€€€€€€€€‚‚ÿThe Document object associated with this node. This is also the Document object used to create new nodes. When this node is a Document or a DocumentType which is not used with any Document yet, this is null.&jŽ3¹3# €€€‚ÿ*“3 À3' €€ ”€ ‚ÿ¹3 À3Ð2" ¹3.Á3‚ ҀA€€‚€‚€€‚‚€çb–—Y€‰€€€çb–—Y€‰€çb–—Y€‰€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿinsertBeforepublic Node insertBefore(Node newChild, Node refChild) throws DOMExceptionÁ] À3ïÂ3d –€»€ä€€€€€€€€€€€‚€€€€€€€€‚‚€€‚ÿInserts the node newChild before the existing child node refChild. If refChild is null, insert newChild at the end of the list of children. If newChild is a DocumentFragment object, all of its children are inserted, in the same order, before refChild. If the newChild is already in the tree, it is first removed.Parameters:­~.Á3œÃ3/ .€ü€ɀ€€‚€€‚ÿnewChild - The node to insert.refChild - The reference node, i.e., the node before which the new node must be inserted.3 ïÂ3ÏÃ3' €€ä€€‚ÿReturns:@œÃ3Ä3% €6€ɀ€‚ÿThe node being inserted.2 ÏÃ3AÄ3' €€ä€€‚ÿThrows:ÈÄ3XÆ3O l€‘€ɀï{Ž—YJdk14doc.4.hlp€‰€€€‚€€‚‚ÿDOMException - HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to insert is one of this node's ancestors or this node itself. WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node. NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly or if the parent of the node being inserted is readonly. pDAÄ3ÈÆ3, (€ˆ€ɀ€€€‚‚ÿNOT_FOUND_ERR: Raised if refChild is not a child of this node.&XÆ3îÆ3# €€€‚ÿ*ÈÆ3Ç3' €€ ”€ ‚ÿ" îÆ3:È3‚ ҀA€€‚€‚€€‚‚€çb–—Y€‰€€€çb–—Y€‰€çb–—Y€‰€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿreplaceChildpublic Node replaceChild(Node newChild, Node oldChild) throws DOMException²TÇ3ìÉ3^ Š€©€ä€€€€€€€‚€€€€€€€€€€‚‚€€‚ÿReplaces the child node oldChild with newChild in the list of children, and returns the oldChild node. If newChild is a DocumentFragment object, oldChild is replaced by all of the DocumentFragment children, which are inserted in the same order. If the newChild is already in the tree, it is first removed.Parameters:–g:È3‚Ê3/ .€Î€ɀ€€‚€€‚ÿnewChild - The new node to put in the child list.oldChild - The node being replaced in the list.3 ìÉ3µÊ3' €€ä€€‚ÿReturns::‚Ê3ïÊ3% €*€ɀ€‚ÿThe node replaced.2 µÊ3!Ë3' €€ä€€‚ÿThrows:EïïÊ3fÍ3V z€ß€ɀï{Ž—YJdk14doc.4.hlp€‰€€€‚€€‚‚€€‚ÿDOMException - HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to put in is one of this node's ancestors or this node itself. WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node. NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the parent of the new node is readonly. NOT_FOUND_ERR: Raised if oldChild is not a child of this node.(!Ë3ŽÍ3% €€ɀ€‚ÿ&fÍ3ŽÍ3# €€€‚ÿ*ŽÍ3ÞÍ3' €€ ”€ ‚ÿåqŽÍ3ÃÎ3t ž€â€€‚€‚€€‚‚€çb–—Y€‰€€€çb–—Y€‰€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿremoveChildpublic Node removeChild(Node oldChild) throws DOMExceptionkÞÍ3`Ï32 4€Ö€ä€€€‚‚€€‚ÿRemoves the child node indicated by oldChild from the list of children, and returns it.Parameters:N&ÃÎ3®Ï3( €L€ɀ€€‚ÿoldChild - The node being removed.3 `Ï3áÏ3' €€ä€€‚ÿReturns:9®Ï3&4% €(€ÉáÏ3&4Ð2€€‚ÿThe node removed.2 áÏ3X4' €€ä€€‚ÿThrows:ޕ&464I `€+€ɀï{Ž—YJdk14doc.4.hlp€‰€‚€€‚‚ÿDOMException - NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. NOT_FOUND_ERR: Raised if oldChild is not a child of this node.&X4\4# €€€‚ÿ*64†4' €€ ”€ ‚ÿåq\4k4t ž€â€€‚€‚€€‚‚€çb–—Y€‰€€€çb–—Y€‰€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿappendChildpublic Node appendChild(Node newChild) throws DOMExceptionӚ†4>49 @€5€ä€€€€€‚‚€€‚ÿAdds the node newChild to the end of the list of children of this node. If the newChild is already in the tree, it is first removed.Parameters:˜k4 4/ ,€9€ɀ€€€€‚ÿnewChild - The node to add.If it is a DocumentFragment object, the entire contents of the document fragment are moved into the child list of this node3 >4<4' €€ä€€‚ÿReturns:7 4s4% €$€ɀ€‚ÿThe node added.2 <4¥4' €€ä€€‚ÿThrows:Ðs4Ä4O l€¡€ɀï{Ž—YJdk14doc.4.hlp€‰€€€‚€€‚‚ÿDOMException - HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to append is one of this node's ancestors or this node itself. WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node. NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly or if the previous parent of the node being inserted is readonly.(¥4ì4% €€ɀ€‚ÿ&Ä44# €€€‚ÿ*ì4<4' €€ ”€ ‚ÿw:4³4= J€t€€‚€‚€€‚‚€€€€‚ÿhasChildNodespublic boolean hasChildNodes()f:<44, (€t€ä€‚‚€€‚ÿReturns whether this node has any children.Returns:j;³4ƒ4/ .€v€ɀ€€€€‚‚ÿtrue if this node has any children, false otherwise.&4©4# €€€‚ÿ*ƒ4Ó4' €€ ”€ ‚ÿˆ?©4[ 4I b€~€€‚€‚€€‚‚€çb–—Y€‰€€€€‚ÿcloneNodepublic Node cloneNode(boolean deep)àŠÓ4; 4V z€€ä€€€€€‚€€€€€€€€€€€€‚ÿReturns a duplicate of this node, i.e., serves as a generic copy constructor for nodes. The duplicate node has no parent; ( parentNode is null.). Cloning an Element copies all attributes and their values, including those generated by the XML processor to represent defaulted attributes, but this method does not copy any text it contains unless it is a deep clone, since the text is contained in a child Text node. Cloning an Attribute directly, as opposed to be cloned as part of an Element cloning operation, returns a specified attribute ( specified is true). Cloning any other type of node simply returns a copy of this node. †5[ 4Á 4Q p€k€ä€€€€€€€€€€€€€‚‚€€‚ÿNote that cloning an immutable subtree results in a mutable copy, but the children of an EntityReference clone are readonly . In addition, clones of unspecified Attr nodes are specified. And, cloning Document, DocumentType, Entity, and Notation nodes is implementation dependent.Parameters:Ü¡; 44; D€C€ɀ€€€€€€€€‚ÿdeep - If true, recursively clone the subtree under the specified node; if false, clone only the node itself (and its attributes, if it is an Element).3 Á 4Ð4' €€ä€€‚ÿReturns:=4 4& €.€ɀ€‚‚ÿThe duplicate node.&Ð434# €€€‚ÿ* 4]4' €€ ”€ ‚ÿl/34É4= J€^€€‚€‚€€‚‚€€€€‚ÿnormalizepublic void normalize()Jõ]4C4U x€ë€ä€€€€€€€€É4C4Ð2€€€€€€€€€‚ÿPuts all Text nodes in the full depth of the sub-tree underneath this Node, including attribute nodes, into a "normal" form where only structure (e.g., elements, comments, processing instructions, CDATA sections, and entity references) separates Text nodes, i.e., there are neither adjacent Text nodes nor empty Text nodes. This can be used to ensure that the DOM view of a document is the same as if it were saved and re-loaded, and is useful when operations (such as XPointer lookups) that depend on a particular document tree structure are to be used.In cases where the document contains CDATASections, the normalize operation alone may not be sufficient, since XPointers do not differentiate between Text nodes and CDATASection nodes.'É4FC4$ €€ä€‚ÿ&C4lC4# €€€‚ÿ*FC4–C4' €€ ”€ ‚ÿñwlC4‡D4z Ā‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿisSupportedpublic boolean isSupported(String feature, String version)­€–C44E4- (€€ä€‚‚€€‚ÿTests whether the DOM implementation implements a specific feature and that feature is supported by this node.Parameters:¬j‡D4àF4B R€Õ€ɀ€€€€€€‚€€€€‚ÿfeature - The name of the feature to test. This is the same name which can be passed to the method hasFeature on DOMImplementation.version - This is the version number of the feature to test. In Level 2, version 1, this is the string "2.0". If the version is not specified, supporting any version of the feature will cause the method to return true.3 4E4G4' €€ä€€‚ÿReturns:‰XàF4œG41 2€°€ɀ€€€€€‚ÿReturns true if the specified feature is supported on this node, false otherwise.1 G4ÍG4' €€ä€€‚ÿSince:5œG4H4& €€ɀ€‚‚ÿDOM Level 2&ÍG4(H4# €€€‚ÿ*H4RH4' €€ ”€ ‚ÿœA(H4îH4[ †€‚€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetNamespaceURIpublic String getNamespaceURI()Ô‰RH4ÂK4K d€€ä€€€‚‚€€€€€€€€€€‚ÿThe namespace URI of this node, or null if it is unspecified. This is not a computed value that is the result of a namespace lookup based on an examination of the namespace declarations in scope. It is merely the namespace URI given at creation time. For nodes of any type other than ELEMENT_NODE and ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, such as createElement from the Document interface, this is always null.Per the Namespaces in XML Specification an attribute does not inherit its namespace from the element it is attached to. If an attribute is not explicitly given a namespace, it simply has no namespace.7 îH4ùK4+ &€€ä€‚€€‚ÿSince:5ÂK4.L4& €€ɀ€‚‚ÿDOM Level 2&ùK4TL4# €€€‚ÿ*.L4~L4' €€ ”€ ‚ÿ5TL4M4[ †€j€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetPrefixpublic String getPrefix()b ~L4pO4W |€€ä€€€‚€€€€€€€€€€‚€€€€‚ÿThe namespace prefix of this node, or null if it is unspecified. Note that setting this attribute, when permitted, changes the nodeName attribute, which holds the qualified name, as well as the tagName and name attributes of the Element and Attr interfaces, when applicable. Note also that changing the prefix of an attribute that is known to have a default value, does not make a new attribute with the default value and the original prefix appear, since the namespaceURI and localName do not change. ÍM4”€4K d€›€ä€€€€€€€€€€€‚‚€€‚ÿFor nodes of any type other than ELEMENT_NODE and ATTRIBUTE_NODEpO4”€4Ð2 and nodes created with a DOM Level 1 method, such as createElement from the Document interface, this is always null.Throws:.ÇpO4ƒ4g œ€€ɀï{Ž—YJdk14doc.4.hlp€‰€‚‚€€€€€€€€€€€€‚ÿDOMException - INVALID_CHARACTER_ERR: Raised if the specified prefix contains an illegal character, per the XML 1.0 specification . NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. NAMESPACE_ERR: Raised if the specified prefix is malformed per the Namespaces in XML specification, if the namespaceURI of this node is null, if the specified prefix is "xml" and the namespaceURI of this node is different from "http://www.w3.org/XML/1998/namespace", if this node is an attribute and the specified prefix is "xmlns" and the namespaceURI of this node is different from " http://www.w3.org/2000/xmlns/", or if this node is an attribute and the qualifiedName of this node is "xmlns" .1 ”€4óƒ4' €€ä€€‚ÿSince:5ƒ4(„4& €€ɀ€‚‚ÿDOM Level 2&óƒ4N„4# €€€‚ÿ*(„4x„4' €€ ”€ ‚ÿágN„4Y…4z Ā΀€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿsetPrefixpublic void setPrefix(String prefix) throws DOMExceptionb x„4»‡4W |€€ä€€€‚€€€€€€€€€€‚€€€€‚ÿThe namespace prefix of this node, or null if it is unspecified. Note that setting this attribute, when permitted, changes the nodeName attribute, which holds the qualified name, as well as the tagName and name attributes of the Element and Attr interfaces, when applicable. Note also that changing the prefix of an attribute that is known to have a default value, does not make a new attribute with the default value and the original prefix appear, since the namespaceURI and localName do not change. ÍY…4ӈ4K d€›€ä€€€€€€€€€€€‚‚€€‚ÿFor nodes of any type other than ELEMENT_NODE and ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, such as createElement from the Document interface, this is always null.Throws:.Ç»‡4Œ4g œ€€ɀï{Ž—YJdk14doc.4.hlp€‰€‚‚€€€€€€€€€€€€‚ÿDOMException - INVALID_CHARACTER_ERR: Raised if the specified prefix contains an illegal character, per the XML 1.0 specification . NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. NAMESPACE_ERR: Raised if the specified prefix is malformed per the Namespaces in XML specification, if the namespaceURI of this node is null, if the specified prefix is "xml" and the namespaceURI of this node is different from "http://www.w3.org/XML/1998/namespace", if this node is an attribute and the specified prefix is "xmlns" and the namespaceURI of this node is different from " http://www.w3.org/2000/xmlns/", or if this node is an attribute and the qualifiedName of this node is "xmlns" .1 ӈ42Œ4' €€ä€€‚ÿSince:5Œ4gŒ4& €€ɀ€‚‚ÿDOM Level 2&2Œ4Œ4# €€€‚ÿ*gŒ4·Œ4' €€ ”€ ‚ÿ–;Œ4M4[ †€v€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetLocalNamepublic String getLocalName()T·Œ4¡Ž4L f€€ä€‚€€€€€€€€€€‚‚€€‚ÿReturns the local part of the qualified name of this node. For nodes of any type other than ELEMENT_NODE and ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, such as createElement from the Document interface, this is always null.Since:5M4֎4& €€ɀ€‚‚ÿDOM Level 2&¡Ž4üŽ4# €€€‚ÿ*֎4&4' €€ ”€ ‚ÿw:üŽ44= J€t€€‚€‚€€‚‚€€€€‚ÿhasAttributespublic boolean hasAttributes()~R&4'À4, (€€€ä€‚‚€€‚ÿReturns whether this node (if it is an element) has an4'À4Ð2y attributes.Returns:j<4‘À4. ,€x€ɀ€€€€‚ÿtrue if this node has any attributes, false otherwise.1 'À4ÂÀ4' €€ä€€‚ÿSince:5‘À4÷À4& €€ɀ€‚‚ÿDOM Level 2&ÂÀ4Á4# €€€‚ÿ*÷À4GÁ4' €€ ”€ ‚ÿ&Á4mÁ4# €€€‚ÿîyGÁ4[Ã4u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€€€‚ÿL€R€ïñ‡—YJdk14doc.4.hlp€‰€‚ÿ(€f€çÁ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITmÁ4\Ä4­#*šÂ€€ÿF€€€ça–—Y€‰€çc–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çb–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All ClassesÒ^[Ã4.Å4t#ž€ŒÂÂF€€€ç\ŽOõ€ ‰€çAÍìˀ ‰€‚ÿF€h€€ç¿ýŒ%€ ‰€çî°º*€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&\Ä4TÅ4# €€€‚ÿ*.Å4~Å4' €€ ”€ ‚ÿfûTÅ4äÆ4k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1~Å4Ç41UÿÿÿÿÿÿÿÿÃÿÿÿÿÇ49Ç4$äÆ49Ç4" €€€ ÿJÇ4ƒÇ41‡&djăÇ4ÆÇ4ñ 5NodeList (Common DOM API)C9Ç4ÆÇ4& €:€€€‚ÿNodeList (Common DOM API)îyƒÇ4ŽÉ4u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€€€‚ÿL€R€ïò‡—YJdk14doc.4.hlp€‰€‚ÿ(€f€çÁ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITÆÇ4µÊ4­#*šÂ€€ÿF€€€çb–—Y€‰€çd–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çc–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VŽÉ4gË4\#ˆ€¬ÂÂ.€€€ç®¯×€ ‰€‚ÿ.€`€€ç·n$€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&µÊ4Ë4# €€€‚ÿ*gË4·Ë4' €€ ”€ ‚ÿa*Ë4Ì47 >€T€€‚€‚€€ ‚€‚‚€‚ÿorg.w3c.domInterface NodeList*·Ë4BÌ4' €€ ”€ ‚ÿ„Ì4ZÎ4” ö€ €€‚€‚€€‚‚€€€€‚‚€€‚‚ÌCEF("http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113",`',1)€‰€‚ÿpublic interface NodeListThe NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live. The items in the NodeList are accessible via an integral index, starting from 0. See also the Document Object Model (DOM) Level 2 Core Specification.,BÌ4†Î4' € €€‚€‚ÿ*ZÎ4°Î4' €€ ”€ ‚ÿ,†Î4ÜÎ4' € €€‚€‚ÿU°Î41Ï4B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summary¿GÜÎ4 5x#À€Ž÷€€ÿ"€€€€‚ÿ€€ÿ6€€ç¶Ã.׀‰€€‚ÿÿÿ intgetLength() The number of nodes in the list.1Ï4 59Ç4ã\1Ï4ï5‡#ހž÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿB€€çJª€‰€€€€‚ÿÿÿ Nodeitem(int index) Returns the indexth item in the collection.) 55$ € €€‚‚ÿ Tï5l5B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailu05á5E Z€`€€‚€€‚‚€çb–—Y€‰€€€€‚ÿitempublic Node item(int index)ۜl5Œ5? L€9€ä€€€€€€€‚‚€€‚ÿReturns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.Parameters:N&á5 5( €L€ɀ€€‚ÿindex - Index into the collection.3 Œ5=5' €€ä€€‚ÿReturns:™a 5Ö58 @€Â€ɀ€€€€€€€‚‚ÿThe node at the indexth position in the NodeList, or null if that is not a valid index.&=5ü5# €€€‚ÿ*Ö5&5' €€ ”€ ‚ÿk.ü5‘5= J€\€€‚€‚€€‚‚€€€€‚ÿgetLengthpublic int getLength()“h&5$5+ &€Ð€ä€€€‚‚ÿThe number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.&‘5J5# €€€‚ÿ*$5t5' €€ ”€ ‚ÿ&J5š5# €€€‚ÿîyt5ˆ5u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€€€‚ÿL€R€ïò‡—YJdk14doc.4.hlp€‰€‚ÿ(€f€çÁ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITš5‰5­#*šÂ€€ÿF€€€çb–—Y€‰€çd–—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çc–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vˆ5; 5\#ˆ€¬ÂÂ.€€€ç®¯×€ ‰€‚ÿ.€`€€ç·n$€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&‰5a 5# €€€‚ÿ*; 5‹ 5' €€ ”€ ‚ÿfûa 5ñ 5k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1‹ 5" 51UÿÿÿÿÿÿÿÿÅÿÿÿÿ" 5F 5$ñ 5F 5" €€€ ÿJ" 5 51ÕŒ‚i–kƐ 5Ó 5k†5Notation (Common DOM API)CF 5Ó 5& €:€€€‚ÿNotation (Common DOM API)îy 5Á 5u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€€€‚ÿL€R€ïW—YJdk14doc.4.hlp€‰€‚ÿ(€f€çÁ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITÓ 5Â5­#*šÂ€€ÿF€€€çc–—Y€‰€çݗY€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çd–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÁ 5t5\#ˆ€¬ÂÂ.€€€çǎr〠‰€‚ÿ.€`€€ç€,Ž€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Â5š5# €€€‚ÿ*t5Ä5' €€ ”€ ‚ÿz@š5J@5: D€€€€‚€‚€€ ‚€‚‚€€‚ÿÄ5J@5F 5org.w3c.domInterface NotationAll Superinterfaces: 9 Ä5ƒ@5. ,€€äçb–—Y€‰€‚‚ÿNode&J@5©@5# €€€‚ÿ*ƒ@5Ó@5' €€ ”€ ‚ÿ·©@5ÕB5K d€o€€‚€‚€€‚çb–—Y€‰€‚‚€€€€‚‚ÿpublic interface Notationextends NodeThis interface represents a notation declared in the DTD. A notation either declares, by name, the format of an unparsed entity (see section 4.7 of the XML 1.0 specification ), or is used for formal declaration of processing instruction targets (see section 2.6 of the XML 1.0 specification ). The nodeName attribute inherited from Node is set to the declared name of the notation. \ÖÓ@51D5† ڀ­€€€€‚‚€€‚‚ÌCEF("http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113",`',1)€‰€‚‚€‚ÿThe DOM Level 1 does not support editing Notation nodes; they are therefore readonly. A Notation node does not have any parent. See also the Document Object Model (DOM) Level 2 Core Specification.*ÕB5[D5' €€ ”€ ‚ÿ,1D5‡D5' € €€‚€‚ÿT[D5ÛD5B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'‡D5E5# €€€‚ÿ ƒ8ÛD5…E5K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇE5LG5Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'…E5sG5# €€€‚ÿ ULG5ÈG5B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryéVsG5±H5“#ö€¬÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç%nŒn€‰€€‚ÿÿÿ StringgetPublicId() The public identifier of this notation.éVÈG5šI5“#ö€¬÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €磙xV€‰€€‚ÿÿÿ StringgetSystemId() The system identifier of this notation.'±H5ÁI5# €€€‚ÿ „9šI5EJ5K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆÁI5hM5]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)EJ5‘M5$ € €€‚‚ÿ ThM5åM5B#T€$„€€ÿ"€€€€‚ÿÿÿMethod DetailŽ7‘M5sN5W ~€n€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetPublicIdpublic String getPublicId()’gåM5O5+ &€Î€ä€€€‚‚ÿThe public identifier of this notation. If the public identifier was not specified, this is null.&sN5+O5# €€€‚ÿ*O5UO5' €€ ”€ ‚ÿ”9+O5 €5[ †€r€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetSystemIdpublic String getSystemId()UO5 €5F 5’gUO5ž€5+ &€Î€ä€€€‚‚ÿThe system identifier of this notation. If the system identifier was not specified, this is null.& €5Ā5# €€€‚ÿ*ž€5î€5' €€ ”€ ‚ÿ&Ā55# €€€‚ÿîyî€5ƒ5u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€€€‚ÿL€R€ïW—YJdk14doc.4.hlp€‰€‚ÿ(€f€çÁ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT5„5­#*šÂ€€ÿF€€€çc–—Y€‰€çݗY€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çd–—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vƒ5µ„5\#ˆ€¬ÂÂ.€€€çǎr〠‰€‚ÿ.€`€€ç€,Ž€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&„5ۄ5# €€€‚ÿ*µ„5…5' €€ ”€ ‚ÿfûۄ5k†5k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1…5œ†51UÿÿÿÿÿÿÿÿÇÿÿÿÿœ†5À†5$k†5À†5" €€€ ÿLœ†5 ‡51újkÈ ‡5Q‡5‹5org.w3c.dom(Common DOM API)EÀ†5Q‡5& €>€€€‚ÿorg.w3c.dom(Common DOM API)B ‡5“‡5/ .€&€€çÀ—Y€‰€‚ÿ org.w3c.domíQ‡5€Š5Ú#‚ƒ'„hƒ€€€€ïÀ‡—YJdk14doc.4.hlp€‰€ïÁ‡—YJdk14doc.4.hlp€‰€ï‡—YJdk14doc.4.hlp€‰€ïP—YJdk14doc.4.hlp€‰€ïxŽ—YJdk14doc.4.hlp€‰€ïyŽ—YJdk14doc.4.hlp€‰€ïzŽ—YJdk14doc.4.hlp€‰€ï|Ž—YJdk14doc.4.hlp€‰€ï}Ž—YJdk14doc.4.hlp€‰€ï~Ž—YJdk14doc.4.hlp€‰€ïŽ—YJdk14doc.4.hlp€‰€ça–—Y€‰€çb–—Y€‰€çc–—Y€‰€çd–—Y€‰€çݗY€‰€çEœ—Y€‰€‚ÿÿÿInterfaces AttrCDATASectionCharacterDataCommentDocumentDocumentFragmentDocumentTypeDOMImplementationElementEntityEntityReferenceNamedNodeMapNodeNodeListNotationProcessingInstructionTextv!“‡5öŠ5U#z€B„`€€€€€"ï{Ž—YJdk14doc.4.hlp€‰€‚ÿÿÿExceptions DOMException$€Š5‹5" €€€ÿ1öŠ5K‹51UÿÿÿÿÿÿÿÿÉÿÿÿÿK‹5o‹5$‹5o‹5" €€€ ÿLK‹5»‹51¢–kQlÊ»‹5Œ5k 6org.w3c.dom(Common DOM API)Eo‹5Œ5& €>€€€‚ÿorg.w3c.dom(Common DOM API)Ìu»‹5̍5W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ€ €€€‚ÿ€:€‚ÿ(€J€睗Y€‰€‚ÿ(€^€çÁ—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM API)XŒ5õŽ5Ñ#r°Â€€ÿŽ€€€ïB‡—YJdk14doc.4.hlp€‰€ïQŽ—YJdk14doc.4.hlp€‰€‚ÿ €P€ï¿‡—YJdk14doc.4.hlp€‰€çÀ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV PACKAGE NEXT PACKAGEFRAMES NO FRAMES All Classes&̍55# €€€‚ÿ*õŽ5E5' €€ ”€ ‚ÿ0Œ5À5t ¶€y€€‚€‚€ €‚‚Ì#EF("http://java.sun.com/xml",`',1)€‰€‚‚€€‚çt œ|€‰€‚‚ÿPackage org.w3c.domProvides the interfaces for the Document ObjE5À5o‹5ect Model (DOM) which is a component API of the Java API for XML Processing.See: DescriptionXE5ÙÀ5B#T€,„€€ÿ"€€€€‚ÿÿÿInterface SummaryŸPÀ5—Á5n#¬€ Û©R€€ïÀ‡—YJdk14doc.4.hlp€‰€‚ÿ.€€€€€€‚ÿÿÿAttrThe Attr interface represents an attribute in an Element object.é†ÙÀ5€Â5c#”€ Û©R€€ïÁ‡—YJdk14doc.4.hlp€‰€‚ÿ€$€‚ÿÿÿCDATASectionCDATA sections are used to escape blocks of text containing characters that would otherwise be regarded as markup.ö—Á5vÃ5i# €Û©R€€ï‡—YJdk14doc.4.hlp€‰€‚ÿ"€&€€€‚ÿÿÿCharacterDataThe CharacterData interface extends Node with a set of attributes and methods for accessing character data in the DOM.%°€Â5›Ä5u#ž€aÛ©R€€ïP—YJdk14doc.4.hlp€‰€‚ÿ:€€€€€€€€‚ÿÿÿCommentThis interface inherits from CharacterData and represents the content of a comment, i.e., all the characters between the starting ' '.ŒTvÃ5WÅ5h# €šÛ©R€€ïxŽ—YJdk14doc.4.hlp€‰€‚ÿ"€€€€‚ÿÿÿDocumentThe Document interface represents the entire HTML or XML document.Ë]›Ä5"Æ5n#¬€ºÛ©R€€ïyŽ—YJdk14doc.4.hlp€‰€‚ÿ.€,€€€€€‚ÿÿÿDocumentFragmentDocumentFragment is a "lightweight" or "minimal" Document object.ðvWÅ5Ç5z#ĀìÛ©R€€ïzŽ—YJdk14doc.4.hlp€‰€‚ÿF€$€€€€€€€€€‚ÿÿÿDocumentTypeEach Document has a doctype attribute whose value is either null or a DocumentType object.(¿"Æ5:È5i# €Û©R€€ï|Ž—YJdk14doc.4.hlp€‰€‚ÿ"€.€€€‚ÿÿÿDOMImplementationThe DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model.ÀXÇ5úÈ5h# €°Û©R€€ï}Ž—YJdk14doc.4.hlp€‰€‚ÿ"€€€€‚ÿÿÿElementThe Element interface represents an element in an HTML or XML document.Ãa:È5œÉ5b#”€ÂÛ©R€€ï~Ž—YJdk14doc.4.hlp€‰€‚ÿ€€‚ÿÿÿEntityThis interface represents an entity, either parsed or unparsed, in an XML document.-ÄúÈ5êÊ5i# €‰Û©R€€ïŽ—YJdk14doc.4.hlp€‰€‚ÿ"€*€€€‚ÿÿÿEntityReferenceEntityReference objects may be inserted into the structure model when an entity reference is in the source document, or when the user wishes to insert an entity reference.厜É5ÏË5W#|€Û©.€€ça–—Y€‰€‚ÿ"€$€€€‚ÿÿÿNamedNodeMapObjects implementing the NamedNodeMap interface are used to represent collections of nodes that can be accessed by name.Ž^êÊ5ƒÌ5V#|€ŒÛ©.€€çb–—Y€‰€‚ÿ"€€€€‚ÿÿÿNodeThe Node interface is the primary datatype for the entire Document Object Model.©ÏË5ƒÍ5W#|€SÛ©.€€çc–—Y€‰€‚ÿ"€€€€‚ÿÿÿNodeListThe NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented.™IƒÌ5Î5P#p€’Û©.€€çd–—Y€‰€‚ÿ€€‚ÿÿÿNotationThis interface represents a notation declared in the DTD.ƒÍ55Ï5W#|€…Û©.€€çݗY€‰€‚ÿ"€6€€€‚ÿÿÿProcessingInstructionThe ProcessingInstruction interface represents a "processing instruction", used in XML as a way to keep processor-specific information in the text of the document.›Î5E6i# €7Û©.€€çEœ—Y€‰€‚ÿF€€€€€€€€€€‚ÿÿÿTextThe Text interface inherits from CharacterData and represents the textual content (t5Ï5E6o‹5ermed character data in XML) of an Element or Attr.)5Ï5n6$ € €€‚‚ÿ XE6Æ6B#T€,„€€ÿ"€€€€‚ÿÿÿException SummarySðn66c#”€á¥ßR€€ï{Ž—YJdk14doc.4.hlp€‰€‚ÿ€$€‚ÿÿÿDOMExceptionDOM operations only raise exceptions in "exceptional" circumstances, i.e., when an operation is impossible to perform (either for logical reasons, because data is lost, or because the implementation has become unstable).cÆ66Ÿ Ç€€‚‚€ €‚‚Ì#EF("http://java.sun.com/xml",`',1)€‰€Ì2EF("http://www.w3.org/TR/DOM-Level-2-Core/",`',1)€‰€‚‚€€‚ÿ Package org.w3c.dom DescriptionProvides the interfaces for the Document Object Model (DOM) which is a component API of the Java API for XML Processing. The Document Object Model Level 2 Core API allows programs to dynamically access and update the content and structure of documents. See the specification for more information.Since:/ 6J6% €€ä€‚‚ÿJDK1.4&6p6# €€€‚ÿ*J6š6' €€ ”€ ‚ÿ&p6À6# €€€‚ÿÌuš6Œ6W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ€ €€€‚ÿ€:€‚ÿ(€J€睗Y€‰€‚ÿ(€^€çÁ—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM API)XÀ6µ6Ñ#r°Â€€ÿŽ€€€ïB‡—YJdk14doc.4.hlp€‰€ïQŽ—YJdk14doc.4.hlp€‰€‚ÿ €P€ï¿‡—YJdk14doc.4.hlp€‰€çÀ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV PACKAGE NEXT PACKAGEFRAMES NO FRAMES All Classes&Œ6Û6# €€€‚ÿ*µ66' €€ ”€ ‚ÿfûÛ6k 6k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.16œ 61UÿÿÿÿÿÿÿÿËÿÿÿÿœ 6À 6$k 6À 6" €€€ ÿ\+œ 6 61[k…lÌ 6a 6|L6Common DOM API: org.w3c.dom Class HierarchyEÀ 6a 6& €>€€€‚ÿorg.w3c.dom Class HierarchyŒq 6 6K#f‚â eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€‚ÿ€L€‚ÿ€X€€€‚ÿL€l€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€Ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€Š€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Œ€ÿ€Ÿ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIHa 66 6Ñ#rÂ€€ÿŽ€€€ïC‡—YJdk14doc.4.hlp€‰€ïRŽ—YJdk14doc.4.hlp€‰€‚ÿ €0€ï¿‡—YJdk14doc.4.hlp€‰€çÁ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes& 6\ 6# €€€‚ÿ*6 6† 6' €€ ”€ ‚ÿ&\ 6¬ 6# €€€‚ÿS(† 6ÿ 6+ &€P€€‚€ €‚‚ÿHierarchy For Package org.w3c.dom>¬ 6=6& €0€€€‚ÿPackage Hierarchies:Aÿ 6~6. ,€&€ä眜—Y€‰€‚‚ÿAll Packages&=6€6# €€€‚ÿ*~6Î6' €€ ”€ ‚ÿG€66/ .€0€€‚€‚€ €‚‚ÿClass Hierarchyg!Î6|6F \€B€ä€€ïCՓYJdk14doc.2.hlp€‰€‚‚ÿ· class java.lang.Object¯J67@6e š€”€ɀ€€ïùۓYJdk14doc.2.hlp€‰€ïœ”YJdk14doc.2.hlp€‰€‚‚ÿ· class java.lang.Throwable|67@6À 6 (implements java.io.Serializable)k$|6¢@6G ^€H€-€€ïÃԓYJdk14doc.2.hlp€‰€‚‚ÿ· class java.lang.Exceptionr+7@6A6G ^€V€‘€€ï§Û“YJdk14doc.2.hlp€‰€‚‚ÿ· class java.lang.RuntimeExceptionp)¢@6„A6G ^€R€õ€€ï{Ž—YJdk14doc.4.hlp€‰€‚‚ÿ· class org.w3c.dom.DOMException?A6ÃA6' €0€€ €‚‚ÿInterface Hierarchy퀄A6°B6m š€€ä€€ï|Ž—YJdk14doc.4.hlp€‰€‚€€ça–—Y€‰€‚€€çb–—Y€‰€‚‚ÿ· interface org.w3c.dom.DOMImplementation· interface org.w3c.dom.NamedNodeMap· interface org.w3c.dom.NodeœQÃA6mC6l š€¢€ɀ€€ïÀ‡—YJdk14doc.4.hlp€‰€‚€€ï‡—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.Attr· interface org.w3c.dom.CharacterData¥K°B6D6Z „€–€-€€ïP—YJdk14doc.4.hlp€‰€‚€€çEœ—Y€‰€‚‚ÿ· interface org.w3c.dom.Comment· interface org.w3c.dom.Textt-mC6†D6G ^€Z€‘€€ïÁ‡—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.CDATASection5"D6»F6 ôE€ɀ€€ïxŽ—YJdk14doc.4.hlp€‰€‚€€ïyŽ—YJdk14doc.4.hlp€‰€‚€€ïzŽ—YJdk14doc.4.hlp€‰€‚€€ï}Ž—YJdk14doc.4.hlp€‰€‚€€ï~Ž—YJdk14doc.4.hlp€‰€‚€€ïŽ—YJdk14doc.4.hlp€‰€‚€€çd–—Y€‰€‚ÿ· interface org.w3c.dom.Document· interface org.w3c.dom.DocumentFragment· interface org.w3c.dom.DocumentType· interface org.w3c.dom.Element· interface org.w3c.dom.Entity· interface org.w3c.dom.EntityReference· interface org.w3c.dom.Notationk6†D6&G65 :€l€ɀ€€çݗY€‰€‚‚ÿ· interface org.w3c.dom.ProcessingInstruction])»F6ƒG64 8€R€ä€€çc–—Y€‰€‚‚ÿ· interface org.w3c.dom.NodeList&&G6©G6# €€€‚ÿ*ƒG6ÓG6' €€ ”€ ‚ÿ&©G6ùG6# €€€‚ÿŒqÓG6µI6K#f‚â eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€‚ÿ€L€‚ÿ€X€€€‚ÿL€l€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€Ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€Š€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Œ€ÿ€Ÿ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIHùG6ÎJ6Ñ#rÂ€€ÿŽ€€€ïC‡—YJdk14doc.4.hlp€‰€ïRŽ—YJdk14doc.4.hlp€‰€‚ÿ €0€ï¿‡—YJdk14doc.4.hlp€‰€çÁ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&µI6ôJ6# €€€‚ÿ*ÎJ6K6' €€ ”€ ‚ÿ^øôJ6|L6f š€ñ€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1K6­L61UÿÿÿÿÿÿÿÿÍÿÿÿÿ­L6ÑL6$|L6ÑL6" €€€ ÿ\+­L6-M61! Ql.†mÎ-M6rM6òÌ6Common DOM API: Uses of Package org.w3c.domEÑL6rM6& €>€€€‚ÿUses of Package org.w3c.domÌu-M6>O6W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€‚ÿ€L€€€‚ÿ(€^€çÁ—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙArM6#€6˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€睗Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES>O6#€6ÑL6 All Classes&>O6I€6# €€€‚ÿ*#€6s€6' €€ ”€ ‚ÿ&I€6™€6# €€€‚ÿN"s€6ç€6, (€D€€‚€ ‚€‚‚ÿUses of Packageorg.w3c.domp%™€6W6K#f€J„€€ÿ4€€€çÀ—Y€ ‰€‚ÿÿÿPackages that use org.w3c.domr"ç€6Ɂ6P#p€DÂÂ.€€çʏ ‹€‰€‚ÿ€<€‚ÿÿÿcom.sun.java.browser.dom W6ׂ6~#ʀ!ÂÂ.€€çŽÑ怉€‚ÿp€"€Ì#EF("http://java.sun.com/xml",`',1)€‰€‚ÿÿÿorg.w3c.domProvides the interfaces for the Document Object Model (DOM) which is a component API of the Java API for XML Processing. iɁ6@ƒ6P#p€2ÂÂ.€€çzsf€‰€‚ÿ€*€‚ÿÿÿorg.w3c.dom.css lׂ6¬ƒ6P#p€8ÂÂ.€€çjÅŒy€‰€‚ÿ€0€‚ÿÿÿorg.w3c.dom.events j@ƒ6„6P#p€4ÂÂ.€€ç°|;€‰€‚ÿ€,€‚ÿÿÿorg.w3c.dom.html q!¬ƒ6‡„6P#p€BÂÂ.€€çàxþ耉€‚ÿ€:€‚ÿÿÿorg.w3c.dom.stylesheets )„6°„6$ € €€‚‚ÿ ¬C‡„6\…6i#¢€†„€€ÿp€€€çÀ—Y€ ‰€ïB‡—YJdk14doc.4.hlp€ ‰€‚ÿÿÿClasses in org.w3c.dom used by com.sun.java.browser.domMú°„6©†6S#t€õ„Z€€ï æOVJdk14doc.4.hlp€!‰€€‚ÿÿÿDOMException DOM operations only raise exceptions in "exceptional" circumstances, i.e., when an operation is impossible to perform (either for logical reasons, because data is lost, or because the implementation has become unstable).)\…6҆6$ € €€‚‚ÿ 6©†6_‡6W#~€l„€€ÿL€€€çÀ—Y€ ‰€çÀ—Y€ ‰€‚ÿÿÿClasses in org.w3c.dom used by org.w3c.domì–Ò†6Kˆ6V#z€-„`€€ï7OÇæJdk14doc.4.hlp€!‰€€#€‚ÿÿÿCharacterData The CharacterData interface extends Node with a set of attributes and methods for accessing character data in the DOM.Iù_‡6”‰6P#n€ó„T€€ïœÓdiJdk14doc.4.hlp€!‰€‚ÿÿÿDOMException DOM operations only raise exceptions in "exceptional" circumstances, i.e., when an operation is impossible to perform (either for logical reasons, because data is lost, or because the implementation has become unstable).ŒgKˆ6PŠ6U#z€Î„`€€ï#öö˜Jdk14doc.4.hlp€!‰€€#€‚ÿÿÿNode The Node interface is the primary datatype for the entire Document Object Model.¥”‰6`‹6k#€€K„Š€€ïaÝeWJdk14doc.4.hlp€!‰€€#€€#€€#€€#€€‚ÿÿÿText The Text interface inherits from CharacterData and represents the textual content (termed character data in XML) of an Element or Attr.)PŠ6‰‹6$ € €€‚‚ÿ £:`‹6,Œ6i#¢€t„€€ÿp€€€çÀ—Y€ ‰€ïQŽ—YJdk14doc.4.hlp€ ‰€‚ÿÿÿClasses in org.w3c.dom used by org.w3c.dom.cssIù‰‹6u6P#n€ó„T€€ïcŒçkJdk14doc.4.hlp€!‰€‚ÿÿÿDOMException DOM operations only raise exceptions in "exceptional" circumstances, i.e., when an operation is impossible to perform (either for logical reasons, because data is lost, or because the implementation has become unstable)."É,Œ6—Ž6Y#€€“„f€€ï$}£eJdk14doc.4.hlp€!‰€€#€€‚ÿÿÿDOMImplementation The DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model.)u6ÀŽ6$ € €€‚‚ÿ Š=—Ž6f6i#¢€z„€€ÿp€€€çÀ—Y€ ‰€ïҎ—YJdk14doc.4.hlp€ ‰€‚ÿÿÿClasses in org.w3c.dom used by org.w3c.dom.eventsMúÀŽ6¿À6S#t€õ„Z€€ï5ÉCŠJdk14doc.4.hlp€!‰€€‚ÿÿÿDOMException DOM operations only raise exceptions in "excf6¿À6ÑL6eptional" circumstances, i.e., when an operation is impossible to perform (either for logical reasons, because data is lost, or because the implementation has become unstable).)f6èÀ6$ € €€‚‚ÿ ’;¿À6zÁ6W#~€v„€€ÿL€€€çÀ—Y€ ‰€ç^–—Y€ ‰€‚ÿÿÿClasses in org.w3c.dom used by org.w3c.dom.html²]èÀ6,Â6U#z€º„`€€ïÇ,¡Jdk14doc.4.hlp€!‰€€#€‚ÿÿÿDocument The Document interface represents the entire HTML or XML document.IùzÁ6uÃ6P#n€ó„T€€ïÓ»òJdk14doc.4.hlp€!‰€‚ÿÿÿDOMException DOM operations only raise exceptions in "exceptional" circumstances, i.e., when an operation is impossible to perform (either for logical reasons, because data is lost, or because the implementation has become unstable).È,Â6“Ä6V#z€‘„`€€ï>|Jdk14doc.4.hlp€!‰€€#€‚ÿÿÿDOMImplementation The DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model.¶auÃ6IÅ6U#z€Â„`€€ï©|Jdk14doc.4.hlp€!‰€€#€‚ÿÿÿElement The Element interface represents an element in an HTML or XML document.Àh“Ä6 Æ6X#€€Ð„f€€ïUþ*ÏJdk14doc.4.hlp€!‰€€#€€‚ÿÿÿNode The Node interface is the primary datatype for the entire Document Object Model.)IÅ62Æ6$ € €€‚‚ÿ ™B Æ6ËÆ6W#~€„„€€ÿL€€€çÀ—Y€ ‰€ç@œ—Y€ ‰€‚ÿÿÿClasses in org.w3c.dom used by org.w3c.dom.stylesheetsMú2Æ6È6S#t€õ„Z€€ï)WâXJdk14doc.4.hlp€!‰€€‚ÿÿÿDOMException DOM operations only raise exceptions in "exceptional" circumstances, i.e., when an operation is impossible to perform (either for logical reasons, because data is lost, or because the implementation has become unstable)./ËÆ6GÈ6( €€€‚‚€‚ÿ *È6qÈ6' €€ ”€ ‚ÿ&GÈ6—È6# €€€‚ÿÌuqÈ6cÊ6W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€‚ÿ€L€€€‚ÿ(€^€çÁ—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA—È6<Ë6˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€睗Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&cÊ6bË6# €€€‚ÿ*<Ë6ŒË6' €€ ”€ ‚ÿfûbË6òÌ6k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ŒË6#Í61UÿÿÿÿÿÿÿÿÏÿÿÿÿ#Í6GÍ6$òÌ6GÍ6" €€€ ÿW&#Í6žÍ61ˆ…l`…nОÍ6îÍ6K7ProcessingInstruction (Common DOM API)P*GÍ6îÍ6& €T€€€‚ÿProcessingInstruction (Common DOM API)îyžÍ6ÜÏ6u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€€€‚ÿL€R€ïN—YJdk14doc.4.hlp€‰€‚ÿ(€f€çÁ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITîÍ6é7­#*šÂÂÜÏ6é7GÍ6€€ÿF€€€çd–—Y€‰€çEœ—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çݗY€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VÜÏ6›7\#ˆ€¬ÂÂ.€€€ç$L销 ‰€‚ÿ.€`€€çüd€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&é7Á7# €€€‚ÿ*›7ë7' €€ ”€ ‚ÿ‡MÁ7r7: D€š€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.domInterface ProcessingInstructionAll Superinterfaces: 9 ë7«7. ,€€äçb–—Y€‰€‚‚ÿNode&r7Ñ7# €€€‚ÿ*«7û7' €€ ”€ ‚ÿÌ4Ñ7Ç7˜ þ€i€€‚€‚€€‚çb–—Y€‰€‚‚€€‚‚ÌCEF("http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113",`',1)€‰€‚‚€‚ÿpublic interface ProcessingInstructionextends NodeThe ProcessingInstruction interface represents a "processing instruction", used in XML as a way to keep processor-specific information in the text of the document. See also the Document Object Model (DOM) Level 2 Core Specification.*û7ñ7' €€ ”€ ‚ÿ,Ç77' € €€‚€‚ÿTñ7q7B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'7˜7# €€€‚ÿ ƒ8q77K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.Nodeǘ7â7Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'7 7# €€€‚ÿ Uâ7^7B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryéV 7G 7“#ö€¬÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çB;H”€‰€€‚ÿÿÿ StringgetData() The content of this processing instruction.êW^71 7“#ö€®÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €煟އ€‰€€‚ÿÿÿ StringgetTarget() The target of this processing instruction.ö`G 7' 7–#ü€À÷€€ÿ"€€€€‚ÿ€€ÿr€€çíOüþ€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetData(String data) The content of this processing instruction.'1 7N 7# €€€‚ÿ „9' 7Ò 7K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#ÆN 7õ7]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)Ò 77$ € €€‚‚ÿ Tõ7r7B#T€$„€€ÿ"€€€€‚ÿÿÿMethod DetailŠ37 @7W ~€f€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTargetpublic String getTarget()r7 @7GÍ6»•r7Ç@7& €+€ä€‚‚ÿThe target of this processing instruction. XML defines this as being the first token following the markup that begins the processing instruction.& @7í@7# €€€‚ÿ*Ç@7A7' €€ ”€ ‚ÿŒ1í@7£A7[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetDatapublic String getData()߬A7‚B73 4€Y€ä€€€‚‚€€‚ÿThe content of this processing instruction. This is from the first non white space character after the target to the character immediately preceding the ?>.Throws:•T£A7C7A R€š€ɀï{Ž—YJdk14doc.4.hlp€‰€‚‚ÿDOMException - NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.&‚B7=C7# €€€‚ÿ*C7gC7' €€ ”€ ‚ÿÙ_=C7@D7z ĀŸ€€‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿsetDatapublic void setData(String data) throws DOMException߬gC7E73 4€Y€ä€€€‚‚€€‚ÿThe content of this processing instruction. This is from the first non white space character after the target to the character immediately preceding the ?>.Throws:•T@D7ŽE7A R€š€ɀï{Ž—YJdk14doc.4.hlp€‰€‚‚ÿDOMException - NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.&E7ÚE7# €€€‚ÿ*ŽE7F7' €€ ”€ ‚ÿ&ÚE7*F7# €€€‚ÿîyF7H7u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€€€‚ÿL€R€ïN—YJdk14doc.4.hlp€‰€‚ÿ(€f€çÁ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT*F7I7­#*šÂ€€ÿF€€€çd–—Y€‰€çEœ—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çݗY€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VH7ËI7\#ˆ€¬ÂÂ.€€€ç$L销 ‰€‚ÿ.€`€€çüd€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&I7ñI7# €€€‚ÿ*ËI7J7' €€ ”€ ‚ÿfûñI7K7k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1J7²K71UÿÿÿÿÿÿÿÿÑÿÿÿÿ²K7ÖK7$K7ÖK7" €€€ ÿxG²K7NL71 .†mæoÒNL7¯L7’ˆ7Common DOM API: Uses of Interface org.w3c.dom.stylesheets.DocumentStylea;ÖK7¯L7& €v€€€‚ÿUses of Interface org.w3c.dom.stylesheets.DocumentStyleÜyNL7‹N7c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ(€<€çFœ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA¯L7dO7˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çĝ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&‹N7ŠO7# €€€‚ÿ*dO7ŽO7' €€ ”€ ‚ÿ&ŠO7ÚO7# €€€‚ÿj>ŽO7P€7, (€|€€‚€ ‚ÚO7P€7ÖK7€‚‚ÿUses of Interfaceorg.w3c.dom.stylesheets.DocumentStyler'ÚO7€7K#f€N„€€ÿ4€€€çFœ—Y€ ‰€‚ÿÿÿPackages that use DocumentStyleiP€7+7P#p€2„.€€çüô݂€‰€‚ÿ€*€‚ÿÿÿorg.w3c.dom.css )€7T7$ € €€‚‚ÿ 4+7ñ7i#¢€h„€€ÿp€€€çFœ—Y€ ‰€ïQŽ—YJdk14doc.4.hlp€ ‰€‚ÿÿÿUses of DocumentStyle in org.w3c.dom.css)T7‚7$ € €€‚‚ÿ Š=ñ7À‚7i#¢€z„€€ÿp€€€çFœ—Y€‰€ïQŽ—YJdk14doc.4.hlp€‰€‚ÿÿÿSubinterfaces of DocumentStyle in org.w3c.dom.cssèa‚7šƒ7‡#ހ«ـ€ÿ"€€€€‚ÿ€€ÿT€ €ïMŽ—YJdk14doc.4.hlp€‰€‚ÿÿÿ interfaceDocumentCSS This interface represents a document with a CSS view./À‚7׃7( €€€‚‚€‚ÿ *šƒ7„7' €€ ”€ ‚ÿ&׃7'„7# €€€‚ÿÜy„7†7c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ(€<€çFœ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA'„7܆7˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çĝ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&†7‡7# €€€‚ÿ*܆7,‡7' €€ ”€ ‚ÿfû‡7’ˆ7k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1,‡7È71UÿÿÿÿÿÿÿÿÓÿÿÿÿÈ7çˆ7$’ˆ7çˆ7" €€€ ÿtCÈ7[‰71 `…noÔ[‰7ž‰7kÂ7Common DOM API: Uses of Interface org.w3c.dom.stylesheets.LinkStyle]7çˆ7ž‰7& €n€€€‚ÿUses of Interface org.w3c.dom.stylesheets.LinkStyleÜy[‰7”‹7c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ(€<€ç=œ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAž‰7mŒ7˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çŝ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&”‹7“Œ7# €€€‚ÿ*mŒ7œŒ7' €€ ”€ ‚ÿ&“Œ7ãŒ7# €€€‚ÿf:œŒ7I7, (€t€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.stylesheets.LinkStyle[3ãŒ7€7( €f€€‚‚€‚ÿNo usage of org.w3c.dom.stylesheets.LinkStyle*I7΍7' €€ ”€ ‚ÿ&€7ô7# €€€‚ÿÜy΍7Џ7c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ(€<€ç=œ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAô7µÀ7˜#‚€€ÿЏ7µÀ7çˆ7€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çŝ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&Џ7ÛÀ7# €€€‚ÿ*µÀ7Á7' €€ ”€ ‚ÿfûÛÀ7kÂ7k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1Á7œÂ71UÿÿÿÿÿÿÿÿÕÿÿÿÿœÂ7ÀÂ7$kÂ7ÀÂ7" €€€ ÿtCœÂ74Ã71Øæo-„oÖ4Ã7‘Ã78Ì7Common DOM API: Uses of Interface org.w3c.dom.stylesheets.MediaList]7ÀÂ7‘Ã7& €n€€€‚ÿUses of Interface org.w3c.dom.stylesheets.MediaListÜy4Ã7mÅ7c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ(€<€ç>œ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA‘Ã7FÆ7˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çƝ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&mÅ7lÆ7# €€€‚ÿ*FÆ7–Æ7' €€ ”€ ‚ÿ&lÆ7ŒÆ7# €€€‚ÿf:–Æ7"Ç7, (€t€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.stylesheets.MediaList[3ŒÆ7}Ç7( €f€€‚‚€‚ÿNo usage of org.w3c.dom.stylesheets.MediaList*"Ç7§Ç7' €€ ”€ ‚ÿ&}Ç7ÍÇ7# €€€‚ÿÜy§Ç7©É7c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ(€<€ç>œ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAÍÇ7‚Ê7˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çƝ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&©É7šÊ7# €€€‚ÿ*‚Ê7ÒÊ7' €€ ”€ ‚ÿfûšÊ78Ì7k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ÒÊ7iÌ71Uÿÿÿÿÿÿÿÿ×ÿÿÿÿiÌ7Ì7$8Ì7Ì7" €€€ ÿuDiÌ7Í71g o}pØÍ7`Í7š 8Common DOM API: Uses of Interface org.w3c.dom.stylesheets.StyleSheet^8Ì7`Í7& €p€€€‚ÿUses of Interface org.w3c.dom.stylesheets.StyleSheetÜyÍ7<Ï7c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ(€<€çCœ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA`Í7!8˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çǝ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES<Ï7!8Ì7 All Classes&<Ï7G8# €€€‚ÿ*!8q8' €€ ”€ ‚ÿ&G8—8# €€€‚ÿg;q8þ8, (€v€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.stylesheets.StyleSheeto$—8m8K#f€H„€€ÿ4€€€çCœ—Y€ ‰€‚ÿÿÿPackages that use StyleSheetiþ8Ö8P#p€2„.€€ç?7p€‰€‚ÿ€*€‚ÿÿÿorg.w3c.dom.css )m8ÿ8$ € €€‚‚ÿ š1Ö8™8i#¢€b„€€ÿp€€€çCœ—Y€ ‰€ïQŽ—YJdk14doc.4.hlp€ ‰€‚ÿÿÿUses of StyleSheet in org.w3c.dom.css)ÿ8Â8$ € €€‚‚ÿ £:™8e8i#¢€t„€€ÿp€€€çCœ—Y€‰€ïQŽ—YJdk14doc.4.hlp€‰€‚ÿÿÿSubinterfaces of StyleSheet in org.w3c.dom.cssKœÂ8°8Ž#ê€{«Ù€€ÿ"€€€€‚ÿ€€ÿ`€ €ï(Ž—YJdk14doc.4.hlp€‰€€€‚ÿÿÿ interfaceCSSStyleSheet The CSSStyleSheet interface is a concrete interface used to represent a CSS style sheet i.e., a style sheet whose content type is "text/css"./e8ß8( €€€‚‚€‚ÿ *°8 8' €€ ”€ ‚ÿ&ß8/8# €€€‚ÿÜy 8 8c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ(€<€çCœ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA/8ä8˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çǝ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes& 8 8# €€€‚ÿ*ä848' €€ ”€ ‚ÿfû 8š 8k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.148Ë 81UÿÿÿÿÿÿÿÿÙÿÿÿÿË 8ï 8$š 8ï 8" €€€ ÿyHË 8h 81% -„oDpÚh 8Ê 8‡C8Common DOM API: Uses of Interface org.w3c.dom.stylesheets.StyleSheetListb<ï 8Ê 8& €x€€€‚ÿUses of Interface org.w3c.dom.stylesheets.StyleSheetListÜyh 8Š 8c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ(€<€çDœ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAÊ 8 8˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çȝ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&Š 8¥ 8# €€€‚ÿ* 8Ï 8' €€ ”€ ‚ÿ&¥ 8õ 8# €€€‚ÿk?Ï 8`8, (€~€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.stylesheets.StyleSheetList`8õ 8À8( €p€€‚‚€‚ÿNo usage of org.w3c.dom.stylesheets.StyleSheetList*`8ê8' €€ ”€ ‚ÿ&À88# €€€‚ÿÜyê8ø@8c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ(€<€çDœ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL8ø@8ï 8€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA8ÑA8˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çȝ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ø@8÷A8# €€€‚ÿ*ÑA8!B8' €€ ”€ ‚ÿfû÷A8‡C8k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1!B8žC81UÿÿÿÿÿÿÿÿÛÿÿÿÿžC8ÜC8$‡C8ÜC8" €€€ ÿOžC8+D81Ù}p+qÜ+D8sD8†8DocumentStyle (Common DOM API)H"ÜC8sD8& €D€€€‚ÿDocumentStyle (Common DOM API)Üy+D8OF8c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ€<€€€‚ÿ(€R€çĝ—Y€‰€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIñPsD8@G8¡# Â€€ÿ.€€€ç=œ—Y€‰€‚ÿ €@€ï¿‡—YJdk14doc.4.hlp€‰€çFœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VOF8òG8\#ˆ€¬ÂÂ.€€€çíÉà€ ‰€‚ÿ.€`€€çò€œ‘€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&@G8H8# €€€‚ÿ*òG8BH8' €€ ”€ ‚ÿUH8ÑH8: D€ª€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.stylesheetsInterface DocumentStyleAll Known Subinterfaces: RBH8#I8@ P€$€äïMŽ—YJdk14doc.4.hlp€‰€‚‚ÿDocumentCSS&ÑH8II8# €€€‚ÿ*#I8sI8' €€ ”€ ‚ÿ'”II8šK8“ ô€)€€‚€‚€€‚‚€€€€€€‚‚ÌDEF("http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113",`',1)€‰€‚ÿpublic interface DocumentStyleThe DocumentStyle interface provides a mechanism by which the style sheets embedded in a document can be retrieved. The expectation is that an instance of the DocumentStyle interface can be obtained by using binding-specific casting methods on an instance of the Document interface. See also the Document Object Model (DOM) Level 2 Style Specification.6 sI8ÐK8* $€€€‚€€‚ÿSince:4šK8L8% €€ä€‚‚ÿDOM Level 2&ÐK8*L8# €€€‚ÿ*L8TL8' €€ ”€ ‚ÿ,*L8€L8' € €€‚€‚ÿUTL8ÕL8B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summary’€L8éM8‚#Ҁ%œè€€ÿ4€€€çDœ—Y€‰€‚ÿ€.€ÿ6€0€綯ƒ˜€‰€€‚ÿÿÿ StyleSheetListgetStyleSheets() A list containing all the style sheets explicitly linked into or embedded in a document.)ÕL8N8$ € €€‚‚ÿ TéM8fN8B#T€$„€€ÿ"€€€€‚ÿÿÿMethod DetailŠEN8ðN8E Z€Š€€‚€€‚‚€çDœ—Y€‰€€€€‚ÿgetStyleSheetspublic StyleSheetList getStyleSheets()`:fN8\€8& €u€ä€‚‚ÿA list containing all the style sheets explicitly linked into or embedded in a document. For HTML documents, this includes external style sheets, included via the HTML LINK element, and inline STYLE elements. In XML, this includes exðN8\€8ÜC8ternal style sheets, included via style sheet processing instructions (see ).&ðN8‚€8# €€€‚ÿ*\€8¬€8' €€ ”€ ‚ÿ&‚€8Ҁ8# €€€‚ÿÜy¬€8®‚8c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ€<€€€‚ÿ(€R€çĝ—Y€‰€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIñPҀ8Ÿƒ8¡# Â€€ÿ.€€€ç=œ—Y€‰€‚ÿ €@€ï¿‡—YJdk14doc.4.hlp€‰€çFœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V®‚8Q„8\#ˆ€¬ÂÂ.€€€çíÉà€ ‰€‚ÿ.€`€€çò€œ‘€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Ÿƒ8w„8# €€€‚ÿ*Q„8¡„8' €€ ”€ ‚ÿfûw„8†8k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1¡„88†81UÿÿÿÿÿÿÿÿÝÿÿÿÿ8†8\†8$†8\†8" €€€ ÿK8†8§†81DpŠ‚qÞ§†8ë†8ÎÆ8LinkStyle (Common DOM API)D\†8ë†8& €<€€€‚ÿLinkStyle (Common DOM API)Üy§†8Lj8c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ€<€€€‚ÿ(€R€çŝ—Y€‰€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APITë†8ȉ8­#*šÂ€€ÿF€€€çFœ—Y€‰€ç>œ—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç=œ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VLj8zŠ8\#ˆ€¬ÂÂ.€€€ç㪀 ‰€‚ÿ.€`€€çáøä/€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ȉ8 Š8# €€€‚ÿ*zŠ8ʊ8' €€ ”€ ‚ÿn7 Š88‹87 >€n€€‚€‚€€ ‚€‚‚€‚ÿorg.w3c.dom.stylesheetsInterface LinkStyle*ʊ8b‹8' €€ ”€ ‚ÿsÔ8‹8Ս8Ÿ ©€€‚€‚€€‚‚€€€€€€€€€€‚‚ÌDEF("http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113",`',1)€‰€‚ÿpublic interface LinkStyleThe LinkStyle interface provides a mechanism by which a style sheet can be retrieved from the node responsible for linking it into a document. An instance of the LinkStyle interface can be obtained using binding-specific casting methods on an instance of a linking node (HTMLLinkElement, HTMLStyleElement or ProcessingInstruction in DOM Level 2). See also the Document Object Model (DOM) Level 2 Style Specification.6 b‹8 Ž8* $€€€‚€€‚ÿSince:4Ս8?Ž8% €€ä€‚‚ÿDOM Level 2& Ž8eŽ8# €€€‚ÿ*?Ž8Ž8' €€ ”€ ‚ÿ,eŽ8»Ž8' € €€‚€‚ÿUŽ88B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÁ@»Ž8я8#Ҁ€÷€€ÿ4€€€çCœ—Y€‰€‚ÿ€&€ÿ6€(€çÁyIk€‰€€‚ÿÿÿ StyleSheetgetSheet() The style sheet.)8 À8$ € €€‚‚ÿ я8 À8\†8Tя8`À8B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detailz5 À8ÚÀ8E Z€j€€‚€€‚‚€çCœ—Y€‰€€€€‚ÿgetSheetpublic StyleSheet getSheet()9`À8Á8% €(€ä€‚‚ÿThe style sheet.&ÚÀ89Á8# €€€‚ÿ*Á8cÁ8' €€ ”€ ‚ÿ&9Á8‰Á8# €€€‚ÿÜycÁ8eÃ8c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ€<€€€‚ÿ(€R€çŝ—Y€‰€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT‰Á8fÄ8­#*šÂ€€ÿF€€€çFœ—Y€‰€ç>œ—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç=œ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VeÃ8Å8\#ˆ€¬ÂÂ.€€€ç㪀 ‰€‚ÿ.€`€€çáøä/€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&fÄ8>Å8# €€€‚ÿ*Å8hÅ8' €€ ”€ ‚ÿfû>Å8ÎÆ8k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1hÅ8ÿÆ81UÿÿÿÿÿÿÿÿßÿÿÿÿÿÆ8#Ç8$ÎÆ8#Ç8" €€€ ÿKÿÆ8nÇ81œ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VŽÉ8AË8\#ˆ€¬ÂÂ.€€€çÕÃɵ€ ‰€‚ÿ.€`€€窶N€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&Ê8gË8# €€€‚ÿ*AË8‘Ë8' €€ ”€ ‚ÿn7gË8ÿË87 >€n€€‚€‚€€ ‚€‚‚€‚ÿorg.w3c.dom.stylesheetsInterface MediaList*‘Ë8)Ì8' €€ ”€ ‚ÿ;ŠÿË8dÎ8• ø€M€€‚€‚€€‚‚€€€€‚‚€€‚‚ÌDEF("http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113",`',1)€‰€‚ÿpublic interface MediaListThe MediaList interface provides the abstraction of an ordered collection of media, without defining or constraining how this collection is implemented. An empty list is the same as a list that contains the medium "all". The items in the MediaList are accessible via an integral index, starting from 0. See also the Document Object Model (DOM) Level 2 Style Specification.6 )Ì8šÎ8* $€€€‚€€‚ÿSince:4dÎ8ÎÎ8% €€ä€‚‚ÿDOM Level 2&šÎ8ôÎ8# €€€‚ÿ*ÎÎ8Ï8' €€ ”€ ‚ÿ,ôÎ8JÏ8' € €€‚€‚ÿUÏ8ŸÏ8B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryrJÏ8¹9œ#ä÷€€ÿ"€€€€‚ÿ€€ÿ~€€ŸÏ8¹9#Ç8çmH”Å€‰€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿÿÿ voidappendMedium(String newMedium) Adds the medium newMedium to the end of the list.yŸÏ8Î9œ#ò÷€€ÿ"€€€€‚ÿ€€ÿ~€€çZ‘YԀ‰€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿÿÿ voiddeleteMedium(String oldMedium) Deletes the medium indicated by oldMedium from the list.¿G¹99x#À€Ž÷€€ÿ"€€€€‚ÿ€€ÿ6€€çAL™€‰€€‚ÿÿÿ intgetLength() The number of media in the list.ùfÎ9†9“#ö€Ì÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çªóc¶€‰€€‚ÿÿÿ StringgetMediaText() The parsable textual representation of the media list.ìS9r9™#Š÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿB€ €ç-(Š€‰€€€€‚ÿÿÿ Stringitem(int index) Returns the indexth in the list.Ö@†9H9–#ü€€÷€€ÿ"€€€€‚ÿ€€ÿr€€ç ‚L|€‰€ïÐۓYJdk14doc.2.hlp€‰€€‚ÿÿÿ voidsetMediaText(String mediaText) )r9q9$ € €€‚‚ÿ TH9Å9B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail9q9U9W ~€r€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetMediaTextpublic String getMediaText()™mÅ9î9, (€Ú€ä€‚‚€€‚ÿThe parsable textual representation of the media list. This is a comma-separated list of media.Throws:ô±U9â9C T€c€ɀï{Ž—YJdk14doc.4.hlp€‰€‚‚‚ÿDOMException - SYNTAX_ERR: Raised if the specified string value has a syntax error and is unparsable. NO_MODIFICATION_ALLOWED_ERR: Raised if this media list is readonly.&î99# €€€‚ÿ*â929' €€ ”€ ‚ÿís9 9z Ā怀‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿsetMediaTextpublic void setMediaText(String mediaText) throws DOMExceptionT29s 9A R€&€ɀï{Ž—YJdk14doc.4.hlp€‰€‚‚ÿDOMException& 9™ 9# €€€‚ÿ*s 9à 9' €€ ”€ ‚ÿk.™ 9. 9= J€\€€‚€‚€€‚‚€€€€‚ÿgetLengthpublic int getLength()Ž]à 9Œ 91 2€º€ä€€€€€‚‚ÿThe number of media in the list. The range of valid media is 0 to length-1 inclusive.&. 9â 9# €€€‚ÿ*Œ 9 9' €€ ”€ ‚ÿ4â 9› 9[ †€h€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿitempublic String item(int index)Б 9k 9? L€#€ä€€€€€€€‚‚€€‚ÿReturns the indexth in the list. If index is greater than or equal to the number of media in the list, this returns null.Parameters:N&› 9¹ 9( €L€ɀ€€‚ÿindex - Index into the collection.3 k 9ì 9' €€ä€€‚ÿReturns:œd¹ 9ˆ 98 @€È€ɀ€€€€€€€‚‚ÿThe medium at the indexth position in the MediaList, or null if that is not a valid index.&ì 9® 9# €€€‚ÿ*ˆ 9Ø 9' €€ ”€ ‚ÿís® 9Å9z Ā怀‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿdeleteMediumpublic void deleteMedium(String oldMedium) throws DOMExceptionzHØ 9?92 4€€ä€€€‚‚€€‚ÿDeletes the medium indicated by oldMedium from the list.Throws:֍Å9!@9I `€€ɀï{Ž—YJdk14doc.4.hlp€‰€‚€€‚‚ÿDOMException - NO_MODIFICATION_ALLOWED_ERR: Raised if this list is readonly. NOT_FOUND_ERR: Raised if oldMedium i?9!@9#Ç8s not in the list.&?9G@9# €€€‚ÿ*!@9q@9' €€ ”€ ‚ÿísG@9^A9z Ā怀‚€‚€€‚‚€€€ïÐۓYJdk14doc.2.hlp€‰€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿappendMediumpublic void appendMedium(String newMedium) throws DOMException²zq@9B98 @€ô€ä€€€€€‚‚€€‚ÿAdds the medium newMedium to the end of the list. If the newMedium is already used, it is first removed.Throws:À^A9C9C T€€ɀï{Ž—YJdk14doc.4.hlp€‰€‚‚‚ÿDOMException - INVALID_CHARACTER_ERR: If the medium contains characters that are invalid in the underlying style language. NO_MODIFICATION_ALLOWED_ERR: Raised if this list is readonly.&B99C9# €€€‚ÿ*C9cC9' €€ ”€ ‚ÿ&9C9‰C9# €€€‚ÿÜycC9eE9c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ€<€€€‚ÿ(€R€çƝ—Y€‰€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT‰C9fF9­#*šÂ€€ÿF€€€ç=œ—Y€‰€çCœ—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€ç>œ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VeE9G9\#ˆ€¬ÂÂ.€€€çÕÃɵ€ ‰€‚ÿ.€`€€窶N€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&fF9>G9# €€€‚ÿ*G9hG9' €€ ”€ ‚ÿfû>G9ÎH9k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1hG9ÿH91UÿÿÿÿÿÿÿÿáÿÿÿÿÿH9#I9$ÎH9#I9" €€€ ÿX'ÿH9{I91zŠ‚q„râ{I9ÌI9K9org.w3c.dom.stylesheets(Common DOM API)Q+#I9ÌI9& €V€€€‚ÿorg.w3c.dom.stylesheets(Common DOM API)N{I9J9/ .€>€€ç@œ—Y€‰€‚ÿ org.w3c.dom.stylesheets×`ÌI9ñJ9w#Ÿ€À„€€€€€€çFœ—Y€‰€ç=œ—Y€‰€ç>œ—Y€‰€çCœ—Y€‰€çDœ—Y€‰€‚ÿÿÿInterfaces DocumentStyleLinkStyleMediaListStyleSheetStyleSheetList$J9K9" €€€ÿ1ñJ9FK91UÿÿÿÿÿÿÿÿãÿÿÿÿFK9jK9$K9jK9" €€€ ÿX'FK9ÂK91q âƒr’säÂK9L9x‰9org.w3c.dom.stylesheets(Common DOM API)Q+jK9L9& €V€€€‚ÿorg.w3c.dom.stylesheets(Common DOM API)ÌuÂK9ßM9W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ€ €€€‚ÿ€:€‚ÿ(€J€çBœ—Y€‰€‚ÿ(€^€çAœ—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIXL9äN9­#*°Â€€ÿF€€€ç^–—Y€‰€çlœ—Y€‰€‚ÿ €P€ï¿‡—YJdk14doc.4.hlp€‰€ç@œ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV PACKAGE NEXT PACKAGEFRAMES NO FRAMES All Classes&ßM9 O9# €€€‚ÿ*äN94O9' €€ ”€ ‚ÿW( O9‹O9/ .€P€€‚€‚€ €‚‚ÿPackage org.w3c.dom.stylesheetsX4O9 €9B#T€,„€€ÿ"€€€€‚ÿÿÿInterface Summary‹O9 €9jK9ኋO9í€9W#|€¥ß.€€çFœ—Y€‰€‚ÿ"€&€€€‚ÿÿÿDocumentStyleThe DocumentStyle interface provides a mechanism by which the style sheets embedded in a document can be retrieved.ø¡ €9å9W#|€C¥ß.€€ç=œ—Y€‰€‚ÿ"€€€€‚ÿÿÿLinkStyleThe LinkStyle interface provides a mechanism by which a style sheet can be retrieved from the node responsible for linking it into a document.«í€9ç‚9W#|€W¥ß.€€ç>œ—Y€‰€‚ÿ"€€€€‚ÿÿÿMediaListThe MediaList interface provides the abstraction of an ordered collection of media, without defining or constraining how this collection is implemented.Ÿhå9¥ƒ9V#|€Ð¥ß.€€çCœ—Y€‰€‚ÿ"€ €€€‚ÿÿÿStyleSheetThe StyleSheet interface is the abstract base interface for any type of style sheet.Íwç‚9r„9V#|€î¥ß.€€çDœ—Y€‰€‚ÿ"€(€€€‚ÿÿÿStyleSheetListThe StyleSheetList interface provides the abstraction of an ordered collection of style sheets./¥ƒ9¡„9( €€€‚‚€‚ÿ *r„9˄9' €€ ”€ ‚ÿ&¡„9ñ„9# €€€‚ÿÌu˄9œ†9W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ€ €€€‚ÿ€:€‚ÿ(€J€çBœ—Y€‰€‚ÿ(€^€çAœ—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIXñ„9‡9­#*°Â€€ÿF€€€ç^–—Y€‰€çlœ—Y€‰€‚ÿ €P€ï¿‡—YJdk14doc.4.hlp€‰€ç@œ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV PACKAGE NEXT PACKAGEFRAMES NO FRAMES All Classes&œ†9è‡9# €€€‚ÿ*‡9ˆ9' €€ ”€ ‚ÿfûè‡9x‰9k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ˆ9©‰91Uÿÿÿÿÿÿÿÿåÿÿÿÿ©‰9͉9$x‰9͉9" €€€ ÿh7©‰95Š91¡ „rsæ5Š9†Š9˜Å9Common DOM API: org.w3c.dom.stylesheets Class HierarchyQ+͉9†Š9& €V€€€‚ÿorg.w3c.dom.stylesheets Class HierarchyŒq5Š9BŒ9K#f‚â eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ€<€‚ÿ€L€‚ÿ€X€€€‚ÿL€l€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€Ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€Š€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Œ€ÿ€Ÿ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIõH†Š979­#*Â€€ÿF€€€ç_–—Y€‰€çmœ—Y€‰€‚ÿ €0€ï¿‡—YJdk14doc.4.hlp€‰€çAœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&BŒ9]9# €€€‚ÿ*79‡9' €€ ”€ ‚ÿ&]9­9# €€€‚ÿ_4‡9 Ž9+ &€h€€‚€ €‚‚ÿHierarchy For Package org.w3c.dom.stylesheets>­9JŽ9& €0€€€‚ÿPackage Hierarchies:A Ž9‹Ž9. ,€&€ä眜—Y€‰€‚‚ÿAll Packages&JŽ9±Ž9# €€€‚ÿ*‹Ž9ێ9' €€ ”€ ‚ÿK±Ž9&9/ .€8€€‚€‚€ €‚‚ÿInterface Hierarchy‘ێ9ÃÀ9 Ѐ!€ä€€çFœ—Y€‰€‚€€ç=œ—Y€‰€‚€€ç>œ—Y€‰€‚€€çCœ—Y€‰€‚€€çDœ—Y€‰€‚‚ÿ· interface org.w3c.dom.stylesheets.DocumentStyle· interface org.w3c.dom.stylesh&9ÃÀ9͉9eets.LinkStyle· interface org.w3c.dom.stylesheets.MediaList· interface org.w3c.dom.stylesheets.StyleSheet· interface org.w3c.dom.stylesheets.StyleSheetList&&9éÀ9# €€€‚ÿ*ÃÀ9Á9' €€ ”€ ‚ÿ&éÀ99Á9# €€€‚ÿŒqÁ9õÂ9K#f‚â eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ€<€‚ÿ€L€‚ÿ€X€€€‚ÿL€l€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€Ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€Š€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Œ€ÿ€Ÿ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIõH9Á9êÃ9­#*Â€€ÿF€€€ç_–—Y€‰€çmœ—Y€‰€‚ÿ €0€ï¿‡—YJdk14doc.4.hlp€‰€çAœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&õÂ9Ä9# €€€‚ÿ*êÃ9:Ä9' €€ ”€ ‚ÿ^øÄ9˜Å9f š€ñ€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1:Ä9ÉÅ91UÿÿÿÿÿÿÿÿçÿÿÿÿÉÅ9íÅ9$˜Å9íÅ9" €€€ ÿh7ÉÅ9UÆ91 ’stèUÆ9ŠÆ9M:Common DOM API: Uses of Package org.w3c.dom.stylesheetsQ+íÅ9ŠÆ9& €V€€€‚ÿUses of Package org.w3c.dom.stylesheetsÌuUÆ9rÈ9W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ€<€‚ÿ€L€€€‚ÿ(€^€çAœ—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAŠÆ9KÉ9˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çBœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&rÈ9qÉ9# €€€‚ÿ*KÉ9›É9' €€ ”€ ‚ÿ&qÉ9ÁÉ9# €€€‚ÿZ.›É9Ê9, (€\€€‚€ ‚€‚‚ÿUses of Packageorg.w3c.dom.stylesheets|1ÁÉ9—Ê9K#f€b„€€ÿ4€€€ç@œ—Y€ ‰€‚ÿÿÿPackages that use org.w3c.dom.stylesheetsiÊ9Ë9P#p€2„.€€çúQÅõ€‰€‚ÿ€*€‚ÿÿÿorg.w3c.dom.css )—Ê9)Ë9$ € €€‚‚ÿ ¯FË9ØË9i#¢€Œ„€€ÿp€€€ç@œ—Y€ ‰€ïQŽ—YJdk14doc.4.hlp€ ‰€‚ÿÿÿClasses in org.w3c.dom.stylesheets used by org.w3c.dom.cssד)Ë9¯Ì9D#V€'„<€€çüô݂€!‰€€#€‚ÿÿÿDocumentStyle The DocumentStyle interface provides a mechanism by which the style sheets embedded in a document can be retrieved.žrØË9gÍ9F#\€ä„B€€ç?7p€!‰€€#€€‚ÿÿÿStyleSheet The StyleSheet interface is the abstract base interface for any type of style sheet./¯Ì9–Í9( €€€‚‚€‚ÿ *gÍ9ÀÍ9' €€ ”€ ‚ÿ&–Í9æÍ9# €€€‚ÿÌuÀÍ9²Ï9W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ€<€‚ÿ€L€€€‚ÿ(€^€çAœ—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAæÍ9—:˜#‚€€ÿ€€€€‚ÿ €"€ï²Ï9—:íÅ9¿‡—YJdk14doc.4.hlp€‰€çBœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&²Ï9œ:# €€€‚ÿ*—:ç:' €€ ”€ ‚ÿfûœ:M:k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ç:~:1Uÿÿÿÿÿÿÿÿéÿÿÿÿ~:¢:$M:¢:" €€€ ÿL~:î:13's uêî:3:KŠ:StyleSheet (Common DOM API)E¢:3:& €>€€€‚ÿStyleSheet (Common DOM API)Üyî::c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ€<€€€‚ÿ(€R€çǝ—Y€‰€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT3::­#*šÂ€€ÿF€€€ç>œ—Y€‰€çDœ—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çCœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V:Â:\#ˆ€¬ÂÂ.€€€ç€'˜ð€ ‰€‚ÿ.€`€€ç—k_ƀ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&:è:# €€€‚ÿ*Â::' €€ ”€ ‚ÿŒRè:ž:: D€€€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.stylesheetsInterface StyleSheetAll Known Subinterfaces: T:ò:@ P€(€äï(Ž—YJdk14doc.4.hlp€‰€‚‚ÿCSSStyleSheet&ž::# €€€‚ÿ*ò:B:' €€ ”€ ‚ÿ“ :Õ :‡ ܀€€‚€‚€€‚‚€€‚‚ÌDEF("http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113",`',1)€‰€‚ÿpublic interface StyleSheetThe StyleSheet interface is the abstract base interface for any type of style sheet. It represents a single style sheet associated with a structured document. In HTML, the StyleSheet interface represents either an external style sheet, included via the HTML LINK element, or an inline STYLE element. In XML, this interface represents an external style sheet, included via a style sheet processing instruction. See also the Document Object Model (DOM) Level 2 Style Specification.6 B: :* $€€€‚€€‚ÿSince:4Õ :? :% €€ä€‚‚ÿDOM Level 2& :e :# €€€‚ÿ*? : :' €€ ”€ ‚ÿ,e :» :' € €€‚€‚ÿU : :B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summaryác» :ñ :~#̀ƍ÷€€ÿ"€€€€‚ÿ€€ÿB€€çL û§€‰€€€€‚ÿÿÿ booleangetDisabled() false if the style sheet is applied to the document.‚ ::”#ö€÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €çïË13€‰€€‚ÿÿÿ StringgetHref() If the style sheet is a linked style sheet, the value of its attribute is its location.ådñ :ì:#Ҁȍ÷€€ÿ4€€€ç>œ—Y€‰€‚ÿ€$€ÿ6€&€ç¬X-ƒ€‰€€‚ÿÿÿ MediaListgetMedia() The intended destination media for style information.ëj:×:#Ҁԍ÷€€ÿ4€€€çb–—Y€‰€‚ÿ€€ÿ6€€ç݂ N€‰€€‚ÿÿÿ NodegetOwnerNode() The node that associates this style sheet with the document.MËì:0A:‚#Ҁ—÷€×:0A:¢:€ÿ4€€€çCœ—Y€‰€‚ÿ€&€ÿ6€(€çHC €‰€€‚ÿÿÿ StyleSheetgetParentStyleSheet() For style sheet languages that support the concept of style sheet inclusion, this attribute represents the including style sheet, if one exists.Ò?×:B:“#ö€~÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç$Þúö€‰€€‚ÿÿÿ StringgetTitle() The advisory title.ûh0A:ýB:“#ö€Ð÷€€ÿX€€€ïÐۓYJdk14doc.2.hlp€‰€‚ÿ€€ÿ6€ €ç¢Tҝ€‰€€‚ÿÿÿ StringgetType() This specifies the style sheet language for this style sheet.³;B:°C:x#À€v÷€€ÿ"€€€€‚ÿ€€ÿ6€€çœ4±€‰€€‚ÿÿÿ voidsetDisabled(boolean disabled) )ýB:ÙC:$ € €€‚‚ÿ T°C:-D:B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail†/ÙC:³D:W ~€^€€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTypepublic String getType()]-D:BF:2 2€»€ä€€€€€‚‚ÿThis specifies the style sheet language for this style sheet. The style sheet language is specified as a content type (e.g. "text/css"). The content type is often specified in the ownerNode. Also see the type attribute definition for the LINK element in HTML 4.0, and the type pseudo-attribute for the XML style sheet processing instruction.&³D:hF:# €€€‚ÿ*BF:’F:' €€ ”€ ‚ÿs6hF:G:= J€l€€‚€‚€€‚‚€€€€‚ÿgetDisabledpublic boolean getDisabled()€o’F:©H:5 8€ß€ä€€€€€€‚‚ÿfalse if the style sheet is applied to the document. true if it is not. Modifying this attribute may cause a new resolution of style for the document. A stylesheet only applies if both an appropriate medium definition is present and the disabled attribute is false. So, if the media doesn't apply to the current user agent, the disabled attribute is ignored.&G:ÏH:# €€€‚ÿ*©H:ùH:' €€ ”€ ‚ÿ†EÏH:I:A R€Š€€‚€‚€€‚‚€€€€‚€‚ÿsetDisabledpublic void setDisabled(boolean disabled)*ùH:©I:' €€ ”€ ‚ÿ‚9I:+J:I b€r€€‚€‚€€‚‚€çb–—Y€‰€€€€‚ÿgetOwnerNodepublic Node getOwnerNode()S©I:~K:8 >€7€ä€€€€€€€‚‚ÿThe node that associates this style sheet with the document. For HTML, this may be the corresponding LINK or STYLE element. For XML, it may be the linking processing instruction. For style sheets that are included by other style sheets, the value of this attribute is null.&+J:€K:# €€€‚ÿ*~K:ÎK:' €€ ”€ ‚ÿ–M€K:dL:I b€š€€‚€‚€€‚‚€çCœ—Y€‰€€€€‚ÿgetParentStyleSheetpublic StyleSheet getParentStyleSheet()N"ÎK:²M:, &€E€ä€€€‚‚ÿFor style sheet languages that support the concept of style sheet inclusion, this attribute represents the including style sheet, if one exists. If the style sheet is a top-level style sheet, or the style sheet language does not support inclusion, the value of this attribute is null.&dL:ØM:# €€€‚ÿ*²M:N:' €€ ”€ ‚ÿŒ1ØM:ŽN:[ †€b€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetHrefpublic String getHref()a/N: €:2 2€_€ä€€€€€‚‚ÿIf the style sheet is a linked style sheet, the value of its attribute is its location. For inline style sheets, the value of this attribute is null. See the href attribute definition for the LINK element in HTML 4.0, and the href pseudo-attribute for the XML style sheet processing instruction.ŽN: €:¢:&ŽN:2€:# €€€‚ÿ* €:\€:' €€ ”€ ‚ÿŽ32€:ê€:[ †€f€€‚€‚€€‚‚€ïÐۓYJdk14doc.2.hlp€‰€€€€‚ÿgetTitlepublic String getTitle()Þ\€:ú:2 2€œ€ä€€€€€‚‚ÿThe advisory title. The title is often specified in the ownerNode. See the title attribute definition for the LINK element in HTML 4.0, and the title pseudo-attribute for the XML style sheet processing instruction.&ê€: ‚:# €€€‚ÿ*ú:J‚:' €€ ”€ ‚ÿ6 ‚:ɂ:I b€l€€‚€‚€€‚‚€ç>œ—Y€‰€€€€‚ÿgetMediapublic MediaList getMedia()ljJ‚:„:> J€€ä€€€€€€€€€‚‚ÿThe intended destination media for style information. The media is often specified in the ownerNode. If no media has been specified, the MediaList will be empty. See the media attribute definition for the LINK element in HTML 4.0, and the media pseudo-attribute for the XML style sheet processing instruction . Modifying the media list may cause a change to the attribute disabled.&ɂ:¶„:# €€€‚ÿ*„:à„:' €€ ”€ ‚ÿ&¶„:…:# €€€‚ÿÜyà„:â†:c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ€<€€€‚ÿ(€R€çǝ—Y€‰€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIT…:ã‡:­#*šÂ€€ÿF€€€ç>œ—Y€‰€çDœ—Y€‰€‚ÿ €H€ï¿‡—YJdk14doc.4.hlp€‰€çCœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vâ†:•ˆ:\#ˆ€¬ÂÂ.€€€ç€'˜ð€ ‰€‚ÿ.€`€€ç—k_ƀ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&ã‡:»ˆ:# €€€‚ÿ*•ˆ:åˆ:' €€ ”€ ‚ÿfû»ˆ:KŠ:k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1åˆ:|Š:1Uÿÿÿÿÿÿÿÿëÿÿÿÿ|Š: Š:$KŠ: Š:" €€€ ÿP|Š:ðŠ:1ît…uìðŠ:9‹:ÈÍ:StyleSheetList (Common DOM API)I# Š:9‹:& €F€€€‚ÿStyleSheetList (Common DOM API)ÜyðŠ::c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ€<€€€‚ÿ(€R€çȝ—Y€‰€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIõQ9‹: Ž:€#¢Â€€ÿ4€€€çCœ—Y€‰€€‚ÿ €B€ï¿‡—YJdk14doc.4.hlp€‰€çDœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V:ŒŽ:\#ˆ€¬ÂÂ.€€€çg[ü€ ‰€‚ÿ.€`€€ç`)ÉŽ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD& Ž:âŽ:# €€€‚ÿ*ŒŽ: :' €€ ”€ ‚ÿs<âŽ::7 >€x€€‚€‚€€ ‚€‚‚€‚ÿorg.w3c.dom.stylesheetsInterface StyleSheetList* :©:' €€ ”€ ‚ÿÒ;:‡Á:— ü€w€€‚€‚€€‚‚€€‚‚€€‚‚ÌDEF("http://www.w3.org©:‡Á: Š:/TR/2000/REC-DOM-Level-2-Style-20001113",`',1)€‰€‚‚€€‚ÿpublic interface StyleSheetListThe StyleSheetList interface provides the abstraction of an ordered collection of style sheets. The items in the StyleSheetList are accessible via an integral index, starting from 0. See also the Document Object Model (DOM) Level 2 Style Specification.Since:4©:»Á:% €€ä€‚‚ÿDOM Level 2&‡Á:áÁ:# €€€‚ÿ*»Á: Â:' €€ ”€ ‚ÿ,áÁ:7Â:' € €€‚€‚ÿU Â:ŒÂ:B#T€&„€€ÿ"€€€€‚ÿÿÿMethod SummaryÍO7Â:YÃ:~#̀ž÷€€ÿ"€€€€‚ÿ€€ÿB€€ç§"ÞȀ‰€€€€‚ÿÿÿ intgetLength() The number of StyleSheets in the list.æeŒÂ:?Ä:#Ҁʍ÷€€ÿ4€€€çCœ—Y€‰€‚ÿ€&€ÿ6€(€çÃG0¬€‰€€‚ÿÿÿ StyleSheetitem(int index) Used to retrieve a style sheet by ordinal index.)YÃ:hÄ:$ € €€‚‚ÿ T?Ä:ŒÄ:B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detaile,hÄ:!Å:9 B€X€€‚€€‚‚€€€€‚ÿgetLengthpublic int getLength()¯xŒÄ:ÐÅ:7 >€ð€ä€€€€€€€‚‚ÿThe number of StyleSheets in the list. The range of valid child stylesheet indices is 0 to length-1 inclusive.&!Å:öÅ:# €€€‚ÿ*ÐÅ: Æ:' €€ ”€ ‚ÿ8öÅ:¡Æ:I b€p€€‚€‚€€‚‚€çCœ—Y€‰€€€€‚ÿitempublic StyleSheet item(int index)Ô¡ Æ:uÇ:3 4€C€ä€€€‚‚€€‚ÿUsed to retrieve a style sheet by ordinal index. If index is greater than or equal to the number of style sheets in the list, this returns null.Returns:€l¡Æ:È:8 @€Ø€ɀ€€€€€€€‚‚ÿThe style sheet at the index position in the StyleSheetList, or null if that is not a valid index.&uÇ:?È:# €€€‚ÿ*È:iÈ:' €€ ”€ ‚ÿ&?È:È:# €€€‚ÿÜyiÈ:kÊ:c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €ç@œ—Y€‰€‚ÿ€<€€€‚ÿ(€R€çȝ—Y€‰€‚ÿ(€f€çAœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIõQÈ:`Ë:€#¢Â€€ÿ4€€€çCœ—Y€‰€€‚ÿ €B€ï¿‡—YJdk14doc.4.hlp€‰€çDœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VkÊ:Ì:\#ˆ€¬ÂÂ.€€€çg[ü€ ‰€‚ÿ.€`€€ç`)ÉŽ€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&`Ë:8Ì:# €€€‚ÿ*Ì:bÌ:' €€ ”€ ‚ÿfû8Ì:ÈÍ:k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1bÌ:ùÍ:1UÿÿÿÿÿÿÿÿíÿÿÿÿùÍ:Î:$ÈÍ:Î:" €€€ ÿFùÍ:cÎ:1»" uwîcÎ:¢Î:x€;Text (Common DOM API)?Î:¢Î:& €2€€€‚ÿText (Common DOM API)îycÎ:œ;u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€€€‚ÿL€R€ïO—YJdk14doc.4.hlp€‰€‚ÿ(€f€çÁ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€¢Î:œ;Î:ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIõQ¢Î:‘;€#¢Â€€ÿ4€€€çݗY€‰€€‚ÿ €B€ï¿‡—YJdk14doc.4.hlp€‰€çEœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²Vœ;C;\#ˆ€¬ÂÂ.€€€ç*é€ ‰€‚ÿ.€`€€ç)ç2£€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&‘;i;# €€€‚ÿ*C;“;' €€ ”€ ‚ÿv<i; ;: D€x€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.domInterface TextAll Superinterfaces: j“;s;L h€<€äYJdk14doc.4.hlp€‰€çb–—Y€‰€‚‚ÿCharacterData, NodeC ;¶;& €:€€€‚ÿAll Known Subinterfaces: Ss; ;@ P€&€äïÁ‡—YJdk14doc.4.hlp€‰€‚‚ÿCDATASection&¶;/;# €€€‚ÿ* ;Y;' €€ ”€ ‚ÿy/;Ò;t ¶€ €€‚€‚€€‚YJdk14doc.4.hlp€‰€‚‚€€€€€€€€€€€€‚ÿpublic interface Textextends CharacterDataThe Text interface inherits from CharacterData and represents the textual content (termed character data in XML) of an Element or Attr. If there is no markup inside an element's content, the text is contained in a single object implementing the Text interface that is the only child of the element. If there is markup, it is parsed into the information items (elements, comments, etc.) and Text nodes that form the list of children of the element. L Y; ;C T€€€‚€€€€€€€€€€‚ÿWhen a document is first made available via the DOM, there is only one Text node for each block of text. Users may create adjacent Text nodes that represent the contents of a given element without any intervening markup, but should be aware that there is no way to represent the separations between these nodes in XML or HTML, so they will not (in general) persist between DOM editing sessions. The normalize() method on Node merges any such adjacent Text objects into a single node for each block of text. ÅOÒ;ã ;v Œ€ž€€‚ÌCEF("http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113",`',1)€‰€‚‚€‚ÿSee also the Document Object Model (DOM) Level 2 Core Specification.* ; ;' €€ ”€ ‚ÿ,ã ;9 ;' € €€‚€‚ÿT ; ;B#T€$„€€ÿ"€€€€‚ÿÿÿField Summary'9 ;Ž ;# €€€‚ÿ ƒ8 ;7 ;K#f€p„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿFields inherited from interface org.w3c.dom.NodeÇŽ ;þ ;Á#P „6€çŠvšõ€‰€çe@™€‰€燒𑀉€çÄG` €‰€çɪæÍ€‰€çòò$L€‰€çʟ$à€‰€çų峀‰€盩¶{€‰€çúŒÒM€‰€ç<ñ "€‰€秄c¥€‰€‚ÿÿÿATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE'7 ;% ;# €€€‚ÿ Uþ ;z ;B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summary•% ;—;ˆ#ހ+÷€€ÿ4€€€çEœ—Y€‰€‚ÿ€€ÿB€€çŒä&[€‰€€€€‚ÿÿÿ TextsplitText(int offset) Breaks this node into two nodes at the specified offset, keeping both in the tree as siblings.'z ;Ÿ;# €€€‚ÿ ŸB—;];]#Š€„„€€ÿX€€€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.CharacterData}Ÿ;A; #‚ú„ö€ïfÜïÄJdk14doc.4.hlp€‰€ï€šDJdk14doc.4.hlp€‰€ï©º$zJdk14doc.4.hlp€‰€ïb0Jdk14doc.4.hlp€‰€];A;Î:§Jdk14doc.4.hlp€‰€ïV†Jdk14doc.4.hlp€‰€ï”œéJdk14doc.4.hlp€‰€ïˆ3èÓJdk14doc.4.hlp€‰€‚ÿÿÿappendData, deleteData, getData, getLength, insertData, replaceData, setData, substringData'];-A;# €€€‚ÿ „9A;±A;K#f€r„€€ÿ4€€€çb–—Y€‰€‚ÿÿÿMethods inherited from interface org.w3c.dom.Node#Æ-A;ÔD;]#ˆ‚„n‚€ç[Ÿ·…€‰€çj”äE€‰€çVî#o€‰€ç\êI™€‰€ç Ëà€‰€ç_÷~ €ç§Äb€‰€ç8œ›’€‰€ç”a€çèvÍ܀‰€ç›!H€‰€ç”4¥Ü€‰€ç œÎ€‰€çC=ˆˆ€‰€灳@€‰€çÜÚԀ‰€ç¢!˜¬€‰€çšŸÖ€‰€糕 €‰€ç¿È¡¹€‰€粔sµ€‰€çžtz€‰€ç3fl€‰€çwòI€‰€ç Âv퀉€‚ÿÿÿappendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix)±A;ýD;$ € €€‚‚ÿ TÔD;QE;B#T€$„€€ÿ"€€€€‚ÿÿÿMethod DetailÆbýD;F;d ˜€Ä€€‚€€‚‚€çEœ—Y€‰€€€ï{Ž—YJdk14doc.4.hlp€€‰€‚ÿsplitTextpublic Text splitText(int offset) throws DOMExceptionÝQE;1H;= H€»€ä€€€€€€€€€‚ÿBreaks this node into two nodes at the specified offset, keeping both in the tree as siblings. After being split, this node will contain all the content up to the offset point. A new node of the same type, which contains all the content at and after the offset point, is returned. If the original node had a parent node, the new node is inserted as the next sibling of the original node. When the offset is equal to the length of this node, the new node has no data.<F;mH;+ &€"€ä€‚€€‚ÿParameters:wI1H;äH;. ,€’€ɀ€€€€‚ÿoffset - The 16-bit unit offset at which to split, starting from 0.3 mH;I;' €€ä€€‚ÿReturns:T/äH;kI;% €^€ɀ€‚ÿThe new node, of the same type as this node.2 I;I;' €€ä€€‚ÿThrows:ÅkI;«J;I `€‹€ɀï{Ž—YJdk14doc.4.hlp€‰€€€‚‚‚ÿDOMException - INDEX_SIZE_ERR: Raised if the specified offset is negative or greater than the number of 16-bit units in data. NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.&I;ÑJ;# €€€‚ÿ*«J;ûJ;' €€ ”€ ‚ÿ&ÑJ;!K;# €€€‚ÿîyûJ;M;u#º‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çÀ—Y€‰€‚ÿ€<€€€‚ÿL€R€ïO—YJdk14doc.4.hlp€‰€‚ÿ(€f€çÁ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIõQ!K;N;€#¢Â€€ÿ4€€€çݗY€‰€€‚ÿ €B€ï¿‡—YJdk14doc.4.hlp€‰€çEœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VM;¶N;\#ˆ€¬ÂÂ.€€€ç*é€ ‰€‚ÿ.€`€€ç)ç2£€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&N;ÜN;# €€€‚ÿ*¶N;O;' €€ ”€ ‚ÿfûÜN;x€;k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 20O;x€;Î:02 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1O;©€;1Uÿÿÿÿÿÿÿÿïÿÿÿÿ©€;̀;$x€;̀;" €€€ ÿN©€;;1ý…u€wð;b;»À;AbstractView (Common DOM API)G!̀;b;& €B€€€‚ÿAbstractView (Common DOM API)Üy;>ƒ;c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çlœ—Y€‰€‚ÿ€<€€€‚ÿ(€R€çhœ—Y€‰€‚ÿ(€f€çmœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIñPb;/„;¡# Â€€ÿ.€€€çjœ—Y€‰€‚ÿ €@€ï¿‡—YJdk14doc.4.hlp€‰€çqœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V>ƒ;á„;\#ˆ€¬ÂÂ.€€€箊œ € ‰€‚ÿ.€`€€絅_€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&/„;…;# €€€‚ÿ*á„;1…;' €€ ”€ ‚ÿˆN…;¹…;: D€œ€€‚€‚€€ ‚€‚‚€€‚ÿorg.w3c.dom.viewsInterface AbstractViewAll Known Subinterfaces: N1…;†;@ P€€äïwŽ—YJdk14doc.4.hlp€‰€‚‚ÿViewCSS&¹…;-†;# €€€‚ÿ*†;W†;' €€ ”€ ‚ÿ8¯-†;‡;‰ à€_€€‚€‚€€‚‚‚‚ÌDEF("http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113",`',1)€‰€‚‚€€‚ÿpublic interface AbstractViewA base interface that all views shall derive from. See also the Document Object Model (DOM) Level 2 Views Specification.Since:4W†;Ç;% €€ä€‚‚ÿDOM Level 2&‡;é‡;# €€€‚ÿ*Ç;ˆ;' €€ ”€ ‚ÿ,é‡;?ˆ;' € €€‚€‚ÿUˆ;”ˆ;B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summaryÿr?ˆ;“‰;#ê€ä÷€€ÿ4€€€çjœ—Y€‰€‚ÿ€*€ÿN€,€ç¡ó\퀉€€€€€€‚ÿÿÿ DocumentViewgetDocument() The source DocumentView of which this is an AbstractView.)”ˆ;Œ‰;$ € €€‚‚ÿ T“‰;Š;B#T€$„€€ÿ"€€€€‚ÿÿÿMethod Detail‚=Œ‰;’Š;E Z€z€€‚€€‚‚€çjœ—Y€‰€€€€‚ÿgetDocumentpublic DocumentView getDocument()rAŠ;‹;1 2€‚€ä€€€€€‚‚ÿThe source DocumentView of which this is an AbstractView.&’Š;*‹;# €€€‚ÿ*‹;T‹;' €€ ”€ ‚ÿ&*‹;z‹;# €€€‚ÿÜyT‹;V;c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çlœ—Y€‰€‚ÿ€<€€€‚ÿ(€R€çhœ—Y€‰€‚ÿ(€f€çmœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIñPz‹;GŽ;¡# Â€€ÿ.€€€çjœ—Y€‰€‚ÿ €@€ï¿‡—YJdk14doc.4.hlp€‰€çqœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VV;ùŽ;\#ˆ€¬ÂÂ.€€€箊œ € ‰€‚ÿ.€`€€絅_€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&GŽ;;# €€€‚ÿ*ùŽ;I;' €€ ”€ ‚ÿfû;»À;k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark ofI;»À;̀; Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1I;ìÀ;1UÿÿÿÿÿÿÿÿñÿÿÿÿìÀ;Á;$»À;Á;" €€€ ÿq@ìÀ;Á;1ê wÿƒwòÁ;ÛÁ;”Í;Common DOM API: Uses of Interface org.w3c.dom.views.AbstractViewZ4Á;ÛÁ;& €h€€€‚ÿUses of Interface org.w3c.dom.views.AbstractViewÜyÁ;·Ã;c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çlœ—Y€‰€‚ÿ(€<€çqœ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çmœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAÛÁ;Ä;˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çhœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&·Ã;¶Ä;# €€€‚ÿ*Ä;àÄ;' €€ ”€ ‚ÿ&¶Ä;Å;# €€€‚ÿc7àÄ;iÅ;, (€n€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.views.AbstractViewq&Å;ÚÅ;K#f€L„€€ÿ4€€€çqœ—Y€ ‰€‚ÿÿÿPackages that use AbstractViewiiÅ;CÆ;P#p€2„.€€ç î£€‰€‚ÿ€*€‚ÿÿÿorg.w3c.dom.css )ÚÅ;lÆ;$ € €€‚‚ÿ œ3CÆ;Ç;i#¢€f„€€ÿp€€€çqœ—Y€ ‰€ïQŽ—YJdk14doc.4.hlp€ ‰€‚ÿÿÿUses of AbstractView in org.w3c.dom.css)lÆ;1Ç;$ € €€‚‚ÿ ¥<Ç;ÖÇ;i#¢€x„€€ÿp€€€çqœ—Y€‰€ïQŽ—YJdk14doc.4.hlp€‰€‚ÿÿÿSubinterfaces of AbstractView in org.w3c.dom.cssÔM1Ç;ªÈ;‡#ހš«Ù€€ÿ"€€€€‚ÿ€€ÿT€ €ïwŽ—YJdk14doc.4.hlp€‰€‚ÿÿÿ interfaceViewCSS This interface represents a CSS view./ÖÇ;ÙÈ;( €€€‚‚€‚ÿ *ªÈ;É;' €€ ”€ ‚ÿ&ÙÈ;)É;# €€€‚ÿÜyÉ;Ë;c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çlœ—Y€‰€‚ÿ(€<€çqœ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çmœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA)É;ÞË;˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çhœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&Ë;Ì;# €€€‚ÿ*ÞË;.Ì;' €€ ”€ ‚ÿfûÌ;”Í;k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1.Ì;ÅÍ;1UÿÿÿÿÿÿÿÿóÿÿÿÿÅÍ;éÍ;$”Í;éÍ;" €€€ ÿq@ÅÍ;ZÎ;12 €wtxôZÎ;ŽÎ;a<Common DOM API: Uses of Interface org.w3c.dom.views.DocumentViewZ4éÍ;ŽÎ;& €h€€€‚ÿUses of Interface org.w3c.dom.views.DocumentViewÜyZÎ;œ<c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çlœ—Y€‰€‚ÿ(€<€çjœ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çmœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ŽÎ;œ<éÍ;ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAŽÎ;u<˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çiœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&œ<›<# €€€‚ÿ*u<Å<' €€ ”€ ‚ÿ&›<ë<# €€€‚ÿc7Å<N<, (€n€€‚€ ‚€‚‚ÿUses of Interfaceorg.w3c.dom.views.DocumentViewX0ë<Š<( €`€€‚‚€‚ÿNo usage of org.w3c.dom.views.DocumentView*N<Ð<' €€ ”€ ‚ÿ&Š<ö<# €€€‚ÿÜyÐ<Ò<c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çlœ—Y€‰€‚ÿ(€<€çjœ—Y€‰€‚ÿ€T€€€‚ÿ(€f€çmœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAö<«<˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çiœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&Ò<Ñ<# €€€‚ÿ*«<û<' €€ ”€ ‚ÿfûÑ<a<k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1û<’<1Uÿÿÿÿÿÿÿÿõÿÿÿÿ’<¶<$a<¶<" €€€ ÿN’<<1ÿƒwւxö<K<ÜG<DocumentView (Common DOM API)G!¶<K<& €B€€€‚ÿDocumentView (Common DOM API)Üy<' <c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çlœ—Y€‰€‚ÿ€<€€€‚ÿ(€R€çiœ—Y€‰€‚ÿ(€f€çmœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIõQK< <€#¢Â€€ÿ4€€€çqœ—Y€‰€€‚ÿ €B€ï¿‡—YJdk14doc.4.hlp€‰€çjœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²V' <Î <\#ˆ€¬ÂÂ.€€€çYeH»€ ‰€‚ÿ.€`€€ç6U{€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD& <ô <# €€€‚ÿ*Î < <' €€ ”€ ‚ÿk4ô <‰ <7 >€h€€‚€‚€€ ‚€‚‚€‚ÿorg.w3c.dom.viewsInterface DocumentView* <³ <' €€ ”€ ‚ÿÅ0‰ <x<• ø€a€€‚€‚€€‚‚€€€€‚‚ÌDEF("http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113",`',1)€‰€‚‚€€‚ÿpublic interface DocumentViewThe DocumentView interface is implemented by Document objects in DOM implementations supporting DOM Views. It provides an attribute to retrieve the default view of a document. See also the Document Object Model (DOM) Level 2 Views Specification.Since:4³ <¬<% €€ä€‚‚ÿDOM Level 2&x<Ò<# €€€‚ÿ*¬<ü<' €€ ”€ ‚ÿ,Ò<(<' € €€‚€‚ÿUü<}<B#T€&„€€ÿ"€€€€‚ÿÿÿMethod Summary„(<¡@<”#ö€ ÷€€ÿ4€€€çqœ—Y€‰€‚ÿ€*€ÿZ€,€ç¯naۀ‰€€€€}<¡@<¶<€€€€‚ÿÿÿ AbstractViewgetDefaultView() The default AbstractView for this Document, or null if none available.)}<Ê@<$ € €€‚‚ÿ T¡@<A<B#T€$„€€ÿ"€€€€‚ÿÿÿMethod DetailˆCÊ@<ŠA<E Z€†€€‚€€‚‚€çqœ—Y€‰€€€€‚ÿgetDefaultViewpublic AbstractView getDefaultView()‡PA<-B<7 >€ €ä€€€€€€€‚‚ÿThe default AbstractView for this Document, or null if none available.&ŠA<SB<# €€€‚ÿ*-B<}B<' €€ ”€ ‚ÿ&SB<£B<# €€€‚ÿÜy}B<D<c#–‚ò eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çlœ—Y€‰€‚ÿ€<€€€‚ÿ(€R€çiœ—Y€‰€‚ÿ(€f€çmœ—Y€‰€‚ÿL€|€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€¶€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ì€ÿ€Î€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIõQ£B<tE<€#¢Â€€ÿ4€€€çqœ—Y€‰€€‚ÿ €B€ï¿‡—YJdk14doc.4.hlp€‰€çjœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV CLASS NEXT CLASSFRAMES NO FRAMES All Classes²VD<&F<\#ˆ€¬ÂÂ.€€€çYeH»€ ‰€‚ÿ.€`€€ç6U{€ ‰€‚ÿÿÿSUMMARY: NESTED | FIELD | CONSTR | METHODDETAIL: FIELD | CONSTR | METHOD&tE<LF<# €€€‚ÿ*&F<vF<' €€ ”€ ‚ÿfûLF<ÜG<k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1vF< H<1Uÿÿÿÿÿÿÿÿ÷ÿÿÿÿ H<1H<$ÜG<1H<" €€€ ÿR! H<ƒH<1txJƒxøƒH<ÎH<ŒI<org.w3c.dom.views(Common DOM API)K%1H<ÎH<& €J€€€‚ÿorg.w3c.dom.views(Common DOM API)HƒH<I</ .€2€€çlœ—Y€‰€‚ÿ org.w3c.dom.views‚2ÎH<˜I<P#p€d„V€€€€€çqœ—Y€‰€çjœ—Y€‰€‚ÿÿÿInterfaces AbstractViewDocumentView$I<ŒI<" €€€ÿ1˜I<íI<1UÿÿÿÿÿÿÿÿùÿÿÿÿíI<J<$ŒI<J<" €€€ ÿR!íI<cJ<1` ւxÓyúcJ<®J<ç„<org.w3c.dom.views(Common DOM API)K%J<®J<& €J€€€‚ÿorg.w3c.dom.views(Common DOM API)ÌucJ<zL<W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ€ €€€‚ÿ€:€‚ÿ(€J€çnœ—Y€‰€‚ÿ(€^€çmœ—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIùU®J<sM<€#ªÂ€€ÿ4€€€ç@œ—Y€‰€€‚ÿ €J€ï¿‡—YJdk14doc.4.hlp€‰€çlœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV PACKAGE NEXT PACKAGEFRAMES NO FRAMES All Classes&zL<™M<# €€€‚ÿ*sM<ÃM<' €€ ”€ ‚ÿQ"™M<N</ .€D€€‚€‚€ €‚‚ÿPackage org.w3c.dom.viewsXÃM<lN<B#T€,„€€ÿ"€€€€‚ÿÿÿInterface Summary–FN<O<P#p€Œ¥ß.€€çqœ—Y€‰€‚ÿ€$€‚ÿÿÿAbstractViewA base interface that all views shall derive from.߂lN<áO<]#ˆ€¥ß.€€çjœ—Y€‰€‚ÿ.€$€€€€€‚ÿÿÿDocumentViewThe DocumentView interface is implemented by Document objects in DOM implementations supporting DOM Views./O<€<( €€€áO<€<J<‚‚€‚ÿ *áO<F€<' €€ ”€ ‚ÿ&€<l€<# €€€‚ÿÌuF€<8‚<W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ€ €€€‚ÿ€:€‚ÿ(€J€çnœ—Y€‰€‚ÿ(€^€çmœ—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIùUl€<1ƒ<€#ªÂ€€ÿ4€€€ç@œ—Y€‰€€‚ÿ €J€ï¿‡—YJdk14doc.4.hlp€‰€çlœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV PACKAGE NEXT PACKAGEFRAMES NO FRAMES All Classes&8‚<Wƒ<# €€€‚ÿ*1ƒ<ƒ<' €€ ”€ ‚ÿfûWƒ<ç„<k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ƒ<…<1Uÿÿÿÿÿÿÿÿûÿÿÿÿ…<<…<$ç„<<…<" €€€ ÿb1…<ž…<13 Jƒx€yüž…<é…< À<Common DOM API: org.w3c.dom.views Class HierarchyK%<…<é…<& €J€€€‚ÿorg.w3c.dom.views Class HierarchyŒqž…<¥‡<K#f‚â eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çlœ—Y€‰€‚ÿ€<€‚ÿ€L€‚ÿ€X€€€‚ÿL€l€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€Ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€Š€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Œ€ÿ€Ÿ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIéEé…<Žˆ<€#ŠÂ€€ÿ4€€€çAœ—Y€‰€€‚ÿ €*€ï¿‡—YJdk14doc.4.hlp€‰€çmœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&¥‡<ވ<# €€€‚ÿ*Žˆ<ވ<' €€ ”€ ‚ÿ&ވ<‰<# €€€‚ÿY.ވ<]‰<+ &€\€€‚€ €‚‚ÿHierarchy For Package org.w3c.dom.views>‰<›‰<& €0€€€‚ÿPackage Hierarchies:A]‰<܉<. ,€&€ä眜—Y€‰€‚‚ÿAll Packages&›‰<Š<# €€€‚ÿ*܉<,Š<' €€ ”€ ‚ÿKŠ<wŠ</ .€8€€‚€‚€ €‚‚ÿInterface Hierarchy«d,Š<"‹<G ^€È€ä€€çqœ—Y€‰€‚€€çjœ—Y€‰€‚‚ÿ· interface org.w3c.dom.views.AbstractView· interface org.w3c.dom.views.DocumentView&wŠ<H‹<# €€€‚ÿ*"‹<r‹<' €€ ”€ ‚ÿ&H‹<˜‹<# €€€‚ÿŒqr‹<T<K#f‚â eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çlœ—Y€‰€‚ÿ€<€‚ÿ€L€‚ÿ€X€€€‚ÿL€l€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€Ž€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€Š€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Œ€ÿ€Ÿ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIéE˜‹<=Ž<€#ŠÂ€€ÿ4€€€çAœ—Y€‰€€‚ÿ €*€ï¿‡—YJdk14doc.4.hlp€‰€çmœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&T<cŽ<# €€€‚ÿ*=Ž<Ž<' €€ ”€ ‚ÿ^øcŽ< À<f š€ñ€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.Ž< À<<…<1Ž<=À<1Yÿÿÿÿÿÿÿÿýÿÿÿÿ=À<aÀ<$ À<aÀ<" €€€ ÿb1=À<ÃÀ<1» Óy­ƒyþÃÀ<Á<˜Ë<Common DOM API: Uses of Package org.w3c.dom.viewsK%aÀ<Á<& €J€€€‚ÿUses of Package org.w3c.dom.viewsÌuÃÀ<ÚÂ<W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çlœ—Y€‰€‚ÿ€<€‚ÿ€L€€€‚ÿ(€^€çmœ—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAÁ<³Ã<˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çnœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ÚÂ<ÙÃ<# €€€‚ÿ*³Ã<Ä<' €€ ”€ ‚ÿ&ÙÃ<)Ä<# €€€‚ÿT(Ä<}Ä<, (€P€€‚€ ‚€‚‚ÿUses of Packageorg.w3c.dom.viewsv+)Ä<óÄ<K#f€V„€€ÿ4€€€çlœ—Y€ ‰€‚ÿÿÿPackages that use org.w3c.dom.viewsi}Ä<\Å<P#p€2„.€€ç&s  €‚ÿ€*€‚ÿÿÿorg.w3c.dom.css )óÄ<…Å<$ € €€‚‚ÿ ©@\Å<.Æ<i#¢€€„€€ÿp€€€çlœ—Y€ ‰€ïQŽ—YJdk14doc.4.hlp€ ‰€‚ÿÿÿClasses in org.w3c.dom.views used by org.w3c.dom.cssP…Å<ŸÆ<@#P€ „6€€ç î£€!‰€€‚ÿÿÿAbstractView A base interface that all views shall derive from./.Æ<íÆ<( €€€‚‚€‚ÿ *ŸÆ<Ç<' €€ ”€ ‚ÿ&íÆ<=Ç<# €€€‚ÿÌuÇ< É<W#~‚ê eaPPPxPQ¶€€ÿ(€€çpœ—Y€‰€‚ÿ(€ €çlœ—Y€‰€‚ÿ€<€‚ÿ€L€€€‚ÿ(€^€çmœ—Y€‰€‚ÿL€t€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€–€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€®€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ä€ÿ€Æ€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA=Ç<âÉ<˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çnœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes& É<Ê<# €€€‚ÿ*âÉ<2Ê<' €€ ”€ ‚ÿfûÊ<˜Ë<k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.12Ê<ÉË<1UÿÿÿÿÿÿÿÿÿÿÿÿÿÉË<íË<$˜Ë<íË<" €€€ ÿJÉË<7Ì<1F€y¢„y7Ì<zÌ<Î<Overview (Common DOM API)CíË<zÌ<& €:€€€‚ÿOverview (Common DOM API)E7Ì<¿Ì<3#6€$„€€€$€‚ÿÿÿCommon DOM API¥ŸzÌ<dÎ<ç#œ}„‚€ï‡—YJdk14doc.4.hlp€‰€‚‚€€"ïA‡—YJdk14doc.4.hlp€‰€"çɝ—Y€‰€"ïPŽ—YJdk14doc.4.hlp€‰€"ïю—YJdk14doc.4.hlp€‰€"ç]–—Y€‰€"ç?œ—Y€‰€"çkœ—Y€‰€‚‚‚ÿÿÿAll ClassesPackagescom.sun.java.browser.domorg.w3c.domorg.w3c.dom.cssorg.w3c.dom.eventsorg.w3c.dom.htmlorg.w3c.dom.stylesheetsorg.w3c.dom.views+¿Ì<Î<% € €€‚‚‚ÿ 1dÎ<ÀÎ<1UÿÿÿÿÿÿÿÿÿÿÿÿÀÎ<äÎ<$Î<äÎ<" €€€ ÿJÀÎ<.Ï<1𠭃y_z.Ï<qÏ<‰ =Overview (Common DOM API)CäÎ<qÏ<& €:€€€‚ÿOverview (Common DOM API)«l.Ï<(=?#N‚Ø e^QPPyQP¶€€ÿ€€€€‚ÿ€€‚ÿ€0€‚ÿ€@€‚ÿ(€L€qÏ<(=äÎ<眜—Y€‰€‚ÿL€b€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€„€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€œ€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€²€ÿ€Ž€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAqÏ<=˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çpœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&(='=# €€€‚ÿ*=Q=' €€ ”€ ‚ÿ&'=w=# €€€‚ÿ@Q=·=+ &€*€€‚€ €‚‚ÿCommon DOM APIO w==B#T€„€€ÿ"€€€€‚ÿÿÿPackagesƒ!·=‰=b#”€BR€€ïB‡—YJdk14doc.4.hlp€‰€‚ÿ€<€‚ÿÿÿcom.sun.java.browser.dom =–=~#ʀ.€€çÀ—Y€‰€‚ÿp€"€Ì#EF("http://java.sun.com/xml",`',1)€‰€‚ÿÿÿorg.w3c.domProvides the interfaces for the Document Object Model (DOM) which is a component API of the Java API for XML Processing.z‰==b#”€0R€€ïQŽ—YJdk14doc.4.hlp€‰€‚ÿ€*€‚ÿÿÿorg.w3c.dom.css }–==b#”€6R€€ïҎ—YJdk14doc.4.hlp€‰€‚ÿ€0€‚ÿÿÿorg.w3c.dom.events i=ö=P#p€2.€€ç^–—Y€‰€‚ÿ€,€‚ÿÿÿorg.w3c.dom.html p =f=P#p€@.€€ç@œ—Y€‰€‚ÿ€:€‚ÿÿÿorg.w3c.dom.stylesheets jö=Ð=P#p€4.€€çlœ—Y€‰€‚ÿ€.€‚ÿÿÿorg.w3c.dom.views /f=ÿ=( €€€‚‚€‚ÿ *Ð=)=' €€ ”€ ‚ÿ&ÿ=O=# €€€‚ÿ«l)=ú=?#N‚Ø e^QPPyQP¶€€ÿ€€€€‚ÿ€€‚ÿ€0€‚ÿ€@€‚ÿ(€L€眜—Y€‰€‚ÿL€b€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€„€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€œ€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€²€ÿ€Ž€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAO=Ó =˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€çpœ—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&ú=ù =# €€€‚ÿ*Ó =# =' €€ ”€ ‚ÿfûù =‰ =k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1# =º =1Uÿÿÿÿÿÿÿÿÿÿÿÿº =Þ =$‰ =Þ =" €€€ ÿQ º =/ =1i¢„y}/ =y =IÂ>Class Hierarchy (Common DOM API)J$Þ =y =& €H€€€‚ÿClass Hierarchy (Common DOM API)¬m/ =%=?#N‚Ú e^QPPyQP¶€€ÿ(€€çpœ—Y€‰€‚ÿ€ €‚ÿ€4€‚ÿ€D€‚ÿ€P€€€‚ÿL€d€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€†€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ž€ÿ€¶€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙAy =þ=˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€眜—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&%=$=# €€€‚ÿ*þ=N=' €€ ”€ ‚ÿ&$=t=# €€€‚ÿL!N=À=+ &€B€€‚€ €‚‚ÿHierarchy For All Packages>t= @=& €0€€€‚ÿPackage Hierarchies:À= @=Þ =T§À=`A=­ (O€äïC‡—YJdk14doc.4.hlp€‰€çÁ—Y€‰€ïRŽ—YJdk14doc.4.hlp€‰€ïӎ—YJdk14doc.4.hlp€‰€ç_–—Y€‰€çAœ—Y€‰€çmœ—Y€‰€‚‚ÿcom.sun.java.browser.dom, org.w3c.dom, org.w3c.dom.css, org.w3c.dom.events, org.w3c.dom.html, org.w3c.dom.stylesheets, org.w3c.dom.views& @=†A=# €€€‚ÿ*`A=°A=' €€ ”€ ‚ÿG†A=÷A=/ .€0€€‚€‚€ €‚‚ÿClass Hierarchyg!°A=^B=F \€B€ä€€ïCՓYJdk14doc.2.hlp€‰€‚‚ÿ· class java.lang.Objectf¶÷A=ÄC=° .m€ɀ€€ï>‡—YJdk14doc.4.hlp€‰€‚€€ï?‡—YJdk14doc.4.hlp€‰€‚€€ïùۓYJdk14doc.2.hlp€‰€ïœ”YJdk14doc.2.hlp€‰€‚‚ÿ· class com.sun.java.browser.dom.DOMService· class com.sun.java.browser.dom.DOMServiceProvider· class java.lang.Throwable (implements java.io.Serializable)k$^B=/D=G ^€H€-€€ïÃԓYJdk14doc.2.hlp€‰€‚‚ÿ· class java.lang.Exception6€ÄC=eE=’ ò€I€‘€€ï‡—YJdk14doc.4.hlp€‰€‚€€ï@‡—YJdk14doc.4.hlp€‰€‚€€ï§Û“YJdk14doc.2.hlp€‰€‚‚ÿ· class com.sun.java.browser.dom.DOMAccessException· class com.sun.java.browser.dom.DOMUnsupportedException· class java.lang.RuntimeExceptionÅY/D=*F=l š€²€õ€€ï{Ž—YJdk14doc.4.hlp€‰€‚€€ï֎—YJdk14doc.4.hlp€‰€‚‚ÿ· class org.w3c.dom.DOMException· class org.w3c.dom.events.EventException?eE=iF=' €0€€ €‚‚ÿInterface Hierarchyg3*F=ÐF=4 8€f€ä€€çqœ—Y€‰€‚‚ÿ· interface org.w3c.dom.views.AbstractViews,iF=CG=G ^€X€ɀ€€ïwŽ—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.css.ViewCSS‡ÐF=[H=‘ ð€€ä€€ïû—YJdk14doc.4.hlp€‰€‚€€ïü—YJdk14doc.4.hlp€‰€‚€€ï$Ž—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.css.Counter· interface org.w3c.dom.css.CSS2Properties· interface org.w3c.dom.css.CSSRule  CG={J= ΁A€ɀ€€ïý—YJdk14doc.4.hlp€‰€‚€€ïþ—YJdk14doc.4.hlp€‰€‚€€ï*Ž—YJdk14doc.4.hlp€‰€‚€€ï!Ž—YJdk14doc.4.hlp€‰€‚€€ï"Ž—YJdk14doc.4.hlp€‰€‚€€ï'Ž—YJdk14doc.4.hlp€‰€‚ÿ· interface org.w3c.dom.css.CSSCharsetRule· interface org.w3c.dom.css.CSSFontFaceRule· interface org.w3c.dom.css.CSSImportRule· interface org.w3c.dom.css.CSSMediaRule· interface org.w3c.dom.css.CSSPageRule· interface org.w3c.dom.css.CSSStyleRulez3[H=õJ=G ^€f€ɀ€€ï)Ž—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.css.CSSUnknownRule"‘{J=L=‘ ð€#€ä€€ï%Ž—YJdk14doc.4.hlp€‰€‚€€ï&Ž—YJdk14doc.4.hlp€‰€‚€€ïUŽ—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.css.CSSRuleList· interface org.w3c.dom.css.CSSStyleDeclaration· interface org.w3c.dom.css.CSSValueÑeõJ=èL=l š€Ê€ɀ€€ï#Ž—YJdk14doc.4.hlp€‰€‚€€ïLŽ—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.css.CSSPrimitiveValue· interface org.w3c.dom.css.CSSValueListÆmL=®M=Y ‚€Ú€ä€€ï©Ž—YJdk14doc.4.hlp€‰€‚€€çFœ—Y€‰€‚‚ÿ· interface org.w3c.dom.events.DocumentEvent· interface org.w3c.dom.stylesheets.DocumentStylew0èL=%N=G ^€`€ɀ€€ïMŽ—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.css.DocumentCSSsÏ®M=˜O=€ Ÿ€ä€€çjœ—Y€‰€‚€€ï‡—YJdk14doc.4.hlp€‰€‚€€ïG‡—YJdk14doc.4.hlp€‰€‚€€ï|Ž—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.views.DocumentView· interface com.sun.java.browser.dom.DOMAccessor· interface com.sun.java.browser.dom.DOMAction· interface org.w3c.dom.DOMImplementationÌr%N=p€=Z „€ä€ɀ€€ïNŽ—YJdk14doc.4.hlp€‰€‚€€獕—Y€‰€‚‚ÿ· interface ˜O=p€=Þ =org.w3c.dom.css.DOMImplementationCSS· interface org.w3c.dom.html.HTMLDOMImplementationÐe˜O=@=k Š€Ê€ä€€ïOŽ—YJdk14doc.4.hlp€‰€‚€€ïªŽ—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.css.ElementCSSInlineStyle· interface org.w3c.dom.events.Event$’p€=d‚=’ ò€%€ɀ€€ïώ—YJdk14doc.4.hlp€‰€‚€€ïЎ—YJdk14doc.4.hlp€‰€‚€€ïՎ—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.events.MouseEvent· interface org.w3c.dom.events.MutationEvent· interface org.w3c.dom.events.UIEventy2@=݂=G ^€d€-€€ïώ—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.events.MouseEventMd‚=ô„=Ê b›€ä€€ï͎—YJdk14doc.4.hlp€‰€‚€€ïΎ—YJdk14doc.4.hlp€‰€‚€€爕—Y€‰€‚€€ç=œ—Y€‰€‚€€ç>œ—Y€‰€‚€€ça–—Y€‰€‚€€çb–—Y€‰€‚ÿ· interface org.w3c.dom.events.EventListener· interface org.w3c.dom.events.EventTarget· interface org.w3c.dom.html.HTMLCollection· interface org.w3c.dom.stylesheets.LinkStyle· interface org.w3c.dom.stylesheets.MediaList· interface org.w3c.dom.NamedNodeMap· interface org.w3c.dom.Node'݂=…=$ €€ä€‚ÿ |ô„=(†=‘ ò€ø€ɀ€€ïÀ‡—YJdk14doc.4.hlp€‰€‚€€ïÁ‡—YJdk14doc.4.hlp€‰€‚€€ï‡—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.Attr· interface org.w3c.dom.CDATASection· interface org.w3c.dom.CharacterDataõv…=‡= ΀ì€-€€ïÁ‡—YJdk14doc.4.hlp€‰€‚€€ïP—YJdk14doc.4.hlp€‰€‚€€çEœ—Y€‰€‚‚ÿ· interface org.w3c.dom.CDATASection· interface org.w3c.dom.Comment· interface org.w3c.dom.Textt-(†=‘‡=G ^€Z€‘€€ïÁ‡—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.CDATASection»O‡=Lˆ=l š€ž€ɀ€€ïP—YJdk14doc.4.hlp€‰€‚€€ïxŽ—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.Comment· interface org.w3c.dom.Documentg2‘‡=³ˆ=5 :€d€-€€猕—Y€‰€‚‚ÿ· interface org.w3c.dom.html.HTMLDocument‚Lˆ=lj=’ ò€€ɀ€€ïyŽ—YJdk14doc.4.hlp€‰€‚€€ïzŽ—YJdk14doc.4.hlp€‰€‚€€ï}Ž—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.DocumentFragment· interface org.w3c.dom.DocumentType· interface org.w3c.dom.Elementl³ˆ=ڋ=§ Ù€-€€ç_•—Y€‰€‚€€ç`•—Y€‰€‚€€ça•—Y€‰€‚€€çb•—Y€‰€‚€€玕—Y€‰€‚€€煕—Y€‰€‚€€熕—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLAnchorElement· interface org.w3c.dom.html.HTMLAppletElement· interface org.w3c.dom.html.HTMLAreaElement· interface org.w3c.dom.html.HTMLBaseElement· interface org.w3c.dom.html.HTMLBaseFontElement· interface org.w3c.dom.html.HTMLBodyElement· interface org.w3c.dom.html.HTMLBRElement†lj=`=‚ Ҁ €-€€燕—Y€‰€‚€€牕—Y€‰€‚€€犕—Y€‰€‚€€狕—Y€‰€‚€€繕—Y€‰€‚‚ÿ· interface org.w3c.dom.html.HTMLButtonElement· interface org.w3c.dom.html.HTMLDirectoryElement· interface org.w3c.dom.html.HTMLDivElement· interface org.w3c.dom.html.HTMLDListElement· interface org.w3c.dom.html.HTMLElementlڋ=s=§ Ù€‘€€ç_•—Y€‰€‚€€ç`•—Y€‰€‚€€ça•—Y€‰€‚€€çb•—Y€‰€‚€€玕—Y€‰€‚€€煕—Y€‰€‚€€熕—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLAnchorElement· interface org.w3c.dom.html.HTMLAppletElement· interface org.w3c.dom.html.HTMLAreaElement· interface org.w3c.dom.html.HTMLBaseElement· interface org.w3c.dom.html.HTMLBaseFontElement· interface org.w3c.dom.html.HTMLBodyElement· interface org.w3c.dom.html.HTMLBRElementq`=—Á=§ ã€‘€€燕—Y€‰€‚€€牕—Y€‰€‚€€犕—Y€‰€‚€€狕—Y€‰€‚€€簕—Y€‰€‚€€籕—Y€s=—Á=Þ =‰€‚€€粕—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLButtonElement· interface org.w3c.dom.html.HTMLDirectoryElement· interface org.w3c.dom.html.HTMLDivElement· interface org.w3c.dom.html.HTMLDListElement· interface org.w3c.dom.html.HTMLFieldSetElement· interface org.w3c.dom.html.HTMLFontElement· interface org.w3c.dom.html.HTMLFormElementns=¬Ã=§ Ý€‘€€糕—Y€‰€‚€€箕—Y€‰€‚€€絕—Y€‰€‚€€綕—Y€‰€‚€€緕—Y€‰€‚€€羕—Y€‰€‚€€ç䕗Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLFrameElement· interface org.w3c.dom.html.HTMLFrameSetElement· interface org.w3c.dom.html.HTMLHeadElement· interface org.w3c.dom.html.HTMLHeadingElement· interface org.w3c.dom.html.HTMLHRElement· interface org.w3c.dom.html.HTMLHtmlElement· interface org.w3c.dom.html.HTMLIFrameElementl—Á=¿Å=§ Ù€‘€€çە—Y€‰€‚€€çܕ—Y€‰€‚€€çݕ—Y€‰€‚€€çޕ—Y€‰€‚€€çߕ—Y€‰€‚€€çà•—Y€‰€‚€€çᕗY€‰€‚ÿ· interface org.w3c.dom.html.HTMLImageElement· interface org.w3c.dom.html.HTMLInputElement· interface org.w3c.dom.html.HTMLIsIndexElement· interface org.w3c.dom.html.HTMLLabelElement· interface org.w3c.dom.html.HTMLLegendElement· interface org.w3c.dom.html.HTMLLIElement· interface org.w3c.dom.html.HTMLLinkElementk¬Ã=ÑÇ=§ ×€‘€€ç╗Y€‰€‚€€ç㕗Y€‰€‚€€ç–—Y€‰€‚€€ç–—Y€‰€‚€€ç–—Y€‰€‚€€ç–—Y€‰€‚€€ç –—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLMapElement· interface org.w3c.dom.html.HTMLMenuElement· interface org.w3c.dom.html.HTMLMetaElement· interface org.w3c.dom.html.HTMLModElement· interface org.w3c.dom.html.HTMLObjectElement· interface org.w3c.dom.html.HTMLOListElement· interface org.w3c.dom.html.HTMLOptGroupElementr¿Å=êÉ=§ å€‘€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç–—Y€‰€‚€€ç:–—Y€‰€‚€€ç1–—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLOptionElement· interface org.w3c.dom.html.HTMLParagraphElement· interface org.w3c.dom.html.HTMLParamElement· interface org.w3c.dom.html.HTMLPreElement· interface org.w3c.dom.html.HTMLQuoteElement· interface org.w3c.dom.html.HTMLScriptElement· interface org.w3c.dom.html.HTMLSelectElement,…ÑÇ=Ì=§  €‘€€ç2–—Y€‰€‚€€ç3–—Y€‰€‚€€ç4–—Y€‰€‚€€ç5–—Y€‰€‚€€ç6–—Y€‰€‚€€ç7–—Y€‰€‚€€ç8–—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLStyleElement· interface org.w3c.dom.html.HTMLTableCaptionElement· interface org.w3c.dom.html.HTMLTableCellElement· interface org.w3c.dom.html.HTMLTableColElement· interface org.w3c.dom.html.HTMLTableElement· interface org.w3c.dom.html.HTMLTableRowElement· interface org.w3c.dom.html.HTMLTableSectionElementý¡êÉ=Í=\ †€C€‘€€ç9–—Y€‰€‚€€çe–—Y€‰€‚€€ç\–—Y€‰€‚‚ÿ· interface org.w3c.dom.html.HTMLTextAreaElement· interface org.w3c.dom.html.HTMLTitleElement· interface org.w3c.dom.html.HTMLUListElementrÌ=,Ï=§ å€-€€簕—Y€‰€‚€€籕—Y€‰€‚€€粕—Y€‰€‚€€糕—Y€‰€‚€€箕—Y€‰€‚€€絕—Y€‰€‚€€綕—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLFieldSetElement· interface org.w3c.dom.html.HTMLFontElement· interface org.w3c.dom.html.HTMLFormElement· interface org.w3c.dom.html.HTMLFrameElement· interface org.w3c.dom.html.HTMLFrameSetElement· interface org.w3c.dom.html.HTMLHeadElement· interface org.w3c.dom.html.HTMLHeadingElementlÍ=K>§ Ù€-€€緕—Y€‰€‚€€羕—Y€‰€‚€€ç䕗Y€‰€‚€€çە—Y€‰€‚€€çܕ—Y€‰€‚€€çݕ—Y€‰€‚€€çޕ—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLHRElemen,Ï=K>Þ =t· interface org.w3c.dom.html.HTMLHtmlElement· interface org.w3c.dom.html.HTMLIFrameElement· interface org.w3c.dom.html.HTMLImageElement· interface org.w3c.dom.html.HTMLInputElement· interface org.w3c.dom.html.HTMLIsIndexElement· interface org.w3c.dom.html.HTMLLabelElement d,Ï=V>§ É€-€€çߕ—Y€‰€‚€€çà•—Y€‰€‚€€çᕗY€‰€‚€€ç╗Y€‰€‚€€ç㕗Y€‰€‚€€ç–—Y€‰€‚€€ç–—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLLegendElement· interface org.w3c.dom.html.HTMLLIElement· interface org.w3c.dom.html.HTMLLinkElement· interface org.w3c.dom.html.HTMLMapElement· interface org.w3c.dom.html.HTMLMenuElement· interface org.w3c.dom.html.HTMLMetaElement· interface org.w3c.dom.html.HTMLModElementtK>q>§ é€-€€ç–—Y€‰€‚€€ç–—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLObjectElement· interface org.w3c.dom.html.HTMLOListElement· interface org.w3c.dom.html.HTMLOptGroupElement· interface org.w3c.dom.html.HTMLOptionElement· interface org.w3c.dom.html.HTMLParagraphElement· interface org.w3c.dom.html.HTMLParamElement· interface org.w3c.dom.html.HTMLPreElement$}V>•>§ û€-€€ç–—Y€‰€‚€€ç:–—Y€‰€‚€€ç1–—Y€‰€‚€€ç2–—Y€‰€‚€€ç3–—Y€‰€‚€€ç4–—Y€‰€‚€€ç5–—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLQuoteElement· interface org.w3c.dom.html.HTMLScriptElement· interface org.w3c.dom.html.HTMLSelectElement· interface org.w3c.dom.html.HTMLStyleElement· interface org.w3c.dom.html.HTMLTableCaptionElement· interface org.w3c.dom.html.HTMLTableCellElement· interface org.w3c.dom.html.HTMLTableColElementÜGq>q >• ø€€-€€ç6–—Y€‰€‚€€ç7–—Y€‰€‚€€ç8–—Y€‰€‚€€ç9–—Y€‰€‚€€çe–—Y€‰€‚€€ç\–—Y€‰€‚‚ÿ· interface org.w3c.dom.html.HTMLTableElement· interface org.w3c.dom.html.HTMLTableRowElement· interface org.w3c.dom.html.HTMLTableSectionElement· interface org.w3c.dom.html.HTMLTextAreaElement· interface org.w3c.dom.html.HTMLTitleElement· interface org.w3c.dom.html.HTMLUListElement&[•>— >Ë d·€ɀ€€ï~Ž—YJdk14doc.4.hlp€‰€‚€€ïŽ—YJdk14doc.4.hlp€‰€‚€€ç_•—Y€‰€‚€€ç`•—Y€‰€‚€€ça•—Y€‰€‚€€çb•—Y€‰€‚€€玕—Y€‰€‚ÿ· interface org.w3c.dom.Entity· interface org.w3c.dom.EntityReference· interface org.w3c.dom.html.HTMLAnchorElement· interface org.w3c.dom.html.HTMLAppletElement· interface org.w3c.dom.html.HTMLAreaElement· interface org.w3c.dom.html.HTMLBaseElement· interface org.w3c.dom.html.HTMLBaseFontElementhq >Š >§ Ñ€ɀ€€煕—Y€‰€‚€€熕—Y€‰€‚€€燕—Y€‰€‚€€牕—Y€‰€‚€€犕—Y€‰€‚€€狕—Y€‰€‚€€猕—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLBodyElement· interface org.w3c.dom.html.HTMLBRElement· interface org.w3c.dom.html.HTMLButtonElement· interface org.w3c.dom.html.HTMLDirectoryElement· interface org.w3c.dom.html.HTMLDivElement· interface org.w3c.dom.html.HTMLDListElement· interface org.w3c.dom.html.HTMLDocumentf1— > >5 :€b€ɀ€€繕—Y€‰€‚‚ÿ· interface org.w3c.dom.html.HTMLElementlŠ >+@>§ Ù€-€€ç_•—Y€‰€‚€€ç`•—Y€‰€‚€€ça•—Y€‰€‚€€çb•—Y€‰€‚€€玕—Y€‰€‚€€煕—Y€‰€‚€€熕—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLAnchorElement· interface org.w3c.dom.html.HTMLAppletElement· interface org.w3c.dom.html.HTMLAreaElement· interface org.w3c.dom.html.HTMLBaseElement· interface org.w3c.dom.html.HTMLBaseFontElement· interface org.w3c.dom.html.HTMLBodyElement· interface org.w >+@>Þ =3c.dom.html.HTMLBRElementq >CB>§ ã€-€€燕—Y€‰€‚€€牕—Y€‰€‚€€犕—Y€‰€‚€€狕—Y€‰€‚€€簕—Y€‰€‚€€籕—Y€‰€‚€€粕—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLButtonElement· interface org.w3c.dom.html.HTMLDirectoryElement· interface org.w3c.dom.html.HTMLDivElement· interface org.w3c.dom.html.HTMLDListElement· interface org.w3c.dom.html.HTMLFieldSetElement· interface org.w3c.dom.html.HTMLFontElement· interface org.w3c.dom.html.HTMLFormElementn+@>XD>§ Ý€-€€糕—Y€‰€‚€€箕—Y€‰€‚€€絕—Y€‰€‚€€綕—Y€‰€‚€€緕—Y€‰€‚€€羕—Y€‰€‚€€ç䕗Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLFrameElement· interface org.w3c.dom.html.HTMLFrameSetElement· interface org.w3c.dom.html.HTMLHeadElement· interface org.w3c.dom.html.HTMLHeadingElement· interface org.w3c.dom.html.HTMLHRElement· interface org.w3c.dom.html.HTMLHtmlElement· interface org.w3c.dom.html.HTMLIFrameElementlCB>kF>§ Ù€-€€çە—Y€‰€‚€€çܕ—Y€‰€‚€€çݕ—Y€‰€‚€€çޕ—Y€‰€‚€€çߕ—Y€‰€‚€€çà•—Y€‰€‚€€çᕗY€‰€‚ÿ· interface org.w3c.dom.html.HTMLImageElement· interface org.w3c.dom.html.HTMLInputElement· interface org.w3c.dom.html.HTMLIsIndexElement· interface org.w3c.dom.html.HTMLLabelElement· interface org.w3c.dom.html.HTMLLegendElement· interface org.w3c.dom.html.HTMLLIElement· interface org.w3c.dom.html.HTMLLinkElementkXD>}H>§ ×€-€€ç╗Y€‰€‚€€ç㕗Y€‰€‚€€ç–—Y€‰€‚€€ç–—Y€‰€‚€€ç–—Y€‰€‚€€ç–—Y€‰€‚€€ç –—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLMapElement· interface org.w3c.dom.html.HTMLMenuElement· interface org.w3c.dom.html.HTMLMetaElement· interface org.w3c.dom.html.HTMLModElement· interface org.w3c.dom.html.HTMLObjectElement· interface org.w3c.dom.html.HTMLOListElement· interface org.w3c.dom.html.HTMLOptGroupElementrkF>–J>§ å€-€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç–—Y€‰€‚€€ç:–—Y€‰€‚€€ç1–—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLOptionElement· interface org.w3c.dom.html.HTMLParagraphElement· interface org.w3c.dom.html.HTMLParamElement· interface org.w3c.dom.html.HTMLPreElement· interface org.w3c.dom.html.HTMLQuoteElement· interface org.w3c.dom.html.HTMLScriptElement· interface org.w3c.dom.html.HTMLSelectElement,…}H>ÂL>§  €-€€ç2–—Y€‰€‚€€ç3–—Y€‰€‚€€ç4–—Y€‰€‚€€ç5–—Y€‰€‚€€ç6–—Y€‰€‚€€ç7–—Y€‰€‚€€ç8–—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLStyleElement· interface org.w3c.dom.html.HTMLTableCaptionElement· interface org.w3c.dom.html.HTMLTableCellElement· interface org.w3c.dom.html.HTMLTableColElement· interface org.w3c.dom.html.HTMLTableElement· interface org.w3c.dom.html.HTMLTableRowElement· interface org.w3c.dom.html.HTMLTableSectionElementý¡–J>¿M>\ †€C€-€€ç9–—Y€‰€‚€€çe–—Y€‰€‚€€ç\–—Y€‰€‚‚ÿ· interface org.w3c.dom.html.HTMLTextAreaElement· interface org.w3c.dom.html.HTMLTitleElement· interface org.w3c.dom.html.HTMLUListElementrÂL>ØO>§ å€ɀ€€簕—Y€‰€‚€€籕—Y€‰€‚€€粕—Y€‰€‚€€糕—Y€‰€‚€€箕—Y€‰€‚€€絕—Y€‰€‚€€綕—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLFieldSetElement· interface org.w3c.dom.html.HTMLFontElement· interface org.w3c.dom.html.HTMLFormElement· interface org.w3c.dom.html.HTMLFrameElement· interface org.w3c.dom.html.HTMLFrameSetElement· interface org.w3c.dom.html.HTMLHeadElement· interface org.w3c.dom.html.HTMLHeadingElementl¿M>÷>§ Ù€ɀ€€çØO>÷>Þ =·•—Y€‰€‚€€羕—Y€‰€‚€€ç䕗Y€‰€‚€€çە—Y€‰€‚€€çܕ—Y€‰€‚€€çݕ—Y€‰€‚€€çޕ—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLHRElement· interface org.w3c.dom.html.HTMLHtmlElement· interface org.w3c.dom.html.HTMLIFrameElement· interface org.w3c.dom.html.HTMLImageElement· interface org.w3c.dom.html.HTMLInputElement· interface org.w3c.dom.html.HTMLIsIndexElement· interface org.w3c.dom.html.HTMLLabelElement dØO>„>§ É€ɀ€€çߕ—Y€‰€‚€€çà•—Y€‰€‚€€çᕗY€‰€‚€€ç╗Y€‰€‚€€ç㕗Y€‰€‚€€ç–—Y€‰€‚€€ç–—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLLegendElement· interface org.w3c.dom.html.HTMLLIElement· interface org.w3c.dom.html.HTMLLinkElement· interface org.w3c.dom.html.HTMLMapElement· interface org.w3c.dom.html.HTMLMenuElement· interface org.w3c.dom.html.HTMLMetaElement· interface org.w3c.dom.html.HTMLModElementt÷>†>§ é€ɀ€€ç–—Y€‰€‚€€ç–—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚€€ç –—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLObjectElement· interface org.w3c.dom.html.HTMLOListElement· interface org.w3c.dom.html.HTMLOptGroupElement· interface org.w3c.dom.html.HTMLOptionElement· interface org.w3c.dom.html.HTMLParagraphElement· interface org.w3c.dom.html.HTMLParamElement· interface org.w3c.dom.html.HTMLPreElement$}„>Aˆ>§ û€ɀ€€ç–—Y€‰€‚€€ç:–—Y€‰€‚€€ç1–—Y€‰€‚€€ç2–—Y€‰€‚€€ç3–—Y€‰€‚€€ç4–—Y€‰€‚€€ç5–—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLQuoteElement· interface org.w3c.dom.html.HTMLScriptElement· interface org.w3c.dom.html.HTMLSelectElement· interface org.w3c.dom.html.HTMLStyleElement· interface org.w3c.dom.html.HTMLTableCaptionElement· interface org.w3c.dom.html.HTMLTableCellElement· interface org.w3c.dom.html.HTMLTableColElementm†>UŠ>§ Û€ɀ€€ç6–—Y€‰€‚€€ç7–—Y€‰€‚€€ç8–—Y€‰€‚€€ç9–—Y€‰€‚€€çe–—Y€‰€‚€€ç\–—Y€‰€‚€€çd–—Y€‰€‚ÿ· interface org.w3c.dom.html.HTMLTableElement· interface org.w3c.dom.html.HTMLTableRowElement· interface org.w3c.dom.html.HTMLTableSectionElement· interface org.w3c.dom.html.HTMLTextAreaElement· interface org.w3c.dom.html.HTMLTitleElement· interface org.w3c.dom.html.HTMLUListElement· interface org.w3c.dom.Notation¡YAˆ>öŠ>H `€²€ɀ€€çݗY€‰€‚€€çEœ—Y€‰€‚‚ÿ· interface org.w3c.dom.ProcessingInstruction· interface org.w3c.dom.Textt-UŠ>j‹>G ^€Z€-€€ïÁ‡—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.CDATASectionB°öŠ>¬Œ>’ ò€a€ä€€çc–—Y€‰€‚€€ïTŽ—YJdk14doc.4.hlp€‰€‚€€ï€Ž—YJdk14doc.4.hlp€‰€‚€€çCœ—Y€‰€‚‚ÿ· interface org.w3c.dom.NodeList· interface org.w3c.dom.css.Rect· interface org.w3c.dom.css.RGBColor· interface org.w3c.dom.stylesheets.StyleSheety2j‹>%>G ^€d€ɀ€€ï(Ž—YJdk14doc.4.hlp€‰€‚‚ÿ· interface org.w3c.dom.css.CSSStyleSheeto;¬Œ>”>4 8€v€ä€€çDœ—Y€‰€‚‚ÿ· interface org.w3c.dom.stylesheets.StyleSheetList&%>º># €€€‚ÿ*”>ä>' €€ ”€ ‚ÿ&º> Ž># €€€‚ÿ¬mä>¶>?#N‚Ú e^QPPyQP¶€€ÿ(€€çpœ—Y€‰€‚ÿ€ €‚ÿ€4€‚ÿ€D€‚ÿ€P€€€‚ÿL€d€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€†€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€ž€ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€Ž€ÿ€¶€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA Ž>›À>˜#‚€€ÿ€€€€‚ÿ €"€¶>›À>Þ =ᅦ—YJdk14doc.4.hlp€‰€眜—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&¶>ÁÀ># €€€‚ÿ*›À>ëÀ>' €€ ”€ ‚ÿ^øÁÀ>IÂ>f š€ñ€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1ëÀ>zÂ>1UÿÿÿÿÿÿÿÿÿÿÿÿzÂ>žÂ>$IÂ>žÂ>" €€€ ÿ?zÂ>ÝÂ>1î_z‚}ÝÂ>Ã>ÒÃ>Common DOM API8žÂ>Ã>& €$€€€‚ÿCommon DOM APIœnÝÂ>ÒÃ>O n€Ü€€‚ᅦ—YJdk14doc.4.hlp€‰€‚çpœ—Y€‰€‚ÿ The front page has been relocated.Please see: Frame version Non-frame version.1Ã>Ä>1UÿÿÿÿÿÿÿÿÿÿÿÿÄ>'Ä>$ÒÃ>'Ä>" €€€ ÿ@Ä>gÄ>1H}\~gÄ> Ä>Ï?Serialized Form9'Ä> Ä>& €&€€€‚ÿSerialized Form³ngÄ>SÆ>E#Z‚Ü e^QPPyQP¶€€ÿ(€€çpœ—Y€‰€‚ÿ€ €‚ÿ€4€‚ÿ€D€‚ÿ(€P€眜—Y€‰€‚ÿL€f€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ˆ€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€ €ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€¶€ÿ€ž€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA Ä>,Ç>˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€甜—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&SÆ>RÇ># €€€‚ÿ*,Ç>|Ç>' €€ ”€ ‚ÿ&RÇ>¢Ç># €€€‚ÿA|Ç>ãÇ>+ &€,€€‚€%€‚‚ÿSerialized Form&¢Ç> È># €€€‚ÿ*ãÇ>3È>' €€ ”€ ‚ÿ& È>YÈ># €€€‚ÿo'3È>ÈÈ>H#`€N„€€ÿ.€€ €€€€‚ÿÿÿPackage com.sun.java.browser.dom&YÈ>îÈ># €€€‚ÿ²RÈÈ> É>`#€€„€€ÿ^€€€ï‡—YJdk14doc.4.hlp€!‰€€‚ÿÿÿClass com.sun.java.browser.dom.DOMAccessException implements Serializable&îÈ>ÆÉ># €€€‚ÿX É>Ê>B#T€,„€€ÿ"€€€€‚ÿÿÿSerialized FieldstÆÉ>’Ê>U z€>€€‚€€‚‚ïùۓYJdk14doc.2.hlp€‰€€€‚€‚ÿexThrowable ex*Ê>ŒÊ>' €€ ”€ ‚ÿs’Ê>/Ë>U z€<€€‚€‚€€‚‚ïÐۓYJdk14doc.2.hlp€‰€€€‚ÿmsgString msg·WŒÊ>æË>`#€®„€€ÿ^€€€ï@‡—YJdk14doc.4.hlp€!‰€€‚ÿÿÿClass com.sun.java.browser.dom.DOMUnsupportedException implements Serializable&/Ë> Ì># €€€‚ÿXæË>dÌ>B#T€,„€€ÿ"€€€€‚ÿÿÿSerialized Fieldst Ì>ØÌ>U z€>€€‚€€‚‚ïùۓYJdk14doc.2.hlp€‰€€€‚€‚ÿexThrowable ex*dÌ>Í>' €€ ”€ ‚ÿy ØÌ>{Í>Y ‚€@€€‚€‚€€‚‚ïÐۓYJdk14doc.2.hlp€‰€€€‚€‚ÿmsgString msg*Í>¥Í>' €€ ”€ ‚ÿ&{Í>ËÍ># €€€‚ÿb¥Í>-Î>H#`€4„€€ÿ.€€ €€€€‚ÿÿÿPackage org.w3c.dom&ËÍ>SÎ># €€€‚ÿŸ?-Î>òÎ>`#€~„€€ÿ^€€€ï{Ž—YJdk14doc.4.hlp€!‰€€‚ÿÿÿClass org.w3c.dom.DOMException implements Serializable&SÎ>Ï># €€€‚ÿXòÎ>pÏ>B#T€,„€€ÿ"€€€€‚ÿÿÿSerialized FieldsVÏ>ÆÏ>: D€8€€‚€€‚‚€€€‚€‚ÿcodeshort code*pÏ> ?' €€ ”€ ‚ÿÆÏ> ?'Ä>&ÆÏ>2?# €€€‚ÿi! ?›?H#`€B„€€ÿ.€€ €€€€‚ÿÿÿPackage org.w3c.dom.events&2?Á?# €€€‚ÿšH›?i?`#€„€€ÿ^€€€ï֎—YJdk14doc.4.hlp€!‰€€‚ÿÿÿClass org.w3c.dom.events.EventException implements Serializable&Á??# €€€‚ÿXi?ç?B#T€,„€€ÿ"€€€€‚ÿÿÿSerialized FieldsV?=?: D€8€€‚€€‚‚€€€‚€‚ÿcodeshort code*ç?g?' €€ ”€ ‚ÿ&=??# €€€‚ÿ³ng?@?E#Z‚Ü e^QPPyQP¶€€ÿ(€€çpœ—Y€‰€‚ÿ€ €‚ÿ€4€‚ÿ€D€‚ÿ(€P€眜—Y€‰€‚ÿL€f€ïF‡—YJdk14doc.4.hlp€‰€‚ÿL€ˆ€ïi‡—YJdk14doc.4.hlp€‰€‚ÿL€ €ïr‡—YJdk14doc.4.hlp€‰€‚ÿ€¶€ÿ€ž€€€‚ÿÿÿOverview Package Class Use Tree Deprecated Index Help Common DOM APIÙA??˜#‚€€ÿ€€€€‚ÿ €"€ï¿‡—YJdk14doc.4.hlp€‰€甜—Y€‰€ï‡—YJdk14doc.4.hlp€‰€‚ÿÿÿ PREV NEXTFRAMES NO FRAMES All Classes&@???# €€€‚ÿ*?i?' €€ ”€ ‚ÿfû??Ï?k €€÷€€‚Ì5EF("http://java.sun.com/cgi-bin/bugreport.cgi",`',1)€ ‰€‚‚‚€‚‚ÿSubmit a bug or featureJava is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.Copyright 2002 Sun Microsystems, Inc. 901 San Antonio RoadPalo Alto, California, 94303, U.S.A. All Rights Reserved.1i??1Uÿÿÿÿÿÿÿÿ ÿÿÿÿ?$?$Ï?$?" €€€ ÿJ?n?1m‚}€~ n?±? @?Java(TM) Plugin ComponentC$?±?& €:€€€‚ÿJava(TM) Plugin ComponentËCn?|?ˆ#à€ˆx††(€€€†"€‚ÿ€€ÿ € €‚€%€‚‚ÿ€J€‚ÿ(€N€çñ˜Y€ ‰€‚ÿÿÿThe Java Plug-in ComponentDocumentation Contents&±?¢?# €€€‚ÿÓ­|?u ?& €[€ä€‚‚ÿThe Java Plug-in component enables applets written to the Java 2 Platform 1.4 specification to be run in Netscape Navigator and Microsoft Internet Explorer web browsers.H!¢?œ ?' €B€€€‚‚ÿJava Plug-in Developer Guidesu ?À ? ð€æ€ä€ïˆ—YJdk14doc.4.hlp€‰€ÌCEF("ftp://ftp.java.sun.com/docs/j2se1.4/developer_guide.pdf",`',1)€&‰€‚‚ÿThe Java Plug-in Developer Guide (also available in PDF) provides documentation in the following areas:­hœ ?m ?E Z€Ð€ɀ€€‚€€‚€€‚€€‚€€‚‚ÿ· Java Plug-in Basics· Deployment Schemes· Security· Debugging Support· Advanced Topics:À ?§ ?' €&€€€‚‚ÿCommon DOM APIÏm ?¹ ?C T€Ÿ€ä€ï¿‡—YJdk14doc.4.hlp€‰€‚ÿApplet developers can use the Common DOM API when writing applets that are intended to be run with the Java Plug-in. The Common DOM API enables developers to traverse Document Object Models from within their applets. The Common DOM API is supported only by the Java Plug-in, and it will not work if used in conjunction with applications as opposed to applets, nor will it work in applets that aren't run in the environment provided by the 1.4 Java Plug-in.'§ ?à ?$ €€ä€‚ÿ&¹ ??# €€€‚ÿ*à ?0?' €€ ”€ ‚ÿ&?V?# €€€‚ÿs›0?É?Ø#~9€€‚çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€‚‚€Ì/EF("mailto:java-plugin-feedback@sun.com",`',1)€ ‰€‚ÿ€ ÿ6€ †"€€€'‚€‚ÿÿÿCopyright © 2002 Sun Microsystems, Inc. All Rights Reserved.Please send comments to: java-plugin-feedback@sun.com Java Software$V? @?" €€€ÿÉ? @?$?1É?=@?1Wÿÿÿÿÿÿÿÿ ÿÿÿÿ=@?a@?$ @?a@?" €€€ ÿ; =@?œ@?1à \~†~ œ@?Ð@?K?Reflection4a@?Ð@?& €€€€‚ÿReflection»3œ@?‹A?ˆ#à€hx††(€€€†"€‚ÿ€€ÿ € €‚€%€‚‚ÿ€*€‚ÿ(€.€çñ˜Y€ ‰€‚ÿÿÿReflectionDocumentation Contents&Ð@?±A?# €€€‚ÿ'‹A?ØC?' €€ä€‚‚‚ÿReflection enables Java code to discover information about the fields, methods and constructors of loaded classes, and to use reflected fields, methods, and constructors to operate on their underlying counterparts on objects, within security restrictions. The API accommodates applications that need access to either the public members of a target object (based on its runtime class) or the members declared by a given class.The Java 2 Platform allows programs to suppress default reflective access control.'±A?ÿC?$ €€ä€‚ÿCØC?BD?' €8€€€‚‚ÿPerformance EnhancementfÿC?EF? Í€ä€ïœÕ“YJdk14doc.2.hlp€‰€ïŠøÄvJdk14doc.2.hlp€‰€ï >¢±Jdk14doc.2.hlp€‰€ïšÜœJdk14doc.2.hlp€‰€‚ÿBeginning with J2SDK 1.4.0, certain reflective operations, specifically java.lang.reflect.Field, java.lang.reflect.Method.invoke(), java.lang.reflect.Constructor.newInstance(), and Class.newInstance(), have been rewritten for higher performance. Reflective invocations and instantiations are several times faster than in previous releases.'BD?lF?$ €€ä€‚ÿAEF?­F?' €4€€€‚‚ÿDynamic Proxy ClassesšflF?GG?4 8€Ì€ä€€痜—Y€‰€‚‚ÿ· Dyanmic Proxy Classes are supported by three classes and interfaces in the Java 2 Platform.?­F?†G?' €0€€€‚‚ÿReflection Overview„JGG? H?: D€”€ä€€çǜ—Y€‰€€(€‚‚ÿ· Reflection Overview 1.1 (Not Updated for the Java 2 Platform)Q*†G?[H?' €T€€€‚‚ÿSuppressing Reflective Access Controld0 H?¿H?4 8€`€ä€€瘜—Y€‰€‚‚ÿ· Suppressing Reflective Access ControlW,[H?I?+ &€X€€€‚€‚‚ÿReflection API Specification(javadoc)j$¿H?€I?F \€H€ä€€ïÄՓYJdk14doc.2.hlp€‰€‚‚ÿ· java.lang.reflect Package&I?ŠI?# €€€‚ÿ*€I?ÐI?' €€ ”€ ‚ÿ&ŠI?öI?# €€€‚ÿe™ÐI?[K?Ì#f5ÂÂ쀀çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€‚Ì.EF("mailto:reflection-comments@sun.com",`',1)€ ‰€‚ÿ€ÿ6€†"€€€'‚€‚ÿÿÿCopyright © 2002 Sun Microsystems, Inc. All Rights Reserved.Please send comments to: reflection-comments@eng.sun.com Java Software$öI?K?" €€€ÿ1[K?°K?1Uÿÿÿÿÿÿÿÿ ÿÿÿÿ°K?ÔK?$K?ÔK?" €€€ ÿF°K?L?15x€~‰‚L?YL?3 ADynamic Proxy Classes?ÔK?YL?& €2€€€‚ÿDynamic Proxy ClassesÆ>L?M?ˆ#à€~x††(€€€†"€‚ÿ€€ÿ € €‚€%€‚‚ÿ€@€‚ÿ(€D€çñ˜Y€ ‰€‚ÿÿÿDynamic Proxy ClassesDocumentation Contents:YL?YM?+ &€€€‚€ €‚‚ÿContentsHM?öM?U z€€äçÊô!r€‰€)ç P@ €‰€)çž¢{€‰€)ç¯)¥‘€‰€‚‚ÿIntroductionDynamic Proxy APISerializationExamples8YM?.N?' €"€€ €‚‚ÿIntroductionâöM?Y?= H€Å€ä€€(€€(€€€€€‚ÿA dynamic proxy class is a class that implements a list of interfaces specified at runtime such that a method invocation through one of the interfaces on an instance of the class will be encoded and dispatched to another object through a uniform interface. Thus, a dynamic proxy class can be used to create a type-safe proxy object for a list of interfaces without requiring pre-generation of the proxy.N?Y?ÔK? class, such as with compile-time tools. Method invocations on an instance of a dynamic proxy class are dispatched to a single method in the instance's invocation handler, and they are encoded with a java.lang.reflect.Method object identifying the method that was invoked and an array of type Object containing the arguments.â.N?gƒ?, &€Å€ä€‚€€‚ÿDynamic proxy classes are useful to an application or library that needs to provide type-safe reflective dispatch of invocations on objects that present interface APIs. For example, an application can use a dynamic proxy class to create an object that implements multiple arbitrary event listener interfaces-- interfaces that extend java.util.EventListener-- to process a variety of events of different types in a uniform fashion, such as by logging all such events to a file.'Y?Žƒ?$ €€ä€‚ÿCgƒ?у?' €8€€ €‚‚ÿDynamic Proxy Class API5ÆŽƒ?†?o ¬€€ä€€(€€(€‚‚€(€‚‚€(€€(€‚‚€€‚‚ïÇՓYJdk14doc.2.hlp€‰€‚ÿA dynamic proxy class (simply referred to as a proxy class below) is a class that implements a list of interfaces specified at runtime when the class is created.A proxy interface is such an interface that is implemented by a proxy class.A proxy instance is an instance of a proxy class.Creating a Proxy ClassProxy classes, as well as instances of them, are created using the static methods of the class java.lang.reflect.Proxy.2у?8ˆ?2 2€€ä€‚€€€€‚ÿThe Proxy.getProxyClass method returns the java.lang.Class object for a proxy class given a class loader and an array of interfaces. The proxy class will be defined in the specified class loader and will implement all of the supplied interfaces. If a proxy class for the same permutation of interfaces has already been defined in the class loader, then the existing proxy class will be returned; otherwise, a proxy class for those interfaces will be generated dynamically and defined in the class loader.Žb†?ƈ?, (€Ä€ä€‚€€‚‚ÿThere are several restrictions on the parameters that may be passed to Proxy.getProxyClass:'Ã8ˆ?íŠ?d –€‡€ɀ€€€€€€‚€€€€€€‚€€€€€€‚‚€€‚ÿ· All of the Class objects in the interfaces array must represent interfaces, not classes or primitive types.· No two elements in the interfaces array may refer to identical Class objects.· All of the interface types must be visible by name through the specified class loader. In other words, for class loader cl and every interface i, the following expression must be true: Class.forName(i.getName(), false, cl) == i}@ƈ?j?= H€€ɀ€€‚€€‚€€€€‚ÿ· All non-public interfaces must be in the same package; otherwise, it would not be possible for the proxy class to implement all of the interfaces, regardless of what package it is defined in.· No two interfaces may each have a method with the same name and parameter signature but different return type.· The resulting proxy class must not exceed any limits imposed on classes by the virtual machine. For example, the VM may limit the number of interfaces that a class may implement to 65535; in that case, the size of the interfaces array must not exceed 65535.(íŠ?’?% €€ɀ€‚ÿmj? Á?Q p€9€ä€€€€€€€€€€€‚‚çÌÀy뀉€‚ÿIf any of these restrictions are violated, Proxy.getProxyClass will throw an IllegalArgumentException. If the interfaces array argument or any of its elements are null, a NullPointerException will be thrown.Note that the order of the specified proxy interfaces is significant: two requests for a proxy class with the same combination of interfaces but in a different order will result in two distinct proxy classes. Proxy classes are distinguished by the order of their proxy interfaces in order to provide deterministic method ’? Á?ÔK?invocation encoding in cases where two or more of the proxy interfaces share a method with the same name and parameter signature; this reasoning is described in more detail in the section below titled Methods Duplicated in Multiple Proxy Interfaces.:’?EÃ?, &€€ä€‚€€‚ÿSo that a new proxy class does not need to be generated each time Proxy.getProxyClass is invoked with the same class loader and list of interfaces, the implementation of the dynamic proxy class API should keep a cache of generated proxy classes, keyed by their corresponding loaders and interface list. The implementation should be careful not to refer to the class loaders, interfaces, and proxy classes in such a way as to prevent class loaders, and all of their classes, from being garbage collected when appropriate.xJ Á?œÃ?. ,€”€ä€‚€€‚‚‚‚ÿProxy Class PropertiesA proxy class has the following properties:ƒEÃ?@Ç?i  €5€ɀ€€‚€€€€‚€€ïÇՓYJdk14doc.2.hlp€‰€‚€€‚€€‚ÿ· Proxy classes are public, final, and not abstract.· The unqualified name of a proxy class is unspecified. The space of class names that begin with the string "$Proxy" is, however, to be reserved for proxy classes.· A proxy class extends java.lang.reflect.Proxy.· A proxy class implements exactly the interfaces specified at its creation, in the same order.· If a proxy class implements a non-public interface, then it will be defined in the same package as that interface. Otherwise, the package of a proxy class is also unspecified. Note that package sealing will not prevent a proxy class from being successfully defined in a particular package at runtime, and neither will classes already defined in the same class loader and the same package with particular signers.ÍœÃ?ZÉ?M h€›€ɀ€€€€€€€€€€€€€€‚ÿ· Since a proxy class implements all of the interfaces specified at its creation, invoking getInterfaces on its Class object will return an array containing the same list of interfaces (in the order specified at its creation), invoking getMethods on its Class object will return an array of Method objects that include all of the methods in those interfaces, and invoking getMethod will find methods in the proxy interfaces as would be expected.3Ù@Ç?Ì?Z ‚€³€ɀ€€€€€€€€€€‚€€€€€€€€‚ÿ· The Proxy.isProxyClass method will return true if it is passed a proxy class-- a class returned by Proxy.getProxyClass or the class of an object returned by Proxy.newProxyInstance-- and false otherwise. The reliability of this method is important for the ability to use it to make security decisions, so its implementation should not just test if the class in question extends java.lang.reflect.Proxy.· The java.security.ProtectionDomain of a proxy class is the same as that of system classes loaded by the bootstrap class loader, such as java.lang.Object, because the code for a proxy class is generated by trusted system code. This protection domain will typically be granted java.security.AllPermission.(ZÉ?µÌ?% €€ɀ€‚ÿšÌ?ºÏ?k €€5€ä€€‚‚€ïÈՓYJdk14doc.2.hlp€‰€‚‚€€€€€€€€€€‚ÿCreating a Proxy InstanceEach proxy class has one public constructor that takes one argument, an implementation of the interface InvocationHandler.Each proxy instance has an associated invocation handler object, the one that was passed to its constructor. Rather than having to use the reflection API to access the public constructor, a proxy instance can be also be created by calling the Proxy.newProxyInstance method, which combines the actions of calling Proxy.getProxyClass with invoking the constructor with an invocation handler. Proxy.newProxyInstance throws IllegalArgumentException for the same reasons that Proxy.getProxyClass does.~PµÌ?D@. ,€ €ä€‚€€‚‚‚‚ÿProxy Instance ProperºÏ?D@ÔK?tiesA proxy instance has the following properties:ž7ºÏ?â@g œ€o€ɀ€€€€€€‚‚€€‚€€‚‚€€‚€€€€€€€€‚ÿ· Given a proxy instance proxy and one of the interfaces implemented by its proxy class Foo, the following expression will return true: proxy instanceof Fooand the following cast operation will succeed (rather than throwing a ClassCastException): (Foo) proxy· The static Proxy.getInvocationHandler method will return the invocation handler associated with the proxy instance passed as its argument. If the object passed to Proxy.getInvocationHandler is not a proxy instance, then an IllegalArgumentException will be thrown.ŒgD@ž@U x€Ï€ɀ€‚€€€€‚‚€€€€‚‚€€€€€€‚ÿ· An interface method invocation on a proxy instance will be encoded and dispatched to the invocation handler's invoke method as described below.The proxy instance itself will be passed as the first argument of invoke, which is of type Object.The second argument passed to invoke will be the java.lang.reflect.Method instance corresponding to the interface method invoked on the proxy instance. The declaring class of the Method object will be the interface that the method was declared in, which may be a superinterface of the proxy interface that the proxy class inherits the method through.ßtâ@} @k €€é€ɀ€‚€€€€€€€€‚‚€€€€€€€€€€€€€€‚ÿThe third argument passed to invoke will be an array of objects containing the values of the arguments passed in the method invocation on the proxy instance. Arguments of primitive types are wrapped in an instance of the appropriate primitive wrapper class, such as java.lang.Integer or java.lang.Boolean. The implementation of the invoke method is free to modify the contents of this array.The value returned by the invoke method will become the return value of the method invocation on the proxy instance. If the declared return value of the interface method is a primitive type, then the value returned by invoke must be an instance of the corresponding primitive wrapper class; otherwise, it must be a type assignable to the declared return type. If the value returned by invoke is null and the interface method's return type is primitive, then a NullPointerException will be thrown by the method invocation on the proxy instance. If the value returned by invoke is otherwise not compatible with the method's declared return type as described above, a ClassCastException will be thrown by the proxy instance.:Èž@· @r ²€‘€ɀ€‚€€€€€€€€€€€ï#ݓYJdk14doc.2.hlp€‰€€€€€‚ÿIf an exception is thrown by the invoke method, it will be also thrown by the method invocation on the proxy instance. The exception's type must be assignable to either any of the exception types declared in the signature of the interface method or to the unchecked exception types java.lang.RuntimeException or java.lang.Error. If a checked exception is thrown by invoke that is not assignable to any of the exception types declared in the throws clause of the interface method, then an UndeclaredThrowableException will be thrown by the method invocation on the proxy instance. The UndeclaredThrowableException will be constructed with the exception that was thrown by the invoke method.µL} @x@@i  €™€ɀ€‚€€€€€€€€€€€€€€€€€€€€€€‚ÿ· An invocation of the hashCode, equals, or toString methods declared in java.lang.Object on a proxy instance will be encoded and dispatched to the invocation handler's invoke method in the same manner as interface method invocations are encoded and dispatched, as described above. The declaring class of the Method object passed to invoke will be java.lang.Object. Other public methods of a proxy instance inherited from java.lang.Object are not overridden · @x@@ÔK?by a proxy class, so invocations of those methods behave like they do for instances of java.lang.Object.(· @ @@% €€ɀ€‚ÿIx@@éD@B R€€ä€€‚‚€(€€€€€€€‚ÿMethods Duplicated in Multiple Proxy InterfacesWhen two or more interfaces of a proxy class contain a method with the same name and parameter signature, the order of the proxy class's interfaces becomes significant. When such a duplicate method is invoked on a proxy instance, the Method object passed to the invocation handler will not necessarily be the one whose declaring class is assignable from the reference type of the interface that the proxy's method was invoked through. This limitation exists because the corresponding method implementation in the generated proxy class cannot determine which interface it was invoked through. Therefore, when a duplicate method is invoked on a proxy instance, the Method object for the method in the foremost interface that contains the method (either directly or inherited through a superinterface) in the proxy class's list of interfaces is passed to the invocation handler's invoke method, regardless of the reference type through which the method invocation occurred.V @@?G@V z€€ä€‚€€€€€€€€€€€€€€€€‚ÿIf a proxy interface contains a method with the same name and parameter signature as the hashCode, equals, or toString methods of java.lang.Object, when such a method is invoked on a proxy instance, the Method object passed to the invocation handler will have java.lang.Object as its declaring class. In other words, the public, non-final methods of java.lang.Object logically precede all of the proxy interfaces for the determination of which Method object to pass to the invocation handler.ƒ'éD@ÂJ@\ †€O€ä€‚€€€€€(€€€€€€€€€€€€€‚ÿNote also that when a duplicate method is dispatched to an invocation handler, the invoke method may only throw checked exception types that are assignable to one of the exception types in the throws clause of the method in all of the proxy interfaces that it can be invoked through. If the invoke method throws a checked exception that is not assignable to any of the exception types declared by the method in one of the the proxy interfaces that it can be invoked through, then an unchecked UndeclaredThrowableException will be thrown by the invocation on the proxy instance. This restriction means that not all of the exception types returned by invoking getExceptionTypes on the Method object passed to the invoke method can necessarily be thrown successfully by the invoke method.'?G@éJ@$ €€ä€‚ÿ9ÂJ@"K@' €$€€ €‚‚ÿSerialization"éJ@±N@m š€E€ä€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿSince java.lang.reflect.Proxy implements java.io.Serializable, proxy instances can be serialized, as described in this section. If a proxy instance contains an invocation handler that is not assignable to java.io.Serializable, however, then a java.io.NotSerializableException will be thrown if such an instance is written to a java.io.ObjectOutputStream. Note that for proxy classes, implementing java.io.Externalizable has the same effect with respect to serialization as implementing java.io.Serializable: the writeExternal and readExternal methods of the Externalizable interface will never be invoked on a proxy instance (or an invocation handler) as part of its serialization process. As with all Class objects, the Class object for a proxy class is always serializable.j"K@'€@K d€?€ä€‚€€€€€€€€€€€€‚‚ÿA proxy class has no serializable fields and a serialVersionUID of 0L. In other words, when the Class object for a proxy class is passed to the static lookup method of java.io.ObjectStreamClass, the returned ObjectStreamClass instance will have t±N@'€@ÔK?he following properties:9ݱN@`@\ †€»€ɀ€€€€€€‚€€€€‚€€€€€€€€‚‚ÿ· Invoking its getSerialVersionUID method will return 0L.· Invoking its getFields method will return an array of length zero.· Invoking its getField method with any String argument will return null. Ê'€@kƒ@A P€•€ä€€€€€‚‚€€‚€(€‚ÿThe stream protocol for Object Serialization supports a type code named TC_PROXYCLASSDESC, which is a terminal symbol in the grammar for the stream format; its type and value are defined by the following constant field in the java.io.ObjectStreamConstants interface: final static byte TC_PROXYCLASSDESC = (byte)0x7D;The grammar also includes the following two rules, the first being an alternate expansion of the original newClassDesc rule:K`@ˆ@Ë d—€ä€‚€(€‚€€€(€€(€‚‚€(€‚€€€(€€(€€(€‚‚€(€‚€€‚‚€€€€€€€€€€€(€€(€€€€€€(€€(€€(€€(€€€€€‚ÿnewClassDesc: TC_PROXYCLASSDESC newHandle proxyClassDescInfoproxyClassDescInfo: (int) proxyInterfaceName[count] classAnnotation superClassDescproxyInterfaceName: (utf)When an ObjectOutputStream serializes the class descriptor for a class that is a proxy class, as determined by passing its Class object to the Proxy.isProxyClass method, it uses the TC_PROXYCLASSDESC type code instead of TC_CLASSDESC, following the rules above. In the expansion of proxyClassDescInfo, the sequence of proxyInterfaceName items are the names of all of the interfaces implemented by the proxy class, in the order that they are returned by invoking the getInterfaces method on the Class object. The classAnnotation and superClassDesc items have the same meaning as they do in the classDescInfo rule. For a proxy class, superClassDesc is the class descriptor for its superclass, java.lang.reflect.Proxy; including this descriptor allows for the evolution of the serialized representation of the class Proxy for proxy instances.?åkƒ@ÀŠ@Z ‚€Ë€ä€‚€€€€€€€€€€‚‚€€‚€€€€‚ÿFor non-proxy classes, ObjectOutputStream calls its protected annotateClass method to allow subclasses to write custom data to the stream for a particular class. For proxy classes, instead of annotateClass, the following method in java.io.ObjectOutputStream is called with the Class object for the proxy class: protected void annotateProxyClass(Class cl) throws IOException;The default implementation of annotateProxyClass in ObjectOutputStream does nothing.ʁˆ@،@N j€•€ä€‚€€€€€€€€€€‚‚€€‚ÿWhen an ObjectInputStream encounters the type code TC_PROXYCLASSDESC, it deserializes the class descriptor for a proxy class from the stream, formatted as described above. Instead of calling its resolveClass method to resolve the Class object for the class descriptor, the following method in java.io.ObjectInputStream is called: protected Class resolveProxyClass(String[] interfaces) throws IOException, ClassNotFoundException;¿ÀŠ@ôŽ@] ˆ€€ä€€€€€‚‚€€€€€€€€€€€€€€‚ÿThe list of interface names that were deserialized in the proxy class descriptor are passed as the interfaces argument to resolveProxyClass.The default implementation of resolveProxyClass in ObjectInputStream returns the results of calling Proxy.getProxyClass with the list of Class objects for the interfaces named in the interfaces parameter. The Class object used for each interface name i is the value retuned by callingp،@pÁ@j ¢€ €ä€‚€€‚€€€€€€€€€€€€€€€€€€€€‚ÿ Class.forName(i, false, loader)where loader is the first non-null class loader up the execution stack, or null if no non-null class loaders are ôŽ@pÁ@ÔK?on the stack. This is the same class loader choice made by the default behavior of the resolveClass method. This same value of loader is also the class loader passed to Proxy.getProxyClass. If Proxy.getProxyClass throws an IllegalArgumentException, resolveClass will throw a ClassNotFoundException containing the IllegalArgumentException.|=ôŽ@ìÂ@? L€{€ä€‚€(€€€€€€€‚‚ÿSince a proxy class never has its own serializable fields, the classdata[] in the stream representation of a proxy instance consists wholly of the instance data for its superclass, java.lang.reflect.Proxy. Proxy has one serializable field, h, which contains the invocation handler for the proxy instance.4 pÁ@ Ã@' €€€ €‚‚ÿExamplesŸMìÂ@¿È@R r€› €ä€‚‚€€‚ÿHere is a simple example that prints out a message before and after a method invocation on an object that implements an arbitrary list of interfaces:public interface Foo { Object bar(Object obj) throws BazException;}public class FooImpl implements Foo { Object bar(Object obj) throws BazException { // ... }}public class DebugProxy implements java.lang.reflect.InvocationHandler { private Object obj; public static Object newInstance(Object obj) { return java.lang.reflect.Proxy.newProxyInstance( obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), new DebugProxy(obj)); } private DebugProxy(Object obj) { this.obj = obj; } public Object invoke(Object proxy, Method m, Object[] args) throws Throwable { Object result; try { System.out.println("before method " + m.getName()); result = m.invoke(obj, args); } catch (InvocationTargetException e) { throw e.getTargetException(); } catch (Exception e) { throw new RuntimeException("unexpected invocation exception: " + e.getMessage()); } finally { System.out.println("after method " + m.getName()); } return result; }} Ê Ã@ËÊ@B R€•€ä€€€€€‚‚€€‚€€‚ÿTo construct a DebugProxy for an implementation of the Foo interface and call one of its methods: Foo foo = (Foo) DebugProxy.newInstance(new FooImpl()); foo.bar(null);Here is an example of a utility invocation handler class that provides default proxy behavior for methods inherited from java.lang.Object and implements delegation of certain proxy method invocations to distinct objects depending on the interface of the invoked method:É Z ¿È@ Ao ¬€µ€ä€‚€€‚ÿimport java.lang.reflect.*;public class Delegator implements InvocationHandler { // preloaded Method objects for the methods in java.lang.Object private static Method hashCodeMethod; private static Method equalsMethod; private static Method toStringMethod; static { try { hashCodeMethod = Object.class.getMethod("hashCode", null); equalsMethod = Object.class.getMethod("equals", new Class[] { Object.class }); toStringMethod = Object.class.getMethod("toString", null); } catch (NoSuchMethodException e) { throw new NoSuchMethodError(e.getMessage()); } } private Class[] interfaces; private Object[] delegates; public Delegator(Class[] interfaces, Object[] delegates) { this.interfaces = (Class[]) interfaces.clone(); this.delegates = (Object[]) delegates.clone(); } public Object invoke(Object proxy, Method m, Object[] args) throws Throwable { Class declaringClass = m.getDeclaringClass(); if (declaringClass == Object.class) { if (m.equals(hashCodeMethod)) { return proxyHashCode(proxy); } else if (mËÊ@ AÔK?.equals(equalsMethod)) { return proxyEquals(proxy, args[0]); } else if (m.equals(toStringMethod)) { return proxyToString(proxy); } else { throw new InternalError( "unexpected Object method dispatched: " + m); } } else { for (int i = 0; i < interfaces.length; i++) { if (declaringClass.isAssignableFrom(interfaces[i])) { try { return m.invoke(delegates[i], args); } catch (InvocationTargetException e) { throw e.getTargetException(); } } } return invokeNotDelegated(proxy, m, args); } } protected Object invokeNotDelegated(Object proxy, Method m, Object[] args) throws Throwable { throw new InternalError("unexpected method dispatched: " + m); } protected Integer proxyHashCode(Object proxy) { return new Integer(System.identityHashCode(proxy)); } protected Boolean proxyEquals(Object proxy, Object other) { return (proxy == other ? Boolean.TRUE : Boolean.FALSE); } protected String proxyToString(Object proxy) { return proxy.getClass().getName() + '@' + Integer.toHexString(proxy.hashCode()); }}ÜyËÊ@|Ac ”€ó€ä€€€€€€€€€€€€€‚‚€€€€‚‚€€‚ÿSubclasses of Delegator can override invokeNotDelegated to implement the behavior of proxy method invocations not to be directly delegated to other objects, and they can override proxyHashCode, proxyEquals, and proxyToString to override the default behavior of the methods the proxy inherits from java.lang.Object.To construct a Delegator for an implementation of the Foo interface: Class[] proxyInterfaces = new Class[] { Foo.class }; Foo foo = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(), proxyInterfaces, new Delegator(proxyInterfaces, new Object[] { new FooImpl() }));µk A1 AJ b€×€ä€€€€€€€€€€€€€‚‚ÿNote that the implementation of the Delegator class given above is intended to be more illustrative than optimized; for example, instead of caching and comparing the Method objects for the hashCode, equals, and toString methods, it could just match them by their string names, because none of those method names are overloaded in java.lang.Object.&|AW A# €€€‚ÿ*1 A A' €€ ”€ ‚ÿ&W A§ A# €€€‚ÿf– A AÐ#n/ÂÂô€€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€‚Ì2EF("mailto:reflection-comments@eng.sun.com",`',1)€ ‰€‚ÿ€ÿ6€†"€€€'‚€‚ÿÿÿCopyright © 1999 Sun Microsystems, Inc. All Rights Reserved.Please send comments to: reflect ion-comments@sun.com Java Software&§ A3 A# €€€‚ÿ1 Ad A1Uÿÿÿÿÿÿÿÿÿÿÿÿd Aˆ A$3 Aˆ A" €€€ ÿV%d AÞ A1«†~sƒÞ A- AF…ASuppressing Reflective Access ControlO)ˆ A- A& €R€€€‚ÿSuppressing Reflective Access Controlv Þ A£ AV#|€Bx (€€€†"€‚ÿ(€€çñ˜Y€ ‰€‚ÿÿÿDocumentation Contents—h- AF@A/ ,€Ñ€€€(€‚‚€‚ÿCertain sophisticated clients of the Java Core Reflection API require a means to suppress default Java language access control checks when using reflected members and constructors. These checks--for public, default (package) access, protected, and private members--are performed when Fields, Methods or Constructors are used to set or get fields, to invoke methods, or to create new instances of classes, respectively.Examples of such clients are the Java Object Serialization service, development tools such as object inspectors and debuggers, and othe£ AF@Aˆ Ar applications such as database persistence mechanisms.±†£ A÷BA+ $€ €€€‚‚‚‚‚ÿSOLUTIONIn Java 1.2, a Field, Method or Constructor object may be explicitly flagged as suppressing default Java language access control. When the reflective object is used, this flag--a new instance field--is consulted as part of access checking. If the flag is true, access checks are disabled and the requested operation proceeds; otherwise, normal access checks are performed as in Java 1.1. The flag is false by default in a reflected member or constructor.The act of setting the flag is security-checked using the new Java 1.2 security mechanisms. A client's calling context must have sufficient privilege to perform this operation.òœF@AéDA5 8€{€€‚€‚€‚‚€€‚ÿThus, in Java 1.2 each concrete reflected class (Field, Method and Constructor) extends a new base class, AccessibleObject, defined below. This class provides the necessary state and methods to set and get an "accessible" flag for a reflected object. A new ReflectPermission class, also defined below, provides the ability to grant the necessary permission via the security policy file.PROGRAMMING INTERFACEpackage java.lang.reflect;¶,÷BA«ƒAŠ â€Y€ä€€‚ÿ/** * The AccessibleObject class is the base class for Field, Method and * Constructor objects. It provides the ability to flag a reflected * object as suppressing default Java language access control checks * when it is used. The access checks--for public, default (package) * access, protected, and private members--are performed when Fields, * Methods or Constructors are used to set or get fields, to invoke * methods, or to create and initialize new instances of classes, * respectively. * *

Setting the accessible flag in a reflected object * permits sophisticated applications with sufficient privilege, such * as Java Object Serialization or other persistence mechanisms, to * manipulate objects in a manner that would normally be prohibited. * * @see Field * @see Method * @see Constructor * @see ReflectPermission * * @since JDK1.2 */publicclass AccessibleObject { /** * Convenience method to set the accessible flag for an * array of objects with a single security check (for efficiency). * * @param array the array of AccessibleObjects * @param flag the new value for the accessible flag in each object * @throws SecurityException if the request is denied */ public static void setAccessible(AccessibleObject[] array, boolean flag) throws SecurityException; /** * Set the accessible flag for this object to * the indicated boolean value. A value of true indicates that * the reflected object should suppress Java language access * checking when it is used. A value of false indicates * that the reflected object should enforce Java language access checks. * * @param flag the new value for the accessible flag * @throws SecurityException if the request is denied */ public void setAccessible(boolean flag) throws SecurityException; /** * Get the value of the accessible flag for this object. */ public boolean isAccessible(); /** * Constructor: only used by the Java Virtual Machine. */ protected AccessibleObject();}package java.lang.reflect;/** * The Permission class for reflective operations. A * ReflectPermission is a named permission and has no * actions. The only name currently defined is access, * which allows suppressing the standard Java language access checks * --for public, default (package) access, protected, and private * members--performed by reflected objects at their point of use. * *

An example of permitting the identity "Duke" to suppress the * language access checking for reflected éDA«ƒAˆ Amembers might be: * * grant signedBy "Duke" { * java.lang.reflect.ReflectPermission "access"; * } * * * @see java.security.Permission * @see java.security.BasicPermission * @see AccessibleObject * @see Field#get * @see Field#set * @see Method#invoke * @see Constructor#newInstance * * @since JDK1.2 */public finalclass ReflectPermission extends java.security.BasicPermission { /** * Constructs a ReflectPermission with the specified name. * * @param name the name of the ReflectPermission */ public ReflectPermission(String name); /** * Constructs a ReflectPermission with the specified name and actions. * The actions should be null; they are ignored. * * @param name the name of the ReflectPermission * @param actions should be null. */ public ReflectPermission(String name, String actions);}&éDAуA# €€€‚ÿ*«ƒAûƒA' €€ ”€ ‚ÿ&уA!„A# €€€‚ÿÿdûƒA …A›#ÊÂÂŒ€€€‚çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€‚‚‚ÿ€œ€ÿ6€ž€†"€€€'‚€‚ÿÿÿCopyright © 1995-97 Sun Microsystems, Inc. All Rights Reserved. Java Software&!„AF…A# €€€‚ÿ1 …Aw…A1Uÿÿÿÿÿÿÿÿÿÿÿÿw…A›…A$F…A›…A" €€€ ÿS"w…Aî…A1 ‰‚€ƒî…A:†AÀAjava-reflection-copyright.doc.htmlL&›…A:†A& €L€€€‚ÿjava-reflection-copyright.doc.html±=î…Aë†At#ž€zÂÂX€€çǜ—Y€ ‰€çǜ—Y€ ‰€皜—Y€ ‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿContents | Prev | NextJava Core Reflection&:†A‡A# €€€‚ÿ*ë†A;‡A' €€ ”€ ‚ÿÓ‡A>‰A0 .€§€€‚€‚‚‚‚‚‚‚‚‚ÿCopyright Information© 1996, 1997, 1998 Sun Microsystems, Inc. All rights reserved.2550 Garcia Avenue, Mountain View, California 94043-1100 U.S.A.This document is protected by copyright. No part of this document may be reproduced in any form by any means without prior written authorization of Sun and its licensors, if any.The information described in this document may be protected by one or more U.S. patents, foreign patents, or pending applications.ä;‡AP‹A. *€É€€‚€€‚‚‚‚ÿTRADEMARKSSun, Sun Microsystems, Sun Microelectronics, the Sun Logo, SunXTL, JavaSoft, JavaOS, the JavaSoft Logo, Java, HotJava, JavaChips, picoJava, microJava, UltraJava, JDBC, the Java Cup and Steam Logo, "Write Once, Run Anywhere" and Solaris are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.UNIX is a registered trademark in the United States and other countries, exclusively licensed through X/Open Company, Ltd.D>‰A”ŽA0 .€)€€‚€€‚‚‚‚‚‚ÿAdobe is a registered trademark of Adobe Systems, Inc.Netscape NavigatorTM is a trademark of Netscape Communications Corporation.All other product names mentioned herein are the trademarks of their respective owners.THIS DOCUMENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.THIS DOCUMENT COULD INCLUDE TECHNICAL INACCURACIES OR TYPOGRAPHICAL ERRORS. CHANGES ARE PERIODICALLY ADDED TO THE INFORMATION HEREIN; THESE CHANGES WILL BE INCORPORATED IN NEW EDITIONS OF THE DOCUMENT. SUN MICROSYSTEMS, INC. MAY MAKE IMPROVEMENTS AND/OR CHANGES IN THE PRODUCT(S) AND/OR THE PROGRAM(S) DESCRIBED IN THIS DOCUMENT AT ANY TIME.,P‹AÀŽA' € €€‚€‚ÿ*”ŽAêŽA' €€ ”€ ‚ÿt(ÀŽA^AL h€P€€‚çǜ—Y€ ‰€çǜ—Y€ ‰€皜—Y€ ‰€‚€‚ÿContents | Prev | Next*êŽAˆA' €€ ”€ ‚ÿ†R^AÀA4 8€€€€‚癜—Y€*‰€+€‚‚ÿCopyright © 1996, 1997, 1998 Sun Microsystems, Inc. All rightsˆAÀA›…A reserved.1ˆAKÀA1UÿÿÿÿÿÿÿÿÿÿÿÿKÀAoÀA$ÀAoÀA" €€€ ÿEKÀAŽÀA15Osƒë‡…ŽÀAòÀASÍBJava Core Reflection>oÀAòÀA& €0€€€‚ÿJava Core Reflection±=ŽÀA£ÁAt#ž€zÂÂX€€çǜ—Y€ ‰€çǜ—Y€ ‰€盜—Y€ ‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿContents | Prev | NextJava Core Reflection&òÀAÉÁA# €€€‚ÿ*£ÁAóÁA' €€ ”€ ‚ÿ2úÉÁA%ÃA8 >€õ€€‚€‚€%€‚‚€€‚‚ÿOverviewThe Java(TM) Core Reflection API provides a small, type-safe, and secure API that supports introspection about the classes and objects in the current Java Virtual Machine*. If permitted by security policy, the API can be used to:øºóÁAÄA> J€u€ä€€‚€€‚€€‚€€‚‚ÿ· construct new class instances and new arrays· access and modify fields of objects and classes· invoke methods on objects and classes· access and modify elements of arrayshD%ÃA…ÄA$ €ˆ€€‚‚ÿThe Core Reflection API defines classes and methods, as follows:ƋÄAKÅA; D€€ä€€€€€€€€‚‚ÿ· Three classes-Field, Method, and Constructor-that reflect class and interface members and constructors. These classes provide:˚…ÄAÆA1 0€5€ɀ€€‚€€‚‚ÿ· reflective information about the underlying member or constructor· a type-safe means to use the member or constructor to operate on Java objects)ÂKÅA?ÈAg œ€…€ä€€€€€€€€€€‚€€€€‚€€€€‚€€€€‚ÿ· Methods of class Class that provide for the construction of new instances of the Field, Method, and Constructor classes.· The class Array provides methods to dynamically construct and access Java arrays.· The utility class Modifier helps decode Java language modifier information about classes and their members.· The class InvocationTargetException is used to wrap exceptions thrown by reflected methods or constructors.Ÿ‰ÆAýÈA5 8€€ä€€€€€€‚‚ÿ· Two classes-AccessibleObject and ReflectPermission-that provide a mechanism to suppress standard Java language access control.†\?ÈAƒÉA* $€ž€€€€‚‚ÿThere are also some parts of the java.lang package that support reflection. These are:ÎPýÈAQËA~ ʀ¡€ä€€€€€€€€€€€€€€€€€€€€€€‚€€€€€€€€‚‚ÿ· Static fields that hold instances of the class Class. These represent the primitive Java types boolean, byte, char, short, int, long, float, and double, and the keyword void, at run-time.· An uninstantiable placeholder class-Void-to hold a reference to the Class object representing the keyword void.=žƒÉAŽÎA… ؀q€€€‚‚‚‚€€€€€(€皜—Y€‰€€€€€€€€€€€€€€€€€€€€€‚ÿApplicationsThe Core Reflection API accommodates two categories of applications.One category is comprised of applications that need to discover and use all of the public members of a target object based on its run-time class. These applications require run-time access to all the public fields, methods, and constructors of an object. Examples in this category are services such as Java(TM) Beans[1], and lightweight tools, such as object inspectors. These applications use the instances of the classes Field, Method, and Constructor obtained through the methods getField, getMethod, getConstructor, getFields, getMethods, and getConstructors of class Class.,³QËAÆBy À€g€€‚€€€(€皜—Y€‰€€€€€€€€€€€€€€€€€€€€€‚ÿThe second category consists of sophisticated applications that need to discover and use the members declared by a given class. These applications need run-time access to the implementation of a class at the level provided by a class file. ExampŽÎAÆBoÀAles in this category are development tools, such as interpreters, inspectors, and class browsers, and run-time services, such as Java(TM) Object Serialization[2]. These applications use instances of the classes Field, Method, and Constructor obtained through the methods getDeclaredField, getDeclaredMethod, getDeclaredConstructor, getDeclaredFields, getDeclaredMethods, and getDeclaredConstructors of class Class.,ŽÎAòB' € €€‚€‚ÿ*ÆBB' €€ ”€ ‚ÿ7íòBSBJ b€Û€€‚€‚€ €‚‚€€€€€€€€‚‚ÿReflection ModelThe three classes Field, Method, and Constructor are final. Only the Java Virtual Machine may create instances of these classes; these objects are used to manipulate the underlying objects; that is, to:ô¶BGB> J€m€ä€€‚€€‚€€‚€€‚‚ÿ· get reflective information about the underlying member or constructor· get and set field values· invoke methods on objects or classes· create new instances of classesŸHSBBv º€‘€€€€€€€€‚‚€€‚‚€€€€€€€€€€€€€€€€€€‚ÿThe final uninstantiable class Array provides static methods that permit creating new arrays, and getting and setting the elements of arrays.Member InterfaceThe classes Field, Method and Constructor implement the Member interface. The methods of Member are used to query a reflected member for basic identifying information. Identifying information consists of the class or interface that declared the member, the name of the member itself, and the Java language modifiers (such as public, protected, abstract, synchronized, and so on) for the member.?äGBD B[ „€É€€‚€€‚‚€€€€€€€€‚‚€€‚‚€€€€‚ÿField ObjectsA Field object represents a reflected field. The underlying field may be a class variable (a static field) or an instance variable (a non-static field). Methods of class Field are used to obtain the type of the underlying field, and to get and set the underlying field's value on objects.Method ObjectsA Method object represents a reflected method. The underlying method may be an abstract method, an instance method, or a class (static) method.å®B) B7 <€]€€‚€€€€€€‚ÿMethods of class Method are used to obtain the formal parameter types, the return type, and the checked exception types of the underlying method. In addition, the invoke method of class Method is used to invoke the underlying method on target objects. Instance and abstract method invocation uses dynamic method resolution based on the target object's run-time class and the reflected method's declaring class, name, and formal parameter types. (Thus, it is permissible to invoke a reflected interface method on an object that is an instance of a class that implements the interface.) Static method invocation uses the underlying static method of the method's declaring class. ŒD B2BM h€y€€‚€€‚‚€€€€€€€€‚‚€€‚ÿConstructor ObjectsA Constructor object represents a reflected constructor. Methods of class Constructor are used to obtain the formal parameter types and the checked exception types of the underlying constructor. In addition, the newInstance method of class Constructor is used to create and initialize a new instance of the class that declares the constructor, provided the class is instantiable.Array and Modifier Classes$å) Bb@B? L€Ë€€‚€€€€‚‚€€€(€‚ÿThe Array class is an uninstantiable class that exports class methods to create Java arrays with primitive or class component types. Methods of class Array are also used to get and set array component values.The Modifier class is an uninstantiable class that exports class methods to decode Java language modifiers for classes and members. The language modifiers are encoded in an integer,2Bb@BoÀA and use the encoding constants defined by The Java Virtual Machine Specification.j$2BÌABF Z€I€€‚€€‚‚€€€€€€€(€‚‚ÿRepresentation of Primitive Java TypesFinally, there are nine Class objects that are used to represent the eight primitive Java types and void at run-time. (Note that these are Class objects, not classes.) The Core Reflection API uses these objects to identify the following:©sb@BuBB6 <€æ€ä€€‚€€‚€€‚‚ÿ· primitive field types· primitive method and constructor parameter types· primitive method return types;çÌAB°DBT v€Ï€€€€€€€€€€€€‚‚€€‚ÿThe Java Virtual Machine creates these nine Class objects. They have the same names as the types that they represent. The Class objects may only be referenced via the following public final static variables: java.lang.Boolean.TYPE java.lang.Character.TYPE java.lang.Byte.TYPE java.lang.Short.TYPE java.lang.Integer.TYPE java.lang.Long.TYPE java.lang.Float.TYPE java.lang.Double.TYPE java.lang.Void.TYPE¢huBBREB: D€Ð€€€€€€€€‚‚€‚ÿIn particular, these Class objects are not accessible via the forName method of class Class.*°DB|EB' €€ ”€ ‚ÿõÃREBqFB2 2€‡€€‚€‚€ €‚‚‚‚ÿSecurity ModelThe Java security manager controls access to the Core Reflection API on a class-by-class basis. There are two levels of checks to enforce security and safety, as follows:ÊS|EB;KBw Œ€§€ä€€€€€€€€€€€€‚€€€€€€€€€€€€€€€€‚ÿ· The methods of class Class that give reflective access to a member or a set of members of a class are the only source for instances of Field, Method, and Constructor. These methods first delegate security checking to the system security manager (if installed), which throws a SecurityException should the request for reflective access be denied.· Once the system security manager grants initial reflective access to a member, any code may query the reflected member for its identifying information. However, standard Java language access control checks-for protected, default (package) access, and private classes and members-will normally occur when the individual reflected members are used to operate on the underlying members of objects,that is, to get or set field values, to invoke methods, or to create and initialize new objects. Unrestricted access, which overrides standard language access control rules, may be granted to privileged code using the setAccessible method. This method is inherited from AccessibleObject by the classes Field, Method, and Constructor.'qFBbKB$ €€ä€‚ÿƒY;KBåKB* $€²€€€€‚‚ÿThe initial policy decision is centralized in two methods of class SecurityManager:±`bKB–MBQ p€Á€ä€€‚‚€€€€€€€€€€‚‚€€‚‚ÿvoid checkMemberAccess(Class,int) throws SecurityExceptionThe Class parameter of checkMemberAccess identifies the class or interface whose members need to be accessed. The int parameter identifies the set of members to be accessed-either Member.PUBLIC or Member.DECLARED.void checkPackageAccess(String pkg) throws SecurityExceptionàµåKBvNB+ $€k€€€€‚‚ÿThe policy is determined based on what permissions are granted to the caller. There are two actions of class java.lang.RuntimePermission that affect these policies. These are:,ü–MB¢OB0 .€ù€ä€€‚€€‚‚ÿ· accessDeclaredMembers. This grants the ability to reflect on non-public members of classes.· accessClassInPackage{package name}. This grants access to classes in the specified package. These permissions are determined by the security manager.µˆvNBcB- (€€€€€‚‚‚‚ÿIf the requested access to the specified set of ¢OBcBoÀAmembers of the specified class is denied, the method should throw a SecurityException. If the requested access to the set is granted, the method should return.As stated earler, standard Java language access control will usually be enforced when a reflected member from this set is used to operate on an underlying object, that is, when:ö­¢OBY‚BI `€[€ä€€€€‚€€€€‚€€€€‚‚ÿ· a Field is used to get or set a field value· a Method is used to invoke a method· a Constructor is used to create and initialize a new instance of a classåŸcB>…BF Z€?€€€€€€‚‚€€‚‚€€€(€‚ÿIf access is denied at that point, the reflected member will throw an IllegalAccessException. Java language access control may be suppressed for a particular reflected member by setting a flag using the setAccessible method, as explained below.Java Language PolicyThe Java language security policy for applications is that any code may gain reflective access to all the members and constructors (including non-public members and constructors) of any class it may link against. By default, application code that gains reflective access to a member or constructor may only use the reflected member or constructor with standard Java language access control.9÷Y‚Bw†BB R€ï€€‚€€€€€€€€‚‚€‚ÿThe standard policy may be overridden by calling the reflected member's setAccessible method. The ability to call the setAccessible method is in turn controlled by the suppressAccessChecks target of the permission ReflectPermission.*>…B¡†B' €€ ”€ ‚ÿ»pw†B\‰BK d€á€€‚€‚€ €‚‚‚‚€(€€(€çPØ€‰€‚ÿData ConversionsCertain methods in the reflection package perform automatic data conversions between values of primitive types and objects of class types. These are the generic methods for getting and setting field and array component values, and the methods for method and constructor invocation.There are two types of automatic data conversions. Wrapping conversions convert from values of primitive types to objects of class types. Unwrapping conversions convert objects of class types to values of primitive types. The rules for these conversions are defined in "Wrapping and Unwrapping Conversions."$Ë¡†B€‹BY €€—€€‚€(€€(€çO×€‰€‚‚€€‚‚€€€€€€‚ÿAdditionally, field access and method invocation permit widening conversions on primitive and reference types. These conversions are documented in The Java Language Specification, section 5, and are detailed in "Widening Conversions."Wrapping and Unwrapping ConversionsA primitive value is automatically wrapped in an object when it is retrieved via Field.get or Array.get, or when it is returned by a method invoked via Method.invoke.É£\‰BIŒB& €G€€‚‚‚ÿSimilarly, an object value is automatically unwrapped when supplied as a parameter in a context that requires a value of a primitive type. These contexts are:[€‹B€B= H€=€ä€€‚€€‚€€€€‚‚ÿ· Field.set, where the underlying field has a primitive type· Array.set, where the underlying array has a primitive element type· Method.invoke or Constructor.newInstance, where the corresponding formal parameter of the underlying method or constructor has a primitive typeˆdIŒB,ŽB$ €È€€‚‚ÿThe following table shows the correspondences between primitive types and class (wrapper) types:}!€B©ŽB\#ˆ€BhЀ€ÿ"€€€€‚ÿ"€€€€‚ÿÿÿbooleanjava.lang.Booleano,ŽBBP#p€>hÐ"€€€€‚ÿ"€€€€‚ÿÿÿcharjava.lang.Characterj©ŽB‚BP#p€4hÐ"€€€€‚ÿ"€€€€‚ÿÿÿbytejava.lang.BytelB ÀBP#p€8hÐ"€€€€‚ÿ"€€€€‚ÿÿÿshortjava.lang.Short‚B ÀBoÀAl‚BxÀBP#p€8hÐ"€€€€‚ÿ"€€€€‚ÿÿÿintjava.lang.Integerj ÀBâÀBP#p€4hÐ"€€€€‚ÿ"€€€€‚ÿÿÿlongjava.lang.LonglxÀBNÁBP#p€8hÐ"€€€€‚ÿ"€€€€‚ÿÿÿfloatjava.lang.FloatnâÀBŒÁBP#p€<hÐ"€€€€‚ÿ"€€€€‚ÿÿÿdoublejava.lang.DoubleCNÁBÿÁB?#N€€€ÿ€€€‚ÿÿÿÜ’ŒÁBÛÃBJ b€%€€‚€€€€€€‚‚€€‚‚€(€‚‚‚‚ÿA method that is declared void returns the special reference null when it is invoked via Method.invoke.Widening ConversionsThe reflection package permits the same widening conversions at run-time as permitted in method invocation contexts at compile time. These conversions are defined in The Java Language Specification, section 5.3.Widening conversions are performed at run-time:Û€ÿÁB¶ÅB[ „€€ä€€€€€€‚€€€€€€‚€€€€€€‚‚ÿ· when a value is retrieved from a field or an array via the methods of Field and Array· when a value is stored into a field or an array via the methods of Field and Array· when an unwrapped actual parameter value is converted to the type of its corresponding formal parameter during method or constructor invocation via Method.invoke or Constructor.newInstancea7ÛÃBÆB* $€n€€€(€‚‚ÿThe permitted widening primitive conversions are:$¶ÅBÈBá I€ä€€€€€€€€€€€€€€‚€€€€€€€€€€€€‚€€€€€€€€€€€€‚€€€€€€€€€€‚€€€€€€€€‚€€€€€€‚ÿ· From byte to short, int, long, float, or double· From short to int, long, float, or double· From char to int, long, float, or double· From int to long, float, or double· From long to float or double· From float to double.'ÆBCÈB$ €€ä€‚ÿa7ÈB€ÈB* $€n€€€(€‚‚ÿThe permitted widening reference conversions are:CÈB4ÊB ̀#€ä€€€(€€(€€(€€(€‚€€€(€€(€€(€€(€‚€€€(€€(€€(€€(€‚‚ÿ· From a class type S to a class type T, provided that S is a subclass of T· From a class type S to an interface type K, provided that S implements K· From an interface type J to an interface type K, provided that J is a subinterface of K&€ÈBZÊB# €€€‚ÿ*4ÊB„ÊB' €€ ”€ ‚ÿ7ZÊBÌBJ b€o€€‚€‚€ €‚‚€€€€‚‚€€‚‚€‚ÿPackagingThe Core Reflection API is in a subpackage of java.lang named java.lang.reflect. This avoids compatibility problems caused by Java's default package importation rules.*As used on this web site, the terms "Java Virtual Machine" or "JVM" mean a virtual machine for the Java platform.*„ÊB/ÌB' €€ ”€ ‚ÿt(ÌB£ÌBL h€P€€‚çǜ—Y€ ‰€çǜ—Y€ ‰€盜—Y€ ‰€‚€‚ÿContents | Prev | Next*/ÌBÍÌB' €€ ”€ ‚ÿ†R£ÌBSÍB4 8€€€€‚癜—Y€*‰€+€‚‚ÿCopyright © 1996, 1997, 1998 Sun Microsystems, Inc. All rights reserved.1ÍÌB„ÍB1Uÿÿÿÿÿÿÿÿÿÿÿÿ„ÍBšÍB$SÍBšÍB" €€€ ÿA„ÍBéÍB1Ä€ƒ†éÍB/ÎB/CAcknowledgementsF šÍB/ÎB& €@€€€‚ÿjava-reflection.ref.doc.html¥:éÍBÔÎBk#Š€tÂÂF€€çǜ—Y€ ‰€皜—Y€ ‰€€‚ÿ€B€ÿ€D€€(€‚ÿÿÿContents | Prev | NextJava Core Reflection&/ÎBúÎB# €€€‚ÿ*ÔÎB$ÏB' €€ ”€ ‚ÿœcúÎBíCZ ‚€Ç€€‚€‚€%€‚‚‚‚€%€‚‚€(€+€(€‚‚€(€+€(€‚‚€‚ÿAcknowledgementsThe reflection API was designed by Nakul Saraiya and Bill Joy, and benefited from substantial input from J$ÏBíCšÍBohn Rose. Thanks also to our colleagues at JavaSoft and our external reviewers for their valuable comments.ReferencesJavaTM Beans Specification, JavaSoftJavaTM Object Serialization Specification, JavaSoft*$ÏBC' €€ ”€ ‚ÿh%íCCC V€J€€‚çǜ—Y€ ‰€皜—Y€ ‰€€‚€‚ÿContents | Prev | Next*C©C' €€ ”€ ‚ÿ†RC/C4 8€€€€‚癜—Y€*‰€+€‚‚ÿCopyright © 1996, 1997, 1998 Sun Microsystems, Inc. All rights reserved.1©C`C1Uÿÿÿÿÿÿÿÿÿÿÿÿ`C„C$/C„C" €€€ ÿE`CÉC1’뇅 †ÉCCh CJava Core Reflection>„CC& €0€€€‚ÿJava Core Reflectiony ÉC€CY#‚€@„.€€€皜—Y€ ‰€‚ÿ€:€ÿ€<€‚ÿÿÿContents | Prev | Next&CŠC# €€€‚ÿ*€CÐC' €€ ”€ ‚ÿ&ŠCöC# €€€‚ÿFÐC<C+ &€6€€‚€%€‚‚ÿJava Core Reflection=öCyC. ,€€äç‘G €!‰€‚‚ÿOverviewB<C»C/ .€&€-çŽG €‰€‚‚ÿApplicationsFyCC/ .€.€ɀçñR{׀‰€‚‚ÿReflection Modelž»CCq °€=€-çÒt€‰€‚発€‰€‚ç¹G €‰€‚çºG €‰€‚çﺀ‰€‚çæóx׀‰€‚‚ÿMember InterfaceField ObjectsMethod ObjectsConstructor ObjectsArray and Modifier ClassesRepresentation of Primitive Java TypesDCTC/ .€*€ɀ犹€‰€‚‚ÿSecurity Models7CÇC< H€n€-çÀÏ€‰€‚çšœ—Y€‰€‚‚ÿJava Language PolicyJDK 1.1 Security PolicyFTC C/ .€.€ɀ皜—Y€‰€‚‚ÿData ConversionsCÇCŒC< H€†€-çPØ€‰€‚çO×€‰€‚‚ÿWrapping and Unwrapping ConversionsWidening Conversions5 C CJ d€j€ɀçÎ×€‰€‚‚盜—Y€‰€‚盜—Y€‰€‚‚ÿPackagingAcknowledgementsReferences'ŒC2C$ €€ä€‚ÿ+ C]C( €€0䔀 ‚ÿY!2C¶C8 @€B€ä€‚€皜—Y€ ‰€‚€‚ÿContents | Prev | Next+]CáC( €€0䔀 ‚ÿ‡R¶Ch C5 :€€€ä€‚癜—Y€*‰€+€‚‚ÿCopyright © 1996, 1997, 1998 Sun Microsystems, Inc. All rights reserved.1áC™ C1Uÿÿÿÿÿÿÿÿÿÿÿÿ™ Cœ C$h Cœ C" €€€ ÿB™ Cÿ C1¬†Í€†ÿ C: C¢BCReference Objects;œ C: C& €*€€€‚ÿReference ObjectsÂ:ÿ Cü Cˆ#à€vx††(€€€†"€‚ÿ€€ÿ € €‚€%€‚‚ÿ€8€‚ÿ(€<€çñ˜Y€ ‰€‚ÿÿÿReference ObjectsDocumentation Contents&: C" C# €€€‚ÿûÖü CC% €­€ä€‚ÿReference objects support a limited degree of interaction with the garbage collector. A program may use a reference object to maintain a reference to some other object in such a way that the latter object may still be reclaimed by the collector. A program may also arrange to be notified some time after the collector has determined that the reachability of a given object has changed. Reference objects are therefore useful for building simple caches as well as caches that are flushed when memory runs low, for implementing mappings that do not prevent their keys (or values) from being reclaimed, and for scheduling pre-mortem cleanup actions in a more flexible way than is possible with the Java finalization mechanism.'" CDC$ €€ä€‚ÿL!CC+ &€B€€€‚€‚‚ÿAPI Specification(javadoc)ÑÑDCm@C ΁£€ä€€ï*ݓYJdk14doc.2.hlp€‰€‚€€ï¡Û“YJdk14doc.2.hlp€‰€‚€€ï¢Û“YJdk14doc.2.hlp€‰€‚€€ï£Û“YJdk14doc.2.hlp€‰€‚€€ï€Û“YJdk14doc.2.hlp€‰€‚€€ï Û“YJdk14doc.2.hlp€‰€‚‚ÿ· java.lang.ref · java.lang.ref.Reference · java.lang.ref.ReferenceQueue · java.lang.reCm@Cœ Cf.SoftReference · java.lang.ref.WeakReference · java.lang.ref.PhantomReference&C“@C# €€€‚ÿ*m@Cœ@C' €€ ”€ ‚ÿ&“@Cã@C# €€€‚ÿ™Ÿœ@C|BCÛ#„Â €€‚çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€‚‚€Ì/EF("mailto:java-gc-comments@eng.sun.com",`',1)€ ‰€€‚ÿ€Pÿ6€R†"€€€'‚€‚ÿÿÿCopyright © 2002 Sun Microsystems, Inc. All Rights Reserved.Please send comments to: java-gc-comments@eng.sun.com. This is not a subscription list. Java Software&ã@C¢BC# €€€‚ÿ1|BCÓBC1UÿÿÿÿÿÿÿÿÿÿÿÿÓBC÷BC$¢BC÷BC" €€€ ÿ: ÓBC1CC1S †Wƒ†1CCdCC†ICResources3 ÷BCdCC& €€€€‚ÿResourcesº21CCDCˆ#à€fx††(€€€†"€‚ÿ€€ÿ € €‚€%€‚‚ÿ€(€‚ÿ(€,€çñ˜Y€‰€‚ÿÿÿResourcesDocumentation Contents&dCCDDC# €€€‚ÿ~YDCÂDC% €²€ä€‚‚ÿThe Java platform supports supports resource access in a location-independent manner.>DDCEC' €.€€€‚‚ÿProgramming Guidest@ÂDCtEC4 8€€€ä€€çÀœ—Y€‰€‚‚ÿ· Accessing Resources in a Location-Independent Manner.IECœEC+ &€<€€€‚€‚‚ÿAPI References(javadoc)ÜÜtEC™GC ΁¹€ä€€ï–Ô“YJdk14doc.2.hlp€‰€‚€€ïšÔ“YJdk14doc.2.hlp€‰€‚€€ï4ã“YJdk14doc.2.hlp€‰€‚€€ï=•YJdk14doc.3.hlp€‰€‚€€ïËۓYJdk14doc.2.hlp€‰€‚€€ïQ”YJdk14doc.3.hlp€‰€‚‚ÿ· java.lang.Class class · java.lang.ClassLoader class · java.net.URLClassLoader class · java.util.ResourceBundle class · java.lang.SecurityManager class · java.security Package&œEC¿GC# €€€‚ÿ*™GCéGC' €€ ”€ ‚ÿ&¿GCHC# €€€‚ÿSéGCbICÄ#V!ÂÂ çñ˜Y€‰€ÌEF("http://www.sun.com/",`',1)€‰€‚‚Ì&EF("mailto:pelegri@eng.sun.com",`',1)€‰€‚‚‚ÿ€ô€ÿ0€ö€†"€€(‚€‚ÿÿÿCopyright © 2002 Sun Microsystems, Inc. All Rights Reserved.Please send comments to: pelegri@eng.sun.com Java Software$HC†IC" €€€ÿ1bIC·IC1Uÿÿÿÿÿÿÿÿÿÿÿÿ·ICÛIC$†ICÛIC" €€€ ÿD·ICJC1þJ̀†¡‰JC\JC‚DAccessing Resources=ÛIC\JC& €.€€€‚ÿAccessing Resources`9JCŒJC' €r€€%€‚‚ÿAccessing Resources in a Location-Independent MannerwS\JC3KC$ €Š€€‚‚ÿCode written for the Java 1.0 platform uses two mechanisms to access resources.ŒŒJC6MCG \€y€ä€€€(€€(€‚€€€(€€(€‚ÿ· Applets use Applet.getCodeBase() to get a URL to the base of the code for the applet. This base can be extended with a "relative path" to point to the desired resource, which can then be loaded (for example using Applet.getAudioClip(url)). · Applications use "well known locations" (such as System.getProperty("user.home") or System.getProperty("java.home")). They add "/lib/" to the location and then open that file.'3KC]MC$ €€ä€‚ÿG6MC€OC, &€7€€‚‚€(€‚ÿThe Java 1.0 platform lacks a mechanism to locate resources that are independent of the code. That is, there is no way locate resources for an applet loaded from the net using multiple http connects, or for an applet loaded using JAR files, or for a Bean loaded or a Bean installed in the CLASSPATH, or for a "library" installed in the CLASSPATH, and so on. The APIs described here provide such a mechanism.The I18N APIs use this API as a primitive operation to locate ResourceBundles. See the latest I18N documentation for details.Î]MC·C9 @€€€‚€ €‚‚€€€€‚ÿResources, names, and contexts€OC·CÛICA resource is identified by a String. This String, while possibly empty, is a /-separated sequence of substrings, each a valid Java programming lanaugage identifier, followed by a name of the form "" or ".". Both "shortName" and "extension" are composed of valid Java Letters and Numbers (section 3.8 in JLS). If the optional sequence exists, it is separated from the "shortName" by a /.†C€OC=…CC T€‡€€‚€€‚‚‚‚€ €‚‚€(€€(€‚ÿThe name of a resource is independent of the Java implementation; in particular, the / is always used as a separator. However, the Java implementation controls the details of how the contents of the resource are mapped into a file, database, or other object containing the actual resource.The interpretation of a resource name is relative to a ClassLoader instance. Methods implemented by the ClassLoader do this interpretation.System ResourcesA system resource is similar to a system class (section 20.14.5 of the JLS). A system resource is a resource that is either built-in to the system, or it is kept by the host implementation in, for example, a local file system. System resources are accessed through special methods (getSystemResource and getSystemResourceAsStream) that consult the base host implementation.‘V·C·C; D€­€€‚‚‚€ €‚‚€(€€(€‚ÿFor example, in a particular implementation, locating a system resource may involve searching the entries in the CLASSPATH. Each directory, zip file, or jar file entry in the CLASSPATH is searched for the resource file, and, if found, either an InputStream, or its name, is returned. If not found, null is returned. Note that a resource may be found in a different entry in the CLASSPATH than where the class file was loaded.Non-System ResourcesThe implementation of getResource on a given ClassLoader will depend on the details of the ClassLoader. For example AppletClassLoader will:&=…Cô‡C# €€€‚ÿX!·CL‰C7 <€C€ä€€‚€€‚€€‚‚ÿ· First try to locate the resource as a system resource; then, if not found,· Search through the resources in ARCHIVES (JAR files) already loaded in this CODEBASE; then, if not found,· Use CODEBASE and attempt to locate the resource (which may involve contacting a remote site).)éô‡CuŒC@ N€Ó€€‚‚€ €‚‚€(€€€€(€‚ÿAll ClassLoaders will search for a resource first as a system resource, in a manner analogous to searcing for class files. This search rule permits overwriting locally any resource. Clients should choose a resource name that will be unique (using the company or package name as a prefix, for instance).Resource NamesA common convention for the name of a resource used by a class is to use the fully qualified name of the package of the class, convert all "." to "/", and add a resource name of the form ".". To support this, and to simplify handling the details of system classes (for which getClassLoader returns null), the class Class provides two convenience methods that call the appropriate methods in ClassLoader.ëL‰CŽC/ ,€×€€‚‚‚‚‚€ €‚ÿThe resource name given to a Class method may have an initial starting "/" that identifies it as an "absolute" name. Resource names that do not start with a "/" are "relative".Absolute names are stripped of their starting "/" and are passed, without any further modification, to the appropriate ClassLoader method to locate the resource. Relative names are modified according to the convention described previously and then are passed to a ClassLoader method.Manipulating ResourcesèuŒCŽÀC1 0€Ñ€€‚€(€€€‚ÿThe method getResource() returns a URL for the resource. The URL (and its representation) is implementation and JVM*-instance specific (the URL obtained in one runtime instance may not work in another) and may vary depending on the implementation details Its protocol is (usually) specific to the ClassLoader loadiŽCŽÀCÛICng the resource. If the resource does not exist, a null will be returned; if the resource is not visible due to security considerations, a null will also be returned. ³ŽCŸÃCW |€g€€‚€(€€(€€(€€(€€(€‚‚€(€€(€€(€‚ÿIf the client code wants to read the contents of the resource as an InputStream, it can apply the openStream() method on the url. This is common enough to justify adding getResourceAsStream() to Class and ClassLoader. getResourceAsStream() is semantically identical to getResource().openStream(), except that IO exceptions are caught and returned as a null InputStream.The client code code can also request the contents of the resource as an object by applying the getContent() method on the url. This is useful when the resource contains the data for an image, for instance. Note that in this case, the result is an awt.image.ImageProducer object, not an Image object.:ÇŽÀCøËCs Ž€€€‚€ €‚‚€(€‚‚€€‚ÿAPI Additions to ClassSpecifically, the class Class methods are of the following form:class Class { /** * Find a resource with a given name. Will return null if no * resource with this name is found. The rules for searching a * resources associated with a given class are implemented by the * ClassLoader of the class. * * The Class methods delegate to ClassLoader methods, after applying * a naming convention: if the resource name starts with "/", it is used * as is. Otherwise, the name of the package is prepended, after * converting "." to "/". * * @see java.lang.ClassLoader */ public InputStream getResourceAsStream(String name) { name = resolveName(name); ClassLoader cl = getClassLoader(); if (cl==null) { // A system class. return ClassLoader.getSystemResourceAsStream(name); } return cl.getResourceAsStream(name); } public java.net.URL getResource(String name) { name = resolveName(name); ClassLoader cl = getClassLoader(); if (cl==null) { // A system class. return ClassLoader.getSystemResource(name); } return cl.getResource(name); } /** * Add a package name prefix if the name is not absolute * Remove leading "/" if name is absolute */ private String resolveName(String name) { if (name == null) { return name; } if (!name.startsWith("/")) { Class c = this; while (c.isArray()) { c = c.getComponentType(); } String baseName = c.getName(); int index = baseName.lastIndexOf('.'); if (index != -1) { name = baseName.substring(0, index).replace('.', '/') +"/"+name; } } else { name = name.substring(1); } return name; }ñŸÃCÎC. *€ã€€‚‚€ €‚‚‚ÿNote that it is possible, albeit somewhat uncommon, to have two classes in two diffent packages sharing the same resource.API Additions to ClassLoaderWe provide two sets of methods to access a resource. One set returns an InputStream on the resource. The other set returns a URL. The methods that return an InputStream are somewhat easier to use and will satisfy many needs, while the methods that return URLs provide access to more complex information, such as an Image and an AudioClip._,øËC‚D3 4€Y€€‚€(€€(€‚‚‚ÿResources are managed through ClassLoaders in a manner analogous to classes. A ClassLoader controls how to map the name of a resource to its content. ClassLoader also provides methods for accessing system resources, analogous to the system classes. Class Class provides some convenience methods that delegate functionality to the appropriate ClassLoader methods.Many Java programs will access these methods indirectly through the ÎC‚DÛICI18N APIs. Others will access it through methods in class Class. A few will directly invoke the ClassLoader methods.],ÎCßD1 0€Y€€‚‚‚€‚ÿThe methods in ClassLoader use the given String as the name of the resource without applying any absolute/relative transformation (cf. the methods in Class). The name should not have a leading "/".class ClassLoader { /** * A resource is some data (images, audio, text, etc) that wants to be * accessed by some class code in a way that is independent of the * location of the code. Resources are found with cooperation of the * class loaders, since they are the only ones who know where the class * actually came from. Ôž‚D³D6 :€=€€‚‚‚ÿ * * System resources are those that are handled by the host implemenation * directly. For example, they may be located in the CLASSPATH. * * The name of a resource is a "/"-separated sequence of identifiers. * The class Class provides convenience methods for accessing resources; * the methods implement a convention where the package name is prefixed * to the short name of the resource. * * Resources can be accessed as an InputStream, or as a URL. * * @see Class */ /** * Get an InputStream on a given resource.. Will return null if no * resource with this name is found. ›kßDND0 .€×€€‚ÿ * * The resource name may be any system resource (e.g. follows CLASSPATH order) * @param name the name of the resource, to be used as is. * @return an InputStream on the resource, or null if not found. */ public static final InputStream getSystemResourceAsStream(String name) { ... this is equivalent to getSystemResource() call plus a openStream() } /** * Find a resource with a given name. The return is a URL to the resource * Doing a getContent() on the URL may return an ImageProducer, an AudioClip, or * an InputStream.à³D_ D1 0€Á€€‚ÿ * * The resource name may be any system resource (e.g. follows CLASSPATH order) * @param name the name of the resource, to be used as is. * @return the URL on the resource, or null if not found. */ public static final java.net.URL getSystemResource(String name) { ... } /** */ /** * Get an InputStream on a given resource. Will return null if no * resource with this name is found. BND¡ D0 .€%€€‚ÿ * * The class loader can choose what to do to locate the resource. * @param name the name of the resource, to be used as is. * @return an InputStream on the resource, or null if not found. */ public InputStream getResourceAsStream(String name) { return null; } /** * Find a resource with a given name. The return is a URL to the resource. * Doing a getContent() on the URL may return an ImageProducer, an AudioClip, * or an InputStream."ì_ DÃD6 :€Ù€€‚€ €‚‚‚ÿ * * The class loader can choose what to do to locate the resource. * @param name the name of the resource, to be used as is. * @return an InputStream on the resource, or null if not found. */ public java.net.URL getResource(String name) { return null; } }Client codeBelow are two examples of client code. The first example uses "absolute resource" names and traditional mechanisms to get a class Class object:˜Y¡ DgAD? L€³€€‚€€‚ÿpackage pkg;import java.io.IOException;import java.io.InputStream;import java.io.PrintStream;class Test { private static final String absName = "/pkg/mumble.baf"; public static void test1() { Class c=null; try { ÃDgADÛIC c = Class.forName("pkg.Test"); } catch (Exception ex) { // This should not happen. } InputStream s = c.getResourceAsStream(absName); // do something with it. } public void test2() { InputStream s = this.getClass().getResourceAsStream(absName); // do something with it. }“YÃDúCD: B€³€€‚‚€€‚ÿThe second example uses "relative resource" names and the new mechanism, available from the compiler through the -experimental flag, to get a class Class object:package pkg;import java.io.IOException;import java.io.InputStream;import java.io.PrintStream;class Test { private static final String relName = "mumble.baf"; public static void test1() { InputStream s = Test.class.getResourceAsStream(relName); // do something with it. } public void test2() { InputStream s = Test.class.getResourceAsStream(relName); // do something with it. };úgAD5FDA P€õ€€ €‚‚€(€€(€€(€€(€‚ÿSecurity DetailsSince getResource() provides access to information, it must have well defined and well founded security rules that at the same time support the intended use of this mechanism. Below we describe the exact details, as specified and implemented in releases starting at version 1.1.5 of the Java Development Kit. The semantics are described only for ClassLoader.getResource and ClassLoader.getSystemResource() and extend to the AsStream methods as defined in the previous section.HúCDÄIDG \€‘€€‚€(€‚‚‚‚€(€€(€€(€€(€‚ÿIf security considerations do not allow a resource to be visible in some security context, the getResource() method will fail (will return null) as if the resource was not present at all, this addresses existence attacks.All classloaders will not provide access to the contents of a .class file. This is for both security and performance issues. Whether it is possible to obtain a URL into a .class file depends on the specifics, as shown below.There are no specified security issues or restrictions regarding resources that are found by a non-system class loader. AppletClassLoader provides access to information that is loaded from some source location, either individually, or in a group through a JAR file; thus AppletClassLoader should apply the same checkConnect() rules when dealing with URLs through getResource().Ì€5FDKD( €I€€‚‚‚‚‚ÿThe system Class Loader provides access to information in the CLASSPATH. A CLASSPATH may have directories and/or JAR files. Since a JAR file is created intentionally, we ascribe a different significance to it than in a directory where things may end up in a more casual manner. In particular, we are more strict on getting information out of a directory than out from a JAR file.If the resource is in a Directory:SÄIDãLDK d€€ä€€(€€(€€(€€(€‚€€€(€‚‚ÿ· getResource() invocations will use File.exists() to determine whether to make the corresponding file visible to the user. Recall that File.exists() uses the checkRead() method in the security manager. · the same applies to getResourceAsStream().I%KD,MD$ €J€€‚‚ÿIf the resource is in a JAR file:WãLDƒND< F€7€ä€€(€‚€€(€€(€‚‚ÿ· getResource() invocations will succeed for all files, regardless of whether the invocation is done from within a System or a non-System class. · getResourceAsStream() invocations will succeed for non .class resources, and so will for getContent() on corresponding URLs.¡G,MD0€DZ ‚€€€ €‚‚€(€ï¥t–YJdk14doc.4.hlp€‰€‚‚€€‚‚€‚ÿRelated Topics & Known BugsThe getResource interface does not provide specific support for locating localized resources. Localized resources are supported by the internationalization facilities.*As used on this web site, the terms "Java Virtual Machine" or "JVM" mean a virtual ƒND0€DÛICmachine for the Java platform.*ƒNDZ€D' €€ ”€ ‚ÿ&0€D€€D# €€€‚ÿ[•Z€DہDÆ#Z-ÂÂ怀çñ˜Y€‰€ÌEF("http://www.sun.com/",`',1)€‰€Ì,EF("mailto:jdk-comments@java.sun.com",`',1)€‰€‚ÿ€ÿ0€†"€€(‚€‚ÿÿÿCopyright © 1996-98 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: jdk-comments@java.sun.com Java Software&€€D‚D# €€€‚ÿ1ہD2‚D1Uÿÿÿÿÿÿÿÿÿÿÿÿ2‚DV‚D$‚DV‚D" €€€ ÿU$2‚D«‚D1¹.Wƒ†€Š «‚Dù‚DuEJava(TM) RMI over IIOP DocumentationN(V‚Dù‚D& €P€€€‚ÿJava(TM) RMI over IIOP Documentationi«‚DbƒDK#f€BÂL€€€†"€†"€†"€‚ÿÿÿ —ù‚Dr„Dy#À€/Š€€çñ˜Y€‰€€,ï‘m–YJdk14doc.4.hlp€‰€€î³0²EJdk14doc.hlp‰€‚ÿÿÿJ2SE v.1.4 Documentation Contents Changes in CORBA (Java IDL, RMI-IIOP) Features Between J2SE 1.3 and 1.4 Java RMI over IIOP Home pageq>bƒDã„D3 6€|€€‚€%€‚€%‚€‚‚ÿJava RMI over IIOPTechnologyDocumentation Home Pageår„Dó†D+ $€Ë€ä€€€‚ÿJava Remote Method Invocation over Internet Inter-ORB Protocol technology ("RMI-IIOP") is part of the Java 2 Platform, Standard Edition (J2SE). The RMI Programming Model enables the programming of CORBA servers and applications via the rmi API. You can choose to work completely within the Java programming language using the Java Remote Method Protocol (JRMP) as the transport, or work with other CORBA-compliant programming languages using the Internet InterORB Protocol (IIOP).ë•ã„DމDV z€+€ä€‚€€€€€€€€€€€€ç°˜Y€‰€‚ÿRMI-IIOP utilizes the Java CORBA Object Request Broker (ORB) and IIOP, so you can write all of your code in the Java programming language, and use the rmic compiler to generate the code necessary for connecting your applications via the Internet InterORB Protocol (IIOP) to others written in any CORBA-compliant language. To work with CORBA applications in other languages, IDL can be generated from Java programming language interfaces using the rmic compiler with the -idl option. To generate IIOP stubs and tie classes, use the rmic compiler with the -iiop option. For more information on using rmic, link to rmic - The Java RMI Compiler.9 ó†DŒD. *€€ä€‚€€‚‚‚ÿWhen should I use RMI-IIOP?RMI-IIOP is for developers who program in the Java programming language and want to program to the RMI interfaces, but use IIOP as the underlying transport. RMI-IIOP provides interoperability with other CORBA objects implemented in various languages - but only if all the remote interfaces are originally defined as Java RMI interfaces. It is of particular interest to programmers using Enterprise JavaBeans (EJB), since the remote object model for EJB components is based on the RMI API.g?މD~D( €€ä€‚‚‚‚ÿRMI-IIOP combines the best features of Java Remote Method Invocation (RMI) with the best features of CORBA. RMI-IIOP speeds distributed application development by allowing developers to work completely in the Java programming language, writing remote interfaces in the Java programming language and implementing them simply using Java technology and the Java RMI APIs.When using RMI-IIOP to produce technology-based distributed applications written in the Java programming language, there is no separate Interface Definition Language (IDL) or mapping to learn: the remote interfaces can be implemented in any other language that is supported by an OMG mapping and a vendor supplied ORB for that language. Similarly, clients can be written in other languages using IDL derived from the remote Java technology-based interfaces.{SŒDÂD( €§€ä€‚‚‚‚ÿRMI-IIOP provides flexibility by allowing developers to pass any Java object between app~DÂDV‚Dlication components either by reference or by value.Like CORBA, RMI-IIOP is based on open standards defined with the participation of hundreds of vendors and users in the Object Management Group. Like CORBA, RMI-IIOP uses Internet Inter-ORB Protocol (IIOP) as its communication protocol. IIOP eases legacy application and platform integration by allowing application components written in C++, Smalltalk, and other CORBA supported languages to communicate with components running on the Java platform.Õ~D ÃD/ ,€«€ä€‚€€‚‚‚‚ÿWhat other options do I have for distributed application development?Developers who program using the Java programming language can choose several solutions for creating distributed applications programs.EáÂDNÆDd –€Ã€ɀ€€€€ç—Y€‰€‚‚€€€ïm–YJdk14doc.4.hlp€‰€‚ÿ· Java RMI technology - If all of your applications are written in the Java programming language, you will probably want to use Java RMI technology to enable communication between Java objects on different virtual machines and different physical machines. Using Java RMI technology without its IIOP option leverages its strengths of code portability, security, and garbage collection.· Java IDL technology - Java IDL technology are for CORBA programmers who want to program in the Java programming language based on interfaces defined in CORBA Interface Definition Language (IDL). This is "business as usual" CORBA programming, supporting the Java platform in exactly the same way as other languages like C++ or COBOL.š+ ÃDöÉD} ȀW€ɀ€‚€€€Ì7EF("http://java.sun.com/products/ejb/index.html",`',1)€‰€眗Y€‰€‚ÿ· Enterprise JavaBeans technology - Enterprise JavaBeans (EJB) technology is part of the Java 2 Platform, Enterprise Edition. EJB components use the Java RMI/Java IDL technology for their distributed object model, and use the Java Transaction Service (JTS) for their distributed transaction model. When Enterprise JavaBeans components are implemented using the RMI-IIOP protocol for EJB component interoperability in heterogeneous server environments, the standard mapping of the EJB architecture to CORBA enables interoperability with multivendor ORBs, other EJB servers, and CORBA clients written in programming languages other than the Java programming language. For an example application that uses an EJB server with a CORBA client, look at Enterprise JavaBeans Components and CORBA Clients.(NÆDÊD% €€ɀ€‚ÿR+öÉDpÊD' €V€€ €‚‚ÿNew Java RMI-IIOP Features in J2SE 1.4_àÊDÏÌD ̀Á€ɀ€€€€€(€‚‚€€ï ?•YJdk14doc.3.hlp€‰€€€ï€ä€ÌEF("http://www.omg.org/",`',1)€-‰€€(€Ì:EF("http://cgi.omg.org/cgi-bin/doc?formal/99-10-07",`',1)€‰€‚‚ïâ(•YJdk14doc.3.hlp€‰€‚ÿThe OMG is the official source of information for all CORBA and IIOP related information. The CORBA 2.3.1 Specification is available electronically from formal/99-10-07. The URLs for the CORBA specifications may change. If this link is broken, link to http://www.omg.org and search the specifications.For more information on which specifications are implemented in this release of the Java platform, see the compliance document.CÀ× E‘ Eƒ Ԁ€ä€‚Ì%EF("http://forum.java.sun.com",`',1)€‰€Ì#EF("mailto:rmi-iiop@sun.com",`',1)€‰€‚‚ÿFor questions, please try the user supported forum for Java IDL technology, which is available at http://forum.java.sun.com. For comments please send us email at rmi-iiop@sun.com.&N E· E# €€€‚ÿ*‘ Eá E' €€ ”€ ‚ÿ&· EE# €€€‚ÿH…á EOEÃ#T ÂÂçñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€‚‚€Ì#EF("mailto:rmi-iiop@sun.com",`',1)€ ‰€€‚‚‚ÿ€ÿ"€†"€‚ÿÿÿCopyright © 2002 Sun Microsystems, Inc. All Rights Reserved.Send questions or comments to: rmi-iiop@sun.com.&EuE# €€€‚ÿ1OEŠE1Uÿÿÿÿÿÿÿÿ!ÿÿÿÿŠE @E$uE @E" €€€ ÿŠE @EuEyHŠE…@E1Yž¡‰"…@EÀ@E‡OGEnterprise JavaBeans[tm] Components and CORBA Clients: A Developer Guide; @EÀ@E& €*€€€‚ÿA Developer Guide&…@Eæ@E# €€€‚ÿ*À@EAE' €€ ”€ ‚ÿ†Qæ@E–AE5 :€¢€€‚€‚€%€€%€‚‚ÿEnterprise JavaBeansTM Components and CORBA Clients: A Developer Guideu;AE BE: D€v€€€.çš¶˜Y€ ‰€€‚€‚ÿTo get this document in PDF format, click here.*–AE5BE' €€ ”€ ‚ÿ, BEaBE' € €€‚€‚ÿœm5BEFEP n€Û€€€€€€€€€€‚‚€€€€€€‚ÿThis paper discusses how to enable a client written in any language supported by CORBA to access Enterprise JavaBeansTM components ("EJBTM components"). This paper is directed at programmers with advanced knowledge of both the JavaTM 2 Platform, Enterprise Edition ("J2EETM") and CORBA (Common Object Request Broker Architecture).J2EE technology simplifies enterprise applications by basing them on standardized, modular and re-usable components based on the Enterprise JavaBeansTM (EJBTM) architecture, providing a complete set of services to those components, and handling many details of application behavior automatically. By automating many of the time-consuming and difficult tasks of application development, J2EE technology allows enterprise developers to focus on adding value, that is, enhancing business logic, rather than building infrastructure.=µaBE[JEˆ ހk€€‚€€€€‚‚€€ÌEEF("http://www.omg.org/gettingstarted/gettingstartedindex.htm",`',1)€‰€‚ÿThe EJBTM server-side component model simplifies development of middleware components that are transactional, scalable, and portable. Enterprise JavaBeans servers reduce the complexity of developing middleware by providing automatic support for middleware services such as transactions, security, database connectivity, and more.CORBA is an Object Management Group (OMG) standard that is an open, vendor-independent architecture and infrastructure that computer applications use to work together over networks. Using the standard Internet Inter-ORB Protocol (IIOP), a CORBA-based program from any vendor, on almost any computer, operating system, programming language, and network, can interoperate with a CORBA-based program from the same or another vendor, on almost any other computer, operating system, programming language, and network. To learn more about CORBA, visit http://www.omg.org/gettingstarted/gettingstartedindex.htm.û‘FEVNEj ¢€#€€‚‚‚Ì9EF("http://www.omg.org/gettingstarted/omg_idl.htm",`',1)€‰€‚ÿCORBA technology complements the Java platform by providing a distributed objects framework, services to support that framework, and interoperability with other languages. CORBA technology is an integral part of the Java 2 platform, being used in Enterprise JavaBeans components, Java Remote Method Invocation APIs running over Internet Inter-ORB Protocol ("Java RMI-IIOP"), and Java IDL APIs ("Java IDL").OMG Interface Definition Language (IDL) is used to describe the interfaces being implemented by the remote objects. IDL is used to define the name of the interface and the names of each of the attributes and methods. Once you create the IDL file, you can use an IDL compiler to generate the client stub and the server skeleton in any language for which the OMG has defined a specification for such language mapping. To learn more about OMG IDL, visit http://www.omg.org/gettingstarted/omg_idl.htm.þ¢[JE`E\ †€E€€‚€€ÌEF("http://www.omg.org/",`',1)€‰€€€‚‚‚ÿJava IDL makes it possible for distributed Java applications to transparently invoke operations on remote network services using the industry standard OMG IDL and IIOP defined by the Object Management Group (http://www.omg.org). Java RMI over IIOP APIs enable the programming of CORBA servers and applications via the javax.rVNE`E @Emi API.Developers who program EJB components follow the Java RMI programming model for their distributed object model, where the required transport common across all application servers is Java RMI-IIOP. In heterogeneous server environments, the standard mapping of the EJB architecture to CORBA enables the following interoperability:&VNE†E# €€€‚ÿûÄ`EƒE7 <€‰€ä€€‚€€‚€€‚‚ÿ·A client using an ORB from one vendor can access enterprise beans residing on a server enabled with Enterprise JavaBeans technology ("EJB server") provided by another vendor.·Enterprise beans in one EJB server can access enterprise beans in another EJB server.·A CORBA client written in a language other than the Java programming language can access any EJB component as long as there is a mapping from OMG IDL to that programming language.솁E‘…E$ €Ù€€‚ÿThe rest of this document provides an example of a CORBA client application accessing an enterprise bean object. In this document, a CORBA client means a client application written in any language supported by CORBA, including the Java programming language, C++, C, Smalltalk, COBOL, Ada, Lisp, or Python. While the Java code in this example is specific to enterprise beans, the process for developing a CORBA client that accesses a server created using the Java RMI-IIOP APIs is the same.ҌƒEc†EF Z€€€‚îŽ0²EJdk14doc.hlp€‰€‚‚€‚ÿLinks to similar example applications from other vendors who implement J2EE technology can be found in Links to similar examples.*‘…E†E' €€ ”€ ‚ÿùÅc†E†ˆE4 6€‹€€‚€‚€%€‚‚‚‚‚‚ÿDeveloping a CORBA Client that Accesses an Enterprise JavaBean ComponentThis is an example of how to develop a CORBA client application that accesses an EJB component. In this example, the client is written in the C++ programming language, but the client could be written in any language supported by CORBA.The general process for developing a CORBA client so that it can access an enterprise bean is demonstrated in the following sections:tŸ†Eú‰E¶ :}€ä€îµ0²EJdk14doc.hlp€‰€‚î¶0²EJdk14doc.hlp€‰€‚îâ0²EJdk14doc.hlp€‰€‚îÙ0²EJdk14doc.hlp€‰€‚îÚ0²EJdk14doc.hlp€‰€‚‚ÿ1. Write the Enterprise JavaBean component2. Generate the CORBA IDL3. Create a CORBA client4. Deploy the Enterprise JavaBean component5. Run the client executableD †ˆE>ŠE$ €@€€‚‚ÿThis document also includes:4’ú‰Er‹E¢ %€ä€îÛ0²EJdk14doc.hlp€‰€‚€îÜ0²EJdk14doc.hlp€‰€‚€îÝ0²EJdk14doc.hlp€‰€‚€îÞ0²EJdk14doc.hlp€‰€‚‚ÿ·Creating a Java RMI-IIOP client application·Where to go from here·Tips for complex interfaces·Links to similar examplesâ¡>ŠETŒEA P€C€€îß0²EJdk14doc.hlp€‰€‚‚ÿIn order to make the example simple, we have taken a few shortcuts. For information on building more advanced solutions, see Tips for complex interfaces.¿r‹EcŽEP n€€ä€ €‚‚€€‚‚€€€€€€€€€€‚ÿPart I: Write the Enterprise JavaBean componentThe following examples show the code for an enterprise bean that will accept simple String log messages sent to the application server from Java RMI-IIOP and CORBA clients. The enterprise bean prints them on the server along with the current server time.1.Create the files Logger.java , LoggerHome.java , LoggerEJB.java , and LogMessage.java in the /Java/src/ejbinterop directory.Û‰TŒEJÁER r€€ä€‚€€‚‚€€€€‚‚€€‚ÿLogger.javaThe file Logger.java is the enterprise bean's remote interface, and as such, it extends EJBObject . A remote interface provides the remote client view of an EJB object and defines the business methods callable by a remote client.//Code Example 1: Logger.javapackage ejbinterop;import javax.ejb.EJBObject;cŽEJÁE @Eimport java.rmi.RemoteException;/** * Accepts simple String log messages and prints * them on the server. */public interface Logger extends EJBObject{ /** * Logs the given message on the server with * the current server time. */ void logString(String message) throws RemoteException;} ScŽEêÃEM h€§€ä€€‚‚€€€€€€‚‚€€‚ÿLoggerHome.javaThe file LoggerHome.java extends EJBHome . The EJBHome interface must be extended by all EJB component's remote home interfaces. A home interface defines the methods that allow a remote client to create, find, and remove EJB objects, as well as home business methods that are not specific to an EJB instance.//Code Example 2: LoggerHome.javapackage ejbinterop;import java.rmi.RemoteException;import javax.ejb.EJBHome;import javax.ejb.CreateException;public interface LoggerHome extends EJBHome{ Logger create() throws RemoteException, CreateException;}ÇoJÁE±ÈEX ~€ß€ä€€‚‚€€€€‚‚€€‚ÿLoggerEJB.javaThe file LoggerEJB.java contains the code for a session bean. A session bean is an enterprise bean that is created by a client and that usually exists only for the duration of a single client-server session. A session bean performs operations such as calculations or accessing a database for the client. In this example, the enterprise bean accepts simple String log messages from the client and prints them on the server.//LoggerEJB.javapackage ejbinterop;import javax.ejb.*;import java.util.*;import java.rmi.*;import java.io.*;/** * Accepts simple String log messages and prints * them on the server. */public class LoggerEJB implements SessionBean { public LoggerEJB() {} public void ejbCreate() {} public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext sc) {} /** * Logs the given message on the server with * the current server time. */ public void logString(String message) { LogMessage msg = new LogMessage(message); System.out.println(msg); }}ŸêÃE³ÍEc ”€? €ä€€‚‚€€€€‚‚€€‚ÿLogMessage.javaThe file LogMessage.java takes the current date and time, creates a formatted String showing the message, and prints the message to the server.//LogMessage.javapackage ejbinterop;import java.io.Serializable;import java.util.Date;import java.text.*;/** * Simple message class that handles pretty * printing of log messages. */public class LogMessage implements Serializable{ private String message; private long datetime; /** * Constructor taking the message. This will * take the current date and time. */ public LogMessage(String msg) { message = msg; datetime = (new Date()).getTime(); } /** * Creates a formatted String showing the message. */ public String toString() { StringBuffer sbuf = new StringBuffer(); DateFormat dformat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG); FieldPosition fpos = new FieldPosition(DateFormat.DATE_FIELD); dformat.format(new Date(datetime), sbuf, fpos); sbuf.append(": "); sbuf.append(message); return sbuf.toString(); }}ѱÈEÑÏEM h€£€ä€‚‚€€‚€€€€€(€€(€€(€‚ÿ2. To compile the files written in this section:javac -classpath $J2EE_HOME/lib/j2ee.jar:.. *.javaThese commands create class files for all of the .java files in the current directory. This command and others in this paper assume that the J2EE_HOME environment variable has been set correctly. Using $J2EE_HOME is a convention of the Unix® operating environment. Substitute %J2EE_HOME% when working in the Microsoft Windows operating environment.̳ÍEåF< F€™€ä€‚€ €‚‚€ÑÏEåF @E€‚‚€€‚ÿPart II: Generate the CORBA IDLThis sections discusses generating the Interface Definition Language (IDL) files from the Java class files generated in the previous section. In this example, we will use the rmic compiler to map the Java code to IDL. IDL provides a purely declarative, programming language-independent way of specifying an object's API.3.Run the rmic compiler against the Java class files generated in the previous step as follows:fÑÏEKFX ~€€ä€‚€€‚€€€€€€€€€€€/€€‚ÿrmic -idl -noValueMethods -classpath $J2EE_HOME/lib/j2ee.jar: -d ejbinterop.Logger ejbinterop.LoggerHomeIn the preceding example, we are including the .jar file containing definitions for the javax.ejb package as well as the directory to our ejbinterop files. If you're using the JavaTM 2 Platform, Enterprise Edition (J2EETM), version 1.3 Reference Implementation (RI), the .jar files are located in $J2EE_HOME/lib/j2ee.jar .‹1åFÖFZ ‚€c€ä€‚€€€€€€€€îà0²EJdk14doc.hlp€‰€‚ÿIn the command line for rmic above, we recommend a shortcut --using the noValueMethods option. This option tells rmic to skip any methods with parameter or return types that would be mapped to CORBA value types. The advantage is that it will prevent us from generating a lot of unnecessary IDL that we might have to implement in the C++ client. The disadvantage is that we can only use primitive data types, arrays, and Strings as parameters or return values, and not our own Java class types. Read more about this in Tips for complex interfacesÞ¥KFŽF9 @€K€ä€‚€€€(€€€‚‚ÿRunning the rmic compiler on the Java class files generates the following files to the directory indicated with the -d option in the rmic statement above:”ÖFÓ F‹ ä€)€ɀ€€‚€€‚€€‚€€‚€€‚€€‚€€‚€€‚€€‚€€‚€€‚€€‚€€‚€€‚€€‚ÿ·java/lang/Ex.idl·java/lang/Exception.idl·java/lang/Object.idl·java/lang/Throwable.idl·java/lang/ThrowableEx.idl·javax/ejb/CreateEx.idl·javax/ejb/CreateException.idl·javax/ejb/EJBHome.idl·javax/ejb/EJBMetaData.idl·javax/ejb/EJBObject.idl·javax/ejb/Handle.idl·javax/ejb/HomeHandle.idl·javax/ejb/RemoveEx.idl·javax/ejb/RemoveException.idl·ejbinterop/Logger.idlHŽF F) "€>€ɀ€€‚‚ÿ·ejbinterop/LoggerHome.idl)Ó FD F% €€ä€‚‚ÿQ F• F5 8€9€ɀ€€€€€€‚ÿNOTE: A number of these generated files contain API that can only be used within a Java programming environment. For example, the EJBMetaData implementation is currently specific to each application server, and thus it will be difficult to develop equivalents that will continue to work over time on platforms other than the Java platform. One option is to remove these from the IDL, but if you do, you'll have to remove them from the IDL every time you change the Java interface and regenerate the IDL files from the rmic compiler.ƒD F£F‹ 䀀ɀ€‚€€€€€ÌKEF("http://java.sun.com/j2se/1.4/docs/guide/idl/jidlExceptions.html",`',1)€0‰€‚ÿNOTE: Since CORBA exceptions don't support inheritance, the Java language to IDL mapping creates an Ex class that contains a CORBA value type representing the actual Java exception. In this basic example, we're not going to worry much about exception support. More information about exceptions can be found at http://java.sun.com/j2se/1.4/docs/guide/idl/jidlExceptions.html.(• FËF% €€ɀ€‚ÿ~7£FUBFG \€o€ä€‚‚€€‚‚€€€€€€€€‚ÿ4.Compile the IDL files with your C++ vendor's "IDL to C++" compiler to generate the C++ code corresponding to the IDL. The steps for this procedure vary by vendor, so consult your product documentation for the specific steps for your veËFUBF @Endor.Part III: Create a CORBA clientThe client application can be written in any language supported by CORBA. The following example provides the code for a simple C++ client that, given an Object Request Broker (ORB) and a corbaname URL for a LoggerHome object, logs a simple String message on the server. You'll have to adjust the include statements and modify the code for registering the value factories based on your C++ ORB vendor's libraries. This example was written for ORBacus for C++ 4.0.5 and some of the C++ code in this example is specific to that product.wöËFÌDF Ѐí€ä€‚€€ÌKEF("http://java.sun.com/j2se/1.4/docs/guide/idl/jidlNaming.html#INS",`',1)€‰€‚ÿA corbaname URL is a human-readable URL format that enables you to access CORBA objects. It is used to resolve a stringified name from a specific naming context. This is a new feature in the J2EE v 1.3 platform as part of the CORBA Interoperable Naming Service (INS). INS is an extension to CORBA Object Services (COS) Naming Service, which was delivered in previous releases of the J2EE platform. To read more about INS, visit http://java.sun.com/j2se/1.4/docs/guide/idl/jidlNaming.html#INS._9UBF+EF& €r€ä€‚‚‚ÿIn this example, the client code does the following:@ÏÌDFkGFq °€Ÿ€ɀ€€‚‚€€‚‚€€€€€€‚‚€€€€‚‚€€€€‚‚€€‚‚€€‚ÿ·Creates an Object Request Broker (ORB). The ORB connects objects requesting services to the objects providing them.·Registers value factories.·Looks up the LoggerHome object in the naming context pointed to by the corbaname URL.·Performs a safe downcast from the object returned to a LoggerHome object.·Creates a LoggerEJB object reference.·Logs our message.·Tells the application server we won't use this EJB reference again.(+EF“GF% €€ɀ€‚ÿðkGF©HF& €á€ä€‚‚ÿ5.Create the client using C++ code similar to the following. The exact code may vary with your C++ implementation. This code was written for ORBacus for C++ 4.0.5 and some of the C++ code in this example may be specific to that product.f Ü “GF…FŠ ‹€€€‚ÿ//Code Example: Client.cpp#include // C++ ORB Vendor specific include files// These are from C++ ORBacus 4.0.5#include #include // Include files generated from our IDL#include #include #include #include #include #include /** * Given an ORB and a corbaname URL for a LoggerHome * object, logs a simple string message on the server. */voidrun(CORBA::ORB_ptr orb, const char* logger_home_url){ cout << "Looking for: " << logger_home_url << endl; // Look up the LoggerHome object in the naming context // pointed to by the corbaname URL CORBA::Object_var home_obj = orb->string_to_object(logger_home_url); // Perform a safe downcast ejbinterop::LoggerHome_var home = ejbinterop::LoggerHome::_narrow(home_obj.in()); assert(!CORBA::is_nil(home)); // Create a Logger EJB reference ejbinterop::Logger_var logger = home->create(); CORBA::WStringValue_var msg = new CORBA::WStringValue((const CORBA::WChar*)L"Message from a C++ client"); cout << "Logging..." << endl; // Log our message logger->logString(msg); // Tell the application server we won't use this // EJB reference any more logger->remove(); cout << "Done" << endl;}/** * Simple main method that checks arguments, creates an * ORB, and handles exceptions. */intmain(int argc, char* argv[]){ int exit_code = 0; CORBA::ORB_var orb; try { // Check the arguments if (argc != 2) { cerr << "Usage: Client " << endl; return 1; } // Create an ORB orb = CORBA::ORB_init(argc, ©HF…F @Eargv); // Register value factories // NOTE: This is overkill for the example since we'll never // get these exceptions. Also, the _OB_id method is a // proprietary feature of ORBacus C++ generated code. CORBA::ValueFactory factory = new java::lang::Throwable_init; orb -> register_value_factory(java::lang::Throwable::_OB_id(), factory); factory -> _remove_ref(); factory = new java::lang::Exception_init; orb -> register_value_factory(java::lang::Exception::_OB_id(), factory); factory -> _remove_ref(); factory = new javax::ejb::CreateException_init; orb -> register_value_factory(javax::ejb::CreateException::_OB_id(), factory); factory -> _remove_ref(); factory = new javax::ejb::RemoveException_init; orb -> register_value_factory(javax::ejb::RemoveException::_OB_id(), factory); factory -> _remove_ref(); // Perform the work run(orb, argv[1]);} catch(const CORBA::Exception& ex) { // Handle any CORBA related exceptions cerr << ex._to_string() << endl; exit_code = 1;} // Release any ORB resources if (!CORBA::is_nil(orb)) { try { orb -> destroy(); } catch(const CORBA::Exception& ex) { cerr << ex._to_string() << endl; exit_code = 1; } } return exit_code;} Í©HF%‡F= H€›€€€‚‚€€‚‚€€€€‚ÿ·Use your C++ compiler to compile all of the C++ files, including the Client.cpp file, to create a Client executable. Such tools vary widely across platforms, so consult your product documentation for instructions.Part IV: Deploy the Enterprise JavaBean component·Deploy the enterprise bean using your favorite application server. The following steps describe how to deploy the LoggerEJB component using the J2EE 1.3 Reference Implementation (RI).&…FK‡F# €€€‚ÿ$Ý%‡Fo‰FG \€»€ä€‚‚€€‚‚‚€€‚€€‚‚€€‚ÿ1.Start the RI application from a terminal window or command prompt by typing: $J2EE_HOME/bin/j2ee -verbose2.When the J2EE 1.3 RI indicates "J2EE server startup complete", run the deployment tool from another terminal window or command prompt by typing: $J2EE_HOME/bin/deploytool3.From the deployment tool, select File->New->Application.4.In the Application File Name field, enter Logger.ear to indicate in which file to create the application.{K‡Fê‹F` Ž€7€ä€‚€€‚‚‚‚€€‚‚‚‚‚‚€€€€€€€€€€€€‚ÿ5.In the Application Display Name field, enter Logger6.Select OK to save the settings and close this dialog window.7.From the deployment tool, select File->New->Enterprise Bean.8.Select Next if you get the Introduction screen. If not, continue.9.In the New EnterpriseBean Wizard, select Edit in the Contents box.10.Expand the Available Files list, and add the following four .class files from our ejbinterop package: Logger.class , LoggerHome.class , LoggerEJB.class , LogMessage.class . Select OK, then Next.:Äo‰F$ŽFv º€‰€ä€‚€€‚‚€€€€‚‚€€€€‚‚€€€€‚‚€€‚‚€€€€‚‚€€‚‚‚ÿ11.Select StatelessSessionBeanType.12.Select ejbinterop.LoggerEJB for the EnterpriseBeanClass .13.Select ejbinterop.LoggerHome for the RemoteHomeInterface .14.Select ejbinterop.Logger for the RemoteInterface .15.Select the Next button until you get to the SecuritySettings page.16.Select the DeploymentSettings button.17.Select SupportClientChoice .18.Select OK to save the settings and close this dialog window.4ê‹F£FK d€i€ä€‚‚‚€€‚‚€€‚‚‚‚€€€€‚‚‚‚‚‚ÿ19.Select Finish.20.From the deployment tool, select, Tools->Deploy.21.If running the Java RMI-IIOP client only, select Return Client JAR.22.Select Next.23.Enter ejbinterop/logger in the JNDIName for our LoggerEJB field.24.Select Finish.25.Select File -> Exit to exit the deploytool.×’$ŽF†ÁFE X€%€€€€‚‚€€‚‚€€‚‚€€‚‚‚ÿNow, the Logger applica£F†ÁF @Etion with our LoggerEJB components are deployed and ready to receive messages.Part V: Run the client executable·Run the client executable. One way you can run the client executable is to enter the following URL in a terminal window from the directory containing the executable client file:Client corbaname:iiop:1.2@localhost:1050#ejbinterop/loggerIn this URL,Ä£F–ÃFL f€‰€ä€€‚‚€€‚‚€€‚‚€€€€€€‚ÿ·Client is the name of the application to run.·corbaname specifies that we will resolve a stringified name from a specific naming context.·iiop:1.2 tells the ORB to use the IIOP protocol and GIOP 1.2.·The host machine on which to find the reference is localhost , the local machine. To expand this example to run on two machines, enter the IP address or host name of the machine on which the server is running instead of localhost .ː†ÁFaÅF; D€!€ä€‚€€€€‚‚€€‚‚ÿ·1050 is the port on which the naming service is listening for requests. By default in the J2EE v.1.3 RI, the default port the naming service listens on is port 1050. The portion of the reference up to this point at the hash mark ( Client corbaname:iiop:1.2@localhost:1050 ) is the URL that returns the root naming context.·ejbinterop/logger is the name to resolve in the naming context. Y–ÃFÈFG \€³€€‚‚€€‚€€‚‚€€‚‚€€‚‚ÿIf you are using the J2EE 1.3 Reference Implementation, you should see a message similar to the following printed on the application server:Sep 21, 2001 3:33:07 PM PDT: Message from a C++ client ejbinterop/logger is the name to be resolved from the Naming Service.Part VI: Stop the J2EE Server·Stop the J2EE server. To stop the server, enter this command in a terminal window or command prompt.$J2EE_HOME/bin/j2ee -stopProcedures for stopping running processes vary among operating systems, so if you are running a different server, consult your system documentation for details.,aÅF-ÈF' € €€‚€‚ÿ*ÈFWÈF' €€ ”€ ‚ÿ Ø-ÈFaÉF2 2€±€€‚€‚€%€‚‚‚‚ÿCreating a Java RMI-IIOP client applicationUsing the same example, we can easily develop a Java RMI-IIOP client that connects to an enterprise bean. The differences from the example using a C++ client are:²oWÈFËFC T€ß€ä€€€€€€‚‚€€€€‚‚ÿ·In your client CLASSPATH, you must include the location of the client .jar file created by the J2EE application server running the desired enterprise bean. That .jar file contains the necessary client stubs.·When deploying the application using the J2EE 1.3 RI, check the box Return Client Jar in the Deploytool on the first page of the Deploy screen.äaÉF"ÌF+ $€É€€€€‚‚ÿThe following code is the Java RMI-IIOP version of a client for our LoggerEJB component. Follow the same steps as those presented for the C++ client example. When running the client, use the same URL as in the C++ example.¶SËFäGc ”€§€ä€€‚ÿ//Code Example: LogClient.javapackage ejbinterop;import java.rmi.RemoteException;import javax.rmi.*;import java.io.*;import javax.naming.*;import javax.ejb.*;/** * Simple Java RMI-IIOP client that uses an EJB component. */public class LogClient{ /** * Given a corbaname URL for a LoggerHome, * log a simple String message on the server. */ public static void run(String loggerHomeURL) throws CreateException, RemoveException, RemoteException, NamingException { System.out.println("Looking for: " + loggerHomeURL); // Create an InitialContext. This will use the // CosNaming provider we will specify at runtime. InitialContext ic = new InitialContext(); // Lookup the LoggerHome in the naming context // pointed to by the corbaname URL Object homeObj = ic.lookup(loggerHomeU"ÌFäG @ERL); // Perform a safe downcast LoggerHome home = (LoggerHome)PortableRemoteObject.narrow(homeObj, LoggerHome.class); // Create a Logger EJB reference Logger logger = home.create(); System.out.println("Logging..."); // Log our message logger.logString("Message from a Java RMI-IIOP client"); // Tell the application server we won't use this // EJB reference anymore logger.remove(); System.out.println("Done"); } /** * Simple main method to check arguments and handle * exceptions. */ public static void main(String args[]) { try { if (args.length != 1) { System.out.println("Args: corbaname URL of LoggerHome"); System.exit(1); } LogClient.run(args[0]); } catch (Throwable t) { t.printStackTrace(); System.exit(1); } }}Ó©"ÌF·G* "€S€€ €‚‚‚‚ÿRunning the application with the Java RMI-IIOP clientWhen running the example application with a Java RMI-IIOP client instead of a C++ client, follow these steps:<åäGóGW |€Ë€ä€€€€€‚‚€€‚îá0²EJdk14doc.hlp€‰€‚ÿ1.Compile the . java files in the ejbinterop / directory with the following command:javac -classpath $J2EE_HOME/lib/j2ee.jar: *.java2.Deploy the Enterprise JavaBean component as described in Deploy the Enterprise JavaBean component. Remember to select Return Client JAR on the Tools -> Deploy page when running a Java RMI-IIOP client application. The commands in the Deployment topic instruct you to start the J2EE RI or other application server.'é·G G> J€Ó€ä€‚‚‚€€‚‚‚€€‚‚ÿ3.Run the client application using a command similar to the following:java -classpath $J2EE_HOME/lib/j2ee.jar:/LoggerClient.jar::ejbinterop.LogClient corbaname:iiop:1.2@localhost:1050#ejbinterop/logger In the window in which the J2EE RI is running, you will see this:Jan 31, 2002 2:27:47 PM PST: Message from a Java RMI-IIOP clientIn the window from where the client is run, you will see this: póGº G0 0€à€ä€‚€€‚‚‚ÿLooking for: corbaname:iiop:1.2@localhost:1050#ejbinterop/loggerLogging...Done4.Stop the J2EE server.& Gà G# €€€‚ÿ*º G G' €€ ”€ ‚ÿˆWà G’ G1 2€®€€‚€‚€%€‚‚‚‚ÿBeyond the Basic ApplicationThis section contains the following information:á` Gs G ҀÀ€ä€î 1²EJdk14doc.hlp€‰€‚€î1²EJdk14doc.hlp€‰€‚€î1²EJdk14doc.hlp€‰€‚‚ÿ·Where to go from here·Tips for complex interfaces·Links to similar examplesjA’ GÝ G) "€‚€€ €‚‚‚‚ÿWhere to go from hereTo enhance the application you could:z/s GW GK d€_€ä€€‚‚€€€€‚‚€€€€€€‚‚ÿ·Develop the example to use valuetypes.To do this, remove the -noValueMethods switch when you run rmic . Rerun your IDL to C++ language mapping compiler to verify that it supports the valuetypes that have been generated.·Add another method to Logger that actually takes a LogMessage . àÝ GaG* "€Á€€ €‚‚‚‚ÿTips for complex interfacesThe interfaces are key to the communication between clients and servers speaking different languages. To increase the probability of success in this area, consider the following suggestions:7ûW G€@G< F€÷€ä€€€€‚‚€€€€‚ÿ·Avoid using complex Java classes, such as collections in java.util , for method parameters or return types.After these types are mapped to IDL, you will be forced to implement them in your client programming language. In addition, since Java Object Serialization and RMI-IIOP APIs allow the wire format and internal representation of classes to evoaG€@G @Elve over time, your CORBA client applications may be incompatible across JavaTM 2 Platform, Standard Edition (J2SETM) implementations or versions.=aGáBG6 :€€ä€‚€€‚‚‚‚€€‚ÿ·Start with IDL.You may want complex data structures in your return types or method parameters. In this case, try starting with IDL. Define data structures and even exceptions in IDL, and then use them in your EJB interfaces. This will prevent artifacts of the reverse mapping from creeping into your CORBA interfaces.For instance, try defining the LogMessage class in IDL initially, and then using the resulting class of a Java language to IDL compilation as a method parameter in the Logger EJB component.žf€@GEG8 >€Í€ä€‚€€‚‚‚‚€€‚‚‚ÿ·Avoid overloading in EJB interfaces.CORBA IDL does not support method overloading, and the Java language to IDL mapping specification handles this by creating IDL method definitions that combine the method name with all its IDL parameter types. This leads to very unfriendly method names for developers using languages other than the Java programming language.·Consider using bridges.If the available options are still too limited or impact the code you wish to write, consider using a server-side bridge. You can read more about constructing such bridges from the sites listed in the links section.'áBGŠEG$ €€ä€‚ÿÒšEGxFG* "€Q€€€‚‚‚‚ÿLinks to similar examplesSeveral vendors implementing J2EE technology have excellent examples and tips for integrating CORBA and Enterprise JavaBeans technology: ŠEG…HGù À)€ä€€€(€ÌkEF("http://www.iona.com/docs/iportal_application_server/3.0/DevelopGuide/html/intro-RMI.html#311099",`',1)€‰€‚€€€(€Ì?EF("http://edocs.bea.com/wle/wle50/interop/ejbcorba.htm",`',1)€‰€‚ÿ·IONA - Calling Enterprise Beans from CORBA Clients at http://www.iona.com/docs/iportal_application_server/3.0/DevelopGuide/html/intro-RMI.html#311099.·BEA - EJB-to-CORBA/Java Simpapp Sample Application at http://edocs.bea.com/wle/wle50/interop/ejbcorba.htm/§xFGŽIGˆ ހO€ä€€€(€ÌOEF("http://www.borland.com/devsupport/appserver/faq/ejbcpp/ejb_cpp.html",`',1)€‰€‚‚ÿ·Borland - Sevens steps to build a VisiBroker C++ CORBA Client for an EJB Server at http://www.borland.com/devsupport/appserver/faq/ejbcpp/ejb_cpp.html,/a >&…HGÚIG# €€€‚ÿ*ŽIGJG' €€ ”€ ‚ÿJëÚIGNLG_ Œ€×€€‚€‚‚€‚‚Ì&EF("http://www.sun.com/patents",`',1)€ ‰€‚ÿCopyright © 2002 Sun Microsystems, Inc., 901 San Antonio Road, Palo Alto, California 94303, U.S.A. All rights reserved.Sun Microsystems, Inc. has intellectual property rights relating to technology embodied in this product. In particular, and without limitation, these intellectual property rights may include one or more of the U.S. patents listed at http://www.sun.com/patents and one or more additional patents or pending patent applications in the U.S. and other countries.8JG†NG) €€€‚‚‚‚‚‚ÿThis product is distributed under licenses restricting its use, copying distribution, and decompilation. No part of this product may be reproduced in any form by any means without prior written authorization of Sun and its licensors, if any.Third-party software, including font technology, is copyrighted and licensed from Sun suppliers.Sun, Sun Microsystems, the Sun logo, Java, Enterprise JavaBeans, EJB, J2EE and J2SE are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.«NLG1OG* "€€€‚‚‚€‚ÿUNIX is a registered trademark in the United States and other countries, exclusively licensed through X/Open Company, Ltd.*†NG[OG' €€ ”€ ‚ÿ,1OG‡OG' € €€‚€‚ÿ1[OGžOG1Uÿÿÿÿÿÿÿÿ#ÿÿÿÿžOG €G$‡OG €G" €€€ ÿžOG €G‡OGZ)žOGf€G1òœ€Št“$f€G™€GUIGetting Started Using RMI-IIOP: POA Model3 €G™€G& €€€€‚ÿPOA ModelvNf€GG( €œ€€%‚€‚‚ÿGetting Started Using RMI-IIOP:Example Using POA-based server-side model&™€G5G# €€€‚ÿ*G_G' €€ ”€ ‚ÿÕ¬5G4„G) €Y€€‚€‚‚ÿThis tutorial shows you the steps to follow to create a distributed version of the classic "Hello World" program using Java Remote Method Invocation (RMI) over Internet Inter-ORB Protocol (IIOP). RMI-IIOP adds CORBA (Common Object Request Broker Architecture) capability to Java RMI, providing standards-based interoperability and connectivity to many other programming languages and platforms. RMI-IIOP enables distributed Web-enabled Java applications to transparently invoke operations on remote network services using the industry standard IIOP defined by the Object Management Group. Runtime components include a Java ORB for distributed computing using IIOP communication.k_GŸ‡GQ p€5€€‚çÁœ—Y€‰€‚‚ïm–YJdk14doc.4.hlp€‰€‚ÿRMI-IIOP is for Java programmers who want to program to the RMI interfaces, but use IIOP as the underlying transport. RMI-IIOP provides interoperability with other CORBA objects implemented in various languages - but only if all the remote interfaces are originally defined as Java RMI interfaces. It is of particular interest to programmers using Enterprise JavaBeans (EJB), since the remote object model for EJBs is RMI-based. Another option for creating distributed applications is Java IDL. Java IDL is for CORBA programmers who want to program in the Java programming language based on interfaces defined in CORBA Interface Definition Language (IDL). This is "business as usual" CORBA programming, supporting Java in exactly the same way as other languages like C++ or COBOL.,4„GˇG' € €€‚€‚ÿ*Ÿ‡Gõ‡G' €€ ”€ ‚ÿi5ˇG^‰G4 6€k€€‚€‚€%€‚‚‚‚‚‚ÿTutorial: The Hello World ApplicationThe distributed Hello World example uses a client application to make a remote method call via IIOP to a server, running on the host from which the client was downloaded. When the client runs, "Hello World!" is displayed.This tutorial is organized as follows:ç›õ‡GEŠGL f€7€ä€ç‹Ll€‰€‚çß Ll€‰€‚ç Ll€‰€‚‚ÿ1. The steps to write the source files2. The steps to compile the class files3. The steps to start the Naming Service, server, and client&^‰GkŠG# €€€‚ÿ*EŠG•ŠG' €€ ”€ ‚ÿ„SkŠG‹G1 2€Š€€‚€‚€%€‚‚‚‚ÿWrite the Source FilesThere are three tasks to complete in this section:D땊G]ŒGY €€×€ä€緇Il€‰€‚çà‡Il€‰€‚ç9i)*€‰€‚çŽIl€‰€‚‚ÿ1. Define the functions of the remote class as an interface written in the Java programming language2. Write the implementation class3. Write the server class4. Write a client program that uses the remote serviceV2‹G³ŒG$ €d€€‚‚ÿThe source files created in this tutorial are:‰]ŒG³ŽGw Œ€€ä€€çè‡Il€‰€‚€€ç ˆIl€‰€€€‚€€çk*Ò£€‰€‚€çEŽIl€‰€€€‚‚ÿ· HelloInterface.java - a remote interface · HelloImpl.java - a remote object implementation that implements HelloInterface · HelloServer.java - an RMI server that creates an instance of the remote object implementation and binds that instance to a name in the Naming Service · HelloClient.java - a client application that invokes the remote method, sayHello()§w³ŒGfÀG0 .€ï€€ €‚‚€€‚‚ÿDefine the functions of the remote class as an interface written in the Java programming languageIn the Java programming language, a remote object is an instance of a class that implements a Remote interface. Your remote interface will declare each of the methods that you would ³ŽGfÀG €Glike to call from other machines. Remote interfaces have the following characteristics:-Ù³ŽG“ÂGT v€³€ä€€€€‚€€€€‚€€€€€€€€‚ÿ· The remote interface must be declared public. Otherwise, a client will get an error when attempting to load a remote object that implements the remote interface, unless that client is in the same package as the remote interface.· The remote interface extends the java.rmi.Remote interface.· Each method must declare java.rmi.RemoteException (or a superclass of RemoteException) in its throws clause, in addition to any application-specific exceptions.J fÀGÝÃGA P€€ä€€€(€€(€€€€€‚‚ÿ· The data type of any remote object that is passed as an argument or return value (either directly or embedded within a local object) must be declared as the remote interface type (for example, HelloInterface) not the implementation class (HelloImpl).*ó“ÂGÅG7 <€ç€€€€€€€€‚‚ÿFor this example, create all of the source files in the same directory, for example, $HOME/mysrc/helloWorld. Here is the interface definition for the remote interface, HelloInterface. The interface contains just one method, sayHello:ݪÝÃGäÅG3 4€U€ä€€€€‚ÿ//HelloInterface.javaimport java.rmi.Remote;public interface HelloInterface extends java.rmi.Remote { public void sayHello() throws java.rmi.RemoteException;}ÅGèÇGw Œ€€€€€€(Ì@EF("http://www.sunlabs.com/techrep/1994/abstract-29.html",`',1)€-‰€‚ÿBecause remote method invocations can fail in very different ways from local method invocations (due to network-related communication problems and server problems), remote methods will report communication failures by throwing a java.rmi.RemoteException. If you want more information on failure and recovery in distributed systems, you may wish to read A Note on Distributed Computing.€qäÅGŒÈG3 6€â€€‚€ €‚‚€€‚‚ÿWrite The Implementation ClassAt a minimum, a remote object implementation class, HelloImpl.java must: ÅèÇG¬ÉG[ „€‹€ä€€ç ˆIl€‰€‚€€çºIl€‰€‚€€çºIl€‰€‚‚ÿ· Declare that it implements at least one remote interface· Define the constructor for the remote object· Provide implementations for the methods that can be invoked remotely„ZŒÈG0ÊG* $€Ž€€€€‚‚ÿAn explanation of each of the preceding steps follows the source for HelloImpl.java:Àˆ¬ÉGðËG8 >€€ä€€€€‚ÿ//HelloImpl.javaimport javax.rmi.PortableRemoteObject;public class HelloImpl extends PortableRemoteObject implements HelloInterface { public HelloImpl() throws java.rmi.RemoteException { super(); // invoke rmi linking and remote object initialization } public void sayHello() throws java.rmi.RemoteException { System.out.println( "It works! Hello World!!" ); }}žW0ÊGŽÎGG \€¯€€€‚‚€€€€€(€€€€€‚ÿImplement a remote interfaceIn the Java programming language, when a class declares that it implements an interface, a contract is formed between the class and the compiler. By entering into this contract, the class is promising that it will provide method bodies, or definitions, for each of the method signatures declared in that interface. Interface methods are implicitly public and abstract, so if the implementation class doesn't fulfill its contract, it becomes by definition an abstract class, and the compiler will point out this fact if the class was not declared abstract.q#ðËG HN j€G€€‚€€€€‚‚€€‚€€€€€€‚ÿThe implementation class in this example is HelloImpl. The implementation class declares which remote interface(s) it is implementing. Here is the HelloImpl class declaration: public class HelloImpl extends PortableRemoteObject implements HelloInterface{As a convenience, the ŽÎG H €Gimplementation class can extend a remote class, which in this example is javax.rmi.PortableRemoteObject. By extending PortableRemoteObject, the HelloImpl class can be used to create a remote object that uses IIOP-based transport for communication.ŐŽÎGÐH5 8€!€€‚€€‚‚‚‚€€‚ÿDefine the constructor for the remote objectThe constructor for a remote class provides the same functionality as the constructor for a non-remote class: it initializes the variables of each newly created instance of the class, and returns an instance of the class to the program which called the constructor.In addition, the remote object instance will need to be "exported". Exporting a remote object makes it available to accept incoming remote method requests, by listening for incoming calls to the remote object on an anonymous port. When you extend javax.rmi.PortableRemoteObject, your class will be exported automatically upon creation.\ H,HK d€#€€‚€€€(€€€€€‚‚€€‚ÿBecause the object export could potentially throw a java.rmi.RemoteException, you must define a constructor that throws a RemoteException, even if the constructor does nothing else. If you forget the constructor, javac will produce the following error message: HelloImpl.java:3: unreported exception java.rmi.RemoteException; must be caught or declared to be thrown. public class HelloImpl extends PortableRemoteObject implements HelloInterface{ ^ 1 errorqGÐHH* $€Ž€€€(€‚‚ÿTo review: The implementation class for a remote object needs to: ¿,HšHL f€€ä€€€(€‚€€€(€‚€€€(€€‚‚ÿ· Implement a remote interface· Export the object so that it can accept incoming remote method calls· Declare its constructor(s) to throw at least a java.rmi.RemoteExceptionϘHwH7 <€1€€€€‚‚€€‚‚‚ÿHere is the constructor for the HelloImpl class: public HelloImpl() throws java.rmi.RemoteException { super(); }Note the following:‚@šHù HB R€€ä€€€€€€‚€€€€‚‚ÿ· The super method call invokes the no-argument constructor of javax.rmi.PortableRemoteObject, which exports the remote object.· The constructor must throw java.rmi.RemoteException, because RMI's attempt to export a remote object during construction might fail if communication resources are not available.HÇwHA H Ѐ€€€€‚‚ÌCEF("http://java.sun.com/products/jdk/rmi/archives/3490.html",`',1)€0‰€‚‚€€‚ÿIf you are interested in why java.rmi.RemoteException is a checked exception rather than runtime exception, please refer to the archives of the rmi-users email list:http://java.sun.com/products/jdk/rmi/archives/3490.htmlAlthough the call to the superclass's no-argument constructor, super(), occurs by default (even if omitted), it is included in this example to make clear the fact that the superclass will be constructed before the class.Äù HCH> J€‰€€‚€€‚‚€€‚‚€€‚ÿProvide an implementation for each remote methodThe implementation class for a remote object contains the code that implements each of the remote methods specified in the remote interface. For example, here is the implementation for the sayHello() method, which returns the string "It works! Hello World!!" to the caller: public void sayHello() throws java.rmi.RemoteException { System.out.println( "It works! Hello World!!" ); }d'A H§H= H€O€€€€€€€€€€‚‚ÿArguments to, or return values from, remote methods can be any data type for the Java platform, including objects, as long as those objects implement the interface java.io.Serializable. Most of the core classes in java.lang and java.util implement the Serializable interface. In RMI:‹CH³BHu ž€€ä€€€€€€ç³—Y€‰€‚€€î1²EJdk14doc.hlp§H³BH €G€‰€çIl€€1€‰€‚ÿ· By default, local objects are passed by copy, which means that all data members (or fields) of an object are copied, except those marked as static or transient. Please refer to the Java Object Serialization Specification for information on how to alter the default serialization behavior.· Remote objects are passed by reference. A reference to a remote object is actually a reference to a stub, which is a client-side proxy for the remote object. Stubs are described fully in the Java Remote Method Invocation Specification. We'll create them later in this tutorial in the section: Use rmic to generate stubs and skeletons.'§HÚBH$ €€ä€‚ÿÚ–³BHŽDHD V€-€€ €‚‚€€€€‚‚€€€€‚‚ÿWrite The Server ClassA server class is the class which has a main method that creates an instance of the remote object implementation, and binds that instance to a name in the Naming Service. The class that contains this main method could be the implementation class itself, or another class entirely.In this example, the main method is part of HelloServer.java, which does the following:ž7ÚBHlFH Ѐo€ä€€çDºIl€‰€‚€€ç©K…Þ€‰€‚€€çÞÀ‰€‚€€çÂIl€‰€‚€€ç{ÀIl€‰€‚‚ÿ· Creates a Portable Object Adapter (POA) with the appropriate policies· Activates the POA Managers· Creates an instance of the servant and activates the Tie, creates an instance of a remote object· Publishes the object reference· Prepares to accept requests from the client†\ŽDHòFH* $€ž€€€€‚‚ÿAn explanation of each of the preceding steps follows the source for HelloServer.java:- Á lFH+Hl Š€ƒ€ä€€€€‚ÿ//HelloServer.javaimport javax.naming.InitialContext;import javax.naming.Context;import javax.rmi.PortableRemoteObject ;import com.sun.corba.se.internal.POA.POAORB;import org.omg.PortableServer.*;import java.util.*;import org.omg.CORBA.*;import javax.rmi.CORBA.Stub;import javax.rmi.CORBA.Util;public class HelloServer { public HelloServer(String[] args) { try { Properties p = System.getProperties(); // add runtime properties here p.put("org.omg.CORBA.ORBClass", "com.sun.corba.se.internal.POA.POAORB"); p.put("org.omg.CORBA.ORBSingletonClass", "com.sun.corba.se.internal.corba.ORBSingleton"); ORB orb = ORB.init( args, p ); POA rootPOA = (POA)orb.resolve_initial_references("RootPOA"); // STEP 1: Create a POA with the appropriate policies Policy[] tpolicy = new Policy[3]; tpolicy[0] = rootPOA.create_lifespan_policy( LifespanPolicyValue.TRANSIENT ); tpolicy[1] = rootPOA.create_request_processing_policy( RequestProcessingPolicyValue.USE_ACTIVE_OBJECT_MAP_ONLY ); tpolicy[2] = rootPOA.create_servant_retention_policy( ServantRetentionPolicyValue.RETAIN); POA tPOA = rootPOA.create_POA("MyTransientPOA", null, tpolicy); // STEP 2: Activate the POA Manager, otherwise all calls to the // servant hang because, by default, POAManager will be in the // HOLD state. tPOA.the_POAManager().activate(); // STEP 3: Instantiate the Servant and activate the Tie, If the // POA policy is USE_ACTIVE_OBJECT_MAP_ONLY HelloImpl helloImpl = new HelloImpl(); _HelloImpl_Tie tie = (_HelloImpl_Tie)Util.getTie( helloImpl ); String helloId = "hello"; byte[] id = helloId.getBytes(); tPOA.activate_object_with_id( id, tie ); // STEP 4: Publish the object reference using the same object id // used to activate the Tie object. Context initialNamingContext = new InitialContext(); initialNamingContext.rebind("HelloService", tPOA.create_reference_with_id(id, tie._all_interfaces(tPOA,id)[0]) ); System.out.println("Hello Server: Ready..."); // STEP 5òFH+H €G: Get ready to accept requests from the client orb.run(); } catch (Exception e) { System.out.println("Problem running HelloServer: " + e); e.printStackTrace(); } } public static void main(String args[]) { new HelloServer( args ); }}ã†òFH„H] ˆ€ €€€‚‚€€ïèm–YJdk14doc.4.hlp€‰€‚‚€€‚ÿCreate a Portable Object Adapter (POA) with the appropriate policiesThe main method of the server first needs to create a Portable Object Adapter (POA) with the appropriate policies. For example: Policy[] tpolicy = new Policy[3]; tpolicy[0] = rootPOA.create_lifespan_policy( LifespanPolicyValue.TRANSIENT ); tpolicy[1] = rootPOA.create_request_processing_policy( RequestProcessingPolicyValue.USE_ACTIVE_OBJECT_MAP_ONLY ); tpolicy[2] = rootPOA.create_servant_retention_policy( ServantRetentionPolicyValue.RETAIN); POA tPOA = rootPOA.create_POA("MyTransientPOA", null, tpolicy);j+Hž†H& €Õ€€‚‚‚ÿThe Portable Object Adaptor (POA) is designed to provide an object adapter that can be used with multiple ORB implementations with a minimum of rewriting needed to deal with different vendors' implementations. POA support is new in J2SE version 1.4.The POA is also intended to allow persistent objects -- at least, from the client's perspective. That is, as far as the client is concerned, these objects are always alive, and maintain data values stored in them, even though physically, the server may have been restarted many times, or the implementation may be provided by many different object implementations.‚Z„H ˆH( €µ€€‚‚‚‚‚ÿThe POA allows the object implementor a lot more control. Previously, the implementation of the object was responsible only for the code that is executed in response to method requests. Now, additionally, the implementor has more control over the object's identity, state, storage, and lifecycle.In this example, the policy values include:m?ž†HˆH. ,€~€ä€€€€‚‚ÿ· The LifespanPolicyValue can have the following values:ä ˆH¢‰H1 0€É€ɀ€€‚€€‚‚ÿ· TRANSIENT - The objects implemented in the POA cannot outlive the POA instance in which they are first created. · PERSISTENT - The objects implemented in the POA can outlive the process in which they are first created.vHˆHŠH. ,€€ä€€€€‚‚ÿ· The RequestProcessingPolicyValue can have the following values: Á¢‰H!ŒHH ^€ƒ€ɀ€€€€€€‚€€€€€€‚ÿ· USE_ACTIVE_OBJECT_MAP_ONLY - If the object ID is not found in the Active Object Map, an OBJECT_NOT_EXIST exception is returned to the client. The RETAIN policy is also required. · USE_DEFAULT_SERVANT - If the object ID is not found in the Active Object Map or the NON_RETAIN policy is present, and a default servant has been registered with the POA using the set_servant operation, the request is dispatched to the default servant. j4ŠH‹H6 :€i€ɀ€€€€€€‚‚ÿ· USE_SERVANT_MANAGER - If the object ID is not found in the Active Object Map or the NON_RETAIN policy is present, and a servant manager has been registered with the POA using the set_servant_manager operation, the servant manager is given the opportunity to locate a servant or raise an exception.uG!ŒHŽH. ,€Ž€ä€€€€‚‚ÿ· The ServantRetentionPolicyValue can have the following values.5ø‹H5H= H€ñ€ɀ€€€€€€‚€€‚‚ÿ· RETAIN - to indicate that the POA will retain active servants in its Active Object Map. If no ServantRetentionPolicy is specified at POA creation, the default is RETAIN. · NON_RETAIN - to indicate Servants are not retained by the POA.ÐFŽHÂHŠ ‍€€€(€Ì:EF("http://cgi.omg.org/cgi-bin/doc?formal/99-10-07",`',1)€‰€‚‚€€‚‚€€€€€€‚ÿFor more information on POA policies, refer to Chapter 11, Port5HÂH €Gable Object Adapter of the CORBA/IIOP 2.3.1 Specification at http://cgi.omg.org/cgi-bin/doc?formal/99-10-07Activate the POA ManagersEach POA object has an associated POAManager object. A POA Manager may be associated with one or more POA objects. A POA Manager encapsulates the processing state of the POAs it is associated with. In this step, the POA Manager is activated. If this step is missing, all calls to the Servant would hang because, by default, the POA Manager will be in the HOLD state.p5HÅHS t€;€€‚€€‚€€‚‚€€€(€‚‚€€‚‚‚€€‚ÿ tPOA.the_POAManager().activate();Create an instance of a remote object and activate the TieThe main method of the server needs to create an instance of the remote object implementation, or Servant. For example: HelloImpl helloImpl = new HelloImpl();The constructor exports the remote object, which means that once created, the remote object is ready to accept incoming calls.When using RMI-IIOP technology, your implementations use delegation (known as the Tie model) to associate your implementation with the interface. When you create an instance of your implementation, as above, you also need to create a Tie object to associate it with a CORBA interface. The next few lines of code activate the Tie, but only if the POA policy is USE_ACTIVE_OBJECT_MAP_ONLY.²TÂH3ÉH^ Š€©€€‚€€‚€€‚‚‚‚ïæm–YJdk14doc.4.hlp€‰€€€‚ÿ _HelloImpl_Tie tie = (_HelloImpl_Tie)Util.getTie( helloImpl ); String helloId = "hello"; byte[] id = helloId.getBytes(); tPOA.activate_object_with_id( id, tie );Publish the object reference using the same object id used to activate the Tie objectFor a caller (client, peer, or client application) to be able to invoke a method on a remote object, that caller must first obtain a reference to the remote object.Once a remote object is registered on the server, callers can look up the object by name (using a naming service), obtain a remote object reference, and then remotely invoke methods on the object. In this example, we use the Object Request Broker Daemon (orbd), which is a daemon process containing a Bootstrap Service, a Transient Naming Service, a Persistent Naming Service, and a Server Manager.嫁ÅHËH: B€W€€‚‚‚€€‚€€‚‚ÿFor example, the following code binds the name "HelloService" to a reference for the remote object: Context initialNamingContext = new InitialContext(); initialNamingContext.rebind("HelloService", tPOA.create_reference_with_id(id, tie._all_interfaces(tPOA,id)[0]) ); System.out.println("Hello Server: Ready...");Note the following about the arguments to the rebind method call:G3ÉH_ÌHC T€ €ä€€€€€€‚‚€€€€‚‚ÿ· The first argument, "HelloService", is a java.lang.String, representing the name of the remote object to bind· The second argument, tPOA.create_reference_with_id(id, tie._all_interfaces(tPOA,id)[0] is the object id of the remote object to bindÁËHbÎHB R€ƒ€€€‚‚‚‚€€‚€ €‚‚€€‚‚ÿPrepare to accept requests from the clientThe following line of code, when called by the main thread, enables the ORB to perform work using the main thread. orb.run();Write a client program that uses the remote serviceThe client application in this example remotely invokes the sayHello method in order to get the string "Hello World!" to display when the client application runs. Here is the code for the client application:$Å_ÌH’I_ Œ€‹ €ä€€€€‚ÿ//HelloClient.javaimport java.rmi.RemoteException;import java.net.MalformedURLException;import java.rmi.NotBoundException;import javax.rmi.*;import java.util.Vector;import javax.naming.NamingException;import javax.naming.InitialContext;import javax.naming.Context;public class HelloClient { public static bÎH’I €Gvoid main( String args[] ) { Context ic; Object objref; HelloInterface hi; try { ic = new InitialContext(); } catch (NamingException e) { System.out.println("failed to obtain context" + e); e.printStackTrace(); return; } // STEP 1: Get the Object reference from the Name Service // using JNDI call. try { objref = ic.lookup("HelloService"); System.out.println("Client: Obtained a ref. to Hello server."); } catch (NamingException e) { System.out.println("failed to lookup object reference"); e.printStackTrace(); return; } // STEP 2: Narrow the object reference to the concrete type and // invoke the method. try { hi = (HelloInterface) PortableRemoteObject.narrow( objref, HelloInterface.class); hi.sayHello(); } catch (ClassCastException e) { System.out.println("narrow failed"); e.printStackTrace(); return; } catch( Exception e ) { System.err.println( "Exception " + e + "Caught" ); e.printStackTrace( ); return; } }}ÉbÎH—I< F€“€€€€€€€€€€‚ÿFirst, the client application gets a reference to the remote object implementation (advertised as "HelloService") from the Name Service using Java Naming and Directory Interface [TM] (JNDI) calls. Like the Naming.rebind method, the Naming.lookup method takes java.lang.String value representing the name of the object to look up. You supply Naming.lookup() the name of the object you want to look up, and it returns the object bound to that name.&’IœI# €€€‚ÿY1—II( €b€ä€€‚‚ÿ· Naming.lookup() takes care of these tasks:oœI…I\ †€'€ɀ€€€€‚€€€€€€€€‚€€€€€€‚‚ÿ· The Name Service returns the _HelloImpl_Stub instance bound to that name· The lookup method receives the remote object's (HelloImpl) stub instance and loads the stub class (_HelloImpl_Stub) · Naming.lookup returns the stub to its caller (HelloClient)äµIi I/ ,€k€ä€€€€‚‚ÿ· The client application invokes the remote sayHello() method on the server's remote object, causing the string "It works! Hello World!!" to be displayed on the command line.&…I I# €€€‚ÿ*i I¹ I' €€ ”€ ‚ÿŠu I_ I1 2€ê€€‚€‚€%€‚‚‚‚ÿCompile Class FilesThe source code for this example is now complete and the directory contains four files:z*¹ IÙ IP n€U€ä€€€€‚€€€€‚€€‚€€€€‚‚ÿ· HelloInterface.java contains the source code for the remote interface· HelloImpl.java contains the source code for the remote object implementation · HelloServer.java contains the source code for the server· HelloClient.java contains the source code for the client application0è_ I IH ^€Ñ€€€€€€€€€€€€€€‚ÿIn this section, you compile the remote object implementation file, HelloImpl.java, in order to create the .class files needed to run rmic. You then run the rmic compiler to create stubs and skeletons. A stub is a client-side proxy for a remote object which forwards RMI-IIOP calls to the server-side dispatcher, which in turn forwards the call to the actual remote object implementation. The last task is to compile the remaining .java source files to create .class files.`;Ù IiI% €v€€‚‚‚ÿThe following tasks will be completed in this section:ׅ I@IR r€ €ä€ç] €‰€‚çIl€€€‰€‚çIl€‰€‚‚ÿ1. Compile the remote object implementation2. Use rmic to generate stubs and skeletons3. Compile the source files ÉiIYAID V€“€€ €‚‚€€€€€€‚‚€€‚ÿCompile the remote object implementationTo create stub and skeleton files, the rmic compiler must be run on the fully-@IYAI €Gqualified package names of compiled class files that contain remote object implementations. In this example, the file that contains the remote object implementations is HelloImpl.java. In order to generate the stubs and skeletons, we must first compile HelloImpl.java, as follows: javac -d . -classpath . HelloImpl.java–@IYDIj ¢€-€€€€€€€€‚‚€ €2€ €‚‚€€€€€€€€€€€€‚ÿThe "-d ." option indicates that the generated files should be placed in the directory from which you are running the compiler. The "-classpath ." option indicates that files on which HelloImpl.java is dependent can be found in this directory.Use rmic to generate skeletons and stubsTo create CORBA-compatible stub and skeleton files, run the rmic compiler with the -poa -iiop option. The rmic -poa -iiop command takes one or more class names as an argument and produces class files of the form _MyImpl_Tie.class and _MyInterface_Stub.class. The remote implementation file, HelloImpl.class, is the class name to pass in this example.ªBYAIFIh ž€…€€‚€€ç°˜Y€€€‰€çòµ˜Y€€€‰€‚‚€€€€‚‚€€‚‚‚ÿFor an explanation of rmic options, you can refer to the Solaris rmic manual page or the Win32 rmic manual page.To create the stub and skeleton for the HelloImpl remote object implementation, run rmic like this: rmic -poa -iiop HelloImplThe preceding command creates the following files:¡fYDI€FI; F€Ì€ä€€€€‚€€€€‚‚ÿ· _HelloInterface_Stub.class - the client stub· _HelloImpl_Tie.class - the server skeletonköFIIIu ž€í€€ €‚‚€€‚‚€€‚€€€€€€€€ç毘Y€€€‰€çv·˜Y€€€‰€‚ÿCompile the source filesTo compile the source files, run the javac command as follows: javac -d . -classpath . HelloInterface.java HelloServer.java HelloClient.javaThis command creates the class files HelloInterface.class, HelloServer.class, and HelloClient.class. These are the remote interface, the server, and the client application respectively. For an explanation of javac options, you can refer to the Solaris javac manual page or the Win32 javac manual page.&€FI5II# €€€‚ÿ*II_II' €€ ”€ ‚ÿªy5II JI1 2€ò€€‚€‚€%€‚‚‚‚ÿStart the Naming Service, server, and client applicationThe following tasks will be completed in this section:š]_II±JIK f€º€ä€ç£Il€‰€‚çO•Il€‰€‚çT•Il€‰€‚‚ÿ1. Start the Naming Service2. Start the server3. Run the client applicationi6 JIMI3 4€m€€ €‚‚€€‚‚‚‚‚ÿStart the Naming ServiceFor this example, we will use the Object Request Broker Daemon, orbd, which includes both a Transient and a Persistent Naming Service, and is available with every download of J2SE 1.4 and higher.For a caller (client, peer, or client application) to be able to invoke a method on a remote object, that caller must first obtain a reference to the remote object.Once a remote object is registered on the server, callers can look up the object by name, obtain a remote object reference, and then remotely invoke methods on the object.žD±JIÒOIt ¶€‰€€‚€€€€ïæm–YJdk14doc.4.hlp€€‰€‚‚‚‚€€‚‚‚€€‚€€€€‚ÿTo start the Naming Service, run orbd from the command line. This command produces no output and is typically run in the background. For more on the orbd tool, you can refer to the orbd manual page.For this example, on the Solaris operating system: orbd -ORBInitialPort 1060&or, on the Windows operating system: start orbd -ORBInitialPort 1060You must specify a port on which to run orbd. For this example the port of 1060 is chosen because in the Solaris operating environment, a user must become root to start a process on a port under 1024.dMIBƒIG \€;€€‚€(€‚‚€ ÒOIBƒI €G€‚‚€€€€€€‚ÿYou must stop and restart the server any time you modify a remote interface or use modified/additional remote interfaces in a remote object implementation. Otherwise, the type of the object reference bound in the Naming Service will not match the modified class.Start the serverOpen another terminal window and change to the directory containing the source files for this example. The command for running the client has been spread out below to make it easier to read, but should be typed without returns between the lines. The following command shows how to start the HelloServer server. Of course, if you used a port other than 1060 or a host other than localhost when starting the orbd tool, replace those values in the command below with the actual values used to start orbd.”ÒOID…In ª€)€€‚€€‚€€ç寘Y€€€‰€çu·˜Y€€€‰€‚‚‚‚€€‚€ €‚‚ÿ java -classpath . -Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url=iiop://localhost:1060 HelloServer &For an explanation of java options, you can refer to the Solaris java manual page or the Win32 java manual page.The output should look like this:Hello Server: Ready ...Run the client applicationZ*BƒIž‡I0 .€U€€€€€€‚ÿOnce the Naming Service and server are running, the client application can be run. From a new terminal window, go to the source code directory, and run the client application from the command line, as shown below. The command for running the client has been spread out below to make it easier to read, but should be typed without returns between the lines. Of course, if you used a port other than 1060 or a host other than localhost when starting the orbd tool, replace those values in the command below with the actual values used to start orbd.áD…I»‰I< F€Ã€€‚€€‚‚‚€€‚‚ÿ java -classpath . -Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url=iiop://localhost:1060 HelloClient &After running the client application, you will see output similar to the following on your display:Client: Obtained a ref. to Hello server.It works! Hello World!!This completes the tutorial. If you are ready to move on to more complicated applications, here are some sources that may help:&ž‡Iá‰I# €€€‚ÿ|‡»‰I]ŒIõ ž€ä€€Ì?EF("http://forum.java.sun.com/list/discuss.sun.rmi-iiop",`',1)€‰€‚‚€€Ì0EF("http://java.sun.com/j2ee/blueprints/",`',1)€‰€Ì8EF("http://java.sun.com/j2ee/tutorial/index.html",`',1)€‰€‚ÿ· http://forum.java.sun.com/list/discuss.sun.rmi-iiop, The Sun Developer's Forum for RMI-IIOP. You must register with the Java Developer Connection to access this site.· EJB clients interact with the J2EE EJB tier using the RMI-IIOP protocol. For more information on using RMI-IIOP in this way, see the Java 2 Platform, Enterprise Edition Blueprints or the EJB Tutorials.ú¯á‰IWIK d€_€ä€‚€€ïn–YJdk14doc.4.hlp€‰€‚‚ÿ· The Java IDL tutorial includes an example for running the client and server on different machines. The concepts of Running the Hello World Example on Two Machines&]ŒI}I# €€€‚ÿ*WI§I' €€ ”€ ‚ÿ&}I͍I# €€€‚ÿb§I/IÕ#xÂ€€ÿçñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì#EF("mailto:rmi-iiop@sun.com",`',1)€ ‰€€‚ÿ€ÿ(€†"€‚ÿÿÿCopyright © 2001 Sun Microsystems, Inc. All Rights Reserved. Please send questions or comments to: rmi-iiop@sun.com &͍IUI# €€€‚ÿ1/I†I1Uÿÿÿÿÿÿÿÿ%ÿÿÿÿ†IªI$UIªI" €€€ ÿL†I ÀI1«a¹ –& ÀIQÀIïKRMI-IIOP Programmer's GuideªI ÀIªIEªIQÀI& €>€€€‚ÿRMI-IIOP Programmer's Guide' ÀIxÀI# €€€‚ÿ èEQÀI`ÁI£#ŒlŒŒ€€ÿ.€€€†"€‚ÿ€ €ÿ(€ € €%€‚ÿ€P€ ÿ.€R€çÁœ—Y€ ‰€‚ÿÿÿRMI-IIOP Programmer's GuideRMI-IIOP Documentation&xÀI†ÁI# €€€‚ÿ*`ÁI°ÁI' €€ ”€ ‚ÿĆÁIÇÅIS t€‰€€‚€‚çÜ †V€‰€‚‚€ €‚‚€€‚‚睗Y€‰€‚ÿThis document discusses how to write Java Remote Method Invocation (RMI) programs that can access remote objects by using the Internet Inter-ORB Protocol (IIOP). By making your RMI programs conform to a small set of restrictions, your CORBA clients in any language can access RMI-IIOP servers. RMI-IIOP gives you RMI ease-of-use coupled with CORBA/IIOP language interoperability.What is RMI-IIOP?RMIWith RMI you can write distributed programs in the Java programming language. RMI is easy to use, you don't need to learn a separate interface definition language (IDL), and you get Java's inherent "write once, run anywhere" benefit. Clients, remote interfaces, and servers are written entirely in Java. RMI uses the Java Remote Method Protocol (JRMP) for remote Java object communication. To get a quick introduction to writing RMI programs, see the RMI Tutorial web page. That document describes writing a simple "Hello World" RMI program.xI°ÁI?ÈI/ ,€“€€‚‚‚€€‚‚‚ÿRMI lacks interoperability with other languages because it does not use CORBA-IIOP as the communication protocol.IIOP, CORBA, and Java IDLIIOP is CORBA's communication protocol using TCP/IP as the transport. It specifies a standard for client and server communication. CORBA is a standard distributed object architecture developed by the Object Management Group (OMG). Interfaces to remote objects are described in a platform-neutral interface definition language (IDL). Mappings from IDL to specific programming languages are implemented, binding the language to CORBA/IIOP.#ºÇÅIbÊIi  €u€€‚€€‚‚ïm–YJdk14doc.4.hlp€‰€ï˜m–YJdk14doc.4.hlp€‰€‚ÿThe Java(TM) 2 Platform, Standard Edition (J2SE), v.1.4 CORBA/IIOP implementation is known as Java IDL. Along with the idlj compiler, Java IDL can be used to define, implement, and access CORBA objects from the Java programming language.The Java IDL web page gives you a good, Java-centric view of CORBA/IIOP programming. To get a quick introduction to writing Java IDL programs, see the Getting Started: Hello World web page.ò°?ÈITÌIB R€a€€‚€€‚‚çÜ †V€‰€‚‚€ €‚‚ÿRMI-IIOPPreviously Java programmers had to choose between RMI and CORBA/IIOP (Java IDL) for distributed programming solutions. Now, by adhering to a few restrictions, RMI server objects can use the IIOP protocol and communicate with CORBA client objects written in any language. This solution is known as RMI-IIOP. RMI-IIOP combines RMI-style ease of use with CORBA cross-language interoperability.Table of Contents?ŸbÊI“ÍI Ѐ}€ä€€çj¯0u€‰€‚€€çƃ%u€‰€‚€€ç¿D>€‰€‚€€çÜ †V€‰€‚€€ç„k€‰€‚‚ÿ· The rmic Compiler· The idlj Compiler· How to Make RMI Programs Use IIOP· Restrictions When Running RMI Programs Over IIOP· Other Things You Should KnowèSTÌI{ÏI• ø€§€€ €‚‚€€Ì7EF("http://cgi.omg.org/cgi-bin/doc?ptc/00-01-06",`',1)€‰€î1²EJdk14doc.hlp€‰€‚‚€€‚‚ÿThe rmic CompilerThe RMI-IIOP software comes with an rmic compiler that can generate IIOP stubs and ties, and emit IDL, in accordance with the Java Language to OMG IDL Language Mapping Specification, in accordance with the compliance statement.Here are the primary rmic flags that support the CORBA/IIOP functionality:ôŸ“ÍI{JU x€?€ä€€€‚€ïèm–YJdk14doc.4.hlp€‰€€‚€‚‚ÿ-iiop -- Generates IIOP stubs/ties.-iiop -po{ÏI{JªIa -- Generates IIOP stubs/ties that work with a Portable Object Adapter (POA).-idl -- Generates IDL.sI{ÏIîJ* $€’€€€€‚‚ÿThe following options are used in conjunction with the -idl option.i{JWJU x€)€ä€€€€€‚€€€€€€‚€€‚€€€‚ÿ-noValueMethods -- Stops generation of IDL for methods and constructors within IDL valuetypes.-always -- Forces regeneration even when existing stubs/ties/idl are newer than the input class. Only valid when -iiop and/or -idl flags are present.-idlModule >-- Specifies IDLEntity package mapping. For example: -idlModule foo.bar my::real::idlmod-idlFile > -- Specifies IDLEntity file mapping. For example: -idlFile test.pkg.X TEST16.idl'îJ~J$ €€ä€‚ÿ ŸWJ‹JO l€}€€€€ç°˜Y€€‰€‚‚€€‚‚€€€€‚ÿFor more detailed information on the rmic compiler, read the rmic documentation.The -iiop FlagUsing rmic with the -iiop option generates IIOP stub and tie classes instead of Java Remote Method Protocol (JRMP) stub and skeleton classes. A stub class is a local proxy for a remote object. Stub classes are used by clients to send calls to a server. Each remote interface requires a stub class, which implements that remote interface. The client's reference to a remote object is actually a reference to a stub. Tie classes are used on the server side to process incoming calls, and dispatch the calls to the proper implementation class. Each implementation class requires a tie class.˜Z~J#J> J€µ€€‚€€€€€€€€‚‚ÿStub classes are also generated for abstract interfaces. An abstract interface is an interface that does not extend java.rmi.Remote, but whose methods all throw either java.rmi.RemoteException or a superclass of java.rmi.RemoteException. Interfaces that do not extend java.rmi.Remote and have no methods are also abstract interfaces.m6‹J J7 <€m€ä€€€€‚‚€€‚‚ÿQUESTION: I have a RMI-IIOP application which was running on J2SE 1.3. When I generate new stubs and skeletons using rmic -iiop -poa , it does not work. Why ? ANSWER: There are 2 different ways to compile and run RMI-IIOP programs, which are listed below. We do not recommend that you combine these.Žs#JD JA P€ç€ɀ€çÆœ—Y€‰€‚‚çܗY€‰€‚‚ÿ1. The default RMI-IIOP behavior. An example of an application that uses the default RMI-IIOP behavior can be found at Tutorial: Getting Started Using RMI-IIOP.2. POA-based RMI-IIOP. An example of an application that uses the non-standard POA-based RMI-IIOP behavior can be found at Getting Started Using RMI-IIOP: Example Using POA-based server-side model. Z JdJÆ Zµ€€€‚‚€€€€€€€€€€€Ì7EF("http://cgi.omg.org/cgi-bin/doc?ptc/00-01-06",`',1)€&‰€€‚‚€€ïèm–YJdk14doc.4.hlp€‰€€€€€€€‚ÿThe -iiop -poa FlagNew to this release of J2SE is the -iiop -poa option. Using the -iiop flag with the -poa option changes the inheritance from org.omg.CORBA_2_3.portable.ObjectImpl to org.omg.PortableServer.Servant. This type of mapping is nonstandard and is not specified by the Java Language to OMG IDL Language Mapping Specification. The PortableServer module for the Portable Object Adapter (POA) defines the native Servant type. In the Java programming language, the Servant type is mapped to the Java org.omg.PortableServer.Servant class. It serves as the base class for all POA servant implementations and provides a number of methods that may be invoked by the application programmer, as well as methods which are invoked by the POA itself and may be overridden by the user to control aspects of servant behavior.Ç€D J7BJG \€€€‚€€‚‚€€€€‚‚€€€€‚ÿThe -idl FlagUsing rmic with the -idl option generates OMG IDL for the clasdJ7BJªIses specified and any classes referenced. You would want to use this option when you have a CORBA client in another language that wants to talk to an RMI-IIOP server.Note: After the OMG IDL is generated using rmic -idl, use the generated IDL with an IDL-to-C++ or other language compiler, but not with the IDL-to-Java language compiler. "Round tripping" is not recommended and should not be necessary. The IDL generation facility is intended to be used with other languages such as C++. Java clients or servers can use the original RMI-IIOP types.aðdJ˜DJq °€á€€‚Ì:EF("http://www.omg.org/cgi-bin/doc?formal/01-06-07",`',1)€‰€‚‚€€‚ÿIDL provides a purely declarative, programming language independent means for specifying the API for an object. The IDL is used as a specification for methods and data that can be written in and invoked from any language that provides CORBA bindings. This includes Java and C++ among others. See the Java Language to IDL Mapping (OMG) document for a complete description.Note: The generated IDL can only be compiled using an IDL compiler that supports the CORBA 2.3 extensions to IDL.,«7BJÄGJ ЀW€€‚€€‚‚€€€€€(€€€€€‚‚ç°˜Y€‰€çòµ˜Y€‰€€€‚‚€ €‚‚çŜ—Y€‰€‚ÿThe -noValueMethods FlagThe -noValueMethods option, when used with -idl, ensures that methods and initializers are not included in valuetypes emitted during IDL Generation. These are optional for valuetypes and are otherwise omitted.See the RMIC tool page (Solaris Version/Windows version) for a complete rmic description.The idlj CompilerThe RMI-IIOP software includes an IDL-to-Java compiler. This compiler supports the CORBA Objects By Value feature, which is required for interoperation with RMI-IIOP. It is written in Java, and so can run on any platform. See the IDL-to-Java Compiler User's Guide for details of how to use this compiler.¬˜DJpHJ- *€þ€€‚€ €‚‚‚‚ÿHow to Make RMI Programs Use IIOPThe following steps are a general guide to converting an RMI application to RMI-IIOP.5ñÄGJ¥IJD V€ã€ä€€€€€€€€€€€‚‚ÿ1. If you are using the RMI registry for naming services, you need to switch to CosNaming. In the createORB() method, do not pass the org.omg.ORBClass property. Instead, use ORB.init( args, null ). You need to do the following:¿pHJ¿KJ[ „€€ɀ€€€‚‚€€‚€€€€€€€€‚‚€€‚ÿ1. In both your client and server code, you need to create an InitialContext for JNDI using the following code: import javax.naming.*; ... Context ic = new InitialContext();2. Modify all uses of RMI registry lookup() and bind() to use JNDI lookup() and bind()instead. For example, instead of your RMI server using: import java.rmi.*; ... Naming.rebind("MyObject", myObj); ¿¥IJÊMJL f€€ɀ€‚‚€€‚€€€€‚‚€€‚ÿuse: import javax.naming.*; ... ic.rebind("MyObject", myObj);3. If the client is an applet, the client applet needs to pass this to the JNDI CosNaming plugin. Replace the above code with the following: import java.util.*; import javax.naming.*; ... Hashtable env = new Hashtable(); env.put("java.naming.applet", this); Context ic = new InitialContext(env);c¿KJ9€JE X€=€ä€€€€€‚‚€€€€€€‚ÿ2. If you are not using the RMI registry for naming services, you have some other way of bootstrapping your initial remote object reference. For example, your server code may be using Java serialization to write an RMI object reference to an ObjectOutputStream and passing this to your client code for deserializing into an RMI stub.On the server side, use the PortableRemoteObject.toStub() call to obtain a stub, then use writeObject() to serialize this stub to an ObjectOutputStreamÊMJ9€JªI. The code to do this looks something like:'ÊMJ`€J$ €€ä€‚ÿ59€J•‚J2 2€€ɀ€€‚ÿorg.omg.CORBA.ORB myORB = org.omg.CORBA.ORB.init(new String[0], null);Wombat myWombat = new WombatImpl();javax.rmi.CORBA.Stub myStub = (javax.rmi.CORBA.Stub)PortableRemoteObject.toStub(myWombat);myStub.connect(myORB);// myWombat is now connected to myORB. To connect other objects to the// same ORB, use PortableRemoteObject.connect(nextWombat, myWombat);FileOutputStream myFile = new FileOutputStream("t.tmp");ObjectOutputStream myStream = new ObjectOutputStream(myFile);myStream.writeObject(myStub);¹‡`€JNƒJ2 2€€ä€€€€€‚‚ÿOn the client side, use readObject() to deserialize a remote reference to the object from an ObjectInputStream, with code like:Ý­•‚J+…J0 .€[€ɀ€€‚ÿFileInputStream myFile = new FileInputStream("t.tmp");ObjectInputStream myStream = new ObjectInputStream(myFile);Wombat myWombat = (Wombat)myStream.readObject();org.omg.CORBA.ORB myORB = org.omg.CORBA.ORB.init(new String[0], null);((javax.rmi.CORBA.Stub)myWombat).connect(myORB);// myWombat is now connected to myORB. To connect other objects to the// same ORB, use PortableRemoteObject.connect(nextWombat, myWombat);¶iNƒJá‡JM h€Ó€ä€€€€€çaùˆ7€‰€‚‚€€‚‚€€‚ÿ3. Either change your remote implementation classes to inherit from javax.rmi.PortableRemoteObject, or explicitly export implementation objects after creation by calling PortableRemoteObject.exportObject(). For more discussion on this topic, read Connecting IIOP stubs to the ORB. 4. Change all the places in your code where there is a Java cast of a remote interface to use javax.rmi.PortableRemoteObject.narrow(). 5. Don't depend on Distributed Garbage Collection (DGC) or use any of the RMI DGC facilities. Use PortableRemoteObject.unexportObject() to unexport objects that are no longer in use.W+…J8ŠJR r€ €ä€‚€€€€‚‚€€‚€€‚‚€€/€‚‚‚‚ÿ 6. Regenerate the RMI stubs and ties using the rmic command with the -iiop option. This will produce stub and tie files with the following names: __Tie.class __Stub.class7. Before starting the server, start the CosNaming server (in its own process) using the following command: orbd -ORBInitialPort port#You must specify the port number when starting ORBD.8. When starting client and server applications, specify the following system properties:C á‡J{ŒJ8 >€€ä€‚€€‚‚€€‚‚ÿ java -Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url=iiop://:1050 This example uses the name service port number of 1050. If you specified a different port in step 7, you need to use the same port number in the provider URL here. The in the provider URL is the host name that was used to start the CosNaming server in step 7.9. If the client is an applet, specify the following properties in the applet tag:È’8ŠJCŽJ6 :€%€ä€‚€€‚€€‚‚ÿ java.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory java.naming.provider.url=iiop://:1050This example uses the name service port number of 1050. If you specified a different port in step 7, you need to use the same port number in the provider URL here. The in the provider URL is the host name that was used to start the CosNaming server in step 7.V{ŒJ¥ÀJF Z€!€€çܗY€‰€çÆœ—Y€‰€‚‚€€‚‚‚ÿFor tutorials that describe creating a new RMI-IIOP application, link to Getting Started Using RMI-IIOP: Example Using POA-based server-side model or Tutorial: Getting Started Using RMI-IIOP.Connecting IIOP stubs to the ORBWhen your application uses IIOP stubs, as opposed to JRMP stubs, you need to properly connect the IIOP stubs with the ORB before invokingCŽJ¥ÀJªI operations on the IIOP stubs (this is not necessary with JRMP stubs). This section discusses the extra 'connect' step required for the IIOP stub case.ÒCŽJŸÃJG \€¥€€‚€€€€‚‚€€€€‚‚€€‚ÿThe PortableRemoteObject.exportObject() call only creates a tie object and caches it for future usage. The created tie does not have a delegate or an ORB associated. This is known as explicit invocation.The PortableRemoteObject.exportObject() happens automatically when the servant instance is created. This happens when a PortableRemoteObject constructor is called as a base class. This is known as implicit invocation.Later, when PortableRemoteObject.toStub() is called by the application, it creates the corresponding Stub object and associates it with the cached Tie object. But since the Tie is not connected and does not have a delegate, the newly created stub also does not have a delegate or ORB.¥ÀJMÅJx Ÿ€/€€‚€€‚‚Ì:EF("http://www.omg.org/cgi-bin/doc?formal/01-06-07",`',1)€-‰€€€‚‚ÿThe delegate is set for the stub only when the application calls Stub.connect(orb). Thus, any operations on the stub made before the ORB connection is made will fail.The Java Language to IDL Mapping Specification says the following about the Stub.connect() method:GŸÃJÝÇJI `€€ä€€€€€€€€€€€€€‚ÿThe connect method makes the stub ready for remote communication using the specified ORB object orb. Connection normally happens implicitly when the stub is received or sent as an argument on a remote method call, but it is sometimes useful to do this by making an explicit call (e.g., following deserialization). If the stub is already connected to orb (i.e., has a delegate set for orb), then connect takes no action. If the stub is connected to some other ORB, then a RemoteException is thrown. Otherwise, a delegate is created for this stub and the ORB object orb.'MÅJÈJ$ €€ä€‚ÿ)ôÝÇJ-ÉJ5 8€é€€€€‚‚€ €‚‚‚‚ÿFor servants that are not POA-activated, Stub.connect(orb) is necessary as a required setup.Restrictions When Running RMI Programs Over IIOPTo make existing RMI programs run over IIOP, you need to observe the following restrictions.6ËÈJcËJk €€—€ä€‚Ì:EF("http://www.omg.org/cgi-bin/doc?formal/01-06-07",`',1)€-‰€‚‚ÿ1. Make sure all constant definitions in remote interfaces are of primitive types or String and evaluated at compile time.2. Don't use Java names that conflict with IDL mangled names generated by the Java to IDL mapping rules. See section 28.3.2 of the Java Language to IDL Mapping specification for the Java to IDL name mapping rules.3. Don't inherit the same method name into a remote interface more than once from different base remote interfaces. â-ÉJlÍJ' €Å€ä€‚‚‚ÿ4. Be careful when using names that differ only in case. The use of a type name and a variable of that type whose name differs from the type name only in case is supported. Most other combinations of names that differ only in case are not supported.5. Don't depend on runtime sharing of object references to be preserved exactly when transmitting object references across IIOP. Runtime sharing of other objects is preserved correctly.6. Don't use the following features of RMI:'cËJ“ÍJ$ €€ä€‚ÿ¶xlÍJIÎJ> L€ð€ɀ€€‚€€‚€€‚€€‚‚ÿ· RMISocketFactory· UnicastRemoteObject· Unreferenced· The Distributed Garbage Collection (DGC) interfacesf+“ÍJ»K; D€W€€ €‚‚€€‚‚‚‚€€‚‚‚ÿOther Things You Should KnowServers Need to be Thread SafeSince remote method invocation on the same remote object may execute concurrently, a remote object implementation needs to make sure its implementation is thread-safe.Interoperating with Other ORBsRMI-IIOP should interoperate with other ORBS that support the CORBA 2.3 specification. It will not interoperateIÎJ»KªI with older ORBs, because these are unable to handle the IIOP encodings for Objects By Value. This support is needed to send RMI value classes (including strings) over IIOP.]IÎJKG \€-€€‚€€‚‚€€‚‚€€€€€€‚ÿNOTE: Although it is true that ORBs written in different languages should be able to talk to each other, we haven't tested the interoperability of the Java ORB with other vendor's ORBs.When do I use UnicastRemoteObject vs PortableRemoteObject?UnicastRemoteObject should be used as the superclass for the object implementation in RMI programming. PortableRemoteObject should be used in RMI-IIOP programming. If PortableRemoteObject is used, you can switch the transport protocol to either JRMP or IIOP during runtime.@»KXK+ &€*€€‚€€‚‚ÿKnown Problems—MKïKJ b€›€ä€€€€€€‚‚€€‚‚€€€€‚ÿ· JNDI 1.1 does not support java.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory as an Applet parameter. Instead, it must be explicitly passed as a property to the InitialContext constructor. This capability is supported in JNDI 1.2.· When running the Naming Service on Solaris, you must use a port number greater than 1024.· On Solaris, you may experience an "out of file descriptors" problem when running RMI-IIOP applications. This may occur if you are using too many file descriptors, which can happen because each JAR file in the classpath consumes one file descriptor and the JDK 1.1.6 setup adds numerous JAR files to the classpath. Before running applications, set the file descriptor limit to a number greater than its default value of 64. For example, set the ulimit number to 90 or higher, as follows:?XK.K, (€&€ä€‚€€‚ÿulimit -n 90‚YïK°K) "€²€€ €‚‚‚‚ÿBackground ReadingHere are some sites to get you up to speed with this technology:^‘.K KÍ h#€ä€€Ì<EF("http://java.sun.com/products/rmi-iiop/index.html",`',1)€‰€‚€€çܗY€‰€‚€€Ì;EF("http://java.sun.com/products/jdk/rmi/index.html",`',1)€‰€‚ÿ· The RMI-IIOP home page contains links to RMI-IIOP documentation, sample code, specifications, news, other related web sites, and more. Check it out!· The RMI-IIOP Tutorial gives a step-by-step example for creating and running a simple RMI-IIOP application.· The Java RMI home page contains links to RMI documentation, examples, specification, and more. Make sure you read this.'é°K5 K> J‚Ӏ䀀Ì7EF("http://java.sun.com/docs/books/tutorial/rmi",`',1)€‰€‚€€ïRò“YJdk14doc.3.hlp€‰€‚€€ïm–YJdk14doc.4.hlp€‰€‚€€ï˜m–YJdk14doc.4.hlp€‰€‚€€Ì7EF("http://cgi.omg.org/cgi-bin/doc?ptc/00-01-06",`',1)€‰€ïâ(•YJdk14doc.3.hlp€‰€‚ÿ· The RMI trail in the Java Tutorial.· The RMI API documentation.· The Java IDL web page will familiarize you with Sun's CORBA/IIOP implementation.· The Java IDL Tutorial is the newest version of the IDL trail from the Java Tutorial.· The Java Language to IDL Mapping, ptc/00-01-06 document is a detailed technical specification of RMI-IIOP. For further information on how the specification is implemented in J2SE v.1.4, see the compliance document.' K\ K$ €€ä€‚ÿ&5 K‚ K# €€€‚ÿ*\ K¬ K' €€ ”€ ‚ÿ&‚ KÒ K# €€€‚ÿA¬ KK- *€(€çÁœ—Y€‰€‚‚ÿRMI-IIOP Home†1Ò K™KU z€b€€Ì#EF("mailto:rmi-iiop@sun.com",`',1)€‰€‚‚€‚ÿSend your comments to rmi-iiop@sun.com.*KÃK' €€ ”€ ‚ÿ,™KïK' € €€‚€‚ÿ1ÃK K1Uÿÿÿÿÿÿÿÿ'ÿÿÿÿ KDK$ïKDK" €€€ ÿP K”K1[t“›™(”KÝK+ŠLidlj - The IDL-to-Java CompilerI#DKÝK& €F€€€‚ÿidlj - The IDL-to-Java CompilerK$”K4@K' €H€€%€ÝK4@KDK‚‚ÿidlj - The IDL-to-Java Compiler`8ÝK”@K( €p€ä€€‚‚ÿidlj generates Java bindings from a given IDL file.4 4@KÈ@K' €€€ €‚‚ÿSynopsis˔@KßAKL f€—€ä€çV œP€‰€€/€‚€(€€(€€(€‚‚ÿidlj [ options ] idl-filewhere idl-file is the name of a file containing Interface Definition Language (IDL) definitions. Options may appear in any order, but must precede the idl-file.7È@KBK' € €€ €‚‚ÿDescription>ôßAKTCKJ b€é€ä€ïåm–YJdk14doc.4.hlp€‰€€€‚‚ÿThe IDL-to-Java Compiler generates the Java bindings for a given IDL file. For binding details, see the OMG IDL to Java Language Language Mapping Specification. Some previous releases of the IDL-to-Java compiler were named idltojava.O(BK£CK' €P€€€‚‚ÿEmitting Client and Server Bindings`;TCKDK% €v€ä€‚‚ÿTo generate Java bindings for an IDL file named My.idl:9£CK J€ñ€ä€‚€€€€€€€€‚ÿAnother option for the Inheritance Model is to use the -oldImplBase flag in order to generate server-side bindings that are compatible with older version of the Java programming language (prior to J2SE 1.4). Note that using the -oldImplBase flag is non-standard: these APIs are being deprecated. You would use this flag ONLY for compatibility with existing servers written in J2SE 1.3. In that case, you would need to modify an existing MAKEFILE to add the -oldImplBase flag to the idlj compiler, otherwise POA-based server-side mappings will be generated. To generate server-side bindings that are backwards compatible:'LKjOK$ €€ä€‚ÿ˜VCOK€KB T€¬€ɀ€€€€€‚€€€€€‚‚ÿidlj -fclient -fserver -oldImplBase My.idlidlj -fall -oldImplBase My.idljOK€KDKö°jOK‚KF Z€a€ä€€€€€€€€€€€‚‚‚‚ÿGiven an interface My defined in My.idl, the file _MyImplBase.java is generated. You must provide the implementation for My and it must inherit from _MyImplBase.The other server-side model is called the Tie Model. This is a delegation model. Because it is not possible to generate ties and skeletons at the same time, they must be generated separately. The following commands generate the bindings for the Tie Model:e/€Ki‚K6 <€^€ɀ€€€‚€€€‚‚ÿidlj -fall My.idlidlj -fallTIE My.idl ž‚Kv„KU x€q€ä€€€€€€€€€€€€€€€€€‚ÿFor the interface My, the second command generates MyPOATie.java. The constructor to MyPOATie takes a delegate. In this example, using the default POA model, the constructor also needs a poa. You must provide the implementation for delegate, but it does not have to inherit from any other class, only the interface MyOperations. But to use it with the ORB, you must wrap your implementation within MyPOATie. For instance:'i‚K„K$ €€ä€‚ÿ@ v„K݆K4 6€€ɀ€€‚ÿ ORB orb = ORB.init(args, System.getProperties()); // Get reference to rootpoa & activate the POAManager POA rootpoa = (POA)orb.resolve_initial_references("RootPOA"); rootpoa.the_POAManager().activate(); // create servant and register it with the ORB MyServant myDelegate = new MyServant(); myDelegate.setORB(orb); // create a tie, with servant being the delegate. MyPOATie tie = new MyPOATie(myDelegate, rootpoa); // obtain the objectRef for the tie My ref = tie._this(orb);ߝ„KáˆK% €¿€ä€‚ÿYou might want to use the Tie model instead of the typical Inheritance model if your implementation must inherit from some other implementation. Java allows any number of interface inheritance, but there is only one slot for class inheritance. If you use the inheritance model, that slot is used up . By using the Tie Model, that slot is freed up for your own use. The drawback is that it introduces a level of indirection: one extra method call occurs when invoking a method.›݆K£‰K' €7€ä€‚‚‚ÿTo generate server-side, Tie model bindings that are compatible with older version of the IDL to Java language mapping in versions of J2SE before 1.4.MáˆK2ŠKB T€š€ɀ€€€€€‚€€€€€‚‚ÿidlj -oldImplBase -fall My.idlidlj -oldImplBase -fallTIE My.idl¢R£‰KԋKP n€¥€ä€€€€€€€€€€€€€€€‚‚ÿFor the interface My, this will generate My_Tie.java. The constructor to My_Tie takes a impl. You must provide the implementation for impl, but it does not have to inherit from any other class, only the interface HelloOperations. But to use it with the ORB, you must wrap your implementation within My_Tie. For instance:^2ŠKcK1 0€œ€ɀ€€‚ÿ ORB orb = ORB.init(args, System.getProperties()); // create servant and register it with the ORB MyServant myDelegate = new MyServant(); myDelegate.setORB(orb); // create a tie, with servant being the delegate. MyPOATie tie = new MyPOATie(myDelegate); // obtain the objectRef for the tie My ref = tie._this(orb);\5ԋK¿K' €j€€€‚‚ÿSpecifying Alternate Locations for Emitted Files™tcKXŽK% €è€ä€‚‚ÿIf you want to direct the emitted files to a directory other than the current directory, invoke the compiler as:M¿K¥ŽK/ .€<€ɀ€€€€‚‚ÿidlj -td /altdir My.idl£lXŽKHK7 >€Ø€ä€€€€€€€‚‚ÿFor the interface My, the bindings will be emitted to /altdir/My.java, etc., instead of ./My.java.\5¥ŽK€K' €j€€€‚‚ÿSpecifying Alternate Locations for Include Files)ëHKÙÀK> J€×€ä€€€€€€€€€‚‚ÿIf My.idl included another €KÙÀKDKidl file, MyOther.idl, the compiler assumes that MyOther.idl resides in the local directory. If it resides in /includes, for example, then you would invoke the compiler with the following command:N€K'ÁK/ .€>€ɀ€€€€‚‚ÿidlj -i /includes My.idlИÙÀK÷ÁK8 >€1€ä€€€€€€€‚‚ÿIf My.idl also included Another.idl that resided in /moreIncludes, for example, then you would invoke the compiler with the following command:_0'ÁKVÂK/ .€`€ɀ€€€€‚‚ÿidlj -i /includes -i /moreIncludes My.idlžl÷ÁKôÃK2 2€Ù€ä€€€€€‚‚ÿSince this form of include can become irritatingly long, another means of indicating to the compiler where to search for included files is provided. This technique is similar to the idea of an environment variable. Create a file named idl.config in a directory that is listed in your CLASSPATH. Inside of idl.config, provide a line with the following form:N%VÂKBÄK) "€J€ɀ€€‚‚ÿincludes=/includes;/moreIncludesÀ|ôÃKÆKD V€ù€ä€€€çᯘY€‰€çq·˜Y€‰€‚‚ÿThe compiler will find this file and read in the includes list. Note that in this example the separator character between the two directories is a semicolon (;). This separator character is platform dependent. On NT it is a semicolon, on Solaris it is a colon, etc. For more information on includes, read the CLASSPATH (Solaris) or CLASSPATH (Windows) documentation.O(BÄKQÆK' €P€€€‚‚ÿEmitting Bindings for Include FilesøÆKoÇK& €ñ€ä€‚‚ÿBy default, only those interfaces, structs, etc, that are defined in the idl file on the command line have Java bindings generated for them. The types defined in included files are not generated. For example, assume the following two idl files:(QÆK—ÇK% €€ɀ€‚ÿ,oÇKÃÇK) "€€0ɀ”€ ‚ÿv;—ÇK9ÈK; F€v€ɀ€‚€4€‚‚€‚‚‚€‚€‚ÿMy.idl#include interface My{};,ÃÇKeÈK) "€€0ɀ”€ ‚ÿh.9ÈKÍÈK: D€\€ɀ€‚€4€‚‚€‚‚€‚€‚ÿMyOther.idlinterface MyOther{}; ,eÈKùÈK) "€€0ɀ”€ ‚ÿ.ÍÈK'ÉK) "€ €ɀ€‚€‚ÿsHùÈKšÉK+ &€€ä€€€‚‚ÿThe following command will only generate the java bindings for My:9'ÉKÓÉK) "€ €ɀ€€‚‚ÿidlj My.idlÚ¢šÉK­ÊK8 >€E€ä€€€€€€€‚‚ÿTo generate all of the types in My.idl and all of the types in the files that My.idl includes (in this example, MyOther.idl), use the following command:JÓÉK÷ÊK/ .€6€ɀ€€€€‚‚ÿidlj -emitAll My.idlË­ÊKÿÌK= H€—€ä€€€€€€€€€‚ÿThere is a caveat to the default rule. #include statements which appear at global scope are treated as described. These #include statements can be thought of as import statements. #include statements which appear within some enclosing scope are treated as true #include statements, meaning that the code within the included file is treated as if it appeared in the original file and, therefore, Java bindings are emitted for it. Here is an example:'÷ÊK&ÍK$ €€ä€‚ÿ(ÿÌKNÍK% €€ɀ€‚ÿ,&ÍKzÍK) "€€0ɀ”€ ‚ÿVNÍK ÎK9 B€¬€ɀ€‚€4€‚‚€‚‚‚‚‚€5‚ÿMy.idl#include interface My{ #include }; ,zÍK5ÎK) "€€0ɀ”€6‚ÿd- ÎK™ÎK7 >€Z€ɀ€5‚€4€‚‚€‚‚‚€5‚ÿMyOther.idlinterface MyOther{}; ,5ÎKÅÎK) "€€0ɀ”€6‚ÿj2™ÎK/ÏK8 @€d€ɀ€5‚€4€‚‚€€‚€‚ÿEmbedded.idlenum E {one, two, three}; ,ÅÎK[ÏK) "€€0ɀ”€ ‚ÿ./ÏK‰ÏK) "€ €ɀ€‚€‚ÿG"[ÏKÐÏK% €D€ä€‚‚ÿRunning the following command:9‰ÏKL) "€ €ɀ€€‚‚ÿidlj MÐÏKLDKy.idlX3ÐÏKmL% €f€ä€‚‚ÿwill generate the following list of Java files:¿ŽL,L1 0€€ɀ€‚‚‚‚‚‚‚€‚‚ÿ./MyHolder.java./MyHelper.java./_MyStub.java./MyPackage./MyPackage/EHolder.java./MyPackage/EHelper.java./MyPackage/E.java./My.java»mLGL` Ž€w€ä€€€€€€€(€€€€€€€€€€€‚‚€(€‚ÿNotice that MyOther.java was not generated because it is defined in an import-like #include. But E.java was generated because it was defined in a true #include. Also notice that since Embedded.idl was included within the scope of the interface My, it appears within the scope of My (that is,in MyPackage).If the -emitAll flag had been used in the previous example, then all types in all included files would be emitted.',LnL$ €€ä€‚ÿFGLŽL' €>€€€‚‚ÿInserting Package Prefixesƒ^nL7L% €Œ€ä€‚‚ÿSuppose that you work for a company named ABC that has constructed the following IDL file:(ŽL_L% €€ɀ€‚ÿ,7L‹L) "€€0ɀ”€ ‚ÿ“W_LL< H€®€ɀ€‚€4€‚‚€‚‚‚‚€‚€‚ÿWidgets.idlmodule Widgets{ interface W1 {...}; interface W2 {...};}; ,‹LJL) "€€0ɀ”€ ‚ÿ.LxL) "€ €ɀ€‚€‚ÿ¶JL}LO l€m€ä€€€€€€€€€€€€€€€‚ÿRunning this file through the IDL-to-Java compiler will place the Java bindings for W1 and W2 within the package Widgets. But there is an industry convention that states that a company's packages should reside within a package named com.. The Widgets package is not good enough. To follow convention, it should be com.abc.Widgets. To place this package prefix onto the Widgets module, execute the following:'xL€L$ €€ä€‚ÿa2}LL/ .€d€ɀ€€€€‚‚ÿidlj -pkgPrefix Widgets com.abc Widgets.idlç¡€Lì LF Z€C€ä€€€€(€€€€€‚‚€€‚‚ÿIf you have an IDL file which includes Widgets.idl, the -pkgPrefix flag must appear in that command also. If it does not, then your IDL file will be looking for a Widgets package rather than a com.abc.Widgets package.If you have a number of these packages that require prefixes, it might be easier to place them into the idl.config file described above. Each package prefix line should be of the form:HL4 L) "€>€ɀ€€‚‚ÿPkgPrefix.=T/ì Lˆ L% €^€ä€‚‚ÿSo the line for the above example would be:G4 LÏ L) "€<€ɀ€€‚‚ÿPkgPrefix.Widgets=com.abcb=ˆ L1 L% €z€ä€‚‚ÿThe use of this option does not affect the Repository ID.O(Ï L€ L' €P€€€‚‚ÿDefining Symbols Before CompilationÁ›1 LA L& €7€ä€‚‚ÿYou may need to define a symbol for compilation that is not defined within the IDL file, perhaps to include debugging code in the bindings. The commandJ€ L‹ L/ .€6€ɀ€€€€‚‚ÿidlj -d MYDEF My.idl{JA L L1 2€”€ä€€€€€‚‚ÿis the equivalent of putting the line #define MYDEF inside My.idl.L%‹ LR L' €J€€€‚‚ÿPreserving Pre-Existing Bindings‘_ LãL2 2€¿€ä€€(€€(€‚‚ÿIf the Java binding files already exist, the -keep flag will keep the compiler from overwriting them. The default is to generate all files without considering if they already exist. If you've customized those files (which you should not do unless you are very comfortable with their contents), then the -keep option is very useful. The commandGR L*L/ .€0€ɀ€€€€‚‚ÿidlj -keep My.idla<ãL‹L% €x€ä€‚‚ÿemit all client-side bindings that do not already exist.K$*LÖL' €H€€€‚‚ÿViewing Progress of CompilationÍ¡‹L¯@L, &€C€ä€€€‚ÖL¯@LDK‚ÿThe IDL-to-Java compiler will generate status messages as it progresses through its phases of execution. Use the -v option to activate this "verbose" mode:DÖLó@L/ .€*€ɀ€€€€‚‚ÿidlj -v My.idlb=¯@LUAL% €z€ä€‚‚ÿBy default the compiler does not operate in verbose mode.J#ó@LŸAL' €F€€€‚‚ÿDisplaying Version InformationJUALéBL6 :€)€ä€€(€‚‚€€‚‚‚‚ÿTo display the build version of the IDL-to-Java compiler, specify the -version option on the command-line:idlj -versionVersion information also appears within the bindings generated by the compiler. Any additional options appearing on the command-line are ignored.3 ŸALCL' €€€ €‚‚ÿOptions8éBLTCL* $€€ä€€€‚ÿ-d symbolb<CL¶CL& €x€ɀ€‚‚ÿThis is equivalent to the following line in an IDL file:@TCLöCL, (€(€-€€/€‚ÿ#define symbol3 ¶CL)DL' €€ä€€‚ÿ-emitAllj>öCL“DL, (€|€ɀ€€€‚‚ÿEmit all types, including those found in #include files.5 )DLÈDL* $€€ä€€€‚ÿ-fsideMð“DLFL] ˆ€á€ɀ€€(€€€€€€€€€€€€€€€€€‚‚ÿDefines what bindings to emit. side is one of client, server, serverTIE, all, or allTIE. The -fserverTIE and -fallTIE options cause delegate model skeletons to be emitted. Assumes -fclient if the flag is not specified.>ÈDLSFL* $€(€ä€€€‚ÿ-i include-pathŽhFLáFL& €Ð€ɀ€‚‚ÿBy default, the current directory is scanned for included files. This option adds another directory.0 SFLGL' €€ä€€‚ÿ-keep†`áFL—GL& €À€ɀ€‚‚ÿIf a file to be generated already exists, do not overwrite it. By default it is overwritten.2 GLÉGL' €€ä€€‚ÿ-noWarnF —GLHL& €@€ɀ€‚‚ÿSuppresses warning messages.7ÉGLFHL' € €ä€€‚ÿ-oldImplBasei<HL¯IL- (€y€ɀ€€€‚‚ÿGenerates skeletons compatible with old (pre-1.4) JDK ORBs. By default, the POA Inheritance Model server-side bindings are generated. This option provides backward-compatibility with older versions of the Java programming language by generating server-side bindings that are ImplBase Inheritance Model classes.EFHLôIL* $€6€ä€€€‚ÿ-pkgPrefix type prefix0÷¯IL$KL9 @€ï€ɀ€€(€€(€€(€‚‚ÿWherever type is encountered at file scope, prefix the generated Java package name with prefix for all files generated for that type. The type is the simple name of either a top-level module, or an IDL type defined outside of any module.IôILmKL* $€>€ä€€€‚ÿ-pkgTranslate type package×$KL„ML@ N€¯€ɀ€€(€€(€€€€(€‚‚‚ÿWhenever the module name type is encountered in an identifier, replace it in the identifier with package for all files in the generated Java package. Note that pkgPrefix changes are made first. type is the simple name of either a top-level module, or an IDL type defined outside of any module, and must match the full package name exactly.If more than one translation matches an identifier, the longest match is chosen. For example, if the arguments include:ZmKLÞNL= H€;€ɀ€‚€€‚‚‚€€‚‚‚ÿ -pkgTranslate foo bar -pkgTranslate foo.baz buzz.fizzThe following translations would occur:foo => barfoo.boo => bar.boofoo.baz => buzz.fizzfoo.baz.bar => buzz.fizz.barThe following package names cannot be translated:m7„MLKOL6 <€n€-€€‚€€€€‚‚ÿ· org · org.omg or any subpackages of org.omgáŽÞNL8€L- (€i€ɀ€€€‚‚ÿAny attempt to translate these packages will result in uncompilable code, and the use of these packages as the first argument after -pKOL8€LDKkgTranslate will be treated as an error.DKOL|€L* $€4€ä€€€‚ÿ-skeletonName xxx%yyywK8€Ló€L, (€–€ɀ€€(€‚‚ÿUse xxx%yyy as the pattern for naming the skeleton. The defaults are:ð•|€LãL[ „€+€-€€€€€€€€‚€€€€€€€€€€‚‚ÿ· %POA for the POA base class (-fserver or -fall) · _%ImplBase for the oldImplBase class (-oldImplBase and (-fserver or -fall))6 ó€L‚L* $€€ä€€€‚ÿ-td dirtHãL‚L, (€€ɀ€€(€‚‚ÿUse dir for the output directory instead of the current directory.?‚L̂L* $€*€ä€€€‚ÿ-tieName xxx%yyyb<‚L.ƒL& €x€ɀ€‚‚ÿName the tie according to the pattern. The defaults are:§Ì‚L0„L[ „€O€-€€€€€€€€‚€€€€€€€€€€‚‚ÿ· %POATie for the POA tie base class (-fserverTie or -fallTie) · %_Tie for the oldImplBase tie class (-oldImplBase and (-fserverTie or -fallTie))<.ƒLl„L' €*€ä€€‚ÿ-nowarn, -verbose70„L£„L& €"€ɀ€‚‚ÿVerbose mode.3 l„LքL' €€ä€€‚ÿ-versionT.£„L*…L& €\€ɀ€‚‚ÿDisplay version information and terminate.a<քL‹…L% €x€ä€‚‚ÿSee the Description section for more option information.9*…LąL' €$€€ €‚‚ÿRestrictions: ]‹…Ld‡LC T€»€ɀ€€€€€€‚€€€€‚‚ÿ· Escaped identifiers in the global scope may not have the same spelling as IDL primitive types, Object, or ValueBase. This is because the symbol table is pre-loaded with these identifiers; allowing them to be redefined would overwrite their original definitions. (Possible permanent restriction).· The fixed IDL type is not supported.;ąLŸ‡L' €(€€ €‚‚ÿKnown Problems:÷Çd‡L–ˆL0 .€€ɀ€€€€‚‚ÿ· No import generated for global identifiers. If you invoke on an unexported local impl, you do get an exception, but it seems to be due to a Null Ptr Exception in the ServerDelegate DSI code.&Ÿ‡LŒˆL# €€€‚ÿ*–ˆLæˆL' €€ ”€ ‚ÿ&ŒˆL ‰L# €€€‚ÿûaæˆLŠLš#ÄŠ€€€‚çñ˜Y€ ‰€ÌEF("http://www.sun.com",`',1)€ ‰€€‚‚‚ÿ€–€ÿ6€˜€†"€€€'‚€‚ÿÿÿCopyright © 2001 Sun Microsystems, Inc. All Rights Reserved. Java Software$ ‰L+ŠL" €€€ÿ1ŠL\ŠL1Uÿÿÿÿÿÿÿÿ)ÿÿÿÿ\ŠL€ŠL$+ŠL€ŠL" €€€ ÿY(\ŠLيL1àx¹ –IŠœ*يL!‹LÁMNTutorial: Getting Started Using RMI-IIOPH"€ŠL!‹L& €D€€€‚ÿGetting Started Using RMI-IIOPT-يLu‹L' €Z€€%€‚‚ÿTutorial: Getting Started Using RMI-IIOP&!‹L›‹L# €€€‚ÿ*u‹LŋL' €€ ”€ ‚ÿÕ¬›‹LšŽL) €Y€€‚€‚‚ÿThis tutorial shows you the steps to follow to create a distributed version of the classic "Hello World" program using Java Remote Method Invocation (RMI) over Internet Inter-ORB Protocol (IIOP). RMI-IIOP adds CORBA (Common Object Request Broker Architecture) capability to Java RMI, providing standards-based interoperability and connectivity to many other programming languages and platforms. RMI-IIOP enables distributed Web-enabled Java applications to transparently invoke operations on remote network services using the industry standard IIOP defined by the Object Management Group. Runtime components include a Java ORB for distributed computing using IIOP communication."ïŋLÈÀL3 4€ß€€‚çÁœ—Y€‰€‚‚‚ÿRMI-IIOP is for Java programmers who want to program to the RMI interfaces, but use IIOP as the underlying transport. RMI-IIOP provides interoperability with other CORBA objects implemented in various languages - but only if all the remote interfaces are originally defined as Java RMI interfaces. It šŽLÈÀL€ŠLis of particular interest to programmers using Enterprise JavaBeans (EJB), since the remote object model for EJBs is RMI-based. Other options for creating distributed applications are:&šŽLîÀL# €€€‚ÿó•ÈÀLáÃL^ Š€+€ä€€ïm–YJdk14doc.4.hlp€‰€‚‚‚‚€€ç—Y€‰€‚‚‚ÿ· Java Interface Definition Language (IDL)Java IDL is for CORBA programmers who want to program in the Java programming language based on interfaces defined in CORBA Interface Definition Language (IDL). This is "business as usual" CORBA programming, supporting Java in exactly the same way as other languages like C++ or COBOL.· Java Remote Method Invocation (RMI).The Java RMI system allows an object running in one Java Virtual Machine (VM) to invoke methods on an object running in another Java VM. RMI provides for remote communication between programs written in the Java programming language via the Java Remote Method Protocol (JRMP).'îÀLÄL$ €€ä€‚ÿ&áÃL.ÄL# €€€‚ÿ*ÄLXÄL' €€ ”€ ‚ÿl8.ÄLÄÅL4 6€q€€‚€‚€%€‚‚‚‚‚‚ÿTutorial: The Hello World ApplicationThe distributed Hello World example uses a client application to make a remote method call via IIOP to a server running on the host from which the client was downloaded. When the client runs, "Hello from MARS!" is displayed.This tutorial is organized as follows:ÅzXÄL‰ÆLK f€ô€ä€猢•†€‰€‚獕†€‰€‚ç9•†€‰€‚‚ÿ1. The steps to write the source files2. The steps to compile the example3. The steps to run the examplem=ÄÅLöÆL0 0€|€€†"€‚€‚ÿ Each step in the tutorial is indicated by this symbol.*‰ÆL ÇL' €€ ”€ ‚ÿ„SöÆL€ÇL1 2€Š€€‚€‚€ €‚‚‚‚ÿWrite the Source FilesThere are three tasks to complete in this section:Dë ÇLèÈLY €€×€ä€çè “†€‰€‚ç “†€‰€‚ç"ö€‰€‚çN“†€‰€‚‚ÿ1. Define the functions of the remote class as an interface written in the Java programming language2. Write the implementation class3. Write the server class4. Write a client program that uses the remote serviceV2€ÇL>ÉL$ €d€€‚‚ÿThe source files created in this tutorial are:‰èÈL>ËLw Œ€€ä€€ç “†€‰€‚€€ç< “†€‰€€€‚€€çž;›»€‰€‚€çv“†€‰€€€‚‚ÿ· HelloInterface.java - a remote interface · HelloImpl.java - a remote object implementation that implements HelloInterface · HelloServer.java - an RMI server that creates an instance of the remote object implementation and binds that instance to a name in the Naming Service · HelloClient.java - a client application that invokes the remote method, sayHello()§w>ÉLåÌL0 .€ï€€€‚‚€€‚‚ÿDefine the functions of the remote class as an interface written in the Java programming languageIn the Java programming language, a remote object is an instance of a class that implements a Remote interface. Your remote interface will declare each of the methods that you would like to call from other machines. Remote interfaces have the following characteristics:-Ù>ËLÏLT v€³€ä€€€€‚€€€€‚€€€€€€€€‚ÿ· The remote interface must be declared public. Otherwise, a client will get an error when attempting to load a remote object that implements the remote interface, unless that client is in the same package as the remote interface.· The remote interface extends the java.rmi.Remote interface.· Each method must declare java.rmi.RemoteException (or a superclass of RemoteException) in its throws clause, in addition to any application-specific exceptions.J åÌLhMA P€€ä€€€(€€(€€€€€‚‚ÿ· The data type of any remote object that is passed as an argument or return value (either directly or embedded within a local object) must be declared as the remote inÏLhM€ŠLterface type (for example, HelloInterface) not the implementation class (HelloImpl).k#ÏLÓMH ^€I€€€€‚‚†"€€€€€€€‚‚ÿFor this example, create all of the source files in the same directory, for example, $HOME/mysrc/helloWorld. Create the file HelloInterface.java. The following code is the interface definition for the remote interface, HelloInterface, which contains just one method, sayHello:ëžhMŸM3 4€q€ä€€€€‚ÿ//HelloInterface.javaimport java.rmi.Remote;public interface HelloInterface extends java.rmi.Remote { public void sayHello( String from ) throws java.rmi.RemoteException;}ÓMÂMw Œ€€€€€€(Ì@EF("http://www.sunlabs.com/techrep/1994/abstract-29.html",`',1)€-‰€‚ÿBecause remote method invocations can fail in very different ways from local method invocations (due to network-related communication problems and server problems), remote methods will report communication failures by throwing a java.rmi.RemoteException. If you want more information on failure and recovery in distributed systems, you may wish to read A Note on Distributed Computing.€qŸMfM3 6€â€€‚€€‚‚€€‚‚ÿWrite The Implementation ClassAt a minimum, a remote object implementation class, HelloImpl.java must: ÅÂM†M[ „€‹€ä€€ç= “†€‰€‚€€çL=“†€‰€‚€€çN=“†€‰€‚‚ÿ· Declare that it implements at least one remote interface· Define the constructor for the remote object· Provide implementations for the methods that can be invoked remotelyŽfMHM4 6€€€†"€€€‚‚ÿ Create the file HelloImpl.java. The code for this file follows. An explanation of each of the preceding steps follows the source code:ô»†M< M9 @€w€ä€€€€‚ÿ//HelloImpl.javaimport javax.rmi.PortableRemoteObject;public class HelloImpl extends PortableRemoteObject implements HelloInterface { public HelloImpl() throws java.rmi.RemoteException { super(); // invoke rmi linking and remote object initialization } public void sayHello( String from ) throws java.rmi.RemoteException { System.out.println( "Hello from " + from + "!!" ); System.out.flush(); }}žWHMÚ MG \€¯€€€‚‚€€€€€(€€€€€‚ÿImplement a remote interfaceIn the Java programming language, when a class declares that it implements an interface, a contract is formed between the class and the compiler. By entering into this contract, the class is promising that it will provide method bodies, or definitions, for each of the method signatures declared in that interface. Interface methods are implicitly public and abstract, so if the implementation class doesn't fulfill its contract, it becomes by definition an abstract class, and the compiler will point out this fact if the class was not declared abstract.q#< MKMN j€G€€‚€€€€‚‚€€‚€€€€€€‚ÿThe implementation class in this example is HelloImpl. The implementation class declares which remote interface(s) it is implementing. Here is the HelloImpl class declaration: public class HelloImpl extends PortableRemoteObject implements HelloInterface{As a convenience, the implementation class can extend a remote class, which in this example is javax.rmi.PortableRemoteObject. By extending PortableRemoteObject, the HelloImpl class can be used to create a remote object that uses IIOP-based transport for communication.ÅÚ MAM5 8€!€€‚€€‚‚‚‚€€‚ÿDefine the constructor for the remote objectThe constructor for a remote class provides the same functionality as the constructor for a non-remote class: it initializes the variables of each newly created instance of the class, and returns an instance of the class to the program which called the constructor.In addition, the remote object instance will need to be "exported".KMAM€ŠL Exporting a remote object makes it available to accept incoming remote method requests, by listening for incoming calls to the remote object on an anonymous port. When you extend javax.rmi.PortableRemoteObject, your class will be exported automatically upon creation.\KMxCMK d€#€€‚€€€(€€€€€‚‚€€‚ÿBecause the object export could potentially throw a java.rmi.RemoteException, you must define a constructor that throws a RemoteException, even if the constructor does nothing else. If you forget the constructor, javac will produce the following error message: HelloImpl.java:3: unreported exception java.rmi.RemoteException; must be caught or declared to be thrown. public class HelloImpl extends PortableRemoteObject implements HelloInterface{ ^ 1 errorqGAMéCM* $€Ž€€€(€‚‚ÿTo review: The implementation class for a remote object needs to: ¿xCMôDML f€€ä€€€(€‚€€€(€‚€€€(€€‚‚ÿ· Implement a remote interface· Export the object so that it can accept incoming remote method calls· Declare its constructor(s) to throw at least a java.rmi.RemoteExceptionϘéCMÃEM7 <€1€€€€‚‚€€‚‚‚ÿHere is the constructor for the HelloImpl class: public HelloImpl() throws java.rmi.RemoteException { super(); }Note the following:‚@ôDMEGMB R€€ä€€€€€€‚€€€€‚‚ÿ· The super method call invokes the no-argument constructor of javax.rmi.PortableRemoteObject, which exports the remote object.· The constructor must throw java.rmi.RemoteException, because RMI's attempt to export a remote object during construction might fail if communication resources are not available.HÇÃEMIM Ѐ€€€€‚‚ÌCEF("http://java.sun.com/products/jdk/rmi/archives/3490.html",`',1)€0‰€‚‚€€‚ÿIf you are interested in why java.rmi.RemoteException is a checked exception rather than runtime exception, please refer to the archives of the rmi-users email list:http://java.sun.com/products/jdk/rmi/archives/3490.htmlAlthough the call to the superclass's no-argument constructor, super(), occurs by default (even if omitted), it is included in this example to make clear the fact that the superclass will be constructed before the class.*ëEGM·KM? L€×€€‚€€‚‚€€‚‚€€‚ÿProvide an implementation for each remote methodThe implementation class for a remote object contains the code that implements each of the remote methods specified in the remote interface. For example, here is the implementation for the sayHello() method, which returns the string "Hello from MARS!!" to the caller: public void sayHello( String from ) throws java.rmi.RemoteException { System.out.println( "Hello from " + from + "!!"); System.out.flush(); }d'IMMM= H€O€€€€€€€€€€‚‚ÿArguments to, or return values from, remote methods can be any data type for the Java platform, including objects, as long as those objects implement the interface java.io.Serializable. Most of the core classes in java.lang and java.util implement the Serializable interface. In RMI:‹·KM'€Mu ž€€ä€€€€€€ç³—Y€‰€‚€€î1²EJdk14doc.hlp€‰€çO“†€€1€‰€‚ÿ· By default, local objects are passed by copy, which means that all data members (or fields) of an object are copied, except those marked as static or transient. Please refer to the Java Object Serialization Specification for information on how to alter the default serialization behavior.· Remote objects are passed by reference. A reference to a remote object is actually a reference to a stub, which is a client-side proxy for the remote object. Stubs are described fully in the Java Remote Method Invocation Specification. We'll create them later in this tutorial in the section: Use rmic to generaMM'€M€ŠLte stubs and skeletons.'MMN€M$ €€ä€‚ÿÚ–'€M(‚MD V€-€€€‚‚€€€€‚‚€€€€‚‚ÿWrite The Server ClassA server class is the class which has a main method that creates an instance of the remote object implementation, and binds that instance to a name in the Naming Service. The class that contains this main method could be the implementation class itself, or another class entirely.In this example, the main method is part of HelloServer.java, which does the following:›TN€MÂMG ^€š€ä€€ç3ԁۀ‰€‚€€ç5E“†€‰€‚‚ÿ· Creates an instance of the servant· Publishes the object reference˗(‚MŽƒM4 6€1€€†"€€€‚‚ÿ Create the file HelloServer.java. The source code for this file follows. An explanation of each of the preceding steps follows the source code:ÀÂM†MA P€€ä€€€€‚ÿ//HelloServer.javaimport javax.naming.InitialContext;import javax.naming.Context;public class HelloServer { public static void main(String[] args) { try { // Step 1: Instantiate the Hello servant HelloImpl helloRef = new HelloImpl(); // Step 2: Publish the reference in the Naming Service // using JNDI API Context initialNamingContext = new InitialContext(); initialNamingContext.rebind("HelloService", helloRef ); System.out.println("Hello Server: Ready..."); } catch (Exception e) { System.out.println("Trouble: " + e); e.printStackTrace(); } }}bŽƒMñˆMI `€3€€€‚‚€€€(€‚‚€€‚‚‚€€‚‚‚ÿCreate an instance of a remote objectThe main method of the server needs to create an instance of the remote object implementation, or Servant. For example: HelloImpl helloRef = new HelloImpl();The constructor exports the remote object, which means that once created, the remote object is ready to accept incoming calls.Publish the object referenceFor a caller (client, peer, or client application) to be able to invoke a method on a remote object, that caller must first obtain a reference to the remote object.Ù‚†MʋMW |€€€‚ïæm–YJdk14doc.4.hlp€‰€€€‚‚‚‚€€‚ÿOnce a remote object is registered on the server, callers can look up the object by name (using a naming service), obtain a remote object reference, and then remotely invoke methods on the object. In this example, we use the Naming Service that is part of the Object Request Broker Daemon (orbd).For example, the following code binds the name "HelloService" to a reference for the remote object: // Step 2: Publish the reference in the Naming Service // using JNDI API Context initialNamingContext = new InitialContext(); initialNamingContext.rebind("HelloService", helloRef );qGñˆM;ŒM* $€Ž€€€€‚‚ÿNote the following about the arguments to the rebind method call:ËʋMIMC T€—€ä€€€€€€‚‚€€€€‚‚ÿ· The first argument, "HelloService", is a java.lang.String, representing the name of the remote object to bind· The second argument, helloRef is the object id of the remote object to bind>;ŒMȎMA P€€€€‚‚€€‚‚†"€€€‚‚ÿWrite a client program that uses the remote serviceThe client application in this example remotely invokes the sayHello method in order to get the string "Hello from MARS!!" to display when the client application runs. Create the file HelloClient.java. Here is the source code for the client application:±bIM…ÃMO l€Å€ä€€€€‚ÿ//HelloClient.javaimport java.rmi.RemoteException;import java.net.MalformedURLException;import java.rmi.NotBoundException;import javax.rmi.*;import java.util.Vector;import javax.naming.NamingException;import javax.naming.InȎM…ÃM€ŠLitialContext;import javax.naming.Context;public class HelloClient { public static void main( String args[] ) { Context ic; Object objref; HelloInterface hi; try { ic = new InitialContext(); // STEP 1: Get the Object reference from the Name Service // using JNDI call. objref = ic.lookup("HelloService"); System.out.println("Client: Obtained a ref. to Hello server."); // STEP 2: Narrow the object reference to the concrete type and // invoke the method. hi = (HelloInterface) PortableRemoteObject.narrow( objref, HelloInterface.class); hi.sayHello( " MARS " ); } catch( Exception e ) { System.err.println( "Exception " + e + "Caught" ); e.printStackTrace( ); return; } }}’DȎMÆMN j€‰€€€€€€€€€€€€€€€€‚ÿFirst, the client application gets a reference to the remote object implementation (advertised as "HelloService") from the Naming Service using Java Naming and Directory Interface [TM] (JNDI) calls. Like the Naming.rebind method, the Naming.lookup method takes java.lang.String value representing the name of the object to look up. You supply Naming.lookup() the name of the object you want to look up, and it returns the object bound to that name. Naming.lookup() returns the stub for the remote implementation of the Hello interface to its caller (HelloClient).粅ÃMþÆM5 8€e€€‚€€€€‚€‚ÿ· The client application invokes the remote sayHello() method on the server's remote object, causing the string "Hello from MARS!!" to be displayed on the command line.*ÆM(ÇM' €€ ”€ ‚ÿŠuþÆMÎÇM1 2€ê€€‚€‚€ €‚‚‚‚ÿCompile the ExampleThe source code for this example is now complete and the directory contains four files:z*(ÇMHÉMP n€U€ä€€€€‚€€€€‚€€‚€€€€‚‚ÿ· HelloInterface.java contains the source code for the remote interface· HelloImpl.java contains the source code for the remote object implementation · HelloServer.java contains the source code for the server· HelloClient.java contains the source code for the client application0èÎÇMxËMH ^€Ñ€€€€€€€€€€€€€€‚ÿIn this section, you compile the remote object implementation file, HelloImpl.java, in order to create the .class files needed to run rmic. You then run the rmic compiler to create stubs and skeletons. A stub is a client-side proxy for a remote object which forwards RMI-IIOP calls to the server-side dispatcher, which in turn forwards the call to the actual remote object implementation. The last task is to compile the remaining .java source files to create .class files.`;HÉMØËM% €v€€‚‚‚ÿThe following tasks will be completed in this section:ׅxËM¯ÌMR r€ €ä€ç#i€‰€‚çO“†€€€‰€‚çL“†€‰€‚‚ÿ1. Compile the remote object implementation2. Use rmic to generate stubs and skeletons3. Compile the source filesµØËM³ÎMO l€m€€€‚‚€€€€‚‚†"€€€‚‚€€‚ÿCompile the remote object implementationTo create stub and skeleton files, the rmic compiler must be run on the fully-qualified package names of compiled class files that contain remote object implementations. In this example, the file that contains the remote object implementations is HelloImpl.java. To generate the stubs and skeletons: Compile HelloImpl.java, as follows: javac -d . -classpath . HelloImpl.javaü’¯ÌM»Nj ¢€%€€€€€€€€‚‚€€7€€‚‚€€€€€€€€€€€€‚ÿThe "-d ." option indicates that the generated files should be placed in the directory from which you are running the compiler. The "-classpath ." option indicates that files on which HelloImpl.java is dependent can be f³ÎM»N€ŠLound in this directory.Use rmic to generate skeletons and stubsTo create CORBA-compatible stub and skeleton files, run the rmic compiler with the -iiop option. The rmic -iiop command takes one or more class names as an argument and produces class files of the form _HelloImpl_Tie.class and _HelloInterface_Stub.class. The remote implementation file, HelloImpl.class, is the class name to pass in this example.°?³ÎMkNq °€€€‚€€ç°˜Y€€€‰€çòµ˜Y€€€‰€‚‚†"€€€€€‚‚€€‚‚‚ÿFor an explanation of rmic options, you can refer to the Solaris rmic manual page or the Win32 rmic manual page. To create the stub and skeleton for the HelloImpl remote object implementation, run rmic like this: rmic -iiop HelloImplThe preceding command creates the following files:¡f»N N; F€Ì€ä€€€€‚€€€€‚‚ÿ· _HelloInterface_Stub.class - the client stub· _HelloImpl_Tie.class - the server skeletonTÜkN`Nx Ÿ€»€€€‚‚†"€‚‚€€‚€€€€€€€€ç毘Y€€€‰€çv·˜Y€€€‰€‚ÿCompile the source files Compile the source files as follows: javac -d . -classpath . HelloInterface.java HelloServer.java HelloClient.javaThis command creates the class files HelloInterface.class, HelloServer.class, and HelloClient.class. These are the remote interface, the server, and the client application respectively. For an explanation of javac options, you can refer to the Solaris javac manual page or the Win32 javac manual page.& N†N# €€€‚ÿ*`N°N' €€ ”€ ‚ÿP†N1N1 2€ €€‚€‚€ €‚‚‚‚ÿRun the ExampleThe following tasks will be completed in this section:š]°NÙNK f€º€ä€çó&“†€‰€‚瀓†€‰€‚ç…“†€‰€‚‚ÿ1. Start the Naming Service2. Start the server3. Run the client applicationi61NB N3 4€m€€€‚‚€€‚‚‚‚‚ÿStart the Naming ServiceFor this example, we will use the Object Request Broker Daemon, orbd, which includes both a Transient and a Persistent Naming Service, and is available with every download of J2SE 1.4 and higher.For a caller (client, peer, or client application) to be able to invoke a method on a remote object, that caller must first obtain a reference to the remote object.Once a remote object is registered on the server, callers can look up the object by name, obtain a remote object reference, and then remotely invoke methods on the object.~ÙNÀ N} Ȁ€€‚†"€€€‚‚‚‚€€‚‚‚€€‚€€€€€€ïæm–YJdk14doc.4.hlp€€‰€‚ÿ Start the Naming Service by running orbd from the command line.For this example, on the Solaris operating system: orbd -ORBInitialPort 1050&or, on the Windows operating system: start orbd -ORBInitialPort 1050You must specify a port on which to run orbd. For this example the port of 1050 is chosen because in the Solaris operating environment, a user must become root to start a process on a port under 1024. For more on the orbd tool, you can refer to the orbd manual page.aB N-@NM h€)€€‚€(€‚‚€€‚‚€€€€€€€€‚ÿYou must stop and restart the server any time you modify a remote interface or use modified/additional remote interfaces in a remote object implementation. Otherwise, the type of the object reference bound in the Naming Service will not match the modified class.Start the serverOpen another terminal window and change to the directory containing the source files for this example. The command for running the client has been spread out below to make it easier to read, but should be typed without returns between the lines. The following command shows how to start the HelloServer server. If you used a port other than 1050 or a host other than localhost when starting the orbd tool, replace those values in the command below with the actuÀ N-@N€ŠLal values used to start orbd. ›À N9BNq °€9€€‚†"€‚‚€€‚€€ç寘Y€€€‰€çu·˜Y€€€‰€‚‚‚‚€€‚ÿ Start the Hello server, as follows: java -classpath . -Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url=iiop://localhost:1050 HelloServerFor an explanation of java options, you can refer to the Solaris java manual page or the Win32 java manual page.The output should look like this:Hello Server: Ready ...y>-@N²DN; D€}€€€‚‚€€€€€€‚ÿRun the client applicationOnce the Naming Service and server are running, the client application can be run. From a new terminal window, go to the source code directory, and run the client application from the command line, as shown below. The command for running the client has been spread out below to make it easier to read, but should be typed without returns between the lines. If you used a port other than 1050 or a host other than localhost when starting the orbd tool, replace those values in the command below with the actual values used to start orbd.õœ9BN§GNY €€;€€‚†"€‚‚€€‚‚‚€€‚€€€€€€‚ÿ Start the client application, as follows: java -classpath . -Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url=iiop://localhost:1050 HelloClient After running the client application, you will see output similar to the following on your display:Client: Obtained a ref. to Hello server.Hello from MARS ORBD and the Hello server will continue to run until they are explicitly stopped. On Solaris, you can stop these processes using the pkill orbd and pkill HelloServer commands from a terminal window. On Windows, you can type Ctrl+C in a prompt window to kill the process.¹“²DN`HN& €'€€‚‚‚ÿThis completes the basic RMI-IIOP tutorial. If you are ready to move on to more complicated applications, here are some sources that may help:|‡§GNÜJNõ ž€ä€€Ì?EF("http://forum.java.sun.com/list/discuss.sun.rmi-iiop",`',1)€‰€‚‚€€Ì0EF("http://java.sun.com/j2ee/blueprints/",`',1)€‰€Ì8EF("http://java.sun.com/j2ee/tutorial/index.html",`',1)€‰€‚ÿ· http://forum.java.sun.com/list/discuss.sun.rmi-iiop, The Sun Developer's Forum for RMI-IIOP. You must register with the Java Developer Connection to access this site.· EJB clients interact with the J2EE EJB tier using the RMI-IIOP protocol. For more information on using RMI-IIOP in this way, see the Java 2 Platform, Enterprise Edition Blueprints or the EJB Tutorials.²S`HNŽLN_ Œ€§€ä€‚€€çܗY€‰€‚‚€€ïn–YJdk14doc.4.hlp€‰€‚‚ÿ· Another RMI-IIOP tutorial includes support for the Portable Object Adapter (POA). POA support for RMI-IIOP is non-standard.· The Java IDL tutorial includes an example for running the client and server on different machines. The concepts of Running the Hello World Example on Two Machines apply to this example as well.&ÜJNŽLN# €€€‚ÿ*ŽLNÞLN' €€ ”€ ‚ÿ,ŽLN MN' € €€‚€‚ÿ·XÞLNÁMN_ Ž€°€çÁœ—Y€‰€‚‚€Ì#EF("mailto:rmi-iiop@sun.com",`',1)€ ‰€‚‚ÿRMI-IIOP Documentation HomeSend questions or comments to: rmi-iiop@sun.com1 MNòMN1Uÿÿÿÿÿÿÿÿ+ÿÿÿÿòMNNN$ÁMNNN" €€€ ÿIòMN_NN1›™»,_NN¡NN„ŽNRemote Object ActivationBNN¡NN& €8€€€‚ÿRemote Object Activation'_NNÈNN# €€€‚ÿ ×C¡NNŸON”#ø€ˆx††€€ÿ.€€€†"€‚ÿ(€€€%€‚ÿ€L€ÿ.€N€ çñ˜Y€ ‰€‚ÿÿÿ Remote Object ActivationDocumentation Comments)ÈNNÈON$ € €€‚‚ÿ u8ŸONI‚N= H€q€ä€€€€€€€€ÈONI‚NNN€‚ÿPrior to the release of the Java 2 SDK, an instance of a UnicastRemoteObject could be accessed from a program that (1) created an instance of the remote object, and (2) ran all the time. Now with the introduction of the class java.rmi.activation.Activatable and the RMI daemon, rmid, programs can be written to register information about remote object implementations that should be created and execute "on demand", rather than running all the time. The RMI daemon, rmid, provides a Java virtual machine* (JVM) from which other JVM instances may be spawned.æ¬ÈON/„N: B€Y€ä€‚€$€‚睗Y€‰€‚‚ÿStarting out with activationNone of the activation tutorials should be the first material you read on RMI. If you have never used RMI before, you should take a look at Getting Started before you try these. The first three activation tutorials are intended for developers who have had some experience developing Java programs that access remote objects by means of the RMI classes provided as part of the Java 2 SDK.QÞI‚N€†Ns Ž€œ€ɀ€€ç霗Y€‰€‚€‚€‚‚€€çꜗY€‰€‚€‚€€€‚‚€€ç뜗Y€‰€‚ÿ· Creating an Activatable ObjectThis tutorial illustrates the process of creating a new class that extends java.rmi.activation.Activatable. · Making a UnicastRemoteObject ActivatableThis tutorial takes you through the process of moving an existing remote object implementation, that extends UnicastRemoteObject, to a class that extends java.rmi.activation.Activatable. · Activating an object that does not extend java.rmi.activation.Activatable> /„NŸ‡N5 8€€ɀ€‚€€€€‚‚‚ÿThis tutorial shows you how to use the static method Activatable.exportObject in the constructor of a class that does not extend from Activatable, and how to create a remote interface, based on the methods that should be made available to remote clients. F€†N‰N1 0€+€ä€$€‚€€‚‚‚ÿGoing further with activationThis next tutorial on using a MarshalledObject is intended for developers who have gone through at least one of the first three activation tutorials. More tutorials may be added to this section in a future release, based on your feedback. r=Ÿ‡Nv‰N5 :€z€ɀ€€ç윗Y€‰€‚‚ÿ· Using a MarshalledObject to create persistent data‡c‰Ný‰N$ €Æ€€‚‚ÿFor all of the source code used in the activation tutorials, you may choose from these formats:¥Kv‰N¢ŠNZ „€–€ä€€çò¶˜Y€‰€‚€€çó¶˜Y€‰€‚€€çô¶˜Y€‰€‚‚ÿ· activation.zip · activation.tar · activation.tar.Z“ý‰N§ŒNr ²€'€€çø£—Y€‰€‚‚Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€‰€€€‚€‚ÿFor more information on object activation, you can also refer to the RMI Specification.We are very interested in knowing whether these tutorials are useful. Please send any comments or suggestions to: rmi-comments@java.sun.com, with a subject of "activation tutorials". *As used on this web site, the terms "Java virtual machine" or "JVM" mean a virtual machine for the Java platform.*¢ŠNьN' €€ ”€ ‚ÿ&§ŒN÷ŒN# €€€‚ÿg‰ÑŒN^ŽNÞ#ЁÂ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€ ‰€€‚ÿ€ÿ(€†"€‚ÿÿÿCopyright © 2001 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com &÷ŒN„ŽN# €€€‚ÿ1^ŽNµŽN1Uÿÿÿÿÿÿÿÿ-ÿÿÿÿµŽNَN$„ŽNَN" €€€ ÿV%µŽN/N1ðFIŠœ€Ÿ./N~N8ÁOCreating an Activatable Remote ObjectO)َN~N& €R€€€‚ÿCreating an Activatable Remote ObjectJ#/NȏN' €F€€ €‚‚ÿCreating an Activatable Object&~N ÀN# €€€‚ÿȏN ÀNَN*ȏN6ÀN' €€ ”€ ‚ÿèˆ ÀNÄN` Ž€€€‚€€€çꜗY€‰€ç뜗Y€‰€‚‚€€€€€€€€‚ÿThis tutorial shows you the steps for creating an activatable object by extending java.rmi.activation.Activatable. If you are interested in finding out about Making a UnicastRemoteObject Activatable or Activating an object that does not extend java.rmi.activation.Activatable, these are also available as tutorials.Prior to the release of the Java 2 SDK, an instance of a UnicastRemoteObject could be accessed from a server program that (1) created an instance of the remote object, and (2) ran all the time. Now with the introduction of the class java.rmi.activation.Activatable and the RMI daemon, rmid, programs can be written to register information about remote object implementations that should be created and execute "on demand," rather than running all the time. The RMI daemon, rmid, provides a Java virtual machine* (JVM) from which other JVM instances may be spawned.,6ÀNJÄN' € €€‚€‚ÿ*ÄNtÄN' €€ ”€ ‚ÿRJÄNÆN; D€¥€€‚€‚€€(€€(€‚‚‚‚ÿNote: For the remainder of this tutorial, the terms "activatable object implementation", "activatable object," and "implementation" may be used interchangeably to refer to the class, examples.activation.ActivatableImplementation, which implements a remote interface and is activatable.This tutorial is organized as follows:ö›tÄN÷ÆN[ „€7€ä€€ç!Q €‰€‚€€ç"Q €‰€‚€€ç#Q €‰€‚‚ÿ· The steps to create the implementation class · The steps to create the setup class · The steps to compile and run the example codeO+ÆNFÇN$ €V€€‚‚ÿThe files needed for this tutorial are:áy÷ÆN'ÉNh ž€ó€ä€çõ¶˜Y€‰€‚€çö¶˜Y€‰€€€‚€ç"·˜Y€‰€‚€ç·˜Y€‰€‚‚ÿ· Client.java, the class which will invoke a method on an activatable object· MyRemoteInterface.java, the interface that extends java.rmi.Remote, implemented by:· ActivatableImplementation.java, the class which will be activated · Setup.java, the class which registers information about the activatable class with the RMI registry and the RMI daemonþ×FÇN%ËN' €¯€€‚‚‚‚ÿYou may notice that while the client code is included, it is not discussed in a step-by-step manner, like the implementation and setup classes. The reason for this omission, is that the client code for activatable objects is no different than the RMI client code for accessing non-activatable remote objects. Activation is strictly a server-side implementation decision.For all of the source code used in the activation tutorials, you may choose from these formats:¥K'ÉNÊËNZ „€–€ä€€çò¶˜Y€‰€‚€€çó¶˜Y€‰€‚€€çô¶˜Y€‰€‚‚ÿ· activation.zip · activation.tar · activation.tar.Z&%ËNðËN# €€€‚ÿ*ÊËNÌN' €€ ”€ ‚ÿ ÊðËN%ÍNA P€•€€‚€‚€$€‚‚€ç"·˜Y€‰€‚‚ÿCreating the implementation classFor this example, the implementation class will be examples.activation.ActivatableImplementation. There are four steps to create an implementation class:.µÌNSÏNy À€k€ä€猠 €‰€‚獠 €€‰€‚玠 €‰€‚珠 €‰€‚‚€$‚€‚‚€€‚€$‚€8€‚ÿ1. Make the appropriate imports in the implementation class 2. Extend your class from java.rmi.activation.Activatable 3. Declare a two-argument constructor in the implementation class 4. Implement the remote interface method(s)Step 1:Make the appropriate imports in the implementation classimport java.rmi.*;import java.rmi.activation.*;Step 2:Extend your class from java.rmi.activation.ActivatableÓ%ÍN~OL f€§€ä€‚€€‚€$‚€‚‚€€‚€$‚€‚ÿpublic class ActivatableImplementation extends Activatable implements examples.activation.SÏN~OَNMyRemoteInterface {Step 3:Declare a two-argument constructor in the implementation classpublic ActivatableImplementation(ActivationID id, MarshalledObject data) throws RemoteException { // Register the object with the activation system // then export it on an anonymous port super(id, 0);}Step 4:Implement the remote interface method(s)„VSÏNO. ,€¬€ä€‚€€‚ÿpublic Object callMeRemotely() throws RemoteException { return "Success";}&~O(O# €€€‚ÿ*ORO' €€ ”€ ‚ÿ€2(OÒON j€e€€‚€‚€$€‚‚€ç·˜Y€‰€‚‚€€€€‚ÿCreating the "setup" classThe job of the "setup" class is to create all the information necessary for the activatable class, without necessarily creating an instance of the remote object. For this example the setup class will be examples.activation.Setup.The setup class passes the information about the activatable class to rmid, registers a remote reference (an instance of the activatable class's stub class) and an identifier (name) with the rmiregistry, and then the setup class may exit. There are seven steps to create a setup class:&ROøO# €€€‚ÿÒOO €ä€ç·  €‰€‚çž  €€‰€‚眠 €€€‰€‚ç¹  €€€‰€‚纠 €€‰€‚ç»  €€‰€‚猠 €‰€‚‚€$‚€‚ÿ1. Make the appropriate imports 2. Install a SecurityManager 3. Create an ActivationGroup instance 4. Create an ActivationDesc instance 5. Declare an instance of your remote interface and register with rmid 6. Bind the stub to a name in the rmiregistry 7. Quit the setup applicationStep 1:Make the appropriate imports in the setup class—&øO­ Oq °€M€ä€‚€€‚€$‚€8€‚‚€€‚€$‚€8€$€‚‚€€ç·˜Y€‰€€€€€‚ÿimport java.rmi.*;import java.rmi.activation.*import java.util.Properties;Step 2:Install a SecurityManagerSystem.setSecurityManager(new RMISecurityManager());Step 3:Create an ActivationGroup instanceNote: In this example, for simplicity, we will use a policy file that gives global permission to anyone from anywhere. Do not use this policy file in a production environment. For more information on how to properly open up permissions using a java.security.policy file, please refer to to the following documents:'OÔ O$ €€ä€‚ÿ›^­ Oo O= J€Œ€ɀ瞫—Y€‰€‚‚ç·«—Y€‰€‚‚ÿDefault Policy Implementation and Policy File SyntaxPermissions in the Java 2 SDKœOÔ O OM h€Ÿ€ä€€€‚‚€€(€‚‚€€‚ÿIn the setup application, the job of the activation group descriptor is to provide all the information that rmid will require to contact the appropriate existing JVM or spawn a new JVM for the activatable object.Note: In order to run this code on your system, you'll need to change the policy file location to be the absolute path to where you've installed the example policy file that came with the source code.// Because of the Java 2 security model, a security policy should // be specified for the ActivationGroup VM. The first argument// to the Properties put method, inherited from Hashtable, is // the key and the second is the value // Properties props = new Properties(); props.put("java.security.policy", "/home/rmi_tutorial/activation/policy"); ActivationGroupDesc.CommandEnvironment ace = null; ActivationGroupDesc exampleGroup = new ActivationGroupDesc(props, ace);// Once the ActivationGroupDesc has been created, register it // with the activation system to obtain its ID//ActivationGroupID agi = ActivationGroup.getSystem().registerGroup(exampleGroup);Áeo OØCO\ †€Ë€ä€$‚€8€$€‚‚€€‚‚€€(€‚‚€€‚ÿStep 4:Create an ActivationDesc instanceThe job of the activation descriptor is to provide all the information that rmid will require to create OØCOَNa new instance of the implementation class.Note: In order to run this code on your system, you'll need to change the file URL location to be the location of the directory on your system, where you've installed the example source code.// The "location" String specifies a URL from where the class // definition will come when this object is requested (activated).// Don't forget the trailing slash at the end of the URL // or your classes won't be found.// String location = "file:/home/rmi_tutorial/activation/";// Create the rest of the parameters that will be passed to// the ActivationDesc constructor//MarshalledObject data = null; // The location argument to the ActivationDesc constructor will be used // to uniquely identify this class; it's location is relative to the // URL-formatted String, location.//ActivationDesc desc = new ActivationDesc (agi, "examples.activation.ActivatableImplementation", location, data);(Ø OFOP n€±€ä€$‚€8€‚‚€‚€‚‚€$‚€8€$€8€‚‚€‚€‚ÿStep 5:Declare an instance of your remote interface and register the activation descriptor with rmidMyRemoteInterface mri = (MyRemoteInterface)Activatable.register(desc);System.out.println("Got the stub for the ActivatableImplementation");Step 6:Bind the stub, that was returned by the Activatable.register method, to a name in the rmiregistryNaming.rebind("ActivatableImplementation", mri);System.out.println("Exported ActivatableImplementation");u=ØCOuFO8 @€z€ä€‚€$‚€‚‚€€‚€‚ÿStep 7:Quit the setup applicationSystem.exit(0);+FO FO( €€0䔀 ‚ÿ…SuFO%GO2 4€Š€ä€‚€‚€$€‚‚‚‚ÿCompile and run the codeThere are six steps to compile and run the code:jÖ FOIO” ö€­€ɀ€çâ  €‰€‚çã  €€€‰€‚çä  €€‰€‚çå  €€‰€‚çæ  €‰€‚çç  €‰€‚‚€$‚€‚‚€€‚ÿ1. Compile the remote interface, implementation, client, and setup classes 2. Run rmic on the implementation class 3. Start the rmiregistry 4. Start the activation daemon, rmid 5. Run the setup program 6. Run the clientStep 1:Compile the remote interface, implementation, client and setup classes% javac -d . MyRemoteInterface.java% javac -d . ActivatableImplementation.java% javac -d . Client.java% javac -d . Setup.javaIì%GOØKO] ˆ€Ù€ɀ€$‚€8€$€‚‚€€‚€$‚€8€‚‚€€‚€€(€€(€‚ÿStep 2:Run rmic on the implementation class% rmic -d . examples.activation.ActivatableImplementationStep 3:Start the rmiregistry% rmiregistry &Note: Before you start the rmiregistry, you must make sure that the shell or window in which you will run the registry, either has no CLASSPATH set or has a CLASSPATH that does not include the path to any classes that you want downloaded to your client, including the stubs for your remote object implementation classes.§IOàMOa €O€ɀ€‚€(€€(€€(€€(€‚‚€$‚€8€‚‚€€‚€€€€‚ÿIf you start the rmiregistry, and it can find your stub classes in its CLASSPATH, it will ignore the server's java.rmi.server.codebase property, and as a result, your client(s) will not be able to download the stub code for your remote object.Step 4:Start the activation daemon, rmid% rmid -J-Djava.security.policy=rmid.policy &Where rmid.policy is the name of the security policy file for rmid.Ÿ=ØKO‹€Ob ’€{€ɀ€‚€€€€€€ç°˜Y€€‰€çóµ˜Y€€‰€‚‚€$‚€‚‚‚ÿNote: By default, rmid now requires a security policy file, that is used to verify whether or not the information in each ActivationGroupDescriptor is allowed to be used to launch a JVM for an activation group. For complete details, please refer to the rmid man page for the Solaris operating environment and the rmid man page for the Microsoft Windows platform.Step 5:Run the setup programRun the setup, setting the codeàMO‹€OَNbase property to be the location of the implementation stubs. There are four things that need to go on the same command line:(àMO³€O% €€ɀ€‚ÿ[‹€O‚O< F€?€-€€€‚€(€€(€‚‚‚‚ÿ1. The "java" command 2. A property name=value pair that specifies the location of the security policy file 3. A property to specify where the stub code lives (no spaces from the "-D" all the way though the last "/") 4. The fully-qualified package name of the setup program.⎳€Oð„OT v€€ɀ€€€€€‚‚€€‚‚€€€€€€€€‚ÿThere should be one space just after the word "java", one between the two properties, and a third one just before the word "examples" (which is very hard to see when you view this as text, in a browser, or on paper).% java -Djava.security.policy=/home/rmi_tutorial/activation/policy -Djava.rmi.server.codebase=file:/home/rmi_tutorial/activation/ examples.activation.SetupThe codebase property will be resolved to a URL, so it must have the form of "http://aHost/somesource/" or "file:/myDirectory/location/" or, due to the requirements of some operating systems, "file:///myDirectory/location/" (three slashes after the "file:").MÏ‚O=‡O~ ʀŸ€ɀ€‚€€€€ÌAEF("http://java.sun.com/products/jdk/rmi/class-server.zip",`',1)€-‰€‚ÿWhile a file: URL is sometimes easier to use for running example code, using the file: URL will mean that the only clients that will be able to access the server are those that can access the same files system as the server (either by virtue of running on the same machine as the server or by using a shared filesystem, such as NFS). If you wish to use an HTTP server, but don't have one available to you, please feel free to download our HTTP server. Æð„OH‰OE X€€ɀ€‚€€€€€(ç휗Y€€1‰€‚ÿPlease note that each of these sample URL strings has a trailing "/". The trailing slash is a requirement for the URL set by the java.rmi.server.codebase property, so the implementation can resolve (find) your class definition(s) properly. For more information on setting the java.rmi.server.codebase property from the command line, please take a look at our tutorial on dynamic code downloading using the java.rmi.server.codebase property.b=‡Oª‹OE X€;€ɀ€‚€€€€€ç7¢§€€‰€‚ÿIf you forget the trailing slash on the property, or if the class files can't be located at the source (they aren't really being made available for download) or if you misspell the property name, you'll get thrown a java.lang.ClassNotFoundException. This exception will be thrown when you try to bind your remote object to the rmiregistry, or when the first client attempts to access that object's stub. If the latter case occurs, you have another problem as well because the rmiregistry was finding the stubs in its CLASSPATH.œH‰O¹OR r€{€ɀ€‚‚‚€€‚€$‚€‚‚€€€€‚‚€€‚‚ÿThe server output should look like this: Got the stub for the ActivatableImplementation Exported ActivatableImplementationStep 6:Run the clientThe argument to the examples.activation.Client program is the hostname of the implementation server, in this case, "vector".% java -Djava.security.policy=/home/rmi_tutorial/activation/policy examples.activation.Client vectorThe client output should look like this:Ùšª‹O’ŽO1 0€Q€ɀ€‚€€‚ÿ Got a remote reference to the object that extends Activatable. Making remote call to the server Returned from remote call Result: Success£x¹O5O+ &€ð€ä€€‚€‚ÿ*As used on this web site, the terms "Java virtual machine" or "JVM" mean a virtual machine for the Java platform.+’ŽO`O( €€0䔀 ‚ÿ'5O‡O$ €€ä€‚ÿ~Œ`OÁOò#²2©©€€€‚ÿ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",‡OÁOَN`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€ ‰€€‚ÿ€ ÿ(€†"€‚ÿÿÿCopyright © 1999 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com '‡O8ÁO$ €€ä€‚ÿ1ÁOiÁO1Uÿÿÿÿÿÿÿÿ/ÿÿÿÿiÁOÁO$8ÁOÁO" €€€ ÿY(iÁOæÁO1"H»Sƒ¡0æÁO8ÂO’ÅPMaking a UnicastRemoteObject ActivatableR,ÁO8ÂO& €X€€€‚ÿMaking a UnicastRemoteObject ActivatableT-æÁOŒÂO' €Z€€ €‚‚ÿMaking a UnicastRemoteObject Activatable&8ÂO²ÂO# €€€‚ÿ*ŒÂOÜÂO' €€ ”€ ‚ÿo²ÂOKÅOX ~€/€€‚€€€€€€€€€ç霗Y€‰€ç뜗Y€‰€‚ÿThis tutorial shows you the steps for migrating an existing UnicastRemoteObject to an activatable object by extending java.rmi.activation.Activatable. This page is just for developers who wish to change an existing class from being a sub-class of UnicastRemoteObject to being a sub-class of java.rmi.activation.Activatable. If you are interested in finding out about Creating an Activatable Object or Activating an object that does not extend java.rmi.activation.Activatable, these are also available as tutorials.}@ÜÂOÈÇO= H€€€‚€€€€€€€€‚ÿPrior to the release of the Java 2 SDK, an instance of a UnicastRemoteObject could be accessed from a server program that (1) created an instance of the remote object, and (2) ran all the time. Now with the introduction of the class java.rmi.activation.Activatable and the RMI daemon, rmid, programs can be written to register information about remote object implementations that should be created and execute "on demand," rather than running all the time. The RMI daemon, rmid, provides a Java virtual machine* (JVM) from which other JVM instances may be spawned.&KÅOîÇO# €€€‚ÿ*ÈÇOÈO' €€ ”€ ‚ÿ‰NîÇO¡ÉO; D€€€‚€‚€€(€€(€‚‚‚‚ÿNote: For the remainder of this tutorial, the terms "activatable object implementation", "activatable object," and "implementation" may be used interchangeably to refer to the class, examples.activation.MyRemoteInterfaceImpl, which implements a remote interface and is activatable.This tutorial is organized as follows:÷œÈO˜ÊO[ „€9€ä€€çZX €‰€‚€€ç[X €‰€‚€€ç\X €‰€‚‚ÿ· The steps to modify the implementation class · The steps to modify the server class · The steps to compile and run the example codeO+¡ÉOçÊO$ €V€€‚‚ÿThe files needed for this tutorial are:ßw˜ÊOÆÌOh ž€ï€ä€ç·˜Y€‰€‚€çö¶˜Y€‰€€€‚€ç·˜Y€‰€‚€ç·˜Y€‰€‚‚ÿ· Client2.java, the class which will invoke a method on an activatable object· MyRemoteInterface.java, the interface that extends java.rmi.Remote, implemented by:· MyRemoteInterfaceImpl.java, the class which will be activated · Setup2.java, the class which registers information about the activatable class with the RMI registry and the RMI daemonÿØçÊOÅÎO' €±€€‚‚‚‚ÿYou may notice that while the client code is included, it is not discussed in a step-by-step manner, like the implementation and setup classes. The reason for this omission, is that the client code for activatable objects is no different than the RMI client code for accessing non-activatable remote objects. Activation is strictly a server-side implementation decision.For all of the source code used in the activation tutorials, you may choose from these formats:¥KÆÌOjÏOZ „€–€ä€€çò¶˜Y€‰€‚€€çó¶˜Y€‰€‚€€çô¶˜Y€‰€‚‚ÿ· activation.zip · activation.tar · activation.tar.Z&ÅÎOÏO# €€€‚ÿ*jÏOºÏO' €€ ”€ ‚ÿ9öÏOÿPC T€í€€‚€$€‚‚€ç·˜Y€‰€€€‚‚ÿºÏOÿPÁOCreating the implementation classFor this example, the implementation class will be examples.activation.MyRemoteInterfaceImpl. There are four steps to migrate an existing implementation class that extends from UnicastRemoteObject:©ºÏOPn ª€S€ä€ç× €‰€‚ç × €€‰€‚ç!× €‰€‚ç!× €‰€‚‚€$‚€‚‚€€‚ÿ1. Make the appropriate imports in the implementation class 2. Modify the class declaration so that the class now extends from java.rmi.activation.Activatable 3. Remove or comment out the old no-argument constructor 4. Declare a two-argument constructor in the implementation classStep 1:Make the appropriate imports in the implementation classimport java.rmi.*;import java.rmi.activation.*;ñ‘ÿPP` Ž€#€ä€$‚€8€‚‚€€‚€$‚€‚‚€€‚€$‚€‚‚€€‚ÿStep 2:Modify the class declaration so that the class now extends from java.rmi.activation.Activatablepublic class MyRemoteInterfaceImpl extends Activatable implements examples.activation.MyRemoteInterface {Step 3:Remove or comment out the old no-argument constructor// public MyRemoteInterfaceImpl() throws RemoteException// {// }Step 4:Declare a two-argument constructor in the implementation classpublic MyRemoteInterfaceImpl(ActivationID id, MarshalledObject data) throws RemoteException { // Register the object with the activation system // then export it on an anonymous port // super(id, 0);}&P-P# €€€‚ÿ*PWP' €€ ”€ ‚ÿç™-P> PN j€3€€‚€‚€$€‚‚€ç·˜Y€‰€‚‚€€€€‚ÿCreating the "setup" classUnlike the RMI server class that must stay alive as long as the implementation needs to be made available, the job of the "setup" class is to create all the information necessary for the activatable class, without necessarily creating an instance of the remote object. For this example the setup class will be examples.activation.Setup2.The setup class passes information about the activatable class to rmid, registers a remote reference (an instance of the activatable class's stub class) and an identifier (name) with the rmiregistry, and then the setup class may exit. There are seven steps to create a setup class:&WPd P# €€€‚ÿ,> P P €ä€çJ× €‰€‚çK× €€‰€‚çP× €€€‰€‚çL× €€€‰€‚çM× €€‰€‚çN× €€‰€‚çO× €‰€‚‚€$‚€‚ÿ1. Make the appropriate imports 2. Install a SecurityManager 3. Create an ActivationGroup instance 4. Create an ActivationDesc instance 5. Remove the reference to the implementation class creation, and register with rmid 6. Bind the stub to a name in the rmiregistry 7. Quit the setup applicationStep 1:Make the appropriate imports in the setup class—&d P'Pq °€M€ä€‚€€‚€$‚€8€‚‚€€‚€$‚€8€$€‚‚€€ç·˜Y€‰€€€€€‚ÿimport java.rmi.*;import java.rmi.activation.*import java.util.Properties;Step 2:Install a SecurityManagerSystem.setSecurityManager(new RMISecurityManager());Step 3:Create an ActivationGroup instanceNote: In this example, for simplicity, we will use a policy file that gives global permission to anyone from anywhere. Do not use this policy file in a production environment. For more information on how to properly open up permissions using a java.security.policy file, please refer to to the following documents:' PNP$ €€ä€‚ÿ›^'PéP= J€Œ€ɀ瞫—Y€‰€‚‚ç·«—Y€‰€‚‚ÿDefault Policy Implementation and Policy File SyntaxPermissions in the Java 2 SDKœONP‘CPM h€Ÿ€ä€€€‚‚€€(€‚‚€€‚ÿIn the setup application, the job of the activation group descriptor is to provide all the information that rmid will require to contact the appropriate existing JVM or spawn a new JVM for the activaéP‘CPÁOtable object.Note: In order to run this code on your system, you'll need to change the policy file location to be the absolute path to where you've installed the example policy file that came with the source code.// Because of the Java 2 security model, a security policy should // be specified for the ActivationGroup VM. The first argument// to the Properties put method, inherited from Hashtable, is // the key and the second is the value // Properties props = new Properties(); props.put("java.security.policy", "/home/rmi_tutorial/activation/policy"); ActivationGroupDesc.CommandEnvironment ace = null; ActivationGroupDesc exampleGroup = new ActivationGroupDesc(props, ace);// Once the ActivationGroupDesc has been created, register it // with the activation system to obtain its ID//ActivationGroupID agi = ActivationGroup.getSystem().registerGroup(exampleGroup);QøéPâGPY €€ñ€ä€$‚€8€$€‚‚€€‚‚€€(€‚‚€€‚ÿStep 4:Create an ActivationDesc instanceIn the setup application, the job of the activation descriptor is to provide all the information that rmid will require to create a new instance of the implementation class.Note: In order to run this code on your system, you'll need to change the file URL location to be the location of the directory on your system, where you've installed the example source code.// Don't forget the trailing slash at the end of the URL // or your classes won't be found // String location = "file:/home/rmi_tutorial/activation/"; // Create the rest of the parameters that will be passed to // the ActivationDesc constructor // MarshalledObject data = null; // The location argument to the ActivationDesc constructor will be used // to uniquely identify this class; it's location is relative to the // URL-formatted String, location.//ActivationDesc desc = new ActivationDesc (agi, "examples.activation.ActivatableImplementation", location, data);b‘CPDJPJ b€1€ä€$‚€8€‚‚€€‚€$‚€8€$€8€‚ÿStep 5:Remove the reference to the implementation class creation, declare an instance of your remote interface, and register the activation descriptor with rmid// MyRemoteInterfaceImpl mri = new MyRemoteInterfaceImpl(); // the above line is replaced with the following: // MyRemoteInterface mri = (MyRemoteInterface)Activatable.register(desc); System.out.println("Got the stub for the MyRemoteInterfaceImpl"); Step 6:Bind the stub, that was returned by the Activatable.register method, to a name in the rmiregistryá¢âGP%KP? L€E€ä€‚€€‚€$‚€‚‚€€‚ÿNaming.rebind("MyRemoteInterfaceImpl", mri);System.out.println("Exported MyRemoteInterfaceImpl");Step 7:Quit the setup applicationSystem.exit(0);&DJPKKP# €€€‚ÿ*%KPuKP' €€ ”€ ‚ÿ„SKKPùKP1 2€Š€€‚€‚€$€‚‚‚‚ÿCompile and run the codeThere are six steps to compile and run the code:gÔuKP`NP“ ô€©€ä€çu× €‰€‚çv× €€€‰€‚çw× €€‰€‚çx× €€‰€‚çy× €‰€‚çz× €‰€‚‚€$‚€‚‚€€‚ÿ1. Compile the remote interface, implementation, client, and setup classes 2. Run rmic on the implementation class 3. Start the rmiregistry 4. Start the activation daemon, rmid 5. Run the setup program 6. Run the clientStep 1:Compile the remote interface, implementation, client and setup classes% javac -d . MyRemoteInterface.java% javac -d . MyRemoteInterfaceImpl.java% javac -d . Client2.java% javac -d . Setup2.javaDèùKP°€P\ †€Ñ€ä€$‚€8€$€‚‚€€‚‚€$‚€8€‚‚€€‚€€(€€(€‚ÿStep 2:Run rmic on the implementation class% rmic -d . examples.activation.MyRemoteInterfaceImplStep 3:Start the rmiregistry% rmiregistry &Note: Before you start the rmiregistry, you must make sure that the shell or window in which you will run the registry, either has no CLASSPATH set or has a CL`NP°€PÁOASSPATH that does not include the path to any classes that you want downloaded to your client, including the stubs for your remote object implementation classes.§`NP·‚P` Ž€O€ä€‚€(€€(€€(€€(€‚‚€$‚€8€‚‚€€‚€€€€‚ÿIf you start the rmiregistry, and it can find your stub classes in its CLASSPATH, it will ignore the server's java.rmi.server.codebase property, and as a result, your client(s) will not be able to download the stub code for your remote object.Step 4:Start the activation daemon, rmid% rmid -J-Djava.security.policy=rmid.policy &Where rmid.policy is the name of the security policy file for rmid.ž=°€PU…Pa €{€ä€‚€€€€€€ç°˜Y€€‰€çóµ˜Y€€‰€‚‚€$‚€‚‚‚ÿNote: By default, rmid now requires a security policy file, that is used to verify whether or not the information in each ActivationGroupDescriptor is allowed to be used to launch a JVM for an activation group. For complete details, please refer to the rmid man page for the Solaris operating environment and the rmid man page for the Microsoft Windows platform.Step 5:Run the setup programRun the setup, setting the codebase property to be the location of the implementation stubs. There are four things that need to go on the same command line:'·‚P|…P$ €€ä€‚ÿ[U…P׆P< F€?€ɀ€€€‚€(€€(€‚‚‚‚ÿ1. The "java" command 2. A property name=value pair that specifies the location of the security policy file 3. A property to specify where the stub code lives (no spaces from the "-D" all the way though the last "/") 4. The fully-qualified package name of the setup program.áŽ|…Pž‰PS t€€ä€€€€€‚‚€€‚‚€€€€€€€€‚ÿThere should be one space just after the word "java", one between the two properties, and a third one just before the word "examples" (which is very hard to see when you view this as text, in a browser, or on paper).% java -Djava.security.policy=/home/rmi_tutorial/activation/policy -Djava.rmi.server.codebase=file:/home/rmi_tutorial/activation/ examples.activation.Setup2The codebase property will be resolved to a URL, so it must have the form of "http://aHost/somesource/" or "file:/myDirectory/location/" or, due to the requirements of some operating systems, "file:///myDirectory/location/" (three slashes after the "file:").LÏ׆PŒP} ȀŸ€ä€‚€€€€ÌAEF("http://java.sun.com/products/jdk/rmi/class-server.zip",`',1)€-‰€‚ÿWhile a file: URL is sometimes easier to use for running example code, using the file: URL will mean that the only clients that will be able to access the server are those that can access the same files system as the server (either by virtue of running on the same machine as the server or by using a shared filesystem, such as NFS). If you wish to use an HTTP server, but don't have one available to you, please feel free to download our HTTP server. Æž‰PŽPD V€€ä€‚€€€€€(ç휗Y€€1‰€‚ÿPlease note that each of these sample URL strings has a trailing "/". The trailing slash is a requirement for the URL set by the java.rmi.server.codebase property, so the implementation can resolve (find) your class definition(s) properly. For more information on setting the java.rmi.server.codebase property from the command line, please take a look at our tutorial on dynamic code downloading using the java.rmi.server.codebase property.]ŒPwÀPA P€9€ä€‚€€€€çS9§€€‰€‚ÿIf you forget the trailing slash on the property, or if the class files can't be located at the source (they aren't really being made available for download) or if you misspell the property name, you'll get thrown a java.lang.ClassNotFoundException. This exception will be thrown when you try to bind your remote object to the rmiregistry, or when the first client attempts to access that object's stub. If the latter case occuŽPwÀPÁOrs, you have another problem as well because the rmiregistry was finding the stubs in its CLASSPATH.œFŽPÃPV z€€ä€‚‚‚€€‚€$‚€‚‚€€‚‚€€‚‚‚€€‚ÿThe server output should look like this: Got the stub for the MyRemoteInterfaceImpl Exported MyRemoteInterfaceImplStep 6:Run the clientThe argument to the client program is the hostname of the implementation server, in this case, "vector".% java -Djava.security.policy=/home/rmi_tutorial/activation/policy examples.activation.Client2 vectorThe client output should look like this: Got a remote reference to the newly-Activatable object Returned from remote call Result: Successful execution of callMeRemotely() in MyRemoteInterfaceImpl¢xwÀPµÃP* $€ð€€€‚€‚ÿ*As used on this web site, the terms "Java virtual machine" or "JVM" mean a virtual machine for the Java platform.*ÃPßÃP' €€ ”€ ‚ÿ&µÃPÄP# €€€‚ÿg‰ßÃPlÅPÞ#ЁÂ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€ ‰€€‚ÿ€ÿ(€†"€‚ÿÿÿCopyright © 1999 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com &ÄP’ÅP# €€€‚ÿ1lÅPÃÅP1Uÿÿÿÿÿÿÿÿ1ÿÿÿÿÃÅPçÅP$’ÅPçÅP" €€€ ÿzIÃÅPaÆP1—a€Ÿ˜€€2aÆPÔÆP-BRActivating an object that does not extend java.rmi.activation.ActivatablesMçÅPÔÆP& €š€€€‚ÿActivating an object that does not extend java.rmi.activation.ActivatableuNaÆPIÇP' €œ€€%€‚‚ÿActivating an object that does not extend java.rmi.activation.Activatable&ÔÆPoÇP# €€€‚ÿ*IÇP™ÇP' €€ ”€ ‚ÿTùoÇPíÊP[ „€ó€€‚€‚ç霗Y€‰€çꜗY€‰€‚‚€€€€€€€€‚ÿThis tutorial shows you the steps for enabling an existing class to become activatable. If you are interested in finding out about Creating an Activatable Object or Making a UnicastRemoteObject Activatable, these are also available as tutorials.Prior to the release of the Java 2 SDK, an instance of a class that did not extend from UnicastRemoteObject could be accessed from a server program that (1) created an instance of the remote object, and (2) ran all the time. This functionality was provided by creating a constructor which exported the object by calling the static method UnicastRemoteObject.exportObject. The exportObject method accepts as an argument an object that implements an interface that extends from java.rmi.Remote.~;™ÇPkÍPC T€w€€‚€€€€€€€€€€‚ÿNow with the introduction of the class java.rmi.activation.Activatable and the RMI daemon, rmid, programs can be written to register information about remote object implementations that should be created and execute "on demand," rather than running all the time. The RMI daemon, rmid, provides a Java virtual machine* (JVM) from which other JVM instances may be spawned. As in the UnicastRemoteObject.exportObject case, activatable objects may be exported using a static method, Activatable.exportObject, and these objects must implement a remote interface.&íÊP‘ÍP# €€€‚ÿ*kÍP»ÍP' €€ ”€ ‚ÿ{@‘ÍP6ÏP; D€€€‚€‚€€(€€(€‚‚‚‚ÿNote: For the remainder of this tutorial, the terms "activatable object implementation", "activatable object," and "implementation" may be used interchangeably to refer to the class, examples.activation.MyClass, which implements a remote interface and is activatable.This tutorial is organized as follows:9Ë»ÍP{Qn ª€—€ä€€ç“_ €‰€‚€€ç”_ €‰€‚€€ç•_ €‰€‚€€ç–_ €‰€‚‚ÿ· The steps to create a remote interface · The steps to modify the implementation6ÏP{QçÅP class · The steps to create the setup class · The steps to compile and run the example codeO+6ÏPÊQ$ €V€€‚‚ÿThe files needed for this tutorial are:é{Q³Qh ž€€ä€ç·˜Y€‰€‚€ç·˜Y€‰€€€‚€ç ·˜Y€‰€‚€ç!·˜Y€‰€‚‚ÿ· Client3.java, the class which will invoke a method on an activatable object· AnotherRemoteInterface.java, the interface that extends java.rmi.Remote, implemented by: · MyClass.java, the class which is being modified to be activatable · Setup3.java, the class which registers information about the activatable class with the RMI registry and the RMI daemonÿØÊQ²Q' €±€€‚‚‚‚ÿYou may notice that while the client code is included, it is not discussed in a step-by-step manner, like the implementation and setup classes. The reason for this omission, is that the client code for activatable objects is no different than the RMI client code for accessing non-activatable remote objects. Activation is strictly a server-side implementation decision.For all of the source code used in the activation tutorials, you may choose from these formats:¥K³QWQZ „€–€ä€€çò¶˜Y€‰€‚€€çó¶˜Y€‰€‚€€çô¶˜Y€‰€‚‚ÿ· activation.zip · activation.tar · activation.tar.Z&²Q}Q# €€€‚ÿ*WQ§Q' €€ ”€ ‚ÿY}QQA P€1€€‚€‚€$€‚‚€ç·˜Y€‰€‚‚ÿCreating the remote interfaceCreate an interface that describes each of the methods that you would like to call remotely. For this example, the remote interface will be examples.activation.AnotherRemoteInterface. There are three steps to create a remote interface.Ÿ§Q Qa €}€ä€‚€€‚‚‚€$‚€‚‚€€‚€$‚€‚‚€€‚€$‚€‚‚€€‚ÿ1. Make the appropriate imports in the interface2. Extend java.rmi.Remote 3. Declare each of the methods that may be called remotelyStep 1:Make the appropriate imports in your interfaceimport java.rmi.*;Step 2:Extend java.rmi.Remotepublic interface AnotherRemoteInterface extends Remote {Step 3:Declare each of the methods that may be called remotelypublic String calltheServer(String s) throws RemoteException;&QE Q# €€€‚ÿ* Qo Q' €€ ”€ ‚ÿJýE Q¹ QM h€û€€‚€‚€$€‚‚€ç ·˜Y€‰€€€€€‚‚ÿCreating the implementation classFor this example, the implementation class will be examples.activation.MyClass. There are three steps to migrate a class which does not extend Activatable or UnicastRemoteObject to become activatable:Xìo Q Ql Š€Ù€ä€ç²  €‰€‚ç³  €€‰€‚çŽ  €‰€‚‚€$‚€‚‚€€‚€$‚€8€‚ÿ1. Make the appropriate imports in the implementation class 2. Modify the class declaration so that the class now implements an interface that extends from java.rmi.Remote 3. Declare a two-argument constructor in the implementation classStep 1:Make the appropriate imports in the implementation classimport java.rmi.*;import java.rmi.activation.*;Step 2:Modify the class declaration so that the class implements an interface that extends from java.rmi.RemoteÜ•¹ QíQG \€+€ä€‚€€‚€$‚€‚‚€€‚ÿpublic class MyClass implements examples.activation.AnotherRemoteInterface{Step 3:Add a new two-argument constructor to the implementation classpublic MyClass(ActivationID id, MarshalledObject data) throws RemoteException { // Register the object with the activation system // then export it on an anonymous port // Activatable.exportObject(this, id, 0); } & QQ# €€€‚ÿ*íQ=Q' €€ ”€ ‚ÿ}/QÆAQN j€_€€‚€‚€$€‚‚ç!·˜Y€‰€€‚‚€€€€‚ÿCreating the "setup" classThe job of the "setup" class is to create all the information necessary for the act=QÆAQçÅPivatable class, without necessarily creating an instance of the remote object. For this example, the setup class will be examples.activation.Setup3.The setup class passes information about the activatable class to rmid, registers a remote reference (an instance of the activatable class's stub class) and an identifier (name) with the rmiregistry, and then the setup class may exit. There are seven steps to create a setup class:&=QìAQ# €€€‚ÿ,ÆAQDQ €ä€çÝ  €‰€‚çÞ  €€‰€‚çã  €€€‰€‚çß  €€€‰€‚çà  €€‰€‚çá  €€‰€‚çâ  €‰€‚‚€$‚€‚ÿ1. Make the appropriate imports 2. Install a SecurityManager 3. Create an ActivationGroup instance 4. Create an ActivationDesc instance 5. Remove the reference to the implementation class creation, and register with rmid 6. Bind the stub to a name in the rmiregistry 7. Quit the setup applicationStep 1:Make the appropriate imports in the setup class—&ìAQ¯FQq °€M€ä€‚€€‚€$‚€8€‚‚€€‚€$‚€8€$€‚‚€€ç·˜Y€‰€€€€€‚ÿimport java.rmi.*;import java.rmi.activation.*import java.util.Properties;Step 2:Install a SecurityManagerSystem.setSecurityManager(new RMISecurityManager());Step 3:Create an ActivationGroup instanceNote: In this example, for simplicity, we will use a policy file that gives global permission to anyone from anywhere. Do not use this policy file in a production environment. For more information on how to properly open up permissions using a java.security.policy file, please refer to to the following documents:'DQÖFQ$ €€ä€‚ÿ›^¯FQqGQ= J€Œ€ɀ瞫—Y€‰€‚‚ç·«—Y€‰€‚‚ÿDefault Policy Implementation and Policy File SyntaxPermissions in the Java 2 SDKœOÖFQ LQM h€Ÿ€ä€€€‚‚€€(€‚‚€€‚ÿIn the setup application, the job of the activation group descriptor is to provide all the information that rmid will require to contact the appropriate existing JVM or spawn a new JVM for the activatable object.Note: In order to run this code on your system, you'll need to change the policy file location to be the absolute path to where you've installed the example policy file that came with the source code.// Because of the Java 2 security model, a security policy should // be specified for the ActivationGroup VM. The first argument// to the Properties put method, inherited from Hashtable, is // the key and the second is the value // Properties props = new Properties(); props.put("java.security.policy", "/home/rmi_tutorial/activation/policy"); ActivationGroupDesc.CommandEnvironment ace = null; ActivationGroupDesc exampleGroup = new ActivationGroupDesc(props, ace);// Once the ActivationGroupDesc has been created, register it // with the activation system to obtain its ID//ActivationGroupID agi = ActivationGroup.getSystem().registerGroup(exampleGroup);ÍrqGQæ€Q[ „€å€ä€$‚€8€$€‚‚€€‚‚€€(€‚‚€€‚ÿStep 4:Create an ActivationDesc instanceIn the setup application, the job of the activation descriptor is to provide all the information that rmid will require to create a new instance of the implementation class.Note: In order to run this code on your system, you'll need to change the file URL location to be the location of the directory on your system, where you've installed the example source code.// The "location" URL specifies where the class definition // will come from when this object is requested (activated). // Don't forget the trailing slash at the end of the URL // or your classes won't be found // String location = "file:/home/rmi_tutorial/activation/"; // Create the rest of the parameters that will be passed to // the ActivationDesc constructor // MarshalledObject data = null; // The location argument to the ActivationDesc constructor will be used // to uniquely ide LQæ€QçÅPntify this class; it's location is relative to the // URL-formatted String, location.//ActivationDesc desc = new ActivationDesc (agi, "examples.activation.ActivatableImplementation", location, data);¹ LQõ‚QV z€s€ä€$‚€8€‚‚€€‚€$‚€8€$€8€‚‚€€‚€$‚ÿStep 5:Declare an instance of your remote interface and register the activation descriptor with rmidAnotherRemoteInterface ari = (AnotherRemoteInterface)Activatable.register(desc); System.out.println("Got the stub for MyClass"); Step 6:Bind the stub, that was returned by the Activatable.register method, to a name in the rmiregistryNaming.rebind("MyClass", ari);System.out.println("Exported MyClass");Step 7:b2æ€QWƒQ0 0€d€ä€$€‚‚€€‚ÿQuit the setup applicationSystem.exit(0);&õ‚Q}ƒQ# €€€‚ÿ*WƒQ§ƒQ' €€ ”€ ‚ÿ„S}ƒQ+„Q1 2€Š€€‚€‚€$€‚‚‚‚ÿCompile and run the codeThere are six steps to compile and run the code:aΧƒQŒ†Q“ ô€€ä€ç €‰€‚ç  €€€‰€‚ç  €€‰€‚ç  €€‰€‚ç  €‰€‚ç  €‰€‚‚€$‚€‚‚€€‚ÿ1. Compile the remote interface, implementation, client and setup classes 2. Run rmic on the implementation class 3. Start the rmiregistry 4. Start the activation daemon, rmid 5. Run the setup program 6. Run the clientStep 1:Compile the remote interface, implementation, client and setup classes% javac -d . AnotherRemoteInterface.java % javac -d . MyClass.java % javac -d . Client3.java % javac -d . Setup3.java 6Ú+„QˆQ\ †€µ€ä€$‚€8€$€‚‚€€‚€$‚€8€‚‚€€‚€€(€€(€‚ÿStep 2:Run rmic on the implementation class% rmic -d . examples.activation.MyClassStep 3:Start the rmiregistry% rmiregistry &Note: Before you start the rmiregistry, you must make sure that the shell or window in which you will run the registry, either has no CLASSPATH set or has a CLASSPATH that does not include the path to any classes that you want downloaded to your client, including the stubs for your remote object implementation classes.§Œ†QɊQ` Ž€O€ä€‚€(€€(€€(€€(€‚‚€$‚€8€‚‚€€‚€€€€‚ÿIf you start the rmiregistry, and it can find your stub classes in its CLASSPATH, it will ignore the server's java.rmi.server.codebase property, and as a result, your client(s) will not be able to download the stub code for your remote object.Step 4:Start the activation daemon, rmid% rmid -J-Djava.security.policy=rmid.policy &Where rmid.policy is the name of the security policy file for rmid.ž=ˆQgQa €{€ä€‚€€€€€€ç°˜Y€€‰€çóµ˜Y€€‰€‚‚€$‚€‚‚‚ÿNote: By default, rmid now requires a security policy file, that is used to verify whether or not the information in each ActivationGroupDescriptor is allowed to be used to launch a JVM for an activation group. For complete details, please refer to the rmid man page for the Solaris operating environment and the rmid man page for the Microsoft Windows platform.Step 5:Run the setup programRun the setup, setting the codebase property to be the location of the implementation stubs. There are four things that need to go on the same command line:*ɊQ‘Q% € €ä€‚‚ÿ [gQìŽQ< F€?€ɀ€€€‚€(€€(€‚‚‚‚ÿ1. The "java" command 2. A property name=value pair that specifies the location of the security policy file 3. A property to specify where the stub code lives (no spaces from the "-D" all the way though the last "/") 4. The fully-qualified package name of the setup program.᎑QÙÁQS t€€ä€€€€€‚‚€€‚‚€€€€€€€€‚ÿThere should be one space just after the word "java", one between the two properties, and a third one just before the word "examples" (which is very hard to see when you view this as text,ìŽQÙÁQçÅP in a browser, or on paper).% java -Djava.security.policy=/home/rmi_tutorial/activation/policy -Djava.rmi.server.codebase=file:/home/rmi_tutorial/activation/ examples.activation.Setup3The codebase property will be resolved to a URL, so it must have the form of "http://aHost/somesource/" or "file:/myDirectory/location/" or, due to the requirements of some operating systems, "file:///myDirectory/location/" (three slashes after the "file:").LÏìŽQ%ÄQ} ȀŸ€ä€‚€€€€ÌAEF("http://java.sun.com/products/jdk/rmi/class-server.zip",`',1)€-‰€‚ÿWhile a file: URL is sometimes easier to use for running example code, using the file: URL will mean that the only clients that will be able to access the server are those that can access the same files system as the server (either by virtue of running on the same machine as the server or by using a shared filesystem, such as NFS). If you wish to use an HTTP server, but don't have one available to you, please feel free to download our HTTP server. ÆÙÁQ/ÆQD V€€ä€‚€€€€€(ç휗Y€€1‰€‚ÿPlease note that each of these sample URL strings has a trailing "/". The trailing slash is a requirement for the URL set by the java.rmi.server.codebase property, so the implementation can resolve (find) your class definition(s) properly. For more information on setting the java.rmi.server.codebase property from the command line, please take a look at our tutorial on dynamic code downloading using the java.rmi.server.codebase property.a%ÄQÈQD V€;€ä€‚€€€€€çížÐŠ€€‰€‚ÿIf you forget the trailing slash on the property, or if the class files can't be located at the source (they aren't really being made available for download) or if you misspell the property name, you'll get thrown a java.lang.ClassNotFoundException. This exception will be thrown when you try to bind your remote object to the rmiregistry, or when the first client attempts to access that object's stub. If the latter case occurs, you have another problem as well because the rmiregistry was finding the stubs in its CLASSPATH.\/ÆQìÊQV z€ €ä€‚‚‚€€‚€$‚€‚‚€€‚‚€€‚‚‚€€‚ÿThe server output should look like this: Got the stub for MyClass Exported MyClass Step 6:Run the clientThe argument to the client program is the hostname of the implementation server, in this case, "vector".% java -Djava.security.policy=/home/rmi_tutorial/activation/policy examples.activation.Client3 vectorThe client output should look like this: Got a remote reference to the class MyClass Called the remote method Result: Watson are you there? I'm here!'ÈQËQ$ €€ä€‚ÿ+ìÊQ>ËQ( €€0䔀 ‚ÿ!çËQ_ÍQ: B€Ï€ä€‚€‚€ €‚‚€€‚‚‚ÿAn Alternate ApproachAn alternative approach to what we just went through is to create an "adapter" class that implements the remote interface, gets registered with rmid and the registry by the setup program, and which then creates the object instance and forwards the remote method to that instance. The benefit to this approach is that you don't have to make a change to the original non-remote class.So, let's assume that the original, non-remote class, looks like this:Ï>ËQmÏQ? L€Ÿ€ä€‚€€‚€€‚ÿ package examples.activation; public class MyNonRemoteClass { private String result = null; // Here's the original class, which concatenates two strings // public String calltheServer(String takeThis) { result = takeThis + "I'm here!"; return result; } } We write the same interface, examples.activation.AnotherRemoteInterface, to describe the methods we'd like to call remotely:«_ÍQR] ˆ€W€ä€‚€€‚€€€çM·˜Y€‰€€€€€€€€‚ÿ package examples.activation; import java.rmi.*mÏQRçÅP; public interface AnotherRemoteInterface extends Remote { public String calltheServer(String s) throws RemoteException; } But rather than editing MyNonRemoteClass.java, which we may not always have the source code to do anyway, we'll create a new class examples.activation.MyNonRemoteClassAdapter , which (like an event adapter) implements the specified interface, and then takes appropriate action. What's new in MyNonRemoteClassAdapter from what we did earlier, is that it creates an instance of MyNonRemoteClass in it's constructor and it calls the MyNonRemoteClass.calltheServer method.¶dmÏQ7RR r€É €ä€‚€€‚ÿ package examples.activation; import java.rmi.*; import java.rmi.activation.*; public class MyNonRemoteClassAdapter implements examples.activation.AnotherRemoteInterface { private String result = null; private MyNonRemoteClass mnrc; // The constructor for activation and export; this // constructor is called by the method // ActivationInstantiator.newInstance during // activation, to construct the object. // public MyNonRemoteClassAdapter(ActivationID id, MarshalledObject data) throws RemoteException { // Register the object with the activation system // then export it on an anonymous port // Activatable.exportObject(this, id, 0); // Create an instance of the class MyNonRemoteClass // mnrc = new MyNonRemoteClass(); } // Define the method declared in AnotherRemoteInterface // to accept a String, modify it, and return it to // the client // public String calltheServer(String takeThis) throws RemoteException { // Rather than modify the String here, forward // it on to the non-remote object implementation // result = mnrc.calltheServer(takeThis); return result; } } PèR‡Rh ž€Ñ €ä€€€€çD·˜Y€‰€‚‚€€‚ÿNow the class we'll run rmic on and the class referenced by the setup program will be the adapter class. The setup program examples.activation.Setup3alt looks like this now: package examples.activation; import java.rmi.*; import java.rmi.activation.*; import java.util.Properties; public class Setup3alt { // This class registers information about the MyClass // class with rmid and the rmiregistry // public static void main(String[] args) throws Exception { System.setSecurityManager(new RMISecurityManager()); AnotherRemoteInterface ari; // Don't forget the trailing slash at the end of the URL // or your classes won't be found // String location = "file:/home/rmi_tutorial/activation/"; // Create the rest of the parameters that will be passed to // the ActivationDesc constructor // MarshalledObject data = null; // The second argument to the ActivationDesc constructor // will be used to uniquely identify this class; it's // location is relative to theURL-formatted String, location. // ActivationDesc desc = new ActivationDesc ("examples.activation.MyNonRemoteClassAdapter", location, data); ari = (AnotherRemoteInterface)Activatable.register(desc); System.out.println("Got the stub for MyNonRemoteClassAdapter"); // Bind the stub to a name in the registry running on 1099 // Naming.rebind("MyNonRemoteClassAdapter", ari); System.out.println("Exported MyNonRemoteClassAdapter"); System.exit(0); } }£x7R6@R+ &€ð€ä€€‚€‚ÿ*As used on this web site, the terms "Java virtual machine" or "JVM" mean a v‡R6@RçÅPirtual machine for the Java platform.+‡Ra@R( €€0䔀 ‚ÿ'6@Rˆ@R$ €€ä€‚ÿ~Œa@RBRò#²2©©€€€‚ÿ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€ ‰€€‚ÿ€ ÿ(€†"€‚ÿÿÿCopyright © 1999 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com 'ˆ@R-BR$ €€ä€‚ÿ1BR^BR1Uÿÿÿÿÿÿÿÿ3ÿÿÿÿ^BR‚BR$-BR‚BR" €€€ ÿc2^BRåBR1`Sƒ¡1 §4åBRACRjSUsing a MarshalledObject to create persistent data\6‚BRACR& €l€€€‚ÿUsing a MarshalledObject to create persistent data^7åBRŸCR' €n€€%€‚‚ÿUsing a MarshalledObject to create persistent data&ACRÅCR# €€€‚ÿ*ŸCRïCR' €€ ”€ ‚ÿæŒÅCRÕDR* "€y€€‚€‚‚‚ÿThis tutorial should not be the first activation tutorial that you read. This tutorial assumes that you have already read one or more of the three introductory activation tutorials: ®ïCRÞER[ „€]€ä€€ç霗Y€‰€‚€€çꜗY€‰€‚€€ç뜗Y€‰€‚‚ÿ· Creating an Activatable Object · Making a UnicastRemoteObject Activatable · Activating an object that does not extend java.rmi.activation.ActivatableדÕDRµHRD V€'€€€€€€‚‚€€€€€€‚ÿIn the case of a UnicastRemoteObject, it is easy to pass command-line arguments to the implementation class, because the server program that received those arguments is always running during the lifetime of the remote object implementation. For activatable objects, however, the setup class may exit immediately after registering the activation descriptor with the RMI daemon and registering the stub with the rmiregistry.The MarshalledObject class provides a flexible mechanism for passing persistence or initialization data through the ActivationDesc, registered with rmid, rather than hard-coding values into the implementation's class file.,ÞERáHR' € €€‚€‚ÿ*µHR IR' €€ ”€ ‚ÿ¹xáHRÄJRA P€ñ€€‚€‚€€(€€(€‚‚€€‚‚ÿNote: For the remainder of this tutorial, the terms "activatable object implementation", "activatable object," and "implementation" may be used interchangeably to refer to the class, examples.activation.MyPersistentClass, which implements a remote interface and is activatable.In this tutorial the setup class, examples.activation.Setup4, does two new things:þ€ IRÂLRZ ‚€I€ä€€€€€€€€€€‚€€€€€€€€‚‚ÿ· It constructs a java.util.Properties object to pass the location of the java.security.properties file to the constructor of an ActivationGroupDescriptor, which in turn, gets passed to the constructor of the ActivationDesc. · It uses the MarshalledObject, that it passes to the ActivationDesc constructor, to store a java.io.File object that represents the location of the persistent data storage.æ®ÄJRšOR8 >€]€€€€‚‚€€€€‚ÿIn this example, if the persistentObjectStore.ser file exists, the activatable object implementation is initialized with the persistent data from the file. Otherwise, if the file does not exist, the activatable object initializes itself as though this is the first time a client has tried to send data.The client program, examples.activation.Client4, passes a vector of transaction-like data to the activatable object, and that data is added to the implementation object's vector. Each time a client calls the implementation (to add more transaction data), the activatable implementation stores its state (writes the vector) out to the file specified by the MarshalledObject.P+ÂLR €R% €V€€‚‚‚ÿThis tutorial is organized as follows:šOR €R‚BR9ËšORERn ª€—€ä€€çÌf €‰€‚€€çÍf €‰€‚€€çÎf €‰€‚€€çÏf €‰€‚‚ÿ· The steps to create a remote interface · The steps to create the implementation class · The steps to create the setup class · The steps to compile and run the example codeO+ €R”R$ €V€€‚‚ÿThe files needed for this tutorial are:àxERtƒRh ž€ñ€ä€çE·˜Y€‰€‚€çF·˜Y€‰€€€‚€çG·˜Y€‰€‚€çH·˜Y€‰€‚‚ÿ· Client4.java, the class which will invoke a method on an activatable object· YetAnotherRemoteInterface.java, the interface that extends java.rmi.Remote, implemented by: ·MyPersistentClass.java, the class which is activatable · Setup4.java, the class which registers information about the activatable class with the RMI registry and the RMI daemonþ×”Rr…R' €¯€€‚‚‚‚ÿYou may notice that while the client code is included, it is not discussed in a step-by-step manner, like the implementation and setup classes. The reason for this omission, is that the client code for activatable objects is no different than the RMI client code for accessing non-activatable remote objects. Activation is strictly a server-side implementation decision.For all of the source code used in the activation tutorials, you may choose from these formats:¥KtƒR†RZ „€–€ä€€çò¶˜Y€‰€‚€€çó¶˜Y€‰€‚€€çô¶˜Y€‰€‚‚ÿ· activation.zip · activation.tar · activation.tar.Z&r…R=†R# €€€‚ÿ*†Rg†R' €€ ”€ ‚ÿ\=†RÇRA P€7€€‚€‚€$€‚‚€çF·˜Y€‰€‚‚ÿCreating the remote interfaceCreate an interface that describes each of the methods that you would like to call remotely. For this example, the remote interface will be examples.activation.YetAnotherRemoteInterface. There are three steps to create a remote interface:=Ûg†RŠRb ’€·€ä€‚€€‚‚‚€$‚€‚‚€€‚€$‚€‚‚€€‚€$‚€‚‚€€‚ÿ1. Make the appropriate imports in the interface 2. Extend java.rmi.Remote 3. Declare each of the methods that may be called remotelyStep 1:Make the appropriate imports in your interfaceimport java.rmi.*;import java.util.Vector;Step 2:Extend java.rmi.Remotepublic interface YetAnotherRemoteInterface extends Remote {Step 3:Declare each of the methods that may be called remotelypublic Vector calltheServer(Vector v) throws RemoteException;&ÇR&ŠR# €€€‚ÿ*ŠRPŠR' €€ ”€ ‚ÿ5î&ŠR…‹RG \€Ý€€‚€‚€$€‚‚€çG·˜Y€‰€€€‚‚ÿCreating the implementation classFor this example, the implementation class will be examples.activation.MyPersistentClass. There are five steps to create an activatable implementation class that uses a MarshalledObject:¥PŠR¡Rw Œ€K€ä€çED €‰€‚çFD €€‰€‚çGD €‰€‚çHD €€€‰€‚çID €‰€‚‚€$‚€‚ÿ1. Make the appropriate imports in the implementation class 2. Extend your class from java.rmi.activation.Activatable 3. Declare a two-argument constructor in the implementation class 4. Write the methods that use the MarshalledObject, to save and restore the object's data state 5. Implement the remote interface method(s)Step 1:Make the appropriate imports in the implementation class}…‹R*ÁRa €9€ä€‚€€‚€$‚€8€‚‚€€‚€$‚€‚‚€€€€€€‚ÿimport java.io.*; import java.rmi.*; import java.rmi.activation.*; import java.util.Vector; Step 2:Extend your class from java.rmi.activation.Activatablepublic class MyPersistentClass extends Activatable implements examples.activation.YetAnotherRemoteInterface {Step 3:Declare a two-argument constructor in the implementation classIn the constructor, in addition to the normal call to the superclass's constructor, in this example the MarshalledObject is used to specify the file ¡R*ÁR‚BRname of the persistent data store. If the file exists, it's used to initialize this object's variable, a Vector named "transactions". If the file object doesn't exist, then the vector is manually initialized. If there is any error reading the file, then object construction fails.Ô¡R?ÄRA P€©€ä€‚€€‚ÿprivate Vector transactions; private File holder; public MyPersistentClass(ActivationID id, MarshalledObject data) throws RemoteException, ClassNotFoundException, java.io.IOException { // Register the object with the activation system // then export it on an anonymous port super(id, 0); // Extract the File object from the MarshalledObject that was // passed to the constructor // holder = (File)data.get(); if (holder.exists()) { // Use the MarshalledObject to restore my state // this.restoreState(); } else { transactions = new Vector(1,1); transactions.addElement("Initializing transaction vector"); } } Às*ÁRÿÇRM h€ç€ä€$‚€8€$€‚‚€€‚ÿStep 4:Write the methods that use the MarshalledObject, to save and restore the object's data state// If the MarshalledObject that was passed to the constructor was // a file, then use it to recover the vector of transaction data // private void restoreState() throws IOException, ClassNotFoundException { File f = holder; FileInputStream fis = new FileInputStream(f); ObjectInputStream ois = new ObjectInputStream(fis); transactions = (Vector)ois.readObject(); ois.close(); } private void saveState() { try { File f = holder; FileOutputStream fos = new FileOutputStream(f); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(getTransactions()); oos.close(); } catch (Exception e) { throw new RuntimeException("Error saving vector of data"); } } -î?ÄR,ÊR? L€Ý€ä€$‚€‚‚‚‚€€‚ÿStep 5:Implement the remote interface method(s)Add each of the vector elements passed from the client to the object instance and save the updated vector out to a file.public Vector calltheServer(Vector v) throws RemoteException { int limit = v.size(); for (int i = 0; i < limit; i++) { transactions.addElement(v.elementAt(i)); } // Save this object's data out to file // this.saveState(); return transactions; }&ÿÇRRÊR# €€€‚ÿ*,ÊR|ÊR' €€ ”€ ‚ÿ}/RÊRùÌRN j€_€€‚€‚€$€‚‚€çH·˜Y€‰€‚‚€€€€‚ÿCreating the "setup" classThe job of the "setup" class is to create all the information necessary for the activatable class, without necessarily creating an instance of the remote object. For this example, the setup class will be examples.activation.Setup4.The setup class passes information about the activatable class to rmid, registers a remote reference (an instance of the activatable class's stub class) and an identifier (name) with the rmiregistry, and then the setup class may exit. There are seven steps to create a setup class:&|ÊRÍR# €€€‚ÿ,ùÌRKÏR €ä€çpD €‰€‚çqD €€‰€‚çvD €€€‰€‚çrD €€€‰€‚çsD €€‰€‚çtD €€‰€‚çuD €‰€‚‚€$‚€‚ÿ1. Make the appropriate imports 2. Install a SecurityManager 3. Create an ActivationGroup instance 4. Create an ActivationDesc instance 5. Remove the reference to the implementation class creation, and register with rmid 6. Bind the stub to a name in the rmiregistry 7. Quit the setup applicationStep 1:Make the appropriate imports in the setup class²@ÍR Sr ²€€ä€‚€€‚€$‚€8€‚‚€€‚€$‚€8€$€‚‚€€ç·˜Y€‰€€€€€‚ÿimport java.io.File; import java.rmi.*; import java.rmi.activaKÏR S‚BRtion.*; import java.util.Properties; Step 2:Install a SecurityManagerSystem.setSecurityManager(new RMISecurityManager());Step 3:Create an ActivationGroup instanceNote: In this example, for simplicity, we will use a policy file that gives global permission to anyone from anywhere. Do not use this policy file in a production environment. For more information on how to properly open up permissions using a java.security.policy file, please refer to to the following documents:'KÏR0S$ €€ä€‚ÿ›^ SËS= J€Œ€ɀ瞫—Y€‰€‚‚ç·«—Y€‰€‚‚ÿDefault Policy Implementation and Policy File SyntaxPermissions in the Java 2 SDKŽg0SSM h€Ï€ä€€€‚‚€€(€‚‚€€‚ÿIn the setup application, the job of the activation group descriptor is to provide all the information that rmid will require to contact the appropriate existing Java virtual machine* (JVM) or spawn a new JVM for the activatable object.Note: In order to run this code on your system, you'll need to change the policy file location to be the absolute path to where you've installed the example policy file that came with the source code.// Because of the Java 2 security model, a security policy should // be specified for the ActivationGroup VM. The first argument// to the Properties put method, inherited from Hashtable, is // the key and the second is the value // Properties props = new Properties(); props.put("java.security.policy", "/home/rmi_tutorial/activation/policy"); ActivationGroupDesc.CommandEnvironment ace = null; ActivationGroupDesc exampleGroup = new ActivationGroupDesc(props, ace);// Once the ActivationGroupDesc has been created, register it // with the activation system to obtain its ID//ActivationGroupID agi = ActivationGroup.getSystem().registerGroup(exampleGroup);”;ËS SY €€w€ä€$‚€8€$€‚‚€€‚‚€€(€‚‚€€‚ÿStep 4:Create an ActivationDesc instanceIn the setup application, the job of the activation descriptor is to provide all the information that rmid will require to create a new instance of the implementation class.Note: In order to run this code on your system, you'll need to change the file URL location to be the location of the directory on your system, where you've installed the example source code.// Don't forget the trailing slash at the end of the URL// or your classes won't be found// String location = "file:/home/rmi_tutorial/activation/";// Pass the file that we want to persist to as the Marshalled// objectMarshalledObject data = new MarshalledObject (new File( "/home/rmi_tutorial/activation/persistentObjectStore.ser"));// The location argument to the ActivationDesc constructor will be used // to uniquely identify this class; it's location is relative to the // URL-formatted String, location.//ActivationDesc desc = new ActivationDesc (agi, "examples.activation.ActivatableImplementation", location, data);'ÕS:SR r€«€ä€$‚€8€‚‚€€‚€$‚€8€$€8€‚‚€€‚ÿStep 5:Declare an instance of your remote interface and register the activation descriptor with rmidYetAnotherRemoteInterface yari = (YetAnotherRemoteInterface)Activatable.register(desc);System.out.println("Got the stub for MyPersistentClass");Step 6:Bind the stub, that was returned by the Activatable.register method, to a name in the rmiregistryNaming.rebind("MyPersistentClass", yari);System.out.println("Exported MyPersistentClass");k: S¥S1 2€t€ä€$‚€‚‚€€‚ÿStep 7:Quit the setup applicationSystem.exit(0);&:SËS# €€€‚ÿ*¥SõS' €€ ”€ ‚ÿ„SËSyS1 2€Š€€‚€‚€$€‚‚‚‚ÿCompile and run the codeThere are six steps to compile and run the code:nÛõSóAS“ ô€·€ä€ç›D €‰€‚çœD €€€‰€‚çD €€‰€‚çžD €€‰€‚çŸD €‰€‚ç D €‰€‚‚€$‚€‚‚ySóAS‚BR€€‚ÿ1. Compile the remote interface, implementation, client and setup classes 2. Run rmic on the implementation class 3. Start the rmiregistry 4. Start the activation daemon, rmid 5. Run the setup program 6. Run the clientStep 1:Compile the remote interface, implementation, client and setup classes% javac -d . YetAnotherRemoteInterface.java % javac -d . MyPersistentClass.java % javac -d . Client4.java % javac -d . Setup4.java @äyS3DS\ †€É€ä€$‚€8€$€‚‚€€‚€$‚€8€‚‚€€‚‚€€(€€(€‚ÿStep 2:Run rmic on the implementation class% rmic -d . examples.activation.MyPersistentClassStep 3:Start the rmiregistry% rmiregistry &Note: Before you start the rmiregistry, you must make sure that the shell or window in which you will run the registry, either has no CLASSPATH set or has a CLASSPATH that does not include the path to any classes that you want downloaded to your client, including the stubs for your remote object implementation classes.§óAS:FS` Ž€O€ä€‚€(€€(€€(€€(€‚‚€$‚€8€‚‚€€‚€€€€‚ÿIf you start the rmiregistry, and it can find your stub classes in its CLASSPATH, it will ignore the server's java.rmi.server.codebase property, and as a result, your client(s) will not be able to download the stub code for your remote object.Step 4:Start the activation daemon, rmid% rmid -J-Djava.security.policy=rmid.policy &Where rmid.policy is the name of the security policy file for rmid.ž=3DSØHSa €{€ä€‚€€€€€€ç°˜Y€€‰€çóµ˜Y€€‰€‚‚€$‚€‚‚‚ÿNote: By default, rmid now requires a security policy file, that is used to verify whether or not the information in each ActivationGroupDescriptor is allowed to be used to launch a JVM for an activation group. For complete details, please refer to the rmid man page for the Solaris operating environment and the rmid man page for the Microsoft Windows platform.Step 5:Run the setup programRun the setup, setting the codebase property to be the location of the implementation stubs. There are four things that need to go on the same command line:':FSÿHS$ €€ä€‚ÿ[ØHSZJS< F€?€ɀ€€€‚€(€€(€‚‚‚‚ÿ1. The "java" command 2. A property name=value pair that specifies the location of the security policy file 3. A property to specify where the stub code lives (no spaces from the "-D" all the way though the last "/") 4. The fully-qualified package name of the setup program.áŽÿHS;MSS t€€ä€€€€€‚‚€€‚‚€€€€€€€€‚ÿThere should be one space just after the word "java", one between the two properties, and a third one just before the word "examples" (which is very hard to see when you view this as text, in a browser, or on paper).% java -Djava.security.policy=/home/rmi_tutorial/activation/policy -Djava.rmi.server.codebase=file:/home/rmi_tutorial/activation/ examples.activation.Setup4The codebase property will be resolved to a URL, so it must have the form of "http://aHost/somesource/" or "file:/myDirectory/location/" or, due to the requirements of some operating systems, "file:///myDirectory/location/" (three slashes after the "file:").LÏZJS‡OS} ȀŸ€ä€‚€€€€ÌAEF("http://java.sun.com/products/jdk/rmi/class-server.zip",`',1)€-‰€‚ÿWhile a file: URL is sometimes easier to use for running example code, using the file: URL will mean that the only clients that will be able to access the server are those that can access the same files system as the server (either by virtue of running on the same machine as the server or by using a shared filesystem, such as NFS). If you wish to use an HTTP server, but don't have one available to you, please feel free to download our HTTP server. Æ;MSSD V€€ä€‚€€€€€(ç휗Y€€1‰€‚ÿPlease note that each of these sample URL strings h‡OSS‚BRas a trailing "/". The trailing slash is a requirement for the URL set by the java.rmi.server.codebase property, so the implementation can resolve (find) your class definition(s) properly. For more information on setting the java.rmi.server.codebase property from the command line, please take a look at our tutorial on dynamic code downloading using the java.rmi.server.codebase property.]‡OSúƒSA P€9€ä€‚€€€€çÈêgŠ€1€‰€‚ÿIf you forget the trailing slash on the property, or if the class files can't be located at the source (they aren't really being made available for download) or if you misspell the property name, you'll get thrown a java.lang.ClassNotFoundException. This exception will be thrown when you try to bind your remote object to the rmiregistry, or when the first client attempts to access that object's stub. If the latter case occurs, you have another problem as well because the rmiregistry was finding the stubs in its CLASSPATH. ϝS†SQ p€Ÿ€ä€‚‚‚€€‚€$‚€‚‚€€‚‚€€‚€(€‚ÿThe server output should look like this: Got the stub for MyPersistentClass Exported MyPersistentClassStep 6:Run the clientThe argument to the client program is the hostname of the implementation server, in this case, "vector".% java -Djava.security.policy=/home/rmi_tutorial/activation/policy examples.activation.Client4 vectorThe first time that the client is run against this implementation, the output should look like this:ÜúƒS2ˆS< F€¹€ä€‚€€‚‚€(€‚ÿ Got a remote reference to the class MyPersistentClass Called the remote method Result: Initializing transaction vector Deposited money Withdrew money Transferred money from Savings Check cleared Point-of-sale charge at grocery store The second time that the client is run against this implementation, the output will include five additional "transactions", so it should look like this:߆SKŠS: B€¿€ä€‚€€‚ÿ Got a remote reference to the class MyPersistentClass Called the remote method Result: Initializing transaction vector Deposited money Withdrew money Transferred money from Savings Check cleared Point-of-sale charge at grocery store Deposited money Withdrew money Transferred money from Savings Check cleared Point-of-sale charge at grocery store (ó2ˆSs‹S5 8€ç€ä€€€€€‚€‚ÿAdditionally, you should see the size of the persistentObjectStore.ser file increase, with each subsequent client call. *As used on this web site, the terms "Java virtual machine" or "JVM" mean a virtual machine for the Java platform.+KŠSž‹S( €€0䔀 ‚ÿ's‹SŋS$ €€ä€‚ÿ~Œž‹SCSò#²2©©€€€‚ÿ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€ ‰€€‚ÿ€ ÿ(€†"€‚ÿÿÿCopyright © 1999 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com 'ŋSjS$ €€ä€‚ÿ1CS›S1Uÿÿÿÿÿÿÿÿ5ÿÿÿÿ›S¿S$jS¿S" €€€ ÿS"›SŽS1;T˜€€®…©6ŽS^ŽSFÍTDynamic code downloading using RMIL&¿S^ŽS& €L€€€‚ÿDynamic code downloading using RMI}UŽSێS( €ª€€%‚€‚‚ÿDynamic code downloading using RMI(Using the java.rmi.server.codebase Property)&^ŽSS# €€€‚ÿ*ێS+S' €€ ”€ ‚ÿV-SS) "€Z€€‚€‚‚‚ÿThis tutorial is organized as follows:ãb+SpÀS#ҀÄ2ê(€€€‚ÿ€€ÿ2€€çTQ†a€‰€‚ÿ4€8€çWQ†a€‰€‚ÿSpÀS¿Sÿÿ1.0 Starting out4.0 Using codebase in RMI for more than just stub downloadingØGSHÁS‘#ò€Ž2ê(€€ÿ€€€‚ÿ€€ÿ4€ €çUQ†a€‰€‚ÿ4€J€çXQ†a€‰€‚ÿÿÿ2.0 What is a codebase?5.0 Command-line examplesÕDpÀSÂS‘#ò€ˆ2ê(€€ÿ€€€‚ÿ€€ÿ4€ €çVQ†a€‰€‚ÿ4€F€çYQ†a€‰€‚ÿÿÿ3.0 How does it work?6.0 Troubleshooting tips'HÁSDÂS$ €€ä€‚ÿ&ÂSjÂS# €€€‚ÿ*DÂS”ÂS' €€ ”€ ‚ÿ|KjÂSÅS1 0€—€€‚€‚€ €‚‚‚ÿ1.0 Starting outOne of the most significant capabilities of the Java platform is the ability to dynamically download Java software from any Uniform Resource Locator (URL) to a Java virtual machine* (JVM) running in a separate process, usually on a different physical system. The result is that a remote system can run a program, for example an applet, which has never been installed on its disk. For the first few sections of this document, codebase with regard to applets will be discussed in order to help describe codebase with regard to Java Remote Method Invocation (RMI).í”ÂS(ÇS+ $€Û€€‚€€‚ÿFor example, a JVM running from within a web browser can download the bytecodes for subclasses of java.applet.Applet and any other classes needed by that applet. The system on which the browser is running has most likely never run this applet before, nor installed it on its disk. Once all the necessary classes have been downloaded from the server, the browser can start the execution of the applet program using the local resources of the system on which the client browser is running.›VÅSÃËSE X€­€€‚‚‚€€€€€€€€€€‚ÿJava RMI takes advantage of this capability to download and execute classes and on systems where those classes have never been installed on disk. Using the RMI API any JVM, not only those in browsers, can download any Java class file including specialized RMI stub classes, which enable the execution of method calls on a remote server using the server system's resources.The notion of a codebase originates from the use of ClassLoaders in the Java programming language. When a Java program uses a ClassLoader, that class loader needs to know the location(s) from which it should be allowed to load classes. Usually, a class loader is used in conjunction with an HTTP server that is serving up compiled classes for the Java platform. Most likely, the first ClassLoader/codebase pairing that you came into contact with was the AppletClassLoader, and the "codebase" part of the HTML tag, so this tutorial will assume that you have some experience with Java RMI programming, as well as writing HTML files that contain applet tags. For example, the HTML source will contain something like:c,(ÇS&ÎS7 <€Y€€‚€€‚€ €‚‚‚ÿ 2.0 What is a codebase?A codebase can be defined as a source, or a place, from which to load classes into a Java virtual machine. For example, if you invited a new friend over for dinner, you would need to give that friend directions to the place where you lived, so that he or she could locate your house. Similarly, you can think of a codebase as the directions that you give to a JVM, so it can find your [potentially remote] classes.,ïÃËS^T= H€ß€€‚€€€€€€€€‚ÿYou can think of your CLASSPATH as a "local codebase", because it is the list of places on disk from which you load local classes. When loading classes from a local disk-based source, your CLASSPATH variable is consulted. Your CLASSPATH can be set to take either relative or absolute path names to directories and/or archives of class files. So just as CLASSPATH is a kind of "local codebase", the codeb&ÎS^T¿Sase used by applets and remote objects can be thought of as a "remote codebase".x6&ÎSÖTB R€m€€‚€ €‚‚€€‚‚€€€€‚‚ÿ3.0 How does it work?3.1 How codebase is used in appletsTo interact with an applet, that applet and any classes that it needs to run must be accessible by remote clients. While applets can be accessed from "ftp://" or local "file:///" URLs, they are usually accessed from a remote HTTP server.8 ^TT. *€€ä€€€‚‚‚‚ÿ1. The client browser requests an applet class that is not found in the client's CLASSPATH2. The class definition of the applet (and any other class(es) that it needs) is downloaded from the server to the client using HTTP3. The applet executes on the client2ÖT@T- *€ €€†"€‚‚ÿ]!TT< F€C€€‚‚€€‚‚€€‚‚€€‚ÿFigure 1: Downloading appletsThe applet's codebase is always relative to the URL of the HTML page in which the tag is contained.3.2 How codebase is used in RMIUsing RMI, applications can create remote objects that accept method calls from clients in other JVMs. In order for a client to call methods on a remote object, the client must have a way to communicate with the remote object. Rather than having to program the client to speak the remote object's protocol, RMI uses special classes called stubs that can be downloaded to the client that are used to communicate with (make method calls on) the remote object. The java.rmi.server.codebase property value represents one or more URL locations from which these stubs (and any classes needed by the stubs) can be downloaded.Þ@T®T3 4€œ€€‚€€€€‚‚‚ÿLike applets, the classes needed to execute remote method calls can be downloaded from "file:///" URLs, but like applets, a "file:///" URL generally requires that the client and the server reside on the same physical host, unless the file system referred to by the URL is made available using some other protocol, such as NFS.Generally, the classes needed to execute remote method calls should be made accessible from a network resource, such as an HTTP or FTP server.&TÔT# €€€‚ÿ2®T T- *€ €€†"€‚‚ÿG#ÔTM T$ €F€€‚‚ÿFigure 2: Downloading RMI stubs&ù Ts T- (€ó€ä€€€‚‚‚ÿ1. The remote object's codebase is specified by the remote object's server by setting the java.rmi.server.codebase property. The RMI server registers a remote object, bound to a name, with the RMI registry. The codebase set on the server JVM is annotated to the remote object reference in the RMI registry.2. The RMI client requests a reference to a named remote object. The reference (the remote object's stub instance) is what the client will use to make remote method calls to the remote object.&òM T™T4 6€å€ä€‚€€€€‚‚‚ÿ3. The RMI registry returns a reference (the stub instance) to the requested class. If the class definition for the stub instance can be found locally in the client's CLASSPATH , which is always searched before the codebase, the client will load the class locally. However, if the definition for the stub is not found in the client's CLASSPATH, the client will attempt to retrieve the class definition from the remote object's codebase.4. The client requests the class definition from the codebase. The codebase the client uses is the URL that was annotated to the stub instance when the stub class was loaded by the registry. Back in step 1, the annotated stub for the exported object was then registered with the RMI registry bound to a name.”ns T-T& €Ü€ä€‚‚‚ÿ5. The class definition for the stub (and any other class(es) that it needs) is downloaded to the client.€S™T¹@T- (€§€ɀ€€(€‚‚ÿNote: Steps 4 and 5 are the sames steps that the registry took to load the remote object class, when the remote object was bound to a name in (registered with) the -T¹@T¿SRMI registry. When the registry attempted to load the remote object's stub class, it requested the class definition from the codebase associated with that remote object.°Š-TiBT& €€ä€‚‚ÿ6. Now the client has all the information that it needs to invoke remote methods on the remote object. The stub instance acts as a proxy to the remote object that exists on the server; so unlike the applet which uses a codebase to execute code in its local JVM, the RMI client uses the remote object's codebase to execute code in another, potentially remote JVM, as illustrated in Figure 3:2¹@T›BT- *€ €€†"€‚‚ÿn8iBT ET6 :€q€€‚‚€ €‚‚€€‚‚‚ÿFigure 3: RMI client making a remote method call4.0 Using codebase in RMI for more than just stub downloadingIn addition to downloading stubs and their associated classes to clients, the java.rmi.server.codebase property can be used to specify a location from which any class, not only stubs, can be downloaded.When a client makes a method call to a remote object, the method that it calls could be written to accept no arguments or a number of arguments. There are three distinct cases that may occur, based on the data type(s) of the method argument(s).<›BTEHT; D€€€‚€€‚‚€€‚‚€€‚ÿIn the first case, all of the method parameters (and return value) are primitive data types, so the remote object knows how to interpret them as method parameters, and there is no need to check its CLASSPATH or any codebase.In the second case, at least one remote method parameter or the return value is an object, for which the remote object can find the class definition locally in its CLASSPATH.In the third case (shown as Step 6, in Figure 4), the remote method receives an object instance, for which the remote object cannot find the class definition locally in its CLASSPATH. This type of remote method call is illustrated in Figure 4. The class of the object sent by the client will be a subtype of the declared parameter type. A subtype is either:& ETkHT# €€€‚ÿëºEHTVIT1 0€u€ä€€‚‚€€‚‚ÿ· An implementation of the interface that is declared as the method parameter (or return) type· A subclass of the class that is declared as the method parameter (or return) type2kHTˆIT- *€ €€†"€ ‚‚ÿ4VITŒKT2 2€€€‚‚€€€€‚ÿFigure 4: RMI client making a remote method call, passing an unknown subtype as a method parameter7. Like the applet's codebase, the client-specified codebase is used to download Remote classes, non-remote classes, and interfaces to other JVMs. If the codebase property is set on the client application, then that codebase is annotated to the subtype instance when the subtype class is loaded by the client. If the codebase is not set on the client, the remote object will mistakenly use its own codebase.Ê•ˆIT†NT5 8€+€€‚€ €‚‚‚‚€€‚ÿ5.0 Command-line examplesIn the case of an applet, the applet codebase value is embedded in an HTML page, as we saw in the HTML example in the first section of this tutorial.In the case of Java RMI codebase, rather than having a reference to the class embedded in an HTML page, the client first contacts the RMI registry for a reference to the remote object. Because the remote object's codebase can refer to any URL, not just one that is relative to a known URL, the value of the RMI codebase must be an absolute URL to the location of the stub class and any other classes needed by the stub class. This value of the codebase property can refer to:&ŒKT¬NT# €€€‚ÿn5†NT&€T9 @€k€ä€€‚‚€€‚‚€€‚‚ÿ· The URL of a directory in which the classes are organized in package-named sub-directories· The URL of a JAR file in which the classes are organized in package-named directories· A space-delimited string containing multiple instances of JAR files and/or directories that ¬NT&€T¿Smeet the criteria above°]¬NTւTS t€»€€€€€€(€‚‚€€‚‚€€‚‚€€‚€€‚ÿNote: When the codebase property value is set to the URL of a directory, the value must be terminated by a "/".ExamplesIf the location of your downloadable classes is on an HTTP server named "webvector", in the directory "export" (under the web root), your codebase property setting might look like this: -Djava.rmi.server.codebase=http://webvector/export/If the location of your downloadable classes is on an HTTP server named "webline", in a JAR file named "mystuff.jar", in the directory "public" (under the web root), your codebase property setting might look like this:Ê&€T܄T< F€•€€‚€€‚€€‚‚€€‚ÿ -Djava.rmi.server.codebase=http://webline/public/mystuff.jarNow let's suppose that the location of your downloadable classes has been split between two JAR files, "myStuff.jar" and "myOtherStuff.jar". If these JAR files are located on different servers (named "webfront" and "webwave"), your codebase property setting might look like this: -Djava.rmi.server.codebase="http://webfront/myStuff.jar http://webwave/myOtherStuff.jar"ýÓւTمT* "€§€€ €‚‚‚‚ÿ6.0 Troubleshooting tipsAny serializable class, including RMI stubs, can be downloaded if your RMI programs are configured properly. Here are the conditions under which dynamic stub downloading will work:k1܄TD‡T: B€c€ä€‚‚€€€€€€‚‚ÿ1. The stub class and any of the classes that the stub relies on are served up from a URL reachable from the client.2. The java.rmi.server.codebase property has been set on the server program (or in the case of activation, the "setup" program) that makes the call to bind or rebind, such that:õµÙ…T9ˆT@ N€k€ɀ€€€€‚‚‚‚€€€€‚‚ÿ· The value of the codebase property is the URL in step Aand· If the URL specified as the value of the codebase property is a directory, it must end in a trailing "/"ID‡T‚ŠTE X€ €ä€€€€€€€€€‚‚€€‚ÿ3. The rmiregistry cannot find the stub class or any of the classes that the stub relies on in its CLASSPATH. This is so the codebase gets annotated to the stub when the registry does its class load of the stub, as a result of calls to bind or rebind in the server or setup code.4. The client has installed a SecurityManager that allows the stub to be downloaded. In the Java 2 SDK, Standard Edition, v1.2 and later this means that the client must also have a properly configured security policy file.'9ˆT©ŠT$ €€ä€‚ÿR‚ŠTûŒTL f€ €€€€‚‚€€‚‚€€€€€€€€‚ÿThere are two common problems associated with the java.rmi.server.codebase property, which are discussed next.6.1 If you encounter a problem running your RMI serverThe first problem you might encounter is the receipt of a ClassNotFoundException when attempting to bind or rebind a remote object to a name in the registry. This exception is usually due to a malformed codebase property, resulting in the registry not being able to locate the remote object's stubs or other classes needed by the stub.®‡©ŠT©T' €€€‚‚‚‚ÿIt is important to note that the remote object's stub implements all the same interfaces as the remote object itself, so those interfaces, as well as any other custom classes declared as method parameters or return values, must also be available for download from the specified codebase.Most frequently, this exception is thrown as a result of omitting the trailing slash from the URL value of the property. Other reasons would include: the value of the property is not a URL; the path to the classes specified in the URL is incorrect or misspelled; the stub class or any other necessary classes are not all available from the specified URL.ÓûŒTÄÄT< F€§ €€‚‚‚€€‚ÿThe exception that you ma©TÄÄT¿Sy encounter in such a case would look like this:java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: examples.callback.MessageReceiverImpl_Stubjava.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: examples.callback.MessageReceiverImpl_Stubjava.lang.ClassNotFoundException: examples.callback.MessageReceiverImpl_Stub at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Compiled Code) at sun.rmi.transport.StreamRemoteCall.executeCall(Compiled Code) at sun.rmi.server.UnicastRef.invoke(Compiled Code) at sun.rmi.registry.RegistryImpl_Stub.rebind(Compiled Code) at java.rmi.Naming.rebind(Compiled Code) at examples.callback.MessageReceiverImpl.main(Compiled Code)RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: examples.callback.MessageReceiverImpl_StubÑ©TÜÆTG \€£€€€‚‚€€€€€€ç/ƒü€‰€‚ÿ6.2 If you encounter a problem running your RMI clientThe second problem you could encounter is the receipt of a ClassNotFoundException when attempting to lookup a remote object in the registry. If you receive this exception in a stacktrace resulting from an attempt to run your RMI client code, then your problem is the CLASSPATH with which your RMI registry was started. See requirement C in section 6.0. Here is what the exception will look like:p<ÄÄTLÈT4 6€y€€‚€€‚€‚ÿjava.rmi.UnmarshalException: Return value class not found; nested exception is: java.lang.ClassNotFoundException: MyImpl_Stub at sun.rmi.registry.RegistryImpl_Stub.lookup(RegistryImpl_Stub.java:109 at java.rmi.Naming.lookup(Naming.java:60) at RmiClient.main(MyClient.java:28)*ÜÆTvÈT' €€ ”€ ‚ÿÍLÈTCËTÇ \ €€‚€‚€ €‚‚Ì@EF("http://archives.java.sun.com/archives/rmi-users.html",`',1)€-‰€‚‚çù£—Y€‰€‚‚Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€‰€€€‚ÿOther resourcesIf you your codebase questions are still unanswered, please take a look through the archives of the rmi-users email list first.You may wish to subscribe to the rmi-users email list.We are very interested in knowing whether these tutorials are useful. Please send any comments or suggestions to: rmi-comments@java.sun.com, with a subject of "codebase tutorial". *As used on this web site, the terms "Java virtual machine" or "JVM" mean a virtual machine for the Java platform.&vÈTiËT# €€€‚ÿ*CËT“ËT' €€ ”€ ‚ÿ&iËT¹ËT# €€€‚ÿg‰“ËT ÍTÞ#ЁÂ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€ ‰€€‚ÿ€ÿ(€†"€‚ÿÿÿCopyright © 2001 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com &¹ËTFÍT# €€€‚ÿ1 ÍTwÍT1Uÿÿÿÿÿÿÿÿ7ÿÿÿÿwÍT›ÍT$FÍT›ÍT" €€€ ÿ> wÍTÙÍT141 §G†©8ÙÍTÎTÏTStock Watcher7›ÍTÎT& €"€€€‚ÿStock Watcher9ÙÍTIÎT' €$€€%€‚‚ÿStock WatcherI%ÎT’ÎT$ €J€€‚‚ÿ Here is the example StockApplet:NIÎTÏT3 6€ž€€†"€ ‚€€‚ÿ"examples.stock.StockApplet": sorry, WinHelp cannot show this applet...1’ÎTDÏT1Uÿÿÿÿÿÿÿÿ9ÿÿÿÿDÏThÏT$ÏThÏT" €€€ ÿHDÏT°ÏT1ñ ®…©•ª:°ÏT Ul UStock Example Using RMIAhÏT U& €6€€€‚ÿStock Example Using RMI°ÏT UhÏTäE°ÏTðUŸ#Œ,,,€€ÿD€€çY€9†"€ ‰€‚ÿ€€ÿ(€€ €%€‚ÿ.€R€ çñ˜Y€ ‰€‚ÿÿÿStock Example Using RMIDocumentation Comments& UU# €€€‚ÿ*ðU@U' €€ ”€ ‚ÿQ'U‘U* "€O€€‚€‚‚‚ÿThis directory contains an example that illustrates an applet that exports a remote object in order to receive stock updates from a stock server. The applet displays the stock data dynamically as notifications are received from the server. The interfaces and classes for this example are:Fò@U×UT v€å€ä€€‚‚€€‚‚€€‚‚€€€€‚‚€€€€‚ÿ· StockWatch is the remote interface for stock server.· StockNotify is the remote interface for stock observer.· Stock is the serializable object containing stock data.· StockServer (implements StockWatch) sends notifications of stock updates to remote objects that have registered to receive updates.· StockApplet (implements StockNotify) exports a remote object (itself), registers with StockServer for stock updates, and displays stock notifications as they are received.'‘UþU$ €€ä€‚ÿH×UFUD V€ €€€€€€‚‚€€€€€€‚ÿOn Windows systems, after downloading the Java 2 SDK, execute run.bat in the docs/guide/rmi/examples/stock directory, which will explain each step as it builds and runs the example. Upon completion, you will need to explicitly destroy the window created for the server process.On Solaris, after downloading the Java 2 SDK, execute the run script in this examples/stock directory, and the script will print out what it is doing while it runs the example. It assumes that you have installed the Java® 2 SDK and set your PATH, CLASSPATH and LD_LIBRARY_PATH according to the SDK installation instructions. The stock server creates its own RMI registry, so the "rmiregistry" command does not need to be run. Here are the basic steps that the run script executes:&þUlU# €€€‚ÿïŠFU[ UI `€M€ä€€‚‚€€‚‚€€‚‚€€‚‚€€‚‚ÿsetenv CLASSPATH ../..:$CLASSPATHjavac -d ../.. *.javarmic -d ../.. examples.stock.StockServer examples.stock.StockApplet&appletviewer index.htmlðlUt U) €á€€‚‚€‚ÿNote: You can set your CLASSPATH back to the old CLASSPATH (without ../.. in it) before running the appletviewer, so that classes get downloaded from the network rather than from your CLASSPATH; each of the scripts actually does this.*[ Už U' €€ ”€ ‚ÿΊt Ul UD V€€€‚€ˆ"€ €çñ˜Y€ ‰€€‚‚ÿ Copyright © 1996,1997,1998,1999 Sun Microsystems, Inc., 2550 Garcia Ave., Mtn. View, CA 94043-1100 USA. All rights reserved.1ž U U1Uÿÿÿÿÿÿÿÿ;ÿÿÿÿ UÁ U$l UÁ U" €€€ ÿT# U U1G†©È«< UK U†UApplying the Factory Pattern to RMI6Á UK U& € €€€‚ÿFactory.htmlO( Uš U' €P€€%€‚‚ÿApplying the Factory Pattern to RMI\ðK UöUl Š€á€€Ì>EF("http://cseng.aw.com/book/0,3828,0201633612,00.html",`',1)€‰€‚ÿWhat is a "factory" and why would you want to use one? A factory, in this context, is a piece of software that implements one of the "factory" design patterns introduced in the book, Design Patterns, Elements of Reusable Object-Oriented Software. In general, a factory implementation is useful when you need one object to control the creation of and/or access to other objects.By using a factory in RMI, you can reduce the number of objects that you need to register with the RMI registry.Z/š UPU+ &€^€€‚€ €‚‚ÿExamples of Factories in the Real World:ÍöU`AU7 <€›€ä€€‚‚€(€€(€‚‚ÿThe BankWhen you go to the bank to make a deposit to your account, you don't walk up to a vault, pull out a drawer PU`AUÁ Uwith your name on it, drop in your money, shut the drawer and leave. Think about how you originally established, or opened, the account. You probably went to the bank, spoke with an Account Manager, and signed some papers. In return, they gave you some checks, a passbook, or a bank card so you could access your account in the future.W"PU·CU5 8€E€ä€‚‚€€‚‚€(€‚ÿThe Account Manager is an example of a factory. The person or Automated Teller Machine (ATM) that acts as account manager controls the creation of and/or access to individual accounts. The LibraryLet's think about how a book, compact disk, or video tape gets from the library shelf into your home. Before you can check out any material, you must first get a library card from the librarian. In this case, the librarian could be viewed as a library card factory because the librarian controls the creation of new library card instances.Ž‚`AUkFU2 2€€ä€‚€(€€(€‚ÿOnce you have a library card, you can go into the library, and without any further fuss, just walk out with all your materials, right? Of course not. Before you can walk out of the library without setting off the alarm system, you must check out the book, CD, or video tape you wish to take home. So you present your library card to, you guessed it, the librarian, who will use your card to access the library database to see if you owe any late fees, and to register these new materials as having been leased to you. In this case, the librarian could be seen as a book factory because the librarian controls your access to the books.'·CU’FU$ €€ä€‚ÿßkFUšHU7 <€¿€€ €‚‚€€€€‚‚‚ÿHow Does a Factory Work in RMI?Just like any other RMI program, there are a few basic players: a server that produces one or more remote objects, each of which implements a remote interface; a client that accesses a name server (the rmiregistry) to get a reference to one of the remote objects; and the rmiregistry, which facilitates the client's initial contact with the server.For the picture below and the steps that follow, you may make the following assumptions:&’FUÎHU# €€€‚ÿ!ÍšHUïIUT v€›€ä€€€€€€‚€€€€€€€€€€‚‚ÿ· There are two remote interfaces that the client understands, Factory and Product · The FactoryImpl implements the Factory interface andthe ProductImpl implements the Product interface0ÎHUJU, (€ €€†"€ ‚ÿ&ïIUEJU# €€€‚ÿºJU`LUa €u€ɀ€€‚€€€‚€€‚€€€€‚€€€€‚€€€€‚ÿ1. The FactoryImpl registers, or is registered, with the rmiregistry 2. The client requests a reference to a Factory 3. The rmiregistry returns a remote reference to a FactoryImpl 4. The client invokes a remote method on the FactoryImpl to obtain a remote reference to a ProductImpl 5. The FactoryImpl returns a remote reference to an existing ProductImpl or to one that it just created, based on the client request j>EJUÊLU, (€|€ɀ€€€‚‚ÿ6. The client invokes a remote method on the ProductImplj>`LU4MU, (€|€€‚‚€ €‚‚ÿ How Could the Bank and Library be Implemented in RMI?ÇÊLUW€UP n€€ä€€‚‚€€€€€€‚‚€€€€€€‚ÿThe BankIn code, AccountManager would be a remote interface with one or more remote methods. These methods would return objects that implement the Account interface. In a similar fashion, Account would be an interface that declared all of the operations a person could perform on an account instance, such as depositing or withdrawing money, getting an account balance, or listing the most recent account transactions.In RMI, only the instance of the AccountManager implementation would be registered with the RMI registry. The AccountManager implementation would be the factory, returning remote references to (or seria4MUW€UÁ Ulized instances of) Account implementations, like your savings account.Éi4MU ƒU` ހӀ䀂€€‚‚€€€€€€€€‚‚€€€€€€€€‚ÿThe LibraryIn the library example, the Librarian would be a remote interface with one or more methods that would return objects that implement the LibraryCard interface. In addition, the Librarian interface would have methods to allow you access to books, CDs, or videotapes that implemented the Loanable interface.In RMI, only the instance of the Librarian implementation would be registered with the RMI registry. The Librarian implementation would be the factory, returning remote references to (or serialized instances of) LibraryCard implementations and Loanable object implementations.'W€UGƒU$ €€ä€‚ÿòÇ ƒU9„U+ $€€€€‚€‚ÿWhile the bank and library examples presented here may not be entirely complete they are not designed to be complete, but rather instructionally useful in describing the factory pattern in RMI.*GƒUc„U' €€ ”€ ‚ÿ&9„U‰„U# €€€‚ÿg‰c„Uð…UÞ#ЁÂ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€ ‰€€‚ÿ€ÿ(€†"€‚ÿÿÿCopyright © 2001 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com &‰„U†U# €€€‚ÿ1ð…UG†U1Uÿÿÿÿÿÿÿÿ=ÿÿÿÿG†Uk†U$†Uk†U" €€€ ÿj9G†UՆU1\Q•ª‹µ>ՆU8‡U™…ZFrequently Asked Questions - RMI and Object Serializationc=k†U8‡U& €z€€€‚ÿFrequently Asked Questions - RMI and Object Serialization'ՆU_‡U# €€€‚ÿ Eˆ8‡U€ˆUœ#H,,,€€ÿL€€€ç—Y€9†"€ ‰€‚ÿ€€ÿ*€€€%€‚ÿ€–€ÿ@€˜€ çñ˜Y€ €.€ ‰€‚ÿÿÿFrequently Asked QuestionsRMI and Object SerializationContents of theJavaTM 2 SDK,Standard Edition,v1.4&_‡UʈU# €€€‚ÿ*€ˆUôˆU' €€ ”€ ‚ÿ^'ʈUR‰U7 >€N€€‚€‚€ €‚‚€€‚‚ÿRMIVery Frequent Questions+“ôˆU}ŒU˜ þ€'€ä€€ç”÷·ä€€€‰€‚€€玝ÿ\€€€€€‰€‚€€çwa—€‰€‚€€玝ÿ\€€€‰€‚€€çPC®€‰€‚ÿ· A.1 Why do I get an exception for an unexpected hostname and/or port number when I call Naming.lookup?· A.2 Do I have to install the _Stub file in the client's CLASSPATH? I thought it could be downloaded.· A.3 Does RMI require me to use an HTTP server?· A.4 Why am I getting a ClassNotFoundException?· A.5 Why does the RMI implementation create so many sockets when my application uses custom socket factories; or why are stubs (using a custom socket factory) that refer to the same remote object not equal; or why does the RMI implementation not reuse server-side ports when I use a custom server socket factory?'R‰U€ŒU$ €€ä€‚ÿB}ŒUæŒU' €6€€€‚‚ÿDebugging RMI programs]Ñ€ŒUCUŒ 怣€ä€€ç‹Ç€ç€‰€‚€€çÑ–à€‰€‚€€çî@â퀀€‰€‚€€ç5}ô怀€‰€‚€€çgÙaԀ‰€‚ÿ· B.1 Will there be debugging mechanisms built into RMI?· B.2 I am having a problem debugging my program on Windows 95. Any suggestions?· B.3 Why do I get a java.lang.ClassMismatchError while running my program?· B.4 I am sending an array of remote objects and receive an ArrayStoreException. What's going on?· B.5 I have local objects that are synchronized. When I make them remote, my application hangs. What's the problem?žWæŒUÁUa €¯€ä€€ç°­€€€‰€‚€€ç;²‡€‰€‚€€ç'^&ǀ‰€‚‚ÿ· B.6 I am getting a ClassNotFoundException for my stub class when I try to register aCUÁUk†U remote object in the registry. What's happening?· B.7 My server died. Can I get a trace of the server activity?· B.8 Where can I find a list of system properties that might be useful for implementing and debugging RMI applications?6CU=ÁU' €€€€‚‚ÿNetworking”ÁUÑÃU ̀+€ä€€çëၬ€‰€‚€€çåŽö€€€‰€‚€€ç–ȍ̀€€€€‰€‚€€ç] ဉ€‚ÿ· C.1 How do RMI clients contact remote RMI servers?· C.2 Why does my remote method or "callback" routine fail with a nested java.net.UnknownHostException?· C.3 My server is using a fully qualified domain name or IP address, so why do I still get an UnknownHostException?· C.4 I am using the latest release of the Java 2 Software Development Kit (SDK) and I have a host that has multiple IP addresses. RMI is choosing the wrong IP address for its server hostname, how do I work around this problem?•=ÁUåÅU ̀+€ä€€ç<Ãò•€‰€‚€€ç Úkÿ€€€€€‰€‚€€çōb€‰€‚€€çÅ9*€€€‰€‚ÿ· C.5 How does RMI obtain a server hostname in each of the versions of the JDK?· C.6 Why do Naming.bind and Naming.lookup take an extraordinarily long time on Windows?· C.7 How do I use RMI on a Windows 95 standalone machine, not connected to the network?· C.8 Why do I get the exception "java.net.SocketException: Address already in use" when I try to run the registry?ŽÑÃUóÇU€ ΀€ä€€ç$õà€‰€‚€€çîAlG€‰€‚€€çU•y€‰€‚€€çE"ÿ€‰€‚€€ç…r"(€‰€‚ÿ· C.9 How can I use RMI through a firewall?· C.10 How can I make outgoing RMI calls through a local firewall?· C.11 How can I receive incoming RMI calls through a local firewall?· C.12 So what do I have to do to get RMI to operate through two firewalls?· C.13 Is it possible to replace the java-rmi.cgi script that comes with the JDK distribution with a servlet?'åÅUÈU$ €€ä€‚ÿO(óÇUiÈU' €P€€€‚‚ÿUsing RMI to achieve X (for some X)–ÈUÿÊU† ڀ!€ä€€ç9d`<€‰€‚€€çS ‹é€‰€‚€€çVù뀉€‚€€çožN<€‰€‚€€çùœ¹(€€€‰€‚ÿ· D.1 Is there a way to get automatic notification as soon as a remote virtual machine fails?· D.2 From within a virtual machine, can a new virtual machine be spawned on a remote machine?· D.3 Is it possible for a remote object to be notified when all clients disconnect?· D.4 Why doesn't my server program exit when all clients disconnect?· D.5 How does the distributed garbage collector detect a client that disconnects? Is it advisable to use System.exit for graceful client termination?]ÑiÈU\ÍUŒ 怣€ä€€çÕ]-׀‰€‚€€çiÍ €€€‰€‚€€çI²Ä€‰€‚€€çՄg瀀€‰€‚€€ç%[—·€‰€‚ÿ· D.6 How can my server tell when a client crashes?· D.7 The unreferenced() method doesn't get called until ten minutes after I have stopped using the remote object! How can I shorten this delay?· D.8 Why can't I get an immediate notification when a client crashes?· D.9 How do I run the rmic command in a DOS batch file?· D.10 In a remote object implementation, how can I find the host name of the caller of a remote method?_ÿÊU»ÎUH ^€/€ä€€çæè€‰€‚€€çužH€‰€‚‚ÿ· D.11 Does RMI handle "out" and "inout" parameters (like CORBA)?· D.12 Normally in the Java programming language, it is possible to cast an interface instance to an instance of the class from which it was created and use the result. Why doesn't this work in RMI?Q*\ÍU ÏU' €T€€€‚‚ÿHow does RMI work with X (for some X)ᙻÎU VH ^€3€ä€€çëqр‰€‚€€çbâ(2€‰€‚‚ÿ· E.1 What if my browser does not support the JDK or J2SE version I need?· E.2 Can I implement remote observer/observable objects in RMI? ÏU Vk†UQ* ÏU]V' €T€€€‚‚ÿInternals, resources, and performance¿L VVs Ž€™€ä€€ç Ä{쀉€‚€€ç$S宀‰€‚€€çsbÔ€‰€‚€€çè#€€€‰€‚ÿ· F.1 At what point is there a "live" connection between the client and the server and how are connections managed?· F.2 Does the Java platform replace all remote objects with their stubs during a remote method invocation?· F.3 Is it possible to write a new transport layer for RMI which does not use sockets? As a follow-up question, how about a transport layer that uses non-TCP based sockets?· F.4 I notice the registry continues to use CPU resources, as if it were polling rather than blocking on a select() call. Is the registry implemented by polling?ǒ]VãV5 8€%€ä€€çº—#€‰€‚‚ÿ· F.5 Is there only one socket connection between a client process and the server, no matter how many stubs exist in that client process?9VV' €$€€€‚‚ÿMiscellaneousFìãVbVZ ‚€Ù€ä€€ç-§‘ú€‰€‚€€ç/˜6T€‰€‚€€畎ºï€‰€‚ÿ· G.1 What are the licensing issues surrounding the use of RMI?· G.2 I have a single-threaded program that waits on standard input for a user command which will initiate an RMI call. However, my remote object cannot service this incoming remote call as the program appears to be blocked on standard input. What's the problem?· G.3 I am copying array elements to my remote server and changing the values, but the incremented values are not copied back to the client. Why?WüV¹V[ „€ù€ä€€犯sc€‰€‚€€çÝ@"€‰€‚€€ça^yÿ€‰€‚‚ÿ· G.4 Am I allowed to have static fields in a remote interface?· G.5 I locate the registry, but then it seems that it's not there, what's happening?· G.6 I can't find the answer to my question here, are there any other resources?@bVùV' €2€€ €‚‚ÿObject Serialization š¹V Vq °€5€ä€çܯk€€€€€‰€‚çýy_«€‰€‚ç’S—²€‰€‚ç{§„䀉€‚ç_S‹\€‰€‚ÿ1. Why must classes implement Serializable in order to be written to an ObjectOutputStream?2. Which JDK v1.1 system classes are marked serializable?3. I am having problems deserializing AWT components. How can I make this work?4. Does object serialization support encryption?5. The object serialization classes are stream oriented. How do I write objects to a random-access file?PçùVT Vi  €Ï€ä€ç³B.选€‚çiO<€€€€€‰€‚爝뀀€€€€€‰€‚ÿ6. When a local object is serialized and passed as a parameter in an RMI call, are the bytecodes for the local object's methods also passed? What about object coherency, if the remote virtual machine (VM) application "keeps" the object handle?7. How can I create an ObjectInputStream from an ObjectOutputStream without a file in between?8. I create an object and then send it across the net using the writeObject method and receive it using the readObject method. If I then change the value of a field in the object and send it as before, the object that the readObject method returns appears to be the same as the first object and does not reflect the new value of the field. Should I be experiencing this behavior?1Ì V…Ve ˜€™€ä€çÒ®ŒÒ€‰€‚çÝEnÿ€‰€‚çŘ²€‰€‚çނ-®€‰€‚ç¿ßpÿ€‰€‚ÿ9. Are there any plans to support the serialization of thread objects?10. Can I compute diff(serial(x),serial(y))?11. Can I compress the serial representation of my objects using my own zip and unzip methods?12. Can I execute methods on compressed versions of my objects, for example isempty(zip(serial(x)))?13. If I try to serialize a font or image object and then try to reconstitute it in a different VM, my application dies. Why?ÑT V­@VK d€£€ä€çâïÿ€‰€‚çŸûÙø€€€€€‰€‚‚ÿ14. How do I serialize a tree of objects?1…V­@Vk†U5. If class A does not implement Serializable but a subclass B implements Serializable, will the fields of class A be serialized when B is serialized?&…VÓ@V# €€€‚ÿ*­@Vý@V' €€ ”€ ‚ÿï®Ó@VìCVA P€]€€‚€‚€ €‚‚€€7€€‚‚‚‚‚ÿRMIA.1 Why do I get an exception for an unexpected hostname and/or port number when I call Naming.lookup?The hostname and port number you see in the exception trace represent the address on which the looked-up server believes it is listening. While the RMI server can theoretically be on any host, it is usually the same host as that on which the registry is running, and on a different port.Even if the server is mistaken about its hostname or IP address (or has a hostname that simply isn't resolvable by clients), it will still export all of its objects using that mistaken hostname, but you will see an exception every time you try to receive one of those objects.øœý@VäFV; D€{€€‚€€‚‚‚‚€€€€‚ÿThe hostname which you specified in Naming.lookup to locate the registry has no effect on the hostname which is already embedded in the remote reference to the server.Usually, the mysterious hostname is the unqualified hostname of the server, or a private name unknown to the client's nameservice, or (in the case of Microsoft Windows platforms) the server's Network->Identification->Machine Name.The appropriate workaround is to set the system property java.rmi.server.hostname when starting the server. The value of the property should be the externally reachable hostname (or IP address) of the server -- whatever works when specified as the host-part in Naming.lookup is good enough.qìCVUJV_ Œ€%€€‚çåŽö€‰€ç–ȍ̀‰€‚‚€€7€€7€€‚‚€€€€‚ÿFor more detail, see the questions on callbacks and fully qualified domain names.A.2 Do I have to install the _Stub file in the client's CLASSPATH? I thought it could be downloaded.A stub class can be downloaded, if the server that is exporting the remote object annotates the marshalled stub instance with the java.rmi.server.codebase property, which indicates the location from where the stub class can be loaded. You should set the java.rmi.server.codebase property on the server exporting a remote object. While remote clients could set this property, they would then be limited to only getting remote objects from the specified codebase. You should not assume that any client VM will have specified a codebase that resolves to the location of your object.%ÂäFVzNVc ”€…€€‚€€€(€€€‚‚€€€€€€€€€€€€€€‚ÿWhen a remote object is marshalled by RMI (whether as an argument to a remote call or as a return value), the codebase for the stub class is retrieved by RMI and used to annotate the serialized stub. When the stub is unmarshalled, the codebase is used to load the stub classfile using the RMIClassLoader, unless the class can already be found in the CLASSPATH or by the context classloader for the receiving object, such as an applet codebase.If the _Stub class was loaded by an RMIClassLoader, then RMI already knows which codebase to use for its annotation. If the _Stub class was loaded from the CLASSPATH, then there is no obvious codebase, and RMI consults the java.rmi.server.codebase system property to find the codebase. If the system property is not set, then the stub is marshalled with a null codebase, which means that it cannot be used unless the client has a matching copy of the _Stub classfile in the client's CLASSPATH.³UJVˆ€VO l€g€€‚€€€€‚‚€€€(ç휗Y€€1€‰€‚‚ÿIt is easy to forget to specify the codebase property. One way to detect this error is to start the rmiregistry separately and without access to the application classes. This will force Naming.rebind to fail if the codebase is omitted.For more information on the java.rmi.server.codebase property, plezNVˆ€Vk†Uase take a look at our tutorial, Dynamic code downloading using RMI (Using the java.rmi.server.codebase Property).\ÒzNVä‚VŠ ‥€€€‚‚€€€€€€€ÌBEF("ftp://ftp.java.sun.com/pub/jdk1.1/rmi/class-server.zip",`',1)€0‰€‚ÿA.3 Does RMI require me to use an HTTP server?No. You can set your java.rmi.server.codebase property to use any valid URL protocol, such as file or ftp. Using an HTTP server just makes your life simpler by providing an automated mechanism for class file downloading. If you don't have access to an HTTP server nor the inclination to set one up, you can use our small class file server found at ftp://ftp.java.sun.com/pub/jdk1.1/rmi/class-server.zip.ׄˆ€V»…VS t€ €€‚€€7€€‚‚€€ç휗Y€€1€‰€‚‚€€‚ÿA.4 Why am I getting a ClassNotFoundException?Most likely the java.rmi.server.codebase property has not been set (or has not been set correctly) on a VM that is exporting your remote object(s). Please take a look at our tutorial, Dynamic code downloading using RMI (Using the java.rmi.server.codebase Property).A.5 Why does the RMI implementation create so many sockets when my application uses custom socket factories; or why are stubs (using a custom socket factory) that refer to the same remote object not equal; or why does the RMI implementation not reuse server-side ports when I use a custom server socket factory?‚Qä‚V=‰V1 0€£€€‚€€€€‚ÿThe RMI implementation attempts to reuse open sockets where possible for remote invocations. When a remote method is invoked on a stub that uses a custom socket factory, the RMI implementation will reuse an open connection (if any) as long as that socket was created by an equivalent socket factory. Since client socket factories are serialized to clients, a single client may have several distinct copies of the same logical socket factory. To ensure that the RMI implementation will reuse sockets created by custom socket factories, make sure your custom client socket factory classes implement the hashCode and equals methods appropriately. If the client socket factory does not implement these methods correctly, another ramification is that stubs (using the client socket factory) that refer to the same remote object will not be equal.[»…V˜‹VI `€%€€‚€€€€‚‚€€€€‚‚€€‚ÿThe RMI implementation attempts to reuse server-side ports as well. It will only do so if there is an existing server socket for the port created by an equivalent socket factory. Make sure the server socket factory class implements the hashCode and equals methods too.If your socket factory has no instance state, a trivial implementation of the hashCode and equals methods are the following: public int hashCode() { return 57; } public boolean equals(Object o) { return this.getClass() == o.getClass() }[=‰VóVK d€!€€€‚‚‚‚€€‚‚€€€€€€€€‚ÿB.1 Will there be debugging mechanisms built into RMI?RMI supports a simple call-logging facility for debugging. But there are no current plans to support a full-featured, interactive, remote debugger.B.2 I am having a problem debugging my program on Windows 95. Any suggestions?The javaw command throws away output to stdout and stderr, so for debugging purposes it is better to run the java command in a separate window so that you can see reported errors. To do this, execute a command like the following:7蘋V6ÀVO l€Ñ€€‚€€‚€€€€‚‚€€7€€‚‚€€‚ÿ start java EchoImplIt is advised not to use the javaw command during development. To watch the server activity, start the server with -Djava.rmi.server.logCalls=true.B.3 Why do I get a java.lang.ClassMismatchError while running my program?You probably modified one or more classes that were being used by RMI programs while your program was running. Try restarting all RMI applications (including java.rmi.registry.RegióV6ÀVk†UstryImpl). This should clear things up. ËóVAÂV@ N€—€€‚€€7€€‚‚‚‚€€‚‚ÿB.4 I am sending an array of remote objects and receive an ArrayStoreException. What's going on?RMI replaces the remote objects with the stub and therefore the type of the array must be that of the interface. The code would look like: FooRemote[] f = new FooRemote[10]; for (int i = 0; i < f.length; i++) { f[i] = new FooRemoteImpl(); }Now RMI can put the stub into each cell of the array without an exception on the remote call.h96ÀV©ÄV/ ,€s€€‚€€‚‚‚‚‚ÿB.5 I have local objects that are synchronized. When I make them remote, my application hangs. What's the problem?What you encountered was distributed deadlock. In the local VM case, the VM can tell that the calling object "A" owns the lock and will allow the call back to "A" to proceed. In the distributed case, no such determination can be made, so the result is deadlock.Distributed objects behave differently than local objects. If you simply reuse a local implementation without handling locking and failure, you will probably get unpredictable results.ÇAÂV©ÇV9 @€€€‚€€7€€‚‚€€‚ÿB.6 I am getting a ClassNotFoundException for my stub class when I try to register a remote object in the registry. What's happening?When you make a call to the registry to bind an object, the registry actually binds a reference to the stub for the remote object. In order to instantiate a stub object, the registry VM needs to be able to load its class definition. The VM (in this case the server VM) that sends the serialized forms of a stub in a remote method call to the registry is responsible for annotating the stub with the location from which its classes can be downloaded. If stubs are not annotated properly, RMI will throw a ClassNotFoundException when it tries to instantiate the stub. ™N©ÄVBËVK d€€€‚€€€€‚‚€€€€€€€€‚ÿTo annotate classes properly, the server needs to set the value of the java.rmi.server.codebase property value to the location(s) of the stub classes. RMI will automatically annotate the serialized form of outgoing object instances with the value of the java.rmi.server.codebase property. NOTE: It is possible (and in a small number of environments appropriate) to enable the rmiregistry to unmarshal stub objects by placing all relevant stub class files in the CLASSPATH of the rmiregistry. However, the rmiregistry does not have to download stub classes. If stub classes are available locally, it will use those classes. Using the rmiregistry's CLASSPATH for stub deployment requires that all VMs that reference a stub instance obtained from that registry have the stub's class file installed locally (in the VM's CLASSPATH). Ö©ÇVIÍV1 0€­€€‚€€€€‚ÿFor example, if the registry loads stub classes from its CLASSPATH, when the registry sends serialized stub objects to other VMs, those serialized objects will be annotated with the value of the registry's java.rmi.server.codebase property (which will almost always be null). If the VMs receiving serialized stub objects from the registry do not have the class files for those stubs installed locally then those VMs are likely to throw a ClassNotFoundException. *âBËVsÏVH ^€Å€€‚€€€(€‚‚€(ç휗Y€€1€‰€‚ÿInstead, if classes are downloaded dynamically from a server VM's java.rmi.server.codebase annotation, only the server VM needs to have the stub classes in its CLASSPATH. With this approach, application deployment is simpler and it is possible to introduce new stub versions into a running distributed system. For more information on dynamic code downloading in RMI, please see the tutorial, Dynamic code downloading using RMI (Using the java.rmi.server.codebase). 0IÍVWQ p€a€€‚€€‚‚‚‚€€‚€€€€€€‚‚€€‚ÿB.7 My server died. Can I get a trace of the server activsÏVWk†Uity?To get a trace of the server activity, start the server as follows: java -Djava.rmi.server.logCalls=true YourServerImplwhere YourServerImpl is the name of your server. If your server has hung, you can get a monitor dump and thread dump by doing a ctrl-\ on the SolarisTM Operating Environment (Solaris OE) and a ctrl-break on Microsoft Windows platforms.B.8 Where can I find a list of system properties that might be useful for implementing and debugging RMI applications?žOsÏVžWi  €Ÿ€€‚睗Y€€€€‰€çø£—Y€‰€‚‚çú£—Y€€€€‰€€€€€‚ÿProperties that begin with "java.rmi." are elements of the public specification and are documented in the Java RMI Specification.Properties that begin with "sun.rmi." are only supported by certain versions of the JDKTM software or JavaTM 2 Platform, Standard Edition (J2SETM) from Sun Microsystems. While these "sun.rmi.*" properties can be quite useful for debugging and tuning at runtime, please note that they are not considered part of the public API, and their use is subject to change (or may be removed completely) in future versions of the implementation.¬\WdWP n€»€€‚€€‚‚‡"€‚‚€€€€€€€€‚ÿC.1 How do RMI clients contact remote RMI servers?For an RMI client to contact a remote RMI server, the client must first hold a reference to the server. The Naming.lookup method call is the most common mechanism by which clients initially obtain references to remote servers. Remote references may be obtained by other means, for example: all remote method calls can return remote references. This is what Naming.lookup does; it uses a well-known stub to make a remote method call to the rmiregistry, which sends back the remote reference to the object requested by the lookup method.à­žWD W3 4€[€€‚‚‚€(€€(€‚ÿEvery remote reference contains a server hostname and port number that allow clients to locate the VM that is serving a particular remote object. Once an RMI client has a remote reference, the client will use the hostname and port provided in the reference to open a socket connection to the remote server.Please note that with RMI the terms client and server can refer to the same program. A Java program that acts as an RMI server contains an exported remote object. An RMI client is a program that invokes one or more methods on a remote object in another virtual machine. If a VM performs both of these functions, it may be referred to as an RMI client and an RMI server.vdWº W] ˆ€3€€‚€€7€€‚‚ç<Ãò•€‰€ç\£ )€‰€ç•Ê€‰€€€‚ÿC.2 Why does my remote method or "callback" routine fail with a nested java.net.UnknownHostException?In many versions of the JDK (all versions of the JDK except in v1.1 and the latest releases), RMI may default to using an unresolvable server hostname (for example: unqualified names, Windows Internet Naming Service (WINS) names, or unqualified DHCP names). When an RMI client invokes a remote method using a reference that contains an unresolvable server hostname, the client will throw an UnknownHostException.©xD WcW1 0€ñ€€‚€€€€‚ÿIn order to generate functional remote references, RMI servers must be able to supply a fully qualified hostname or IP address that is resolvable from all RMI clients (an example of a fully qualified hostname is foo.bar.com). If an RMI program provides a remote callback operation, then that program serves an RMI object and consequently, must be able to determine a resolvable hostname to use as its server hostname in the remote references it passes to RMI clients. VM's that make calls to applets that serve remote objects may throw UnknownHostExceptions because the applet has failed to provide a usable server hostname.x3º WçAWE X€g€€‚€€€€‚‚€€:€€7€€‚ÿIf your RMI application throws an UnknownHostException, you can look at the resultincWçAWk†Ug stack trace to see if the hostname that the client is using to contact its remote server is incorrect or not fully qualified. If necessary, you can set the java.rmi.server.hostname property on the server to the correct IP address or hostname of the server machine and RMI will use this property's value to generate remote references to the server.C.3 My server is using a fully qualified domain name or IP address, so why do I still get an UnknownHostException?àcWíBW& €Á€€‚‚‚ÿDepending on the configuration of your network's name service, a fully qualified hostname that is recognized on one RMI host may not be resolvable from another RMI host. Some examples where this situation may arise are:,ýçAWEW/ ,€û€ä€€‚€€‚ÿ· Misconfigured DHCP servers may set the fully qualified domain name of RMI server machines to be the domain name of the resolver domain instead of the domain in which the RMI server actually resides. In this case, RMI clients outside the server's DHCP domain will be unable to contact the server, because of its incorrect domain name.· The server machine is on a network that is configured to use WINS. Hosts that are only registered under WINS may not be reachable by hosts that rely solely upon DNS.ŽVíBW§FW8 >€­€ä€€€(çE—Y€‰€‚‚ÿ· The RMI client and server reside on opposite sides of a firewall. If your RMI client lies outside a firewall and the server resides inside it, the client will not be able to make any remote calls to the server. If the RMI client lies inside the firewall, you will need to configure the RMI client to contact the server using HTTP.ÎEW­HW8 >€€€€‚‚€€‚‚€€‚ÿC.4 I am using the latest release of the JDK and I have a host that has multiple IP addresses. RMI is choosing the wrong IP address for its server hostname. How do I work around this problem?Set the java.rmi.server.hostname property to the correct IP address of the RMI server machine. You can also specify that your server use a fully qualified hostname obtained from a name service by setting the property: java.rmi.server.useLocalHostname=true£^§FWPKWE X€œ€€€‚‚‚‚€€‚‚€€€€€€‚ÿC.5 How does RMI obtain a server hostname in each of the versions of the JDK?Methods that RMI uses to obtain a server hostname in each of the versions of the JDK: JDK v1.1RMI relied upon java.net.InetAddress.getLocalHost() to return a fully qualified domain name. InetAddress objects initialized local hostnames in a static block of code, performing a reverse lookup on the local IP address to retrieve a local hostname. However, on machines that were not connected to the network, this behavior caused the program to hang while InetAddress looked for a hostname that could not be found. S­HW£MW? L€)€€‚€€‚‚€€€€€€‚ÿJDK v1.1.1-1.1.6To work around the JDK v1.1 problem on stand-alone systems, InetAddress was modified in JDK v1.1.1 to only retrieve the [potentially unqualified] hostname returned from a native system call, which did not attempt to consult a name service. RMI was not modified to compensate for this change since the property java.rmi.server.hostname allowed users to override incorrect hostnames provided by InetAddress. RMI made no attempt to consult a name service and could default to using unqualified hostnames. ݧPKW€OW6 :€O€€‚€€‚‚€€‚‚‚‚ÿLater versionsTo compensate for the many problems that were generated by the v1.1.1 change in functionality of InetAddress, the following behavior has been integrated into the most recent versions of the JDK:RMI will use an IP address or a fully qualified domain name to identify a machine that serves a remote object. Server hostnames are initialized to the value obtained by performing the following actions:y:£MW‚W? L€u€ä€‚€€‚€€€€€€‚ÿ1. By default, RMI uses the IP address of the server host as the€OW‚Wk†U server name for remote references.2. If the property java.rmi.server.hostname is set, RMI will use its value as the server hostname, and will not attempt to find a fully qualified domain name through any other method. This property takes precedence over all other means of finding an RMI server name.3. If the property java.rmi.server.useLocalHostname is set to true (by default, the value of this property is false), RMI applies the following routine to obtain a hostname for the RMI server:'€OW,‚W$ €€ä€‚ÿp=‚Wœ„W3 4€{€ɀ€€€‚€€‚ÿ1. If the value returned by the InetAddress.getLocalHost().getHostName() method contains a "." character, then RMI will assume that this value is the server's fully qualified domain name and will use it as the server hostname.2. Otherwise, RMI will spawn a thread to query the local name service for the fully qualified domain name of the RMI server. If the name service takes too long to return, or the name service returns but its response does not contain a "." then RMI will use the server's IP address obtained from InetAddress.getLocalHost().getHostAddress().(,‚WĄW% €€ɀ€‚ÿ¶hœ„WzˆWN j€Ñ€€€‚€€(€‚€(€‚‚€€€€€€‚ÿUsers can override the default time (10 seconds or 10000 milliseconds) that RMI will look for a fully qualified domain name by setting the following property: sun.rmi.transport.tcp.localHostnameTimeOut=timeOutMilliswhere timeOutMillis is the time that RMI will wait in milliseconds. For example: java -Dsun.rmi.transport.tcp.localHostnameTimeOut=2000 MyServerApp When using activatable remote objects, it is recommended that RMI servers set the value of the java.rmi.server.useLocalHostname property to true. In general, hostnames are more stable than IP addresses. Activatable remote objects tend to last longer than transient remote objects (for example, surviving a reboot). An RMI client will be more likely to locate a remote object over a long period of time if it uses a qualified hostname rather than an explicit IP address.÷ŠĄWqŒWQ p€M€€‚€€7€€7€€‚‚€€€€€€€€‚ÿC.6 Why do Naming.bind and Naming.lookup take an extraordinarily long time on Microsoft Windows platforms?Most likely, your host's networking setup is incorrect. RMI uses the Java API networking classes, in particular java.net.InetAddress, which will cause TCP/IP host name lookups - both host to address mapping and address to hostname mapping (the InetAddress class does this for security reasons). On Microsoft Windows platforms, the lookup functions are performed by the native socket library, so the delays are happening not in RMI, but in the libraries. If your host is set up to use DNS, then it is usually a problem with the DNS server not knowing about the hosts involved in communication, and what you are experiencing are DNS lookup timeouts. Try specifying all the involved hostnames/addresses in the local file \winnt\system32\drivers\etc\hosts or \windows\hosts. The format of a typical host file is:ÿ zˆWpW_ Œ€A€€‚€€‚‚‚€€‚‚‚€€‚‚€€€€€(€çY€‰€‚ÿ IPAddress Machine Namee.g.: 208.2.84.61 homerThis should dramatically cut down the time it takes to make the first lookup.C.7 How do I use RMI on a Windows 95 standalone machine, not connected to the network?To get RMI working on a Windows 95 machine that is not on a network, TCP/IP must be configured. One way to accomplish this is to configure an unused COM port as a dedicated PPP or SLIP connection. Then disable DHCP and manually configure an IP address (e.g. 192.168.1.1). You should then find that from a DOS Shell, you can ping yourself (for example, ping mymachine). You should now be able to run the stock RMI example. ÅqŒWœÁW[ „€‹€€‚€€7€€‚‚€€‚‚€€‚‚çîAlG€‰€çU•y€‰€‚ÿC.8 Why do I get the exception "java.net.SocketExpWœÁWk†Uception: Address already in use" when I try to run the registry?This exception means that the port that the RegistryImpl uses (by default 1099) is already in use. You may have another registry running on your machine and will need to stop it.C.9 How can I use RMI through a firewall?It depends on whether you need to traverse a firewall for outgoing calls or for incoming calls.•\pW1ÄW9 @€¹€€‚€€‚‚‚‚€€‚‚‚‚‚ÿC.10 How can I make outgoing RMI calls through a local firewall?There are three main methods: HTTP tunnelling, SOCKS, and downloaded socket factories. HTTP tunnellingThis well-worn method is popular since it requires almost no setup, and works quite well in firewalled environments which permit you to handle HTTP through a proxy, but disallow regular outbound TCP connections.If RMI fails to make a normal (or SOCKS) connection to the intended server, and it notices that a HTTP proxy server is configured, it will attempt to tunnel RMI requests through that proxy server, one at a time.`'œÁW‘ÆW9 @€O€€‚€(€€(€‚‚€€‚ÿThere are two forms of HTTP tunnelling, tried in order. The first is http-to-port; the second is http-to-cgi.In http-to-port tunneling, RMI attempts a HTTP POST request to a http: URL directed at the exact hostname and port number of the target server. The HTTP request contains a single RMI request. If the HTTP proxy accepts this URL, it will forward the POST request to the listening RMI server, which will recognize the request and unwrap it. The result of the call is wrapped in a HTTP reply, which is returned through the same proxy.Ž<1ÄWÊWR r€y€€‚€€/€€/€€(€€(€€€€(€€€‚ÿOften, HTTP proxies will refuse to proxy requests to unusual port numbers. In this case, RMI will fall back to http-to-cgi tunneling. The RMI request is encapsulated in a HTTP POST request as before, but the request URL is of the form http://hostname:80/cgi-bin/java-rmi.cgi?port=n (where hostname and n are the hostname and port number of the intended server). There must be a HTTP server listening on port 80 on the server host, which will run the java-rmi.cgi script (supplied with the JDK), which will in turn forward the request to an RMI server listening on port n. RMI can unwrap a HTTP-tunneled request without help from a http server, CGI script, or any other external entity. So, if the client's HTTP proxy can connect directly to the server's port, then you don't need a java-rmi.cgi script at all.,ÿ‘ÆWKÌW- (€ÿ€€‚€€‚‚‚ÿTo trigger the use of HTTP tunneling, the standard system property http.proxyHost must be set to the hostname of the local HTTP proxy. (There are reports that some Navigator versions do not set this property.)The major disadvantage of HTTP tunneling is that it does not permit inward calls or multiplexed connections. A secondary disadvantage is that the http-to-cgi method opens a dramatic security hole on the server side, since without modification it will redirect any incoming request to any port. QÞÊWœÎWs Ž€œ€€‚€€‚‚€(Ì%EF("http://www.socks.nec.com/",`',1)€-‰€€€€€‚‚€€‚ÿSOCKSThe default implementation of sockets in the JDK will use a SOCKS server if available and configured. The system property socksProxyHost must have been set to the hostname of the SOCKS server; if the port number of the SOCKS server is not 1080, it must be specified in the socksProxyPort property.This approach would appear to be the most generally useful solution. As yet, ServerSockets do not use SOCKS, so incoming calls must use another mechanism. n3KÌWX; D€g€€‚€€‚‚睗Y€‰€‚‚‚ÿDownloaded socket factoriesThis is an innovation in the Java 2 SDK, allowing the server to specify the socket factory that the clients must use. The clients must be running Java 2 SDK, Standard Edition, v1.2 or later. See the tutorial Using a Custom RMI Socket Factory for details.The œÎWXk†Udisadvantage of this approach is that the traversal of the firewall must be done by code provided by the RMI server side, which does not necessarily know how that traversal must be done, nor does it automatically have sufficient privilege to traverse the firewall.ð§œÎWXI `€O€€‚€€‚‚‚‚€€‚‚€€€€€€‚ÿC.11 How can I receive incoming RMI calls through a local firewall?There are three main methods: known ports, transport-level bridges, and application-level proxies. Known PortsIf the exported objects are all exported on a known port on a known host, then that host and port can be explicitly permitted at the firewall. Normally, RMI asks for port 0 (which is code for "any port"). In the Java 2 SDK, there is an extra argument to the exportObject method to specify the exact port number. In JDK v1.1, the server must subclass the RMISocketFactory and intercept requests to createServerSocket(0), replacing it with a request to bind to a specific port number.CXIX/ ,€)€€‚‚‚€€‚‚‚ÿThis approach has the disadvantage that it requires the assistance of the network administrator responsible for the local firewall. If the exported object is being run in a different location (because code was downloaded to that site), then the local firewall may be run by network administrators who don't know who you are. Transport-level bridgesA transport-level bridge is a program that reads bytes from one TCP connection and writes them to another (and vice versa) without knowing or caring what the bytes represent.˜kXáX- (€×€€‚‚‚€€‚ÿThe idea here is to export objects in such a way that anyone outside the firewall who wants to call remote methods on that object instead contacts a different port (perhaps on a different machine). That different port has a running program which makes a second connection to the real server and then pumps bytes each way.The tricky part is convincing the client to connect to the bridge. A downloadable socket factory (Java 2 SDK, v1.2 or later) can do this efficiently; otherwise, it is possible to set the java.rmi.server.hostname property to name the bridge host and arrange for port numbers to be the same. »ŽIXœ X- (€€€‚€€‚‚‚ÿApplication-level proxiesThis approach is quite a bit of work, but leads to a very secure arrangement. A proxy program runs on a firewall host (one which can be accessed from outside as well as inside). When an internal server intends to make an exported object available to the world, it contacts the proxy server and gives it a remote reference. The proxy server creates a proxy object (a new remote object residing in the proxy server) which implements the same remote interfaces as the original. The proxy server returns a remote reference for the new proxy object to the internal server, which communicates it to the outside world (somehow).,ýáXÈ X/ ,€û€€‚‚‚‚‚€€‚ÿWhen an outsider makes a call on the proxy, the proxy immediately forwards the call to its original object on the internal server. The use of the proxy is transparent to the outsider (but not to the internal server, who has to decide whether to pass the original reference or the proxy reference when talking to anyone).Needless to say, this requires considerable setup and the cooperation of the local network administrators.C.12 So what do I have to do to get RMI to operate through two firewalls?g.œ X;@X9 @€]€€‚‚‚€(€€€€(€‚ÿFirst of all, what cooperation can you expect from the client-side firewall?In the most pessimistic case, the client-side firewall allows no direct TCP connections and has only a HTTP proxy server so that firewalled clients can "surf the web". In this case, your server host will receive connections at port 80 containing RMI requests embedded in HTTP requests. You can use a HTTP server with the java-rmi.cgi program, or you can run the RMI server directly on port 80. Either way, the server cannot usÈ X;@Xk†Ue callback objects exported by the clients..Y1È X”AX( €c€€‚‚‚‚‚ÿA more optimistic case is that the client can make direct connections to the server but cannot receive incoming connections from the server. In this case, callback objects are not normally possible either.The most conservative approach, assuming no help from the client firewall administrators, is:՞;@XiBX7 <€=€ä€€‚€€‚€€‚‚ÿ· Avoid using callback objects· Run your servers on `public' ports such as 80, 81, 8001, or 443· If the servers are not running on port 80, either:Û˜”AXDDXC T€1€ɀ€€€€‚€€€€€€‚‚ÿ· Put a CGI-capable HTTP server on port 80 using the java-rmi.cgi script; or· Run a port redirector (such as DeleGate) on port 80, which will accept connections and immediately connect to the real server port to pass bytes back and forth. This will cause getClientHost() to return misleading information, so don't make the Registry available through this method unless it's on a different host./ÚiBXsFXU x€µ€€€7€€‚‚çI·˜Y€‰€€€‚‚€€çîAlG€‰€‚ÿC.13 Is it possible to replace the java-rmi.cgi script that comes with the JDK distribution with a servlet?We've provided an example that demonstrates how to implement the java-rmi.cgi script using a servlet. The example also explains how to run a remote object inside a servlet VM.Note: If you do not understand the role that java-rmi.cgi plays in tunnelling remote method calls over HTTP, please see the FAQ question regarding HTTP tunnelling in RMI.ÿDDXrJX€ ΀ÿ€€‚€€‚‚‚‚€€‚‚€(çòœ—Y€‰€‚‚€€‚‚ï0ù“YJdk14doc.3.hlp€‰€€€€€€€‚ÿD.1 Is there a way to get automatic notification as soon as a remote VM fails?Not at this time.D.2 From within a virtual machine, can a new virtual machine be spawned on a remote machine?The Java 2 SDK includes object activation, and there are several tutorials explaining how to use it.D.3 Is it possible for a remote object to be notified when all clients disconnect?Yes. Your remote object will need to implement the java.rmi.server.Unreferenced interface (in addition to any other necessary interfaces). RMI will provide the notification by calling the unreferenced method when all clients disconnect. Your implementation of the unreferenced method will determine what action your remote object should take upon receiving such a notification. However, if there is a reference in the registry, then the Unreferenced.unreferenced method will never be called.ŠysFXKX- *€ò€€‚€€‚‚‚‚ÿD.4 Why doesn't my server program exit when all clients disconnect?In RMI, a server VM should exit if there are ¬}rJXÄKX/ .€ú€ä€€‚€€‚‚ÿ· No outstanding client-held references to the remote objects in VM, and · No non-daemon threads executing in the VM.yMKXI€X, &€›€€€€‚‚‚ÿHowever, just because there are no local or remote references to a remote object does not mean the object will be garbage collected in a timely fashion. It does mean that the remote object's memory can be collected to satisfy a memory allocation that would otherwise fail (with an OutOfMemoryError).Although the Java API does not specify the timeliness of collection anyway, there is a particular reason for the what can seem like indefinitely delayed collection of remote objects in the JDK v1.1 implementation. Under the covers, the RMI runtime holds a weak reference to exported remote objects in a table (to keep track of local as well as remote references to the object). The only weak reference mechanism available in the JDK v1.1 VM uses a non-aggressive, caching collection policy (well-suited for a browser), so objects that are only "weakly reachable" will not get collected until the local GC decides that it really needs that memory to satisfy another allocation. For an idle server, this could never happen. But if memory ÄKXI€Xk†Uis needed, an unreferenced server object will be collected.-æÄKXv†XG \€Í €€‚‚‚€€7€€‚‚€(€€€€€‚ÿThe Java 2 platform includes a new infrastructure that RMI will use to reduce significantly the number of conditions under which this problem occurs.D.5 How does the distributed garbage collector detect a client that disconnects? Is it advisable to use System.exit for graceful client termination?When the RMI runtime in a client VM detects that a remote object is no longer referenced locally, it asynchronously notifies the server relatively quickly so that the server can update the object's referenced set accordingly. The distributed garbage collector uses a lease associated with each client-held remote object reference, and renews leases to remote objects while the client still holds such references. The purpose of the lease renewal mechanism is to allow the server to detect the abnormal termination of clients, so that a server does not hold on to a remote object forever because of a client that was not able to send the appropriate "unreferenced" message before it stopped running. In this context, a client invoking System.exit() is considered abnormal termination, because it does not allow the RMI runtime to send the appropriate "unreferenced" messages to the server. Executing System.runFinalizersOnExit in the client before termination is not sufficient, because not all of the necessary processing is handled in a finalizer; i.e. the "unreferenced" message will not get sent to the server. (Using "runFinalizersOnExit" is generally ill-advised and deadlock-prone anyway.)3÷I€X©ˆX< F€ï€€‚€€‚‚€€‚€€‚ÿIf you need to use System.exit() to terminate a client VM, to ensure that remote references held in that VM are cleaned up in a more timely fashion, you should make sure that there are no remote references still reachable. Explicitly null any local references to make them unreachable from running threads. It also may help to run a full garbage collection and to run finalizers before exiting: System.gc(); System.runFinalization();D.6 How can my server tell when a client crashes?™Zv†XB‹X? L€µ€€‚€€‚‚€€€€€€‚ÿIf you wait for the client's lease to run out, and the unreferenced() method will then be called by the RMI implementation (remember that the registry is also a client for this purpose, since it holds references for all its bindings).If a client is holding a remote reference, it also holds a lease for that reference, which must be renewed (by contacting the server and making a dirty() call). When the final lease for an exported object has expired or closed, the object is considered unreferenced, and (if it implements java.rmi.Unreferenced) its unreferenced() method will be invoked. Ê©ˆXKX? L€•€€‚€€€€‚‚€€7€€‚ÿIf two or more clients have references to the same remote object, the unreferenced() method will not be called until all of them have expired their leases on it. Consequently, if you are using this technique to track individual clients, each client must have a reference to its own Unreferenced object.D.7 The unreferenced() method doesn't get called until ten minutes after I have stopped using the remote object! How can I shorten this delay?ä­B‹X;ÀX7 <€[€€‚€€‚‚€€‚‚‚‚ÿThe lease expiration time is specified by the server, where it can be set using a system property, java.rmi.dgc.leaseValue, whose value is in milliseconds. To set this to a shorter time (for example: 30 seconds), start the server like this: java -Djava.rmi.dgc.leaseValue=30000 ServerMainThe default value is 600000 milliseconds (or 10 minutes).The client will renew each lease when it is halfway expired. If the lease interval is too short, the client will waste a lot of network bandwidth needlessly renewing its lease. If the lease interval is much too short, the client will be unable to renew the lease in time, and thKX;ÀXk†Ue exported object may be deleted as a result.ÍšKXÃX3 4€5€€‚‚‚€€€€‚ÿFuture releases of RMI may invalidate remote references if they fail to renew their leases (in order to preserve referential integrity); you should not rely on being able to use stale references to remote objects.Note that you'll only have to wait for the timeout if the client machine crashes. If the client has some control when the disconnect occurs, it can send out the DGC clean call quickly, making the use of Unreferenced quite timely. You can help this process along by nulling out any references the client may have to the remote object and then calling System.gc(). (In v1.1.x, you may have to run finalizers synchronously and then run GC again.)Æ—;ÀXÎÅX/ ,€/€€‚€€‚‚‚‚‚ÿD.8 Why can't I get an immediate notification when a client crashes?Because nothing the server does can distinguish a crashed host from a network delay.If or when the crashed client later restarts and contacts the server, the server can infer that the client has lost its state. If a TCP connection is held open between the client and the server throughout their interaction, then the server can detect the client reboot when a later attempt to write to the connection fails (including the hourly TCP keepalive packet, if enabled). However, RMI is designed not to require such permanent connections, as it impairs scalability and doesn't help very much. ãÃXØÇX' €Ç€€‚‚‚‚ÿGiven that it is absolutely impossible to instantly determine when a network peer crashes or becomes otherwise unavailable, you must decide how your application should behave when a peer stops responding.The major tools you have for this task are timeouts and resets. After a timeout, you may conclude that a peer is unreachable, but the peer must be aware of the timeout so that it gives up trying to reach you. The leasing mechanism is designed to do this semi-automatically.‡`ÎÅX_ËX' €Á€€‚‚‚‚ÿA reset is a purge of existing state held for a peer. For example, a client may cause a reset when it first registers with its server, causing the server to discard any previous state held for that client (having deduced that the client has restarted without memory of the previous, dead, session).Frequently, the aim is to have and maintain a definitive list of clients at the server, and to keep it up-to-date without error or failure. Since failure and delay can happen at any time in a networked system, some degree of error in the list must be anticipated. If a lease or other mechanism is used to enforce a timeout, then the problem of resource leakage is solved. If the problem of stale data is more serious -- that is, if it would interfere with correct operation -- then it must be explicitly purged in cases where it would otherwise have an effect. ÖØÇXhÍX3 4€­€€‚‚‚€€7€€‚ÿFor example, if a business object is locked for editing by a human, and the session dies, then the lock must be broken somehow. In this case, the lock would need a timeout, but if the same human logs in immediately and expects not to have to wait for the timeout to expire, the new session must either take over the lock or assert that the user holds no locks (allowing the server to safely kill the lock).D.9 How do I run the rmic command in a DOS batch file?+å_ËX“ÏXF Z€Ë€€‚€€‚‚€€‚€€‚‚€€‚ÿIn a DOS batch file, you have to insert the command call before the executable in order for control to return to the batch file. For example: call rmic ClientHandler call rmic Server call rmic ServerHandler call rmic ClientD.10 In a remote object implementation, how can I find the host name of the caller of a remote method?The java.rmi.server.RemoteServer.getClientHost method returns the client host for the current invocation on the current thread.©ehÍXHYD V€Ë€€‚€€‚‚€(çF=y €‚‚€€‚ÿD.11 Does RMI handle "out" and "inout"“ÏXHYk†U parameters (like CORBA)?RMI does not support "out" or "inout" parameters, just like the rest of the core Java programming language. All remote calls are methods of a remote object. Local objects are passed by copy and remote objects are passed by reference to a stub. For more details, see Parameter Passing in Remote Method Invocation in the RMI Specification.D.12 Normally in the Java programming language, it is possible to cast an interface instance to an instance of the class from which it was created and use the result. Why doesn't this work in RMI?ò“ÏXaY' €å€€‚‚‚‚ÿIn RMI the client sees only a stub for the original object. The stub implements only the remote interfaces and their remote methods and cannot be cast back to the original implementation class because it's just a stub.So, you cannot pass a remote object reference from a server to a client, and then send it back to the server and be able to cast it back to the original implementation class. You can, though, use the remote object reference on the server to make a remote call to the object.<«HYY‘ ð€W€€‚‚‚€€‚‚Ì0EF("http://java.sun.com/products/plugin/",`',1)€‰€‚‚€€‚‚€€€€€€€€€€‚ÿIf you need to find the implementation class again, you'll need to keep a table that maps the remote reference to the implementation class.E.1 What if my browser does not support the JDK or J2SE version I need?Try using the Java Plug-in for browsers that do not support the JDK or J2SE version you need.E.2 Can I implement remote observer/observable objects in RMI?What you can do is "wrap" java.util.Observable and java.util.Observer with new interfaces (you could call them RemoteObservable and RemoteObserver). In these new interfaces, make each of the methods throw java.rmi.RemoteException. Then, your remote objects can implement these interfaces.%ÎaY YW |€€€‚€€€€€€€€€€€€€€‚‚€€‚ÿNote that since the "wrapped" non-remote object does not extend java.rmi.server.UnicastRemoteObject, you will need to explicitly export the object using the exportObject method of UnicastRemoteObject. In doing this though, you lose the java.rmi.server.RemoteObject implementations of the equals, hashCode, and toString methods.F.1 At what point is there a "live" connection between the client and the server and how are connections managed?.Yð Y+ $€€€‚€€‚ÿWhen a client does a "lookup" operation, a connection is made to the rmiregistry on the specified host. In general, a new connection may or may not be created for a remote call. Connections are cached by the RMI transport for future use, so if a connection is free to the right destination for a remote call, then it is used. A client cannot explicitly close a connection to a server, since connections are managed at the RMI transport level. Connections will time out if they are unused for a period of time.t. YdYF Z€]€€‚€€‚‚‚‚€€‚‚€(睗Y€‰€‚ÿF.2 Does the Java platform replace all remote objects with their stubs during a remote method invocation?The JRMP and RMI-IIOP implementations will replace each remote object with a corresponding stub (of the same protocol), even deep inside graphs of serializable objects.F.3 Is it possible to write a new transport layer for RMI which does not use sockets? As a follow-up question, how about a transport layer that uses non-TCP-based sockets?We have designed the transport interfaces so that different implementations of these interfaces can be used by RMI. In earlier releases, this abstraction was used for our purposes and was not exposed for general use. Now, in the Java 2 SDK, RMI supports client and server socket factories that can be used to make RMI calls over non-TCP-based sockets.Cð Y³AY; D€€€‚€€7€€‚‚‚‚€€‚ÿF.4 I notice the registry continues to use CPU resources, as if it were polling rather than bldY³AYk†Uocking on a select() call. Is the registry implemented by polling?RMI does not poll on select calls. There is a thread that wakes up every so often and polls the table of exported remote objects. This "reap" thread is used for the purposes of the distributed garbage collector.F.5 Is there only one socket connection between a client process and the server, no matter how many stubs exist in that client process?. dYáCY% €€€‚‚ÿRMI reuses the socket connections between client and server whenever possible. The current implementation creates additional sockets on demand when they are needed. For example, if the existing socket is in use by a call then a new socket is created for the new call. Typically, there are at least two sockets open since the distributed garbage collector needs to make remote calls when remote objects are returned from the server. If a cached connection remains unused for a period of time, the connection is closed.}F³AY^GY7 <€€€‚€€‚‚‚‚€€‚‚‚ÿG.1 What are the licensing issues surrounding the use of RMI?Java RMI is part of the J2SE platform and as such is subject to the licensing terms of J2SE.G.2 I have a single-threaded program that waits on standard input for a user command which will initiate an RMI call. However, my remote object cannot service this incoming remote call as the program appears to be blocked on standard input. What's the problem?This is a known problem, not with RMI, but with the thread that reads standard input. The thread does not yield on the blocking read, but instead stays running, hardly letting the listener get any cycles. We have tried two workarounds that seem successful: set the main thread (the one reading standard input) to a lower priority, or yield while bytes are not available in the stream before actually reading it.¢eáCYJY= H€Ë€€‚€€‚‚‚‚€€‚‚€(€‚ÿG.3 I am copying array elements to my remote server and changing the values, but the incremented values are not copied back to the client. Why?Non-remote objects are passed by copy, so if you want to have the new values of the array reflected in the client, you will have to send them back as a return argument.G.4 Am I allowed to have static fields in a remote interface?Yes. An initializer is run in each VM that loads the remote interface, creating a new static variable with the specified values. So, you have a separate copy of this static variable in each VM that loads the remote interface.4ù^GY4LY; D€ó€€‚€€‚‚€€‚‚€€‚ÿG.5 I locate the registry, but then it seems that it's not there, what's happening?The method LocateRegistry.getRegistry(String host) does not contact the registry on the host, but rather just looks up the host to make sure it exists. So, even though this method succeeded, this does not necessarily mean that a registry is running on the specified host. It just returns a stub that can then access the registry.G.6 I can't find the answer to my question here, are there any other resources?-ŠJYaNY‡ ܀M€€‚Ì@EF("http://archives.java.sun.com/archives/rmi-users.html",`',1)€‰€‚‚€€‚‚€€‚€€‚ÿA vast amount of information can be found from the hypermail archive of the RMI-USERS mailing list.Users of both RMI and object serialization can discuss issues and tips with other users via the mailing list rmi-users@java.sun.com. You can subscribe by sending an email message containing the line subscribe RMI-USERSto listserv@java.sun.com, and unsubscribe by sending a message containing the lineQ"4LY²NY/ .€D€€‚€€‚€‚ÿ unsubscribe RMI-USERS*aNYÜNY' €€ ”€ ‚ÿB÷²NY*YK d€ï€€‚€‚€ €‚‚€€7€€7€€‚‚€€‚ÿObject Serialization1.Why must classes implement Serializable in order to be written to an ObjectOutputStream?The decision to require that classes implement the java.io.Serializable interface was notÜNY*Yk†U made lightly. The design called for a balance between the needs of developers and the needs of the system to be able to provide a predictable and safe mechanism. The most difficult design constraint to satisfy was the safety and security of classes for the Java programming language. õÜNYJ„Y+ $€ë€€‚€€‚ÿIf classes were to be marked as being serializable the design team worried that a developer, either out of forgetfulness, laziness, or ignorance might not declare a class as being Serializable and then make that class useless for RMI or for purposes of persistence. We worried that the requirement would place on a developer the burden of knowing how a class was to be used by others in the future, an essentially unknowable condition. Indeed, our preliminary design, as reflected in the alpha API, concluded that the default case for a class ought to be that the objects in the class be serializable. We changed our design only after considerations of security and correctness convinced us that the default had to be that an object not be serialized.Y**Y£ˆY/ ,€U€€‚€€‚‚‚‚‚ÿSecurity restrictionsThe first consideration that caused us to change the default behavior of objects had to do with security, and in particular in the privacy of fields declared to be private, package protected, or protected. The Java platform restricts access to such fields for either read or write to a subset of the objects within the runtime.No such restriction can be made on an object once it has been serialized; the stream of bytes that is the result of object serialization can be read and altered by any object that has access to that stream. This allows any object access to the state of a serialized object, which can violate the privacy guarantees users of the language expect. Further, the bytes in the stream can be altered in arbitrary ways, allowing the reconstruction of an object that was never created within the protections of a Java platform. There are cases in which the re-creation of such an object could compromise not only the privacy guarantees expected by users of the Java platform, but the integrity of the platform itself.*J„Y͋Y% € €€‚‚ÿThese violations cannot be guarded against, since the whole idea of serialization is to allow an object to be converted into a form that can be moved outside of the Java platform (and therefore outside of the privacy and integrity guarantees of that environment) and then be brought back into the environment. Requiring objects to be declared serializable does mean that the class designer must make an active decision to allow the possibility of such a breach in privacy or integrity. A developer who does not know about serialization should not be open to compromise because of this lack of knowledge. In addition, we would hope that the developer who declares a class to be serializable does so after some thought about the possible consequences of that declaration.)£ˆYöŽY% € €€‚‚ÿNote that this sort of security problem is not one that can be dealt with by the mechanism of a security manager. Since serialization is intended to allow the transport of an object from one virtual machine to some other (either over space, as it is used in RMI, or over time, as when the stream is saved to a file), the mechanisms used for security need to be independent of the runtime environment of any particular virtual machine. We wanted to avoid as much as possible the problem of being able to serialize an object in one virtual machine and not being able to deserialize that object in some other virtual machine. Since the security manager is part of the runtime environment, using the security manager for serialization would have violated this requirement.;͋Y=ÁY- (€€€‚€€‚‚‚ÿForcing a conscious decisionWhile security concerns were the first reason for considering the design change, a reason that we feel is at least as convincing is that serialization should only be added to a class afteöŽY=ÁYk†Ur some design consideration. It is far too easy to design a class that falls apart under serialization and re-construction. By requiring a class designer to declare support for the serialization interface, we hoped that the designer would also give some thought to the process of serializing that class.<ÿöŽYyÄY= H€ÿ€€‚€€€€€€€€‚ÿExamples are easy to cite. Many classes deal with information that only makes sense in the context of the runtime in which the particular object exists; examples of such information include file handles, open socket connections, security information, etc. Such data can be dealt with easily by simply declaring the fields as transient, but such a declaration is only necessary if the object is going to be serialized. A novice (or forgetful, or hurried) programmer might neglect to mark fields as transient in much the same way he or she might neglect to mark the class as implementing the Serializable interface. Such a case should not lead to incorrect behavior; the way to avoid this is to not serialize objects not marked as implementing Serializable.#ð=ÁYœÈY3 4€á€€‚‚‚€€€€‚ÿAnother example of this sort is the "simple" object that is the root of a graph that spans a large number of objects. Serializing such an object could result in serializing lots of others, since serialization works over an entire graph. Doing something like this should be a conscious decision, not one that happens by default.The need for this sort of thought was brought home to us in the group when we were going through the base Java API class libraries, marking the system classes as serializable (where appropriate). We had originally thought that this would be a fairly simple process, and that most of the system classes could just be marked as implementing Serializable and then use the default implementation with no other changes. What we found was that this was far less often the case than we had suspected. In a large number of the classes, careful thought had to be given to whether or not a field should be marked as transient or whether it made sense to serialize the class at all.5 yÄYÑÊY+ $€€€‚€€‚ÿOf course, there is no way to guarantee that a programmer or class designer is actually going to think about these issues when marking a class as serializable. However, by requiring the class to declare itself as implementing the Serializable interface we do require that some thought be given by the programmer. Having serialization be the default state of an object would mean that lack of thought could cause bad effects in a program, something that the overall design of the Java platform has attempted to avoid.Å‚œÈY–ÍYC T€€€‚€€‚‚€(€/€(€‚‚€€‚‚‚ÿ2.Which JDK v1.1 system classes are marked serializable?Removed. This information is readily available from the API documentation generated by the javadoc tool.3.I am having problems deserializing JDK v1.0.2 AWT components. How can I make this work?When you serialize AWT widgets, also serialized are the Peer objects that map the AWT functions to the local window system. When you deserialize (reconstitute) the AWT widgets, the old Peers are re-created, but they are out of date. Peers are native to the local window system and contain pointers to data structures in the local address space, and therefore cannot be moved.áÑÊY°ÏY9 @€Ã€€‚€€‚‚€€€€‚ÿAs a work around, you should first remove the top-level widget from its container (so the widgets are no longer "live"). The peers are discarded at this point and you will save only the AWT widget state. When you later deserialize and read the widgets back in, add the top level widget to the frame to make the AWT widgets appear. You may need to add a show call.In JDK v1.1 and later, AWT widgets are serializable. The java.awt.Component class implements Serializable.ÌŽ–ÍYˆZ> J€€€‚€€‚‚‚‚€(睗Y€‰€‚ÿ4.Does object s°ÏYˆZk†Uerialization support encryption?Object serialization does not contain any encryption/decryption in itself. It writes to and reads from standard streams in the Java API, so it can be coupled with any available encryption technology. Object serialization can be used in many different ways. Other than just writing and reading to and from files, it can also be used for RMI to communicate between hosts.RMI's use of serialization leaves encryption and decryption to the lower network transport. We expect that when a secure channel is needed the network connections will be made using SSL or the like (see Using RMI with SSL).{4°ÏYZG \€i€€‚€€‚‚‚‚€€€€€€€€‚ÿ5.The object serialization classes are stream oriented. How do I write objects to a random-access file?Currently there is no direct way to write objects to a random-access file.You can use ByteArrayInputStream and ByteArrayOutputStream objects as intermediate places to write and read bytes to and from the random access file and create ObjectInputStreams and ObjectOutputStreams from the byte streams to transport the objects. You just have to make sure that you have the entire object in the byte stream or reading/writing the object will fail.'âˆZ*ZE X€Å€€‚€€€€€€€€‚‚€€‚ÿFor example, java.io.ByteArrayOutputStream can be used to receive the bytes of ObjectOutputStream. From it you can get a result in the form of a byte array. That in turn can be used with ByteArrayInputStream as input to an ObjectInput stream.6.When a local object is serialized and passed as a parameter in an RMI call, are the bytecodes for the local object's methods also passed? What about object coherency, if the remote VM application "keeps" the object handle?—dZÁ Z3 4€É€€‚€€€€‚‚‚ÿThe bytecodes for a local object's methods are not passed directly in the ObjectOutputStream, but the object's class may need to be loaded by the receiver if the class is not already available locally. The class files themselves are not serialized, just the names of the classes. All classes must be able to be loaded during deserialization using the normal class loading mechanisms. For applets, this means they are loaded by the AppletClassLoader.There are no coherency guarantees for local objects passed to a remote VM since such objects are passed by copying their contents (a true pass-by-value).±*ZÕ Zc ”€c€€‚€€7€€7€€‚‚€€€€€€€€€€€€€€‚ÿ7.How can I create an ObjectInputStream from an ObjectOutputStream without a file in between?ObjectOutputStream and ObjectInputStream work to/from any stream object. You could use a ByteArrayOutputStream and then get the array and insert it into a ByteArrayInputStream. You could also use the piped stream classes as well. Any java.io class that extends the OutputStream and InputStream classes can be used.p%Á ZEZK d€K€€‚€€7€€7€€7€€‚‚€€€€‚ÿ8.I create an object and then send it across the net using the writeObject method and receive it using the readObject method. If I then change the value of a field in the object and send it as before, the object that the readObject method returns appears to be the same as the first object and does not reflect the new value of the field. Should I be experiencing this behavior?The ObjectOutputStream class keeps track of each object it serializes and sends only the handle if that object is seen again. This is the way it deals with graphs of objects. The corresponding ObjectInputStream keeps track of all of the objects it has created and their handles so when the handle is seen again it can return the same object. Both output and input streams keep this state until they are freed.›`Õ ZìAZ; D€Á€€‚€€€€‚‚€€‚‚‚ÿAlternatively, the ObjectOutputStream class implements a reset method that discards the memory of having sent an object, sEZìAZk†Uo sending an object again will make a copy.9.Are there any plans to support the serialization of thread objects?Threads will NOT be serializable. In the present implementation, if you attempt to serialize and then deserialize a thread, there is NO explicit allocation of a new native thread or stack; all that happens is that the object is allocated system resources with none of the native implementation. In short, it just won't work and will fail in unpredictable ways.V1EZBDZ% €c€€‚‚ÿThe difficulty with threads is that they have so much state which is intricately tied into the virtual machine that it is difficult or impossible to re-establish the context somewhere else. For example, saving the VM call stack is insufficient because if there were native methods that had called C procedures that in turn called code for the Java platform, there would be an incredible mix of Java programming language constructs and C pointers to deal with. Also, serializing the stack would imply serializing any object reachable from any stack variable.9ìAZ{FZ5 8€ €€‚‚‚€€‚‚€€‚ÿIf a thread were resumed in the same VM, it would be sharing a lot of state with the original thread, and would therefore fail in unpredictable ways if both threads were running at once, just like two C threads trying to share a stack. When deserialized in a separate VM, it's hard to tell what might happen.10.Can I compute diff(serial(x),serial(y))?The diff will produce the same stream each time the same object is serialized. You will need to create a new ObjectOutputStream to serialize each object.µlBDZ0IZI `€Ù€€‚€€‚‚€€€€€€‚‚€€‚‚‚ÿ11.Can I compress the serial representation of my objects using my own zip and unzip methods?ObjectOutputStream produces an OutputStream; if your zip object extends the OutputStream class there is no problem compressing it.12.Can I execute methods on compressed versions of my objects, for example isempty(zip(serial(x)))?This is not really viable for arbitrary objects because of the encoding of objects. For a particular object (such as a String) you can compare the resulting bit streams. The encoding is stable, in that every time the same object is encoded it is encoded to the same set of bits.fñ{FZ¢Zu ž€ã€€‚€€‚‚€(€‚‚€€‚‚‚‚€€‚ÿ13.If I try to serialize a font or image object and then try to reconstitute it in a different VM, my application dies. Why?Removed. Fonts are now serializable, but images are not.14.How do I serialize a tree of objects?Here's a brief example that shows how to serialize a tree of objects.import java.io.*;class tree implements java.io.Serializable { public tree left; public tree right; public int id; public int level; private static int count = 0; public tree(int depth) { id = count++; level = depth; if (depth > 0) { left = new tree(depth-1); right = new tree(depth-1); } } public void print(int levels) { for (int i = 0; i < level; i++) System.out.print(" "); System.out.println("node " + id); if (level <= levels && left != null) left.print(levels); if (level <= levels && right != null) right.print(levels); } public static void main (String argv[]) { try { /* Create a file to write the serialized tree to. */ FileOutputStream ostream = new FileOutputStream("tree.tmp"); /* Create the output stream */ ObjectOutputStream p = new ObjectOutputStream(ostream); /* Create a tree with three levels. */ tree base = new tree(3); p.writeObject(base); // Write the tree to the stream. p.flush(); ostream.close(); // close the file. /* Open the file and set to read objects from it. */ Fil0IZ¢Zk†UeInputStream istream = new FileInputStream("tree.tmp"); ObjectInputStream q = new ObjectInputStream(istream); /* Read a tree object, and all the subtrees */ tree new_tree = (tree)q.readObject(); new_tree.print(3); // Print out the top 3 levels of the tree } catch (Exception ex) { ex.printStackTrace(); } }}<õ0IZރZG \€ë€€€7€€7€€‚‚€€€€€€‚ÿ15.If class A does not implement Serializable but a subclass B implements Serializable, will the fields of class A be serialized when B is serialized?Only the fields of Serializable objects are written out and restored. The object may be restored only if class A has a no-arg constructor that will initialize the fields of non-serializable supertypes. If the subclass has access to the state of the superclass it can implement writeObject and readObject to save and restore that state.&¢Z„Z# €€€‚ÿ*ރZ.„Z' €€ ”€ ‚ÿ&„ZT„Z# €€€‚ÿˆ.„Zs…Z—#ü€Åû€€€‚ÿ€€ÿ¢€€€€€€€€Ì(EF("mailto:listserv@javasoft.com",`',1)€ ‰€‚ÿÿÿTalk with RMI developers via the mailing list RMI-USERSTo subscribe, send subscribe rmi-users to listserv@javasoft.com&T„Z™…Z# €€€‚ÿ1s…ZʅZ1Uÿÿÿÿÿÿÿÿ?ÿÿÿÿʅZî…Z$™…Zî…Z" €€€ ÿJʅZ8†Z16€È«º@8†Z{†ZD]Getting Started Using RMICî…Z{†Z& €:€€€‚ÿGetting Started Using RMIE8†ZÀ†Z' €<€€%€‚‚ÿGetting Started Using RMI&{†Zæ†Z# €€€‚ÿ*À†Z‡Z' €€ ”€ ‚ÿMÂæ†Z]‰Z‹ 䀅€€‚€‚çñœ—Y€‰€Ì@EF("http://archives.java.sun.com/archives/rmi-users.html",`',1)€-‰€çù£—Y€‰€‚ÿThis tutorial shows you the steps to follow to create a distributed version of the classic Hello World program using Java Remote Method Invocation (RMI). While you work through this example, you will probably come up with a number of related questions. You may find the answers in the RMI FAQ, or you may wish to look in the email archives of the rmi-users alias. If you'd like to subscribe to the rmi-users email alias, click here.9‡Z–ŠZ( €#€€‚‚‚‚‚ÿThe distributed Hello World example uses an applet to make a remote method call to an RMI server, running on the host from which the applet was downloaded. When the applet runs, "Hello World!" is displayed on the client browser.This tutorial is organized as follows:Ä]‰ZŠ‹ZL f€‰€ä€çI退‰€‚çi退‰€‚çÆi退‰€‚‚ÿ1. The steps to write the source files and the HTML file2. The steps to compile and deploy class files and the HTML file3. The steps to start the RMI registry, server, and appletO+–ŠZõ‹Z$ €V€€‚‚ÿThe files needed for this tutorial are:Š‹Z…Zw Œ€3€ä€€çŠç怀‰€‚€€çÉçæ€€‰€€€‚€çîæ€€‰€€€‚€€çîæ€€‰€‚‚ÿ· Hello.java - a remote interface · HelloImpl.java - a remote object implementation that implements examples.hello.Hello · HelloApplet.java - an applet that invokes the remote method, sayHello · hello.html - the HTML page that references the appletZõ‹ZZ3 4€µ€€€(€€(€‚‚‚‚ÿNote: For the remainder of this tutorial, the terms "remote object implementation," "object implementation," and "implementation" may be used interchangeably to refer to the class, examples.hello.HelloImpl, which implements a remote interface.For all of the source code used in this tutorial, you may choose from the following formats:ŸE…Z±ZZ „€Š€ä€€çJ·˜Y€‰€‚€€çK·˜Y€‰€‚€€çL·˜Y€‰€‚‚ÿ· getStart.zip · getStart.tar · getStart.tar.Z&Z׏Z# €€€‚ÿ*±Z ÀZ' €€ ”€ ‚ÿ׏Z ÀZî…Z‰L׏Z–ÂZ= H€™€€‚€‚€%€‚‚€€€€‚ÿWrite the Source and HTML filesBecause the Java programming language requires a mapping between the fully-qualified package name of a class and the directory path to that class, you should decide on package and directory names before you begin writing any code written in the Java programming language. This mapping allows the compiler for the Java programming language to know the directory in which to find the class files mentioned in a program. For the programs in this tutorial, the package name is examples.hello and the source directory is $HOME/mysrc/examples/hello.¬p ÀZBÄZ< F€á€€‚‚‚€€‚‚‚€€‚‚‚ÿTo create the directory for your source files in the Solaris operating environment, execute the command: mkdir -p $HOME/mysrc/examples/helloOn Microsoft Windows platforms, you would go to the directory of your choice, and type: mkdir mysrc mkdir mysrc\examples mkdir mysrc\examples\helloThere are three tasks to complete in this section:&ږÂZhÅZL f€µ€ä€çuçæ€€‰€‚çžç怀‰€‚çÛíæ€€‰€‚‚ÿ1. Define the functions of the remote class as an interface written in the Java programming language2. Write the implementation and server classes3. Write a client program that uses the remote serviceŒŒBÄZ$ÇZ0 .€€€ €‚‚€€‚‚ÿDefine the functions of the remote class as an interface written in the Java programming languageIn the Java programming language, a remote object is an instance of a class that implements a Remote interface. Your remote interface will declare each of the methods that you would like to call from other Java virtual machines* (JVMs). Remote interfaces have the following characteristics:-ÙhÅZQÉZT v€³€ä€€€€‚€€€€‚€€€€€€€€‚ÿ· The remote interface must be declared public. Otherwise, a client will get an error when attempting to load a remote object that implements the remote interface, unless that client is in the same package as the remote interface.· The remote interface extends the java.rmi.Remote interface.· Each method must declare java.rmi.RemoteException (or a superclass of RemoteException) in its throws clause, in addition to any application-specific exceptions.A$ÇZ’ÊZA P€€ä€€€(€€(€€€€€‚‚ÿ· The data type of any remote object that is passed as an argument or return value (either directly or embedded within a local object) must be declared as the remote interface type (for example, Hello) not the implementation class (HelloImpl).šþQÉZ,ÎZœ ý€€€€€€‚‚€€‚€€€(ÌJEF("http://research.sun.com/research/techrep/1994/abstract-29.html",`',1)€-‰€‚ÿHere is the interface definition for the remote interface, examples.hello.Hello. The interface contains just one method, sayHello, which returns a string to the caller: package examples.hello; import java.rmi.Remote; import java.rmi.RemoteException; public interface Hello extends Remote { String sayHello() throws RemoteException; }Because remote method invocations can fail in very different ways from local method invocations (due to network-related communication problems and server problems), remote methods will report communication failures by throwing a java.rmi.RemoteException. If you want more information on failure and recovery in distributed systems, you may wish to read A Note on Distributed Computing.™l’ÊZÅÎZ- *€Ø€€‚€ €‚‚‚‚ÿWrite the implementation and server classesAt a minimum, a remote object implementation class must: Å,ÎZ [[ „€‹€ä€€çÊçæ€€‰€‚€€çÙ瀀‰€‚€€çÛ瀀‰€‚‚ÿ· Declare that it implements at least one remote interface· Define the constructor for the remote object· Provide implementations for the methods that can be invoked remotelyÅÎZ [î…Zà›ÅÎZì[E X€7€€€€€€€€‚‚€€€€‚‚ÿA "server" class, in this context, is the class which has a main method that creates an instance of the remote object implementation, and binds that instance to a name in the rmiregistry. The class that contains this main method could be the implementation class itself, or another class entirely.In this example, the main method is part of examples.hello.HelloImpl. The server program needs to:7Ü [#[[ „€¹€ä€€ç瀀‰€‚€€çÂ!瀀‰€‚€€ç9 瀀‰€‚‚ÿ· Create and install a security manager· Create one or more instances of a remote object· Register at least one of the remote objects with the RMI remote object registry, for bootstrapping purposesÄmì[ç[W |€Û €€€€‚‚€€‚ÿAn explanation of each of the preceding six steps follows the source for HelloImpl.java: package examples.hello; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.RMISecurityManager; import java.rmi.server.UnicastRemoteObject; public class HelloImpl extends UnicastRemoteObject implements Hello { public HelloImpl() throws RemoteException { super(); } public String sayHello() { return "Hello World!"; } public static void main(String args[]) { // Create and install a security manager if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); } try { HelloImpl obj = new HelloImpl(); // Bind this object instance to the name "HelloServer" Naming.rebind("//myhost/HelloServer", obj); System.out.println("HelloServer bound in registry"); } catch (Exception e) { System.out.println("HelloImpl err: " + e.getMessage()); e.printStackTrace(); } } }ŸW#[† [H ^€¯€ä€€‚‚€€€€€(€€€€€‚ÿImplement a remote interfaceIn the Java programming language, when a class declares that it implements an interface, a contract is formed between the class and the compiler. By entering into this contract, the class is promising that it will provide method bodies, or definitions, for each of the method signatures declared in that interface. Interface methods are implicitly public and abstract, so if the implementation class doesn't fulfill its contract, it becomes by definition an abstract class, and the compiler will point out this fact if the class was not declared abstract.^ç[ä [O l€€ä€‚€€€€‚‚€€‚€€€€€€‚ÿThe implementation class in this example is examples.hello.HelloImpl. The implementation class declares which remote interface(s) it is implementing. Here is the HelloImpl class declaration: public class HelloImpl extends UnicastRemoteObject implements Hello {As a convenience, the implementation class can extend a remote class, which in this example is java.rmi.server.UnicastRemoteObject. By extending UnicastRemoteObject, the HelloImpl class can be used to create a remote object that:'† [ [$ €€ä€‚ÿ‰Yä [”[0 0€²€ɀ€€‚€€‚‚ÿ· Uses RMI's default sockets-based transport for communication· Runs all the time Ä [«A[G \€‰€ä€çòœ—Y€‰€ç—Y€‰€‚‚€€‚‚‚ÿIf you want a remote object that can be activated (created) when a client requests it, rather than running all the time, after you finish this tutorial, you can take a look at the RMI Activation tutorial. Also, you can learn about how to use your own communication protocol, rather than t”[«A[î…Zhe TCP sockets that RMI uses by default, in the tutorial on Using a Custom RMI Socket Factory.Define the constructor for the remote objectThe constructor for a remote class provides the same functionality as the constructor for a non-remote class: it initializes the variables of each newly created instance of the class, and returns an instance of the class to the program which called the constructor..Ü”[ÙD[R r€¹€ä€‚€€€€‚‚€(€€€€€€€€€‚ÿIn addition, the remote object instance will need to be "exported". Exporting a remote object makes it available to accept incoming remote method requests, by listening for incoming calls to the remote object on an anonymous port. When you extend java.rmi.server.UnicastRemoteObject or java.rmi.activation.Activatable, your class will be exported automatically upon creation.If you choose to extend a remote object from any class other than UnicastRemoteObject or Activatable, you will need to explicitly export the remote object by calling either the UnicastRemoteObject.exportObject method or the Activatable.exportObject method from your class's constructor (or another initialization method, as appropriate).4é«A[ G[K d€Ó€ä€‚€€€(€€€€€‚‚€€‚ÿBecause the object export could potentially throw a java.rmi.RemoteException, you must define a constructor that throws a RemoteException, even if the constructor does nothing else. If you forget the constructor, javac will produce the following error message: HelloImpl.java:13: Exception java.rmi.RemoteException must be caught, or it must be declared in the throws clause of this method. super(); ^ 1 errorrGÙD[G[+ &€Ž€ä€€(€‚‚ÿTo review: The implementation class for a remote object needs to: ¿ G[‹H[M h€€ɀ€€€(€‚€€€(€‚€€€(€€‚‚ÿ· Implement a remote interface· Export the object so that it can accept incoming remote method calls· Declare its constructor(s) to throw at least a java.rmi.RemoteExceptionÞŠG[iI[8 >€M€ä€€€‚‚€€‚‚‚ÿHere is the constructor for the examples.hello.HelloImpl class: public HelloImpl() throws RemoteException { super(); }Note the following:ˆE‹H[ñJ[C T€‹€ɀ€€€€€€‚€€€€‚‚ÿ· The super method call invokes the no-argument constructor of java.rmi.server.UnicastRemoteObject, which exports the remote object.· The constructor must throw java.rmi.RemoteException, because RMI's attempt to export a remote object during construction might fail if communication resources are not available._ÝiI[PM[‚ Ҁ»€ä€€€‚‚ÌCEF("http://java.sun.com/products/jdk/rmi/archives/3490.html",`',1)€0‰€‚‚€€‚ÿIf you are interested in why java.rmi.RemoteException is a checked exception rather than runtime exception, please refer to the archives of the rmi-users email list:http://java.sun.com/products/jdk/rmi/archives/3490.htmlAlthough the call to the superclass's no-argument constructor, super(), occurs by default (even if omitted), it is included in this example to make clear the fact that the Java virtual machine (JVM) constructs the superclass before the class.ÁñJ[u€[X ~€ƒ€ä€‚€€‚‚€€‚‚€€‚€€€€€€€€‚ÿProvide an implementation for each remote methodThe implementation class for a remote object contains the code that implements each of the remote methods specified in the remote interface. For example, here is the implementation for the sayHello method, which returns the string "Hello World!" to the caller: public String sayHello() throws RemoteException { return "Hello World!"; }Arguments to, or return values from, remote methods can be any data type for the Java platform, including objects, as long as those objects implement the interface java.io.Serializable. PM[u€[î…ZMost of the core classes in java.lang and java.util implement the Serializable interface. In RMI:'PM[œ€[$ €€ä€‚ÿ‹u€[ƒ[v º€€ɀ€€€€€€ç³—Y€‰€‚€€î 1²EJdk14doc.hlp€‰€çÜîæ€€€1€‰€‚ÿ· By default, local objects are passed by copy, which means that all data members (or fields) of an object are copied, except those marked as static or transient. Please refer to the Java Object Serialization Specification for information on how to alter the default serialization behavior.· Remote objects are passed by reference. A reference to a remote object is actually a reference to a stub, which is a client-side proxy for the remote object. Stubs are described fully in the Java Remote Method Invocation Specification. We'll create them later in this tutorial in the section: Use rmic to generate stubs and skeletons.(œ€[Ń[% €€ɀ€‚ÿEüƒ[ †[I `€ù€ä€(€‚‚€€‚‚€€€€‚‚€€‚ÿA class can define methods not specified in the remote interface, but those methods can only be invoked within the virtual machine running the service and cannot be invoked remotely.Create and install a security managerThe main method of the server first needs to create and install a security manager: either the RMISecurityManager or one that you have defined yourself. For example:if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager());}~MŃ[ˆ‰[1 0€›€ä€€(€€(€‚ÿA security manager needs to be running so that it can guarantee that the classes that get loaded do not perform operations that they are not allowed to perform. If no security manager is specified no class loading, by RMI clients or servers, is allowed, aside from what can be found in the local CLASSPATH. In this example, a security manager is not installed in the client code because applets use the security manager already installed in the client browser. If the client were an application rather than an applet, however, you would need to use the same procedure as is used above to install a security manager in the client. A security manager is required in any JVM that needs to download code, and RMI clients need to download RMI stubs (as well as any other custom classes or interfaces needed to communicate with the RMI server).m% †[õ‹[H ^€K€ä€‚€€‚‚€€‚‚€€‚‚‚€€‚‚‚ÿCreate one or more instances of a remote objectThe main method of the server needs to create one or more instances of the remote object implementation which provides the service. For example:HelloImpl obj = new HelloImpl();The constructor exports the remote object, which means that once created, the remote object is ready to accept incoming calls.Register the remote objectFor a caller (client, peer, or applet) to be able to invoke a method on a remote object, that caller must first obtain a reference to the remote object.Fˆ‰[;Ž[4 6€%€ä€‚€€€€‚‚‚ÿFor bootstrapping, the RMI system provides a remote object registry that allows you to bind a URL-formatted name of the form "//host/objectname" to the remote object, where objectname is a simple string name.The RMI registry is a simple server-side name service that allows remote clients to get a reference to a remote object. It is typically used only to locate the first remote object an RMI client needs to talk to. Then that first object would in turn provide application-specific support for finding other objects.éõ‹[fÀ[6 :€Ó€ä€‚çðœ—Y€‰€‚‚‚‚‚ÿFor example, the reference can be obtained as a parameter to, or a return value from, another remote method call. For a discussion on how this works, please take a look at Applying the Factory Pattern to RMI.Once a remote object is registered on the server, callers can look up the object by name, obtain a remote object reference, and then remotely invoke methods on the object.For exampl;Ž[fÀ[î…Ze, the following code binds the name "HelloServer" to a reference for the remote object:«w;Ž[Á[4 8€î€ä€‚€€‚‚€€‚‚ÿNaming.rebind("//myhost/HelloServer", obj);Note the following about the arguments to the rebind method call:©zfÀ[ºÁ[/ .€ô€ɀ€€€€‚‚ÿ· The first parameter is a URL-formatted java.lang.String, representing the location and name of the remote object.2Á[GÅ[[ „€e€-€€‚€€€€€€€€‚€€€€€€€€‚ÿ· No protocol needs to be specified in the URL-formatted string.· You will need to change the value of myhost to be the name or IP address of your server machine; otherwise, the remote object host defaults to the current host. For example, "HelloServer" is a valid name string that refers to a remote object bound to the name HelloServer, running on the local host.· Optionally, a port number can be supplied in the URL-formatted string. Specifying the port number is necessary when the registry that needs to be contacted is running on a port other than the default port, 1099. For example, "//myhost:1234/HelloServer" is a valid name string for the HelloServer remote object, reachable through an RMI registry that is running on the host myhost and is listening for incoming calls on port 1234.(ºÁ[oÅ[% €€-€‚ÿâªGÅ[QÇ[8 >€U€ɀ€€‚‚€€€€‚‚ÿ· The second parameter is a reference to the object implementation, on which remote methods will be invoked.· Once an object is exported, the RMI runtime substitutes a reference to the remote object's stub for the actual remote object reference specified by the obj argument. When a client performs a lookup in a server's remote object registry, a serialized instance of the stub for the implementation is returned.&ýoÅ[wÈ[) €û€ä€(€‚‚ÿFor security reasons, an application can bind or unbind only to a registry running on the same host. This prevents a client from removing or overwriting any of the entries in a server's remote registry. A lookup, however, can be done from any host.çQÇ[ŽÉ[0 .€Ï€€ €‚‚€€‚‚ÿWrite a client program that uses the remote serviceThe applet in this example remotely invokes the sayHello method in order to get the string "Hello World!" to display when the applet runs. Here is the code for the applet:m+wÈ[ûÌ[B R€W€ä€€‚ÿpackage examples.hello;import java.applet.Applet;import java.awt.Graphics;import java.rmi.Naming;import java.rmi.RemoteException;public class HelloApplet extends Applet { String message = "blank"; // "obj" is the identifier that we'll use to refer // to the remote object that implements the "Hello" // interface Hello obj = null; public void init() { try { obj = (Hello)Naming.lookup("//" + getCodeBase().getHost() + "/HelloServer"); message = obj.sayHello(); } catch (Exception e) { System.out.println("HelloApplet exception: " + e.getMessage()); e.printStackTrace(); } } public void paint(Graphics g) { g.drawString(message, 25, 50); } }ü¬ŽÉ[÷Î[P n€Y€ä€€€€€€€€€€€€€€€‚‚ÿ1. First, the applet gets a reference to the remote object implementation (advertised as "HelloServer") from the server host's rmiregistry. Like the Naming.rebind method, the Naming.lookup method takes a URL-formatted java.lang.String. In this example, the applet constructs the URL string by using the getCodeBase method in conjunction with the getHost method. Naming.lookup takes care of the following tasks:_ûÌ[b\C T€9€ɀ€€€€‚€€€€€€‚‚ÿ· Constructing a registry stub instance (to contact the server's registry) using the hostname and port number supplied as arguments to Naming.lookup· Using the registry stub to call the remot÷Î[b\î…Ze lookup method on the registry, using the URL's name component ("HelloServer")M÷Î[¯\I `€ €-€€€€‚€€€€€€€€‚‚ÿ· The registry returns the HelloImpl_Stub instance bound to that name· The lookup method receives the remote object's (HelloImpl) stub instance and loads the stub class (examples.hello.HelloImpl_Stub) from the CLASSPATH or the applet's codebasezEb\)\5 :€Š€ɀ€€€€€€‚‚ÿ· Naming.lookup returns the stub to its caller (HelloApplet)T¯\š\+ &€š€ä€€€‚‚ÿ2. The applet invokes the remote sayHello method on the server's remote objectŎ)\m\7 <€€ɀ€€‚€€€€‚‚ÿ· RMI serializes and returns the reply string "Hello World!"· RMI deserializes the string and stores it in a variable named message.®‚š\\, &€€ä€€€‚‚ÿ3. The applet invokes the paint method, causing the string "Hello World!" to be displayed in the drawing area of the applet.Èm\+\H ^€‘€€(€€(€€€(€‚‚‚‚€€‚ÿThe URL-formatted string that is passed as a parameter to the Naming.lookup method must include the server's hostname. Otherwise, the applet's lookup attempt will default to the client, and the AppletSecurityManager will throw an exception because the applet cannot access the local system, but is instead limited to only communicating with the applet's host.Here is the HTML code for the web page that references the Hello World applet: Hello World

Hello World

;\f\$ €.€€‚‚ÿNote the following:!æ+\‡ \; D€Í€ä€€‚€€€€€€‚ÿ· There needs to be an HTTP server running on the machine from which you want to download classes. · The codebase in the HTML file specifies a directory below the directory from which the web page was itself loaded. Using this kind of relative path is usually a good idea. For example, if the codebase directory (where the applet's class files live), referenced by the applet's HTML, was in the directory above the the HTML directory, you would use the relative path, "../". ÷ºf\~ \= H€u€€€€€€€‚‚€€‚ÿ· The applet's code attribute specifies the fully-qualified package name of the applet, in this example examples.hello.HelloApplet:code="examples.hello.HelloApplet" *‡ \š \' €€ ”€ ‚ÿß§~ \‡ \8 >€O€€‚€‚€%€‚‚€€‚‚ÿCompile and Deploy Class Files and HTML FilesThe source code for this example is now complete and the $HOME/mysrc/examples/hello directory has four files:žVš \? \b ’€­€ä€€€€€€‚€€€€€€‚€€€€‚€€€€‚‚ÿ· Hello.java contains the source code for the Hello remote interface· HelloImpl.java contains the source code for the HelloImpl remote object implementation and the RMI server for the applet· HelloApplet.java contains the source code for the applet· hello.html is the web page that references the Hello World applet.‰?‡ \È\J b€€€€€€€€€‚‚€€€€€€‚ÿIn this section, you compile the .java source files to create .class files. You then run the rmic compiler to create stubs and skeletons. A stub is a client-side proxy for a remote object which forwards RMI calls to the server-side dispatcher, which in turn forwards the call to the actual remote object implementation.When you use the javac and rmic compilers, you must specify where the resulting class files should reside. For applets, all files should be in the applet's codebase directory. For our example, this directory is $HOME/public_html/myclasses.‘? \eB\| ƀ+€€‚€€€€ÌAEF("htÈ\eB\î…Ztp://java.sun.com/products/jdk/rmi/class-server.zip",`',1)€-‰€‚ÿSome web servers allow accessing a user's public_html directory via an HTTP URL constructed as "http://host/~username/". If your web server does not support this convention, you could use a file URL of the form "file:/home/username/public_html" for testing, but this approach will limit you to communicating between a client and server that have access to the same physical file system. As an alternative, you can use an HTTP URL by setting up a minimal web server on your system; we have one available for download here.[6È\ÀB\% €l€€‚‚‚ÿThere are four tasks to complete in this section:+±eB\ëD\z €c€ä€çÙîæ€€‰€‚çÜîæ€€€€‰€‚çïæ€€‰€‚çñP耀‰€‚‚€ €‚‚€€€€€€‚ÿ1. Compile the source files2. Use rmic to generate stubs and skeletons 3. Move the HTML file to the deployment directory4. Set paths for runtimeCompile the source filesMake sure that the deployment directory $HOME/public_html/myclasses and the development directory $HOME/mysrc/examples/hello are each accessible through the local CLASSPATH on the development machine before attempting to compile.ãbÀB\ÎG\ Ѐŀ䀂€€‚‚€€‚‚€€€€€€€€€€€€ç毘Y€€1€‰€€(çv·˜Y€€1€‰€‚ÿTo compile the source files, run the javac command as follows:javac -d $HOME/public_html/myclasses Hello.java HelloImpl.java HelloApplet.javaThis command creates the directory examples/hello (if it does not already exist) in the directory $HOME/public_html/myclasses. The command then writes to that directory the files Hello.class, HelloImpl.class, and HelloApplet.class. These are the remote interface, the implementation, and the applet respectively. For an explanation of javac options, you can refer to the Solaris javac manual page or the Win32 javac manual page.xëD\FJ\` Ž€1€ä€‚€ €2€ €‚‚€€€€€€€€€€‚‚€€€€‚ÿUse rmic to generate skeletons and/or stubsTo create stub and skeleton files, run the rmic compiler on the fully-qualified package names of compiled class files that contain remote object implementations, like my.package.MyImpl. The rmic command takes one or more class names as an argument and produces class files of the form MyImpl_Skel.class and MyImpl_Stub.class.By default, in the Java 2 SDK, v1.2 and later, rmic runs with the -vcompat flag on, which produces stubs and skeletons that support access to:'ÎG\mJ\$ €€ä€‚ÿ°‚FJ\K\. *€€ɀ€€€‚‚‚ÿ1. Unicast (not Activatable) remote objects from 1.1 clients and2. All types of remote objects from 1.2 (and later) clients–mJ\$M\q °€-€ä€€€€€€€ç°˜Y€€1€‰€çòµ˜Y€€1€‰€‚‚€€€€‚‚€€‚ÿIf you will never need support for 1.1 clients, rmic can be run with the -v1.2 option. For an explanation of rmic options, you can refer to the Solaris rmic manual page or the Win32 rmic manual page.For example, to create the stub and skeleton for the HelloImpl remote object implementation, run rmic like this:rmic -d $HOME/public_html/myclasses examples.hello.HelloImplåK\ ]k ]Ç ^|€ä€€çø£—Y€‰€Ì?EF("ftp://ftp.java.sun.com/docs/j2se1.4/rmi-spec-1.4.ps",`',1)€‰€Ì@EF("ftp://ftp.java.sun.com/docs/j2se1.4/rmi-spec-1.4.pdf",`',1)€‰€‚‚ÿ· RMI Specification (also in Postscript, PDF)P%f ]» ]+ &€J€€€‚€‚‚ÿRMI API Specification(javadoc)}¢k ]8]Û „E€ä€€ïRò“YJdk14doc.3.hlp€‰€‚€€ï'ò“YJdk14doc.3.hlp€‰€‚€€ï{ò“YJdk14doc.3.hlp€‰€‚€€ï¶ø“YJdk14doc.3.hlp€‰€‚€€ï¢ñ“YJdk14doc.3.hlp€‰€‚‚ÿ· java.rmi Package · java.rmi.dgc Package · java.rmi.registry Package · java.rmi.server Package · java.rmi.activation Package5» ]m]' €€€€‚‚ÿRMI Toolsêb8]cA]ˆ ހŀ䀀€çòµ˜Y€‰€ç°˜Y€‰€‚€€€çôµ˜Y€‰€ç°˜Y€‰€‚€€€çóµ˜Y€‰€ç°˜Y€‰€‚‚ÿ· rmic -m]cA]™] Java RMI stub compiler - (for Microsoft Windows) (for the Solaris operating environment) · rmiregistry - Java remote object registry - (for Microsoft Windows) (for the Solaris operating environment) · rmid - Java RMI activation system daemon - (for Microsoft Windows) (for the Solaris operating environment)@m]£A]' €2€€€‚‚ÿFor More Information -cA]­C]Ý ˆ[€ä€€çñœ—Y€‰€‚‚€€Ì@EF("http://archives.java.sun.com/archives/rmi-users.html",`',1)€&‰€‚‚€€çù£—Y€‰€‚‚€€ç휗Y€€)€‰€‚‚€€ç—Y€‰€‚‚€€çú£—Y€‰€‚ÿ· The RMI and Object Serialization FAQ· Search the archives of the RMI-USERS list· Subscribe to the RMI-USERS list· Dynamic code downloading using RMI(Using the java.rmi.server.codebase Property)· Useful java.rmi Properties· Useful sun.rmi Properties¥Ÿ£A]RE]ç œ}€ä€‚€€çðœ—Y€‰€‚‚€€ÌBEF("http://java.sun.com/docs/books/tutorial/rmi/index.html",`',1)€&€;‰€‚‚€€ç—Y€‰€‚‚€€Ì1EF("http://java.sun.com/products/jdk/rmi/",`',1)€&‰€‚‚ÿ· Applying the Factory Pattern to RMI· The RMI trail of The Java Tutorial Continued· Using RMI with SSL· The Java Remote Method Invocation (RMI) Home Page&­C]xE]# €€€‚ÿ*RE]¢E]' €€ ”€ ‚ÿ&xE]ÈE]# €€€‚ÿg‰¢E]/G]Þ#ЁÂ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€ ‰€€‚ÿ€ÿ(€†"€‚ÿÿÿCopyright © 2001 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com &ÈE]UG]# €€€‚ÿ1/G]†G]1UÿÿÿÿÿÿÿÿCÿÿÿÿ†G]ªG]$UG]ªG]" €€€ ÿD†G]îG]1ºiƒ»DîG]+H]Æ]java.rmi Properties=ªG]+H]& €.€€€‚ÿjava.rmi Properties=îG]hH]& €.€€<€%‚ÿjava.rmi Properties,+H]”H]' € €€‚€‚ÿ*hH]ŸH]' €€ ”€ ‚ÿ£j”H]aI]9 B€Ô€€‚€‚€€€€‚‚€‚ÿPlease Note: Unless otherwise stated, any output from these properties is sent to System.err.*ŸH]‹I]' €€ ”€ ‚ÿ|MaI]J]/ .€š€€‚€‚€ €‚‚ÿProperties that are useful to set on JVMs that export remote objectsS,‹I]ZJ]' €X€ä€€‚ÿjava.rmi.activation.port (1.2 and later)ñ¬J]KL]E X€Y€ɀ€€€€€€€€€€€‚‚ÿThis property is used to set the TCP port number on which this VM should communicate with rmid (by default, rmid listens on port 1098, but can be set to listen on a different port by using the -port option on the rmid command line). The default value of this property is 1098, so this property only needs to be set on VMs that need to communicate with an instance of rmid that is running on a port other than 1098.ìZJ]gN]0 .€Ù€ɀ€€‚€€‚ÿjava.rmi.dgc.leaseValue (1.1 and later) The value of this property represents the lease duration (in milliseconds) granted to other JVMs that hold remote references to objects which have been exported by this JVM. Clients usually renew a lease when it is 50% expired, so a very short value will increase network traffic and risk late renewals in exchange for reduced latency in calls to Unreferenced.unreferenced. The default value of this property is 600000 milliseconds (10 minutes).(KL]N]% €€ɀ€‚ÿS,gN]âN]' €X€ä€€‚ÿjava.rmi.server.codebase (1.1 and later)íN]]& €Û€ɀ€‚ÿThis property specifies the locations from which classes that are published by this JVM (for example: stub classes, custom classes that implement the declared return type of a remote method call, or interfaces used by a proxy or stub class) may beâN]]ªG] downloaded. The value of this property is a string in URL format (or a space-separated list of URLs in 1.2 and later) that will be the codebase annotation for all classes loaded from the CLASSPATH of (and subsequently marshalled by) this JVM.³pâN]Ž‚]C T€á€ɀ€‚€€€(ç휗Y€€1€‰€‚‚ÿNote:This property must be set correctly in order to dynamically download classes and interfaces using RMI. If this property is not set correctly, you will likely encounter exceptions when attempting to run your server or client. For more information on this property, see Dynamic code downloading using RMI (Using the java.rmi.server.codebase Property).›p]O„]+ $€á€ɀ€€‚‚‚ÿjava.rmi.server.hostname (1.1 and later) The value of this property represents the host name string that should be associated with remote stubs for locally created remote objects, in order to allow clients to invoke methods on the remote object. In 1.1.7 and later, the default value of this property is the IP address of the local host, in "dotted-quad" format.q%Ž‚]À…]L f€K€ɀ€€‚€€€€€€€(çF€€1‰€‚‚ÿjava.rmi.server.logCalls (1.1 and later) If this value is true, incoming calls and exceptions thrown from incoming calls will be logged to System.err. Setting this property to true will greatly assist you in debugging your RMI programs. See also sun.rmi.server.exceptionTrace.V/O„]†]' €^€ä€€‚ÿjava.rmi.server.randomIDs (1.1.8 and later)÷ÄÀ…] ‡]3 4€‰€ɀ€€€€€‚‚ÿIf this value is true, object identifiers for remote objects exported by this JVM will be generated by using a cryptographically secure random number generator. The default value is false.Z3†]g‡]' €f€ä€€‚ÿjava.rmi.server.useCodebaseOnly (1.1 and later)že ‡]‰]9 @€Ë€ɀ€€€€(€€€‚‚ÿIf this value is true, automatic loading of classes is prohibited except from the local CLASSPATH and from the java.rmi.server.codebase property set on this JVM. Use of this property prevents client JVMs from dynamically downloading bytecodes from other codebases. This property is ignored in the implementations of 1.2 and 1.2.1 because of a bug.]6g‡]b‰]' €l€ä€€‚ÿjava.rmi.server.useLocalHostname (1.1.7 and later)h5‰]ʊ]3 4€k€ɀ€€€€€‚‚ÿRMI now uses an IP address to identify the local host when the java.rmi.server.hostname property is not specified and a fully qualified domain name for the localhost cannot be obtained. In order to force RMI to use the fully qualified domain name by default, you need to set the this property to true.sLb‰]=‹]' €˜€€ €‚‚ÿProperties that are useful to set on JVMs that make remote method callsS,ʊ]‹]' €X€ä€€‚ÿjava.rmi.server.codebase (1.1 and later)F=‹]֎]C T€€ɀ€‚‚€€€(ç휗Y€€1€‰€‚ÿThis property specifies the locations from which classes that are published by this JVM (for example, custom classes that implement an interface that is the declared parameter type of a remote method call) may be downloaded. The value of this property is a string in URL format (or a space-separated list of URLs in 1.2 and later) that will be the codebase annotation for all classes loaded from the CLASSPATH of (and subsequently marshalled by) this JVM.Note: Classes that exist in both the server's codebase and the client's CLASSPATH will be loaded from the client's CLASSPATH, rather than from the server's codebase as intended. For more information on this property, see Dynamic code downloading using RMI (Using the java.rmi.server.codebase Property).(‹]þŽ]% €€ɀ€‚ÿƒF֎]À]= H€€ɀ€€‚€€€€€€‚‚ÿjava.rmi.server.disableHttp (1.1 and later) If this value is true, HTTP tunneling is disabled, even when http.proxyHost is set. The default value is false. If you know that your program wiþŽ]À]ªG]ll never need to use HTTP tunneling, then by disabling HTTP tunneling, you should see shorter timeouts for failed connections.Z3þŽ]çÀ]' €f€ä€€‚ÿjava.rmi.server.useCodebaseOnly (1.1 and later)žeÀ]…Â]9 @€Ë€ɀ€€€€(€€€‚‚ÿIf this value is true, automatic loading of classes is prohibited except from the local CLASSPATH and from the java.rmi.server.codebase property set on this JVM. Use of this property prevents client JVMs from dynamically downloading bytecodes from other codebases. This property is ignored in the implementations of 1.2 and 1.2.1 because of a bug.¢<çÀ]'Ä]f š€y€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€0‰€‚‚€€‚€‚ÿWe are very interested in knowing whether this information is useful. Please send any comments or suggestions to: rmi-comments@java.sun.com, with a subject of "java.rmi properties FAQ".*As used on this web site, the terms "Java(TM) virtual machine" or "JVM" mean a virtual machine for the Java platform.*…Â]QÄ]' €€ ”€ ‚ÿ&'Ä]wÄ]# €€€‚ÿg‰QÄ]ÞÅ]Þ#ЁÂ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€=‰€€‚ÿ€ÿ(€†"€‚ÿÿÿCopyright © 2001 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com &wÄ]Æ]# €€€‚ÿ1ÞÅ]5Æ]1UÿÿÿÿÿÿÿÿEÿÿÿÿ5Æ]YÆ]$Æ]YÆ]" €€€ ÿK5Æ]€Æ]1tœ‚º±ŒF€Æ]èÆ]0 ^RMI Implementation LoggingDYÆ]èÆ]& €<€€€‚ÿRMI Implementation Logging'€Æ]Ç]# €€€‚ÿ üUèÆ] È]§#¬x††€€ÿ.€€€†"€‚ÿ€€ÿ0€€€%€€‚ÿ€p€ÿ.€r€ çñ˜Y€ ‰€‚ÿÿÿ RMI Implementation Loggingin J2SETM 1.4Documentation ContentsÄCÇ]ÏÊ] Ѐ‡€€‚çŸð˜Y€‰€ç±ÄÜù€‰€ïb•YJdk14doc.3.hlp€‰€‚‚€€çú£—Y€€€‰€€€€€‚ÿAs of J2SE 1.4, Sun's RMI implementation uses the new Logging APIs to provide implementation logging output. The logging configuration file and programmatic API (java.util.logging) can be used to configure RMI implementation logging.The java.rmi.server.logCalls system property and the implementation-specific sun.rmi.* logging properties that were recognized by previous J2SE versions still function to set the default levels for the RMI implementation Logger objects and to cause their output to be directed to System.err as with earlier versions.úº È]ÉÌ]@ N€u€€‚€€‚‚€€€€€€‚‚ÿThe table below shows the names of the Logger objects used by the RMI implementation and how they correspond to the logging properties supported by previous versions.Note that the RMI implementation supports a new logging category: client-side call logging, analagous to the server-side call logging activated by the java.rmi.server.logCalls property. Client-side call logging is output to the Logger named sun.rmi.client.call.êGÏÊ]³Í]£#ŽnH€€ÿ*€€ €€$€‚ÿ€6€ ÿ0€8€ €€8€$€‚ÿ€\€ ÿ*€^€ €€$€‚ÿÿÿSystem Property NameLogger NameInformation LoggedÐ]ÉÌ]ƒÎ]s#¶€ºnH€€ ÿ"€€€€‚ÿ"€:€€€‚ÿ€h€‚ÿÿÿjava.rmi.server.logCallssun.rmi.server.callserver-side remote calls and exceptionsŒX³Í]?Ï]d#˜€°nH"€€€€‚ÿ"€6€€€‚ÿ€b€‚ÿÿÿsun.rmi.server.logLevelsun.rmi.server.refserver-side remote reference activityÒmƒÎ]^e#š€ÚnH$€€€€‚ÿ"€Z€€€‚ÿ€ˆ€‚ÿÿÿsun.rmi.client.logCalls(new in J2SE 1.4)sun.rmi.client.callclient-side remote calls?Ï]^YÆ] and exceptionsŒX?Ï]Ù^d#˜€°nH"€€€€‚ÿ"€6€€€‚ÿ€b€‚ÿÿÿsun.rmi.client.logLevelsun.rmi.client.refclient-side remote reference activityŽP^^d#˜€ nH"€€€€‚ÿ"€0€€€‚ÿ€N€‚ÿÿÿsun.rmi.dgc.logLevelsun.rmi.dgcdistributed garbage collection activityÆ\Ù^S^j#€€žnH"€€€€‚ÿ"€6€€€‚ÿ"€Z€€€‚ÿÿÿsun.rmi.loader.logLevelsun.rmi.loaderactivity of default RMIClassLoader provider±M^^d#˜€šnH"€€€€‚ÿ"€<€€€‚ÿ€f€‚ÿÿÿsun.rmi.transport.logLevelsun.rmi.transporttransport-layer activityÄ`S^È^d#˜€ÀnH"€€€€‚ÿ"€D€€€‚ÿ€v€‚ÿÿÿsun.rmi.transport.tcp.logLevelsun.rmi.transport.tcpTCP binding and connection activityŒX^„^d#˜€°nH"€€€€‚ÿ"€H€€€‚ÿ€~€‚ÿÿÿsun.rmi.transport.proxy.logLevelsun.rmi.transport.proxyHTTP tunelling activity©È^-^™ !€€‚€€€€€€€€€€€€€€€€€€€€‚‚€€€€€€€€€€€€€€€€€€‚ÿFor both the sun.rmi.client.call and the sun.rmi.server.call Loggers, exceptions thrown from remote calls are logged at the level Level.FINE, and each remote call is logged at the level Level.FINER. Setting the java.rmi.server.logCalls or sun.rmi.client.logCalls system properties to the value "true" causes the corresponding Logger to be set to the level Level.FINER.For the sun.rmi.* logging properties that have names ending in ".logLevel", a value of "BRIEF" causes the corresponding Logger to be set to the level Level.FINE, and a value of "VERBOSE" causes the corresponding Logger to be set to the level Level.FINER. Use of the logging configuration file is now preferred over the use of these sun.rmi.* system properties for logging.&„^S^# €€€‚ÿ*-^}^' €€ ”€ ‚ÿ&S^£^# €€€‚ÿg‰}^ ^Þ#ЁÂ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€ ‰€€‚ÿ€ÿ(€†"€‚ÿÿÿCopyright © 2001 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com &£^0 ^# €€€‚ÿ1 ^a ^1UÿÿÿÿÿÿÿÿGÿÿÿÿa ^… ^$0 ^… ^" €€€ ÿBa ^Ç ^1‰,iƒ»qœHÇ ^ ^{Ä^RMI Release Notes;… ^ ^& €*€€€‚ÿRMI Release Notes'Ç ^) ^# €€€‚ÿ ôM ^ ^§#œx††€€ÿ.€€€†"€‚ÿ€€ÿ0€€€%€€‚ÿ€`€ÿ.€b€ çñ˜Y€ ‰€‚ÿÿÿ RMI Release Notesfor J2SETM 1.4Documentation ContentsF) ^c ^' €>€€€‚‚ÿKnown Problems in J2SE 1.4oE ^Ò ^* $€Š€ä€€€‚ÿIllegalStateException trace output by RMI server virtual machineè»c ^º ^- (€w€ɀ€€€‚‚ÿWhen a virtual machine with exported remote objects is receiving remote calls under heavy load, an exception trace similar to the following may be output occasionally to System.err:ã­Ò ^©A^6 :€[€-€€‚ÿjava.lang.IllegalStateException: Task already scheduled or cancelled at java.util.Timer.sched(Timer.java:316) at java.util.Timer.schedule(Timer.java:128) at sun.rmi.transport.DGCAckHandler.startTimer(DGCAckHandler.java:84) at sun.rmi.transport.ConnectionOutputStream.done(ConnectionOutputStream.java:82) at sun.rmi.transport.StreamRemoteCall.releaseOutputStream(StreamRemoteCall.java:94) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:302) at sun.rmi.tº ^©A^… ^ransport.Transport$1.run(Transport.java:148) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:144) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:536)ᮺ ^ŠC^3 4€]€ɀ€€€€€‚‚ÿUsually, the occurrence of this exception is otherwise harmless, although in some cases when clients attempt remote calls in rapid succession, the occurrence of the above exception can cause one future client remote call to fail with a java.rmi.UnmarshalException containing a java.io.EOFException. When this occurs, retrying the failed remote call will succeed. This problem will be fixed in the next maintenance release.H!©A^ÒC^' €B€€€‚‚ÿRMI Enhancements in J2SE 1.4e>ŠC^7D^' €|€ä€€‚ÿServer-side Stack Traces Now Retained in Remote Exceptions¢tÒC^ÙG^. *€é€ɀ€‚‚€€‚ÿThe RMI runtime implementation will now preserve the server-side stack trace information of an exception that is thrown from a remote call, in addition to filling in the client-side stack trace as it did previous releases. Therefore, when such an exception becomes accessible to client code, its stack trace will now contain all of its original server-side trace data followed by the client-side trace.This feature is made possible by the new "programmatic access to stack trace information" feature of java.lang.Throwable in J2SE 1.4, which included making a Throwable's stack trace data part of its default serialized form. What the client-side RMI runtime implementation now does to cooperate with this feature is to append the client-side trace to the unmarshalled server-side trace, rather than simply overwriting with the client-side trace as it did in previous releases.„\7D^]I^( €¹€ɀ€‚‚‚ÿCertain RMI server applications may wish to prevent any server-side stack trace data from accompanying an exception to be marshalled as the result of a remote call (as part of the exception's default serialized form in J2SE 1.4), perhaps for reasons of performance or confidentiality. In such cases, the implementation-specific system property\*ÙG^¹I^2 4€T€-çœK&€€‰€‚ÿsun.rmi.server.suppressStackTracesóÌ]I^¬J^' €™€ɀ€‚‚ÿcan be set to "true" to cause the server-side RMI runtime implementation to clear the stack traces of all exceptions thrown from the current virtual machine as the result of remote method invocations.\2¹I^K^* $€d€ä€€€‚ÿService Provider Interface for RMIClassLoaderpö¬J^xM^z €í€ɀ€€€€€€€€ïßø“YJdk14doc.3.hlp€‰€€ïàø“YJdk14doc.3.hlp€‰€‚ÿCertain static methods of java.rmi.server.RMIClassLoader now delegate their behavior to an instance of a new service provider interface, java.rmi.server.RMIClassLoaderSpi. The service provider can be configured to augment RMI's dynamic class loading behavior for a given application. By default, the service provider implements the standard behavior of all of the static methods in RMIClassLoader. See the class documentation of RMIClassLoader and RMIClassLoaderSpi for more details.(K^ M^% €€ɀ€‚ÿCxM^ãM^' €8€ä€€‚ÿDynamic Server Host Name2 M^O^- (€ €ɀ€€€‚‚ÿThe java.rmi.server.hostname property can now be dynamically updated to indicate that future exports should use a new host name. Therefore, the new host name value will be contained in the stub for an object that is exported after the property is updated.O(ãM^dO^' €P€ä€€‚ÿSerializing Primitive Class Objects ‡HO^÷€^? L€‘€ɀ€€€€€€€€€‚‚ÿIn previous releases, a ClassNotFoundException would be thrown if an attempt was made to pdO^÷€^… ^ass a primitive Class object in an RMI call. Now, an object that contains Class objects for primitive types can be passed as a remote method parameter or return value, and can be stored in a java.rmi.MarshalledObject instance.N'dO^E^' €N€ä€€‚ÿEnhanced RMI Implementation LoggingÿÀ÷€^D‚^? L€€ɀ€çŸð˜Y€‰€ç—Y€‰€‚‚ÿSun's implementation of RMI in J2SE 1.4 now uses the new Logging APIs to provide implemention-specific logging output. See the RMI Implementation Logging page for more information.EE^‰‚^' €<€ä€€‚ÿSerialization Enhancements¹†D‚^Bƒ^3 4€ €ɀ€çG²—Y€‰€‚‚ÿSee the Serialization Release Notes for more information on enhancements and improvements to Object Serialization in J2SE 1.4.Q*‰‚^“ƒ^' €T€€€‚‚ÿRMI Enhancements in Previous Releases|:Bƒ^„^B T€t€äïÔò“YJdk14doc.3.hlp€‰€€‚ÿjava.rmi.activation.ActivationGroupDesc (since 1.3)”H“ƒ^£†^L f€‘€ɀ€€€€€€€‚‚€€€€€€‚ÿThe getClassName method, which returns the group's class name, can now return null, indicating the system's default group implementation. Previously, the getClassName method would return the name of the internal implementation class if the default group implementation was chosen when the descriptor was constructed.Due to this change, if an application running in a 1.3 JVM registers an new activatable object with the ActivationSystem, rmid must also be upgraded to run 1.3, since a pre-1.3 rmid will not be able to activate the newly registered activatable object.(„^ˆ^% €€ɀ€‚ÿZ3£†^%‡^' €f€ä€€‚ÿConstructors of activatable objects (since 1.3)Bˆ^²ˆ^K d€…€ɀ€€€€€€€€€€€€€‚‚ÿAn activatable object's "activation" constructor, which takes an ActivationID and a MarshalledObjectas arguments and which is called by the ActivationInstantiator each time the object is activated, can now be private or protected. Previously, the implementation only allowed public activation constructors.S,%‡^‰^' €X€ä€€‚ÿSerializing remote objects (since 1.2.2)ú²ˆ^ÿ‹^8 >€…€ɀ€€€€€€€‚ÿPrior to 1.2.2, an attempt to pass an unexported remote object in a RMI call would result in a java.rmi.StubNotFoundException. This exception was a result of the RMI runtime's failure to locate a stub object during an attempt to replace a remote object implementation with its corresponding stub. In 1.2.2 and later releases, an unexported remote object passed in an RMI call will no longer result in an exception, but rather the remote object will be serialized instead of its stub. If the remote object implementation is not serializable, an attempt to pass an unexported object in an RMI call will result in a java.rmi.RemoteException with the nested exception java.io.NotSerializableException.(‰^'Œ^% €€ɀ€‚ÿs1ÿ‹^šŒ^B T€b€äïßø“YJdk14doc.3.hlp€‰€€‚ÿjava.rmi.server.RMIClassLoader (since 1.3)L'Œ^7Ž^Q p€™€ɀ€€€€€ïßø“YJdk14doc.3.hlp€‰€‚‚ÿjava.rmi.server.RMIClassLoader has a new method, getClassLoader. This method returns the class loader that RMI uses to load classes from a specified codebase URL path. This API can be used in an implementation that requires complete RMI marshalling/unmarshalling behavior. See java.rmi.server.RMIClassLoader for details.L%šŒ^ƒŽ^' €J€€€‚‚ÿChanges to RMI Tools (since 1.3)T#7Ž^׎^1 2€F€ä€ç°˜Y€‰€‚‚ÿThe RMI Stub Compiler, rmic4惎^Á^N j€Í€-€€€€€€€€‚€€€€€€‚ÿ· By default, rmic now assumes that the destination directory for generated stubs is the package-named subdirectory of the current working directory. If the "-d" option is not specified, the result is the same as ׎^Á^… ^though it were specified with the current working directory "." as an argument. The "-d" may still be used to override the default destination directory.· Two new options, "-idl" and "-iiop" have been added to generate IDL and stubs for IIOP, respectively.(׎^?Á^% €€-€‚ÿV&Á^•Á^0 0€L€ä€ç°˜Y€‰€‚ÿThe RMI Activation Daemon, rmidg;?Á^üÁ^, (€v€ɀ€€€‚‚ÿBy default, rmid now requires a security policy file.¢x•Á^žÂ^* $€ð€€€‚€‚ÿ*As used on this web site, the terms "Java virtual machine" or "JVM" mean a virtual machine for the Java platform.*üÁ^ÈÂ^' €€ ”€ ‚ÿ&žÂ^îÂ^# €€€‚ÿg‰ÈÂ^UÄ^Þ#ЁÂ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€ ‰€€‚ÿ€ÿ(€†"€‚ÿÿÿCopyright © 2001 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com &îÂ^{Ä^# €€€‚ÿ1UÄ^¬Ä^1UÿÿÿÿÿÿÿÿIÿÿÿÿ¬Ä^ÐÄ^${Ä^ÐÄ^" €€€ ÿR!¬Ä^"Å^1™=±ŒÔ¿J"Å^mÅ^ Ž_Using a Custom RMI Socket FactoryK%ÐÄ^mÅ^& €J€€€‚ÿUsing a Custom RMI Socket Factory'"Å^”Å^# €€€‚ÿ àLmÅ^tÆ^”#ø€šx††€€ÿ.€€€†"€‚ÿ(€€€%€‚ÿ€^€ÿ.€`€ çñ˜Y€ ‰€‚ÿÿÿ Using a Custom RMI Socket FactoryDocumentation CommentsÜš”Å^PÊ^4 6€Q€€‚‚‚‚€€€€‚ÿ This tutorial shows you the steps to follow to implement and use a custom RMI socket factory. A custom RMI socket factory is useful if (1) your RMI client and server need to use sockets that encrypt or compress data, and/or (2) your application requires different socket types for different remote objects.Prior to the Java 2 SDK, v1.2 release, it was possible to create and install a custom java.rmi.server.RMISocketFactory subclass used globally for all connections created by the RMI transport. It was not possible, however, to associate a different RMI socket factory on a per-object basis. For example in JDK v1.1.x, an RMI socket factory could not produce SSL sockets for one object and use the Java Remote Method Protocol (JRMP) directly over TCP for a different object in the same virtual machine. Also before 1.2, it was necessary to spawn an instance of the rmiregistry that used only your custom socket protocol.ìtÆ^jË^. *€Ù€€‚€€‚‚‚‚ÿAs of the Java 2 SDK, v1.2 release, an RMI application can use a custom RMI socket factory on a per-object basis, download a client-side socket factory, and continue to use the default rmiregistry.This tutorial has three parts:ü PÊ^fÌ^\ †€A€ɀ€€爀 €‰€‚€€牀 €‰€‚€€犀 €‰€‚‚ÿ· Implementing a Custom RMI Socket Factory.· Using a Custom RMI Socket Factory in an Application.· Compiling and Running the Application.qLjË^×Ì^% €˜€ä€‚‚ÿThe source code for this tutorial is available in the following formats:BfÌ^tÍ^[ †€„€ɀ€€皟˜Y€‰€‚€€穟˜Y€‰€‚€€窟˜Y€‰€‚‚ÿ· sockets.zip · sockets.tar · sockets.tar.Z¿Š×Ì^3Î^5 8€€€ç—Y€‰€‚‚€‚ÿMany people are interested in secure communication between RMI clients and servers. For more information see Using RMI with SSL.*tÍ^]Î^' €€ ”€ ‚ÿŠu3Î^Ï^1 2€ê€€‚€‚€ €‚‚‚‚ÿImplementing a Custom RMI Socket FactoryThere are three steps to implementing a custom RMI socket factory:òy]Î^_y À€ó€ä€çÙ¢J €€€€€‰€‚çÚ¢J €€€‰€‚çÛ¢J €€€‰€‚‚€‚€7€€7€‚‚‚‚‚ÿ1. Implement a custom ServerSocket and Socket.2. Implement a custom RMIClientSocketFactory.3. Implement a custom Ï^_ÐÄ^RMIServerSocketFactory.Step 1:Implement a custom ServerSocket and SocketThe type of socket to use is an application-specific decision. If your server sends or receives sensitive data, you might want a socket that encrypts the data.For this example, the custom RMI socket factory will create sockets that perform simple XOR encryption. This type of encryption will protect data from a casual snooper sniffing packets on the wire, but is easily decoded by a knowledgeable cryptanalyst.ïÈÏ^ð_' €‘€ä€‚‚‚ÿThe custom XOR socket implementation includes the following sources. XOR sockets use special input and output stream implementations to handle xor-ing the data written to or read from the socket.Ýo_Í_n ¬€Þ€ɀ€€竟˜Y€‰€‚€€笟˜Y€‰€‚€€ç­Ÿ˜Y€‰€‚€€箟˜Y€‰€‚‚ÿ· XorInputStream.java· XorOutputStream.java· XorServerSocket.java· XorSocket.javaہð_š_Z ‚€€ä€‚€7€‚‚€€€€€€€€‚‚€€€€€€‚ÿStep 2:Implement a custom RMIClientSocketFactoryThe client-side RMI socket factory, XorClientSocketFactory, implements the java.rmi.server.RMIClientSocketFactory interface. The client socket factory needs to implement the createSocket method to return the approriate client socket instance, an XorSocket. The client socket factory must implement the java.io.Serializable interface so that instances can be serialized to clients. It is also important to implement the equals and hashCode methods so that the RMI implementation will reuse the socket factory's connections to remote objects using equivalent factories.ð«Í_˜ _E X€W€ä€‚€€‚ÿpackage examples.rmisocfac;import java.io.*;import java.net.*;import java.rmi.server.*;public class XorClientSocketFactory implements RMIClientSocketFactory, Serializable { private byte pattern; public XorClientSocketFactory(byte pattern) { this.pattern = pattern; } public Socket createSocket(String host, int port) throws IOException { return new XorSocket(host, port, pattern); } public int hashCode() { return (int) pattern; } public boolean equals(Object obj) { return (getClass() == obj.getClass() && pattern == ((XorClientSocketFactory) obj).pattern); }}_‡ _Z ‚€+€ä€‚€7€‚‚€€€€€€€€‚‚€€€€€€‚ÿStep 3:Implement a custom RMIServerSocketFactoryThe server-side RMI socket factory, XorServerSocketFactory, implements the java.rmi.server.RMIServerSocketFactory interface. The server socket factory needs to implement the createServerSocket method to return the appropriate server socket instance, an XorServerSocket.The server socket factory does not need to implement the Serializable interface because server socket factory instances are not serialized to clients. The factory should implement the equals and hashcode methods so that the RMI implementation will reuse the socket factory's accept connection for equivalent factories.᜘ _h_E X€9€ä€‚€€‚ÿpackage examples.rmisocfac;import java.io.*;import java.net.*;import java.rmi.server.*;public class XorServerSocketFactory implements RMIServerSocketFactory { private byte pattern; public XorServerSocketFactory(byte pattern) { this.pattern = pattern; } public ServerSocket createServerSocket(int port) throws IOException { return new XorServerSocket(port, pattern); } public int hashCode() { return (int) pattern; } public boolean equals(Object obj) { return (getClass() == obj.getClass() && pattern == ((XorServerSocketFactory) obj).pattern); }}&‡ _Ž_# €€€‚ÿ*h_ž_' €€ ”€ ‚ÿџŽ_•@_2 2€?€€‚€‚€ €‚‚‚‚ÿUsing a Custom Sož_•@_ÐÄ^cket Factory in an ApplicationThere are only two more steps to complete when using a custom RMI socket factory for a remote object:c0ž_øB_3 4€a€ä€€€€€‚‚‚ÿ1.Write a server application that creates a remote object and exports it to use your custom RMIClientSocketFactory and RMIServerSocketFactory. Store a reference to the remote object's stub in an RMI registry so that clients can look it up.2. Write a client application that looks up the stub for the remote object and invokes a remote method. The custom socket factories do not need to be referenced in the client application. The client-side RMI socket factory will be downloaded to the client when the client looks up the stub for the remote object.ë°•@_ãE_; D€a€ä€‚€‚€‚‚€€€€‚ÿStep 1:Write a server applicationIf communication with a remote object requires the use of custom sockets, you need to inform the RMI runtime which custom socket factories to use when you export the remote object. When your application exports the object specifying custom socket factories, the RMI runtime will use the corresponding custom RMIServerSocketFactory to create a server socket to accept incoming calls to the remote object. Also, the RMI runtime will create a stub that refers to the corresponding custom RMIClientSocketFactory. This client socket factory will be used to create connections upon initating a remote invocation to the remote object using the stub.] øB_@I_S t€€ä€‚睗Y€‰€‚‚€€‚‚€€‚€€€€‚ÿThis example is similar to the example in the tutorial Getting Started Using RMI, but uses custom socket factories instead of the default sockets used by the RMI implementation.The application uses the following Hello remote interface:package examples.rmisocfac;public interface Hello extends java.rmi.Remote { String sayHello() throws java.rmi.RemoteException;}The server application creates a remote object implementing the Hello remote interface and exports the object to use custom socket factories using the java.rmi.server.UnicastRemoteObject.exportObject method that takes the custom socket factories as arguments. Next, it creates a local registry and, in that registry, it binds a reference to the remote object's stub with the name "Hello".ì•ãE_,O_W |€+ €ä€‚€€‚ÿpackage examples.rmisocfac;import java.io.*;import java.rmi.*;import java.rmi.server.*;import java.rmi.registry.*;public class HelloImpl implements Hello { public HelloImpl() {} public String sayHello() { return "Hello World!"; } public static void main(String args[]) { if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); } byte pattern = (byte) 0xAC; try { /* * Create remote object and export it to use * custom socket factories. */ HelloImpl obj = new HelloImpl(); RMIClientSocketFactory csf = new XorClientSocketFactory(pattern); RMIServerSocketFactory ssf = new XorServerSocketFactory(pattern); Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0, csf, ssf); /* * Create a registry and bind stub in registry. * LocateRegistry.createRegistry(2002); Registry registry = LocateRegistry.getRegistry(2002); registry.rebind("Hello", stub); System.out.println("HelloImpl bound in registry"); } catch (Exception e) { System.out.println("HelloImpl exception: " + e.getMessage()); e.printStackTrace(); } }} Ó†@I_ ƒ_M h€ €ä€‚€‚‚€€‚‚€€‚ÿStep 2:Write a client applicationThe client application obtains a reference to the registry used by the server application. It the,O_ ƒ_ÐÄ^n looks up the remote object's stub and invokes its remote method sayHello:package examples.rmisocfac;import java.rmi.*;import java.rmi.registry.*;public class HelloClient { public static void main(String args[]) { if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); } try { Registry registry = LocateRegistry.getRegistry(2002); Hello obj = (Hello) registry.lookup("Hello"); String message = obj.sayHello(); System.out.println(message); } catch (Exception e) { System.out.println("HelloClient exception: " + e.getMessage()); e.printStackTrace(); } }}&,O_1ƒ_# €€€‚ÿ* ƒ_[ƒ_' €€ ”€ ‚ÿ™h1ƒ_ôƒ_1 2€Ð€€‚€‚€ €‚‚‚‚ÿCompiling and Running the ApplicationThere are four steps to compile and run the application:tü[ƒ_h†_x Ÿ€ù€ä€çߥJ €‰€‚çà¥J €€€‰€‚çá¥J €‰€‚çâ¥J €‰€‚‚€$‚€‚‚€€‚ÿ1. Compile the remote interface, client, and server classes 2. Run rmic on the implementation class 3. Start the server 4. Run the clientStep 1:Compile the remote interface, client, and server classesjavac -d . Hello.javajavac -d . HelloClient.javajavac -d . HelloImpl.javajavac -d . XorClientSocketFactory.javajavac -d . XorInputStream.javajavac -d . XorOutputStream.javajavac -d . XorServerSocket.javajavac -d . XorServerSocketFactory.javajavac -d . XorSocket.java@Úôƒ_šˆ_f š€µ€ä€$‚€8€$€‚‚€€‚€$‚€‚‚€€‚‚‚€€‚€$‚€‚‚‚‚€€‚ÿStep 2:Run rmic on the implementation classrmic -d . examples.rmisocfac.HelloImplStep 3:Start the serverjava -Djava.security.policy=policy examples.rmisocfac.HelloImplThe server output should look like this: HelloImpl bound in registryStep 4:Run the clientIn another window start the client application making sure that the application classes are in the class path:java -Djava.security.policy=policy examples.rmisocfac.HelloClientʏh†_r‹_; D€€ä€‚‚€€‚€€€€‚ÿThe client output should look like this: Hello World! Note: Both the server and client applications use a security policy file that grants permissions only to files in the local class path (the current directory). The server application needs permission to accept connections, and both the server and client applications need permission to make connections. The permission java.net.SocketPermission is granted to the specified codebase URL, a "file:" URL relative to the current directory. This permission grants the ability to both accept connections from and make connections to any host on unprivileged ports (that is ports >= 1024).—išˆ_ Œ_. ,€Ò€ä€‚€€‚ÿgrant codeBase "file:." { permission java.net.SocketPermission "*:1024-", "connect,accept";};&r‹_/Œ_# €€€‚ÿ* Œ_YŒ_' €€ ”€ ‚ÿ&/Œ_Œ_# €€€‚ÿg‰YŒ_æ_Þ#ЁÂ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€=‰€€‚ÿ€ÿ(€†"€‚ÿÿÿCopyright © 2001 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com &Œ_ Ž_# €€€‚ÿ1æ_=Ž_1UÿÿÿÿÿÿÿÿKÿÿÿÿ=Ž_aŽ_$ Ž_aŽ_" €€€ ÿC=Ž_€Ž_1• qœŽ…¿L€Ž_àŽ_É_Using RMI with SSL<aŽ_àŽ_& €,€€€‚ÿUsing RMI with SSL>€Ž__' €.€€ €‚‚ÿUsing RMI with SSL&àŽ_D_# €€€‚ÿ*_n_' €€ ”€ ‚ÿúÎD_tÀ_, &€€€‚€‚‚‚‚‚ÿMany have asked how an RMI application can make remote invocations over secure SSL connections. Ben_tÀ_aŽ_low are some questions and answers about using RMI with SSL.Q1: Is it possible to use RMI with SSL?›vn_Á_% €ì€ä€‚‚ÿA1: Yes, it is possible, due to RMI enhancements available in the Java 2 SDK, Standard Edition, v1.2 (Java 2 SDK).F"tÀ_UÁ_$ €D€€‚‚ÿQ2: How do I use RMI with SSL?-üÁ_‚Ã_1 0€ù€ä€ç—Y€‰€‚ÿA2: The version of RMI included in the Java 2 SDK enables the RMI developer to use custom socket factories for RMI-based communication. An application can export a remote object to use an RMI socket factory that creates sockets of the desired type (for example, SSL sockets). Using this technique, an RMI application can use SSL socket communication instead of the default socket communication. For further details on using custom socket factories, see the tutorial: Using a Custom RMI Socket Factory.'UÁ_©Ã_$ €€ä€‚ÿtP‚Ã_Ä_$ € €€‚‚ÿQ3: Where can I find a pure Java programming language implementation of SSL?Uè©Ã_rÅ_m š€Ñ€ä€Ì.EF("http://java.sun.com/products/jsse/",`',1)€‰€€(絫—Y€‰€‚‚ÿA3: Java 2 SDK, v1.4 includes the Java Secure Socket Extension (JSSE) API which provides an implementation of SSL sockets. See the JSSE Reference Guide for more detailed information on the features and benefits of JSSE.[7Ä_ÍÅ_$ €n€€‚‚ÿQ4: Where can I find an example using RMI with SSL?HrÅ_Ç_2 2€-€ä€ç¶«—Y€‰€‚‚ÿA4: There is an RMI/SSL example bundled with the JSSE code examples. The RMI example illustrates how to use SSL-based connections for RMI calls to a remote object. This is achieved by exporting a remote object to use a custom RMI socket factory that creates SSL sockets.&ÍÅ_;Ç_# €€€‚ÿ*Ç_eÇ_' €€ ”€ ‚ÿ&;Ç_‹Ç_# €€€‚ÿg‰eÇ_òÈ_Þ#ЁÂ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€=‰€€‚ÿ€ÿ(€†"€‚ÿÿÿCopyright © 2001 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com &‹Ç_É_# €€€‚ÿ1òÈ_IÉ_1UÿÿÿÿÿÿÿÿMÿÿÿÿIÉ_mÉ_$É_mÉ_" €€€ ÿl;IÉ_ÙÉ_1œÔ¿`‡¿NÙÉ_Ê_ŠÎ_Java Remote Method Invocation: 7 - Remote Object ActivationF mÉ_Ê_& €@€€€‚ÿ7 - Remote Object ActivationºFÙÉ_ÙÊ_t#ž€ŒÂÂX€€çø£—Y€‰€窣—Y€‰€ç—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method InvocationP!Ê_)Ë_/ .€B€€‚€%€‚‚€‚ÿRemote Object Activation*ÙÊ_SË_' €€ ”€ ‚ÿ&)Ë_yË_# €€€‚ÿA SË_ºË_4#8€o€€€‚€‚ÿÿÿCHAPTER79yË_óË_+ &€€€‚€€‚‚ÿTopics:腺Ë_ÛÌ_c ”€ €ɀ€ç—Y€‰€‚€ç—Y€‰€‚€çH—Y€‰€‚€ç?—Y€‰€‚‚ÿ·Overview·Activation Protocol·Implementation Model for an "Activatable" Remote Object·Activation Interfaces&óË_Í_# €€€‚ÿ*ÛÌ_+Í_' €€ ”€ ‚ÿt(Í_ŸÍ_L h€P€€‚çø£—Y€‰€窣—Y€‰€ç—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*+Í_ÉÍ_' €€ ”€ ‚ÿÁLŸÍ_ŠÎ_u º€˜€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ÉÍ_»Î_1UÿÿÿÿÿÿÿÿOÿÿÿÿ»Î_ßÎ_$ŠÎ_ßÎ_" €€€ ÿl;»Î_KÏ_1’Ž…¿Š€ÀPKÏ_‘Ï_C`Java Remote Method Invocation: 7 - Remote Object ActivationF ßÎ_‘Ï_& €@€€€‚ÿ7 - Remote Object ActivationºFKÏ_W`t#ž€ŒÂÂX€€çø£—Y€‰€ç—Y€‰€ç—Y€‰€‚ÿ€H€ÿ€J€€(€‘Ï_W`ßÎ_‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,‘Ï_ƒ`' € €€‚€‚ÿ*W`­`' €€ ”€ ‚ÿHƒ`õ`2 4€,€€‚€‚€?€ €‚‚ÿ7.1 OverviewsN­`h`% €€ä€‚ÿDistributed object systems are designed to support long-lived persistent objects. Given that these systems will be made up of many thousands (perhaps millions) of such objects, it would be unreasonable for object implementations to become active and remain active, taking up valuable system resources, for indefinite periods of time. In addition, clients need the ability to store persistent references to objects so that communication among objects can be re-established after a system crash, since typically a reference to a distributed object is valid only while the object is active.Æ™õ`.`- (€3€ä€‚€(€‚‚ÿObject activation is a mechanism for providing persistent references to objects and managing the execution of object implementations. In RMI, activation allows objects to begin execution on an as-needed basis. When an activatable remote object is accessed (via a method invocation) if that remote object is not currently executing, the system initiates the object's execution inside an appropriate JVM.Ch`q`+ &€0€€:€‚€‚‚ÿ7.1.1 Terminology#ì.`”`7 <€Ù€ä€€(€€(€€(€‚ÿAn active object is a remote object that is instantiated and exported in a JVM on some system. A passive object is one that is not yet instantiated (or exported) in a JVM, but which can be brought into an active state. Transforming a passive object into an active object is a process known as activation. Activation requires that an object be associated with a JVM, which may entail loading the class for that object into a JVM and the object restoring its persistent state (if any).ʝq`^`- (€;€ä€‚€(€‚‚ÿIn the RMI system, we use lazy activation. Lazy activation defers activating an object until a client's first use (i.e., the first method invocation).G”`¥`+ &€8€€:€‚€‚‚ÿ7.1.2 Lazy ActivationÆ›^`k `+ $€7€ä€€(€‚ÿLazy activation of remote objects is implemented using a faulting remote reference (sometimes referred to as a fault block). A faulting remote reference to a remote object "faults in" the active object's reference upon the first method invocation to the object. Each faulting reference maintains both a persistent handle (an activation identifier) and a transient remote reference to the target remote object. The remote object's activation identifier contains enough information to engage a third party in activating the object. The transient reference is the actual "live" reference to the active remote object that can be used to contact the executing object._3¥`Ê `, &€g€ä€‚€€‚ÿIn a faulting reference, if the live reference to a remote object is null, the target object is not known to be active. Upon method invocation, the faulting reference (for that object) engages in the activation protocol to obtain a "live" reference, which is a remote reference (such as a unicast remote reference) for the newly-activated object. Once the faulting reference obtains the live reference, the faulting reference forwards method invocations to the underlying remote reference which, in turn, forwards the method invocation to the remote object.™sk `c`& €æ€ä€‚‚‚ÿIn more concrete terms, a remote object's stub contains a "faulting" remote reference type that contains both:âÊ `}`8 >€Å€ɀ€€‚‚€€€€‚‚ÿ·an activation identifier for a remote object, and·a "live" reference (possibly null) containing the "active" remote reference type of the remote object (for example, a remote reference type with unicast semantics).'c`€`$ €€ä€‚ÿ+}`Ï`( €€0䔀 ‚ÿ³q€`ŽA`B R€ã€ä€‚€€€(€€Ï`ŽA`ßÎ_(€€€‚€‚ÿNote - The RMI system preserves "at most once" semantics for remote calls. In other words, a call to an activatable or unicast remote object is sent at most once. Thus, if a call to a remote object fails (indicated by a RemoteException being thrown), the client can be guaranteed that the remote method executed no more than once (and perhaps not at all).+Ï`¹A`( €€0䔀 ‚ÿ-ŽA`æA`( € €ä€‚€‚ÿ&¹A` B`# €€€‚ÿ*æA`6B`' €€ ”€ ‚ÿt( B`ªB`L h€P€€‚çø£—Y€‰€ç—Y€‰€ç—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*6B`ÔB`' €€ ”€ ‚ÿÉOªB`C`z Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ÔB`ÎC`1UÿÿÿÿÿÿÿÿQÿÿÿÿÎC`òC`$C`òC`" €€€ ÿl;ÎC`^D`1Z`‡¿çÁR^D`€D`ˆ…`Java Remote Method Invocation: 7 - Remote Object ActivationF òC`€D`& €@€€€‚ÿ7 - Remote Object ActivationºF^D`^E`t#ž€ŒÂÂX€€çø£—Y€‰€ç—Y€‰€çH—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,€D`ŠE`' € €€‚€‚ÿ*^E`ŽE`' €€ ”€ ‚ÿS!ŠE`F`2 4€B€€‚€‚€?€ €‚‚ÿ7.2 Activation ProtocolÆ’ŽE`ÍG`4 6€%€ä€€(€€(€‚‚‚‚ÿDuring a remote method invocation, if the "live" reference for a target object is unknown, the faulting reference engages in the activation protocol. The activation protocol involves several entities: the faulting reference, the activator, an activation group, and the remote object being activated.The activator (usually one per host) is the entity which supervises activation by being both:ÕF`ÓI`1 0€«€ɀ€€‚‚€€‚ÿ·a database of information that maps activation identifiers to the information necessary to activate an object (the object's class, the location--a URL path--from which the class can be loaded, specific data the object may need to bootstrap, etc.), and·a manager of Java virtual machines, that starts up JVMs (when necessary) and forwards requests for object activation (along with the necessary information) to the correct activation group inside a remote JVM.(ÍG`ûI`% €€ɀ€‚ÿǘÓI`ÂL`/ ,€1€ä€‚‚‚‚€(€‚ÿNote that the activator keeps the current mapping of activation identifiers to active objects as a cache, so that the group does not need to be consulted on each activation request.An activation group (one per JVM) is the entity which receives a request to activate an object in the JVM and returns the activated object back to the activator.The activation protocol is as follows. A faulting reference uses an activation identifier and calls the activator (an internal RMI interface) to activate the object associated with the identifier. The activator looks up the object's activation descriptor (registered previously). The object's descriptor contains:'ûI`éL`$ €€ä€‚ÿNÂL`vN`? L€€ɀ€€‚€€‚€€‚€€‚‚ÿ·the object's group identifier, specifying the JVM in which it is activated,·the object's class name,·a URL path from which to load the object's class code, and·object-specific initialization data in marshalled form (initialization data might be the name of a file containing the object's persistent state, for example). äéL`€`' €É€ä€‚‚‚ÿIf the activation group in which this object should reside exists, the activator forwards the activation request to that group. If the activation group does not exist, the activator initiates a JVM executing an activation group and then forwards the activation request to that group.The activation group loads the class for the object and instantiates vN`€`òC`the object using a special constructor that takes several arguments, including the activation descriptor registered previously.œŒvN`J‚`1 0€€ä€‚€(€‚‚€‚ÿWhen the object is finished activating, the activation group passes back a marshalled object reference to the activator that then records the activation identifier and active reference pairing and returns the active (live) reference to the faulting reference. The faulting reference (inside the stub) then forwards method invocations via the live reference directly to the remote object.+€`u‚`( €€0䔀 ‚ÿÎJ‚`yƒ`6 :€€ä€‚€€€€‚€‚ÿNote - In Java 2 SDK, Standard Edition, v 1.2, RMI provides an implementation of the activation system interfaces. In order to use activation, you must first run the activation system daemon rmid.+u‚`€ƒ`( €€0䔀 ‚ÿ-yƒ`у`( € €ä€‚€‚ÿ&€ƒ`÷ƒ`# €€€‚ÿ*у`!„`' €€ ”€ ‚ÿt(÷ƒ`•„`L h€P€€‚çø£—Y€‰€ç—Y€‰€çH—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*!„`¿„`' €€ ”€ ‚ÿÉO•„`ˆ…`z Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1¿„`¹…`1UÿÿÿÿÿÿÿÿSÿÿÿÿ¹…`݅`$ˆ…`݅`" €€€ ÿl;¹…`I†`1@“Š€À/ÅTI†`†`…bJava Remote Method Invocation: 7 - Remote Object ActivationF ݅`†`& €@€€€‚ÿ7 - Remote Object ActivationºFI†`I‡`t#ž€ŒÂÂX€€çø£—Y€‰€ç—Y€‰€ç?—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,†`u‡`' € €€‚€‚ÿ*I‡`Ÿ‡`' €€ ”€ ‚ÿwEu‡`ˆ`2 4€Š€€‚€‚€?€ €‚‚ÿ7.3 Implementation Model for an "Activatable" Remote ObjectwŸ‡`³ˆ`& €î€ɀ€‚‚ÿIn order to make a remote object that can be accessed via an activation identifier over time, a developer needs to:`¡‰`1 0€{€-€€‚€€‚‚ÿ·register an activation descriptor for the remote object, and·include a special constructor in the object's class that the RMI system calls when it activates the activatable object.…Y³ˆ`&Š`, (€²€ɀ€€€‚‚ÿAn activation descriptor (ActivationDesc) can be registered in one of several ways:}'¡‰`£‹`V z€O€-€€€€€€‚€€€€‚€€€€€€‚‚ÿ·via a call to the static register method of the class Activatable, or·by creating an "activatable" object via the first or second constructor of the Activatable class, or·by exporting an "activatable" object explicitly via Activatable's first or second exportObject method.é&Š`³Œ`' €Ó€ɀ€‚‚ÿFor a specific object, only one of the above methods should be used to register the object for activation. See the section below on "Constructing an Activatable Remote Object" for examples on how to implement activatable objects.Y'£‹` `2 4€N€ä€:€‚€7€€‚‚ÿ7.3.1 The ActivationDesc ClassÓ™³Œ`ߏ`: B€3€ɀ€€€€€‚‚€€‚ÿAn ActivationDesc contains the information necessary to activate an object. It contains the object's activation group identifier, the class name for the object, a codebase path (or URLs) from which the object's code can be loaded, and a MarshalledObject that may contain object-specific initialization data used during each activation.A descriptor registered with the activation system is consulted (during the activation process) to obtain information in order to re-create or activate an object. The MarshalledObject in the object's descriptor is passed as the second argument to the remote object's constructor for the object to use during activation.5î ` Å`G \€Ý €ɀߏ` Å`݅`€‚€‚‚ÿpackage java.rmi.activation;public final class ActivationDesc implements java.io.Serializable{ public ActivationDesc(String className, String codebase, java.rmi.MarshalledObject data) throws ActivationException; public ActivationDesc(String className, String codebase, java.rmi.MarshalledObject data, boolean restart) throws ActivationException; public ActivationDesc(ActivationGroupID groupID, String className, String codebase, java.rmi.MarshalledObject data, boolean restart); public ActivationDesc(ActivationGroupID groupID, String className, String codebase, java.rmi.MarshalledObject data); public ActivationGroupID getGroupID(); public String getClassName(); public String getLocation(); public java.rmi.MarshalledObject getData() public boolean getRestartMode();}Òpߏ`òÇ`b ’€á€ɀ€€€€(€€(€€(€€€€€€€€(€€€€€‚ÿThe first constructor for ActivationDesc constructs an object descriptor for an object whose class is className, that can be loaded from codebase path, and whose initialization information, in marshalled form, is data. If this form of the constructor is used, the object's group identifier defaults to the current identifier for ActivationGroup for this JVM. All objects with the same ActivationGroupID are activated in the same JVM. If the current group is inactive or a default group cannot be created, an ActivationException is thrown. If the groupID is null, an IllegalArgumentException is thrown.( Å`È`% €€ɀ€‚ÿ(òÇ`BÈ`% €€-€‚ÿ,È`nÈ`) "€€0-”€ ‚ÿ³bBÈ`!Ë`Q p€Å€-€‚€€€€€€€€€€€€€€‚ÿNote - As a side-effect of creating an ActivationDesc, if an ActivationGroup for this JVM is not currently active, a default one is created. The default activation group uses the java.lang.SecurityManager as a security manager and upon reactivation will set the properties in the activated group's JVM to be the current set of properties in the JVM. If your application needs to use a different security manager, it must set the group for the JVM before creating a default ActivationDesc. See the method ActivationGroup.createGroup for details on how to create an ActivationGroup for the JVM.(nÈ`IË`% €€-€‚ÿ,!Ë`uË`) "€€0-”€ ‚ÿ.IË`£Ë`) "€ €-€‚€‚ÿ9éuË`ÜÍ`P n€Ó€ɀ€€€€(€€(€€(€€€€(€€€‚ÿThe second constructor for ActivationDesc constructs an object descriptor in the same manner as the first constructor except an additional parameter, restart, must be supplied. If the object requires restart service, meaning that the object will be restarted automatically when the activator is restarted (as opposed to being activated lazily upon demand), restart should be true. If restart is false, the object is simply activated upon demand (via a remote method call).›<£Ë`ƒa_ Œ€y€ɀ€‚€€€(€€(€€(€€(€€(€‚‚€€€(€€€‚ÿThe third constructor for ActivationDesc constructs an object descriptor for an object whose group identifier is groupID, whose class name is className that can be loaded from the codebase path, and whose initialization information is data. All objects with the same groupID are activated in the same JVM.The fourth constructor for ActivationDesc constructs an object descriptor in the same manner as the third constructor, but allows ÜÍ`ƒa݅`a restart mode to be specified. If an object requires restart service (as defined above), restart should be true.SÜÍ`ÖaE X€€ɀ€‚€€‚‚€€‚‚€€‚‚€€‚ÿThe getGroupID method returns the group identifier for the object specified by the descriptor. A group provides a way to aggregate objects into a single Java virtual machine.The getClassName method returns the class name for the object specified by the activation descriptor.The getLocation method returns the codebase path from where the object's class can be downloaded.The getData method returns a "marshalled object" containing initialization (activation) data for the object specified by the descriptor.®{ƒa„a3 6€ö€ɀ€‚€€€€‚‚ÿThe getRestartMode method returns true if the restart mode is enabled for this object, otherwise it returns false.W%ÖaÛa2 4€J€ä€:€‚€7€€‚‚ÿ7.3.2 The ActivationID Class1„a a- (€ €ɀ€€€‚‚ÿThe activation protocol makes use of activation identifiers to denote remote objects that can be activated over time. An activation identifier (an instance of the class ActivationID) contains several pieces of information needed for activating an object:Ž^Ûaša0 0€Œ€-€€‚€€‚‚ÿ·a remote reference to the object's activator, and·a unique identifier for the object.Õ® aoa' €]€ɀ€‚‚ÿAn activation identifier for an object can be obtained by registering an object with the activation system. Registration is accomplished in a few ways (also noted above):Pša¿aJ b€ €-€€€€‚€€€€‚€€€€‚‚ÿ·via the Activatable.register method, or·via the first or second Activatable constructor, which both registers and exports the object, or·via the first or second Activatable.exportObject method, this method both registers and exports the object.Æoa… aG \€ÿ€ɀ€‚‚€€€€(€€€‚ÿpackage java.rmi.activation;public class ActivationID implements java.io.Serializable{ public ActivationID(Activator activator); public Remote activate(boolean force) throws ActivationException, UnknownObjectException, java.rmi.RemoteException; public boolean equals(Object obj); public int hashCode();}The constructor for ActivationID takes a single argument, activator, that specifies a remote reference to the activator responsible for activating the object associated with this activation identifier. An instance of ActivationID is globally unique.D¿a aK d€‰€ɀ€‚€€€(€€(€€€€€€€‚ÿThe activate method activates the object associated with the activation identifier. If the force parameter is true, the activator considers any cached reference for the remote object as stale, thus forcing the activator to contact the group when activating the object. If force is false, then returning the cached value is acceptable. If activation fails, ActivationException is thrown. If the object identifier is not known to the activator, then the method throws UnknownObjectException. If the remote call to the activator fails, then RemoteException is thrown.šJ… aŒa^ Š€•€ɀ€‚€€€€€€€(€€(€€€€€€€€€‚‚ÿThe equals method implements content equality. It returns true if all fields are equivalent (either identical or equivalent according to each field's Object.equals semantics). If p1 and p2 are instances of the class ActivationID, the hashCode method will return the same value if p1.equals(p2) returns true.V$ aa2 4€H€ä€:€‚€7€€‚‚ÿ7.3.3 The Activatable Classš0ŒaÆMax Ÿ€a€ɀ€€€€€€€‚‚€‚‚ÿThe Activatable class provides support for remote objects that require persistent access over time and that can be aÆMa݅`activated by the system. The class Activatable is the main API that developers need to use to implement and manage activatable objects. Note that you must first run the activation system daemon, rmid, before objects can be registered and/or activated.package java.rmi.activation;public abstract class Activatable extends java.rmi.server.RemoteServer{ protected Activatable(String codebase, java.rmi.MarshalledObject data, boolean restart, int port) throws ActivationException, java.rmi.RemoteException; protected Activatable(String codebase, java.rmi.MarshalledObject data, boolean restart, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws ActivationException, java.rmi.RemoteException; protected Activatable(ActivationID id, int port) throws java.rmi.RemoteException; protected Activatable(ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws java.rmi.RemoteException; protected ActivationID getID(); public static Remote register(ActivationDesc desc) throws UnknownGroupException, ActivationException, java.rmi.RemoteException; public static boolean inactive(ActivationID id) throws UnknownObjectException, ActivationException, java.rmi.RemoteException; public static void unregister(ActivationID id) throws UnknownObjectException, ActivationException, java.rmi.RemoteException; public static ActivationID exportObject(Remote obj, String codebase, MarshalledObject data, boolean restart, int port) throws ActivationException, java.rmi.RemoteException; public static ActivationID exportObject(Remote obj, String codebase, MarshalledObject data, boolean restart, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws ActivationException, java.rmi.RemoteException; public static Remote exportObject(Remote obj, ActivationID id, int port) throws java.rmi.RemoteException; public static Remote exportObject(Remote obj, ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws java.rmi.RemoteException; public static boolean unexportObject(Remote obj, boolean force) throws java.rmi.NoSuchObjectException;}0Âaan ª€…€ɀ€€€€(€€€€€€€€€€€€€€(€€€€€€(€‚ÿAn implementation for an activatable remote object may or may not extend the class Activatable. A remote object implementation that does extend the Activatable class inherits the appropriate definitions of the hashCode and equals methods from the superclass java.rmi.server.RemoteObject. So, two remote object references that refer to the same Activatable remote object will be equivalent (the equals method will return true). Also, an instaÆMaa݅`nce of the class Activatable will be "equals" to the appropriate stub object for the instance (i.e., the Object.equals method will return true if called with the matching stub object for the implementation as an argument, and vice versa).(ÆMa*a% €€ɀ€‚ÿKaua, (€>€ä€:€‚€‚‚ÿActivatableClass MethodsS÷*aȃa\ †€ï€ɀ€€€€(€€(€€(€€(€€(€€€€(€€€‚ÿThe first constructor for the Activatable class is used to register and export the object on a specified port (an anonymous port is chosen if port is zero). The object's URL path for downloading its class code is codebase, and its initialization data is data. If restart is true, the object will be restarted automatically when the activator is restarted and if the group crashes. If restart is false, the object will be activated on demand (via a remote method call to the object).HuaW†aG \€‘€ɀ€‚€€€(€€(€‚‚€€€€‚ÿA concrete subclass of the Activatable class must call this constructor to register and export the object during initial construction. As a side-effect of activatable object construction, the remote object is both "registered" with the activation system and "exported" (on an anonymous port, if port is zero) to the RMI runtime so that it is available to accept incoming calls from clients.The constructor throws ActivationException if registering the object with the activation system fails. RemoteException is thrown if exporting the object to the RMI runtime fails.‹2ȃaâˆaY €€e€ɀ€‚€€çs#€‰€‚‚€€€(€€(€€€€(€‚ÿThe second constructor is the same as the first Activatable constructor but allows the specification of the client and server socket factories used to communicate with this activatable object. See the section in about "RMI Socket Factories" for details.The third constructor is used to activate and export the object (with the ActivationID, id) on a specified port. A concrete subclass of the Activatable class must call this constructor when the object itself is activated via its special "activation" constructor whose parameters must be:(W†a ‰a% €€ɀ€‚ÿÅâˆa͉a> J€ €-€€€€‚‚€€€€‚‚ÿ·the object's activation identifier (ActivationID), and·the object's initialization/bootstrap data (a MarshalledObject).Ä ‰a͌a< F€‰€ɀ€€(€€€‚‚‚‚€€‚ÿAs a side-effect of construction, the remote object is "exported" to the RMI runtime (on the specified port) and is available to accept incoming calls from clients. The constructor throws RemoteException if exporting the object to the RMI runtime fails.The fourth constructor is the same as the third constructor, but allows the specification of the client and server socket factories used to communicate with this activatable object.The getID method returns the object's activation identifier. The method is protected so that only subclasses can obtain an object's identifier. The object's identifier is used to report the object as inactive or to unregister the object's activation descriptor.+Ú͉a ÀaQ p€µ€ɀ€‚€€€(€€€€€€(€€€€€‚ÿThe register method registers, with the activation system, an object descriptor, desc, for an activatable remote object so that it can be activated on demand. This method is used to register an activatable object without having to first create the object. This method returns the Remote stub for the activatable object so that it can be saved and called at a later time thus forcing the object to be created/activated for the first time. The method throws UnknownGroupException if the group identifier in desc is not registered with the activation system. ActivationException is thrown if the activation system is not running. Finally, RemoteException is thrown if the remote call to the activation system fails.͌a Àa݅`æƒ͌aòÄac ”€ €ɀ€‚€€€(€€€€€€€€€€€€€€€€€‚ÿThe inactive method is used to inform the system that the object with the corresponding activation id is currently inactive. If the object is currently known to be active, the object is unexported from the RMI runtime (only if there are no pending or executing calls) so the that it can no longer receive incoming calls. This call also informs this JVM's ActivationGroup that the object is inactive; the group, in turn, informs its ActivationMonitor. If the call completes successfully, subsequent activate requests to the activator will cause the object to reactivate. The inactive method returns true if the object was successfully unexported (meaning that it had no pending or executing calls at the time) and returns false if the object could not be unexported due to pending or in-progress calls. The method throws UnknownObjectException if the object is not known (it may already be inactive); an ActivationException is thrown if the group is not active; a RemoteException is thrown if the call informing the monitor fails. The operation may still succeed if the object is considered active but has already unexported itself.˜9 ÀaŠÇa_ Œ€s€ɀ€‚€€€(€€(€€(€€€€€€€‚‚€€€€‚ÿThe unregister method revokes previous registration for the activation descriptor associated with id. An object can no longer be activated via that id. If the object id is unknown to the activation system, an UnknownObjectException is thrown. If the activation system is not running, an ActivationException is thrown. If the remote call to the activation system fails, then a RemoteException is thrown.The first exportObject method may be invoked explicitly by an "activatable" object that does not extend the Activatable class, in order to both(òÄa²Ça% €€ɀ€‚ÿx"ŠÇa*ÉaV z€E€-€€€(€€(€€(€‚‚€€€(€€(€€(€‚‚ÿ·register the object's activation descriptor, desc, constructed from the supplied codebase and data, with the activation system so the object can be activated, and·export the remote object, obj, on a specific port. If the port is zero, then an anonymous port is chosen.Mù²ÇawËaT v€ó€ɀ€‚‚€€€(€€€€€‚‚€(€€€€€‚ÿOnce the object is exported, it can receive incoming RMI calls.This exportObject method returns the activation identifier obtained from registering the descriptor, desc, with the activation system. If the activation group is not active in the JVM, then ActivationException is thrown. If the object registration or export fails, then RemoteException is thrown.This method does not need to be called if obj extends Activatable, since the first Activatable constructor calls this method."Õ*Éa™ÍaM h€«€ɀ€‚€€‚‚€€€€€(€€(€€(€‚ÿThe second exportObject method is the same as the first except it allows the specification of client and server socket factories used to communicate with the activatable object.The third exportObject method exports an "activatable" remote object (not necessarily of type Activatable) with the identifier, id, to the RMI runtime to make the object, obj, available to receive incoming calls. The object is exported on an anonymous port, if port is zero.`wËa bM h€'€ɀ€‚€€€€€€‚‚€€€€€€‚ÿDuring activation, this exportObject method should be invoked explicitly by an "activatable" object, that does not extend the Activatable class. There is no need for objects that do extend the Activatable class to invoke this method directly; this method is called by the third constructor above (which a subclass should invoke from its special activation constructor).This exportObject method returns the Remote stub for the activatable object. If the object export fails, then the method throws RemoteException.™Ía b݅`â•™ÍaîbM h€+€ɀ€‚€€‚‚€€€(€€€€€€€‚ÿThe fourth exportObject method is the same as the third but allows the specification of the client and server socket factories used to communicate with this activatable object.The unexportObject method makes the remote object, obj, unavailable for incoming calls. If the force parameter is true, the object is forcibly unexported even if there are pending calls to the remote object or the remote object still has calls in progress. If the force parameter is false, the object is only unexported if there are no pending or in progress calls to the object. If the object is successfully unexported, the RMI runtime removes the object from its internal tables. Removing the object from RMI use in this forcible manner may leave clients holding stale remote references to the remote object. This method throws java.rmi.NoSuchObjectException if the object was not previously exported to the RMI runtime.( bb% €€ɀ€‚ÿV.îblb( €\€ä€€‚‚ÿConstructing an Activatable Remote Objectv8bâb> J€q€ɀ€€€€€€€€€‚ÿIn order for an object to be activated, the "activatable" object implementation class (whether or not it extends the Activatable class) must define a special public constructor that takes two arguments, its activation identifier of type ActivationID, and its activation data, a java.rmi.MarshalledObject, supplied in the activation descriptor used during registration. When an activation group activates a remote object inside its JVM, it constructs the object via this special constructor (described in more detail below). The remote object implementation may use the activation data to initialize itself in a suitable manner. The remote object may also wish to retain its activation identifier, so that it can inform the activation group when it becomes inactive (via a call to the Activatable.inactive method).\ßlb> b} Ȁ¿ €ɀ€‚€€€(€‚‚€€€€€(€€(€€€€(€€(€€€€€€€€€€€‚ÿThe first and second constructor forms for Activatable are used to both register and export an activatable object on a specified port. This constructor should be used when initially constructing the object; the third form of the constructor is used when re-activating the object.A concrete subclass of Activatable must call the first or second constructor form to register and export the object during initial construction. This constructor first creates an activation descriptor (ActivationDesc) with the object's class name, the object's supplied codebase and data, and whose activation group is the default group for the JVM. Next, the constructor registers this descriptor with the default ActivationSystem. Finally, the constructor exports the activatable object to the RMI runtime on the specific port (if port is zero, then an anonymous port is chosen) and reports the object as an activeObject to the local ActivationGroup. If an error occurs during registration or export, the constructor throws RemoteException. Note that the constructor also initializes its ActivationID (obtained via registration), so that subsequent calls to the protected method getID will return the object's activation identifier.@ âb~b4 6€€ɀ€‚€€€€‚‚ÿThe third constructor form for Activatable is used to export the object on a specified port. A concrete subclass of Activatable must call the third constructor form when it is activated via the object's own "activation" constructor, which takes two arguments:™\> bb= J€ž€-€€€€‚‚€€€€‚‚ÿ·the object's ActivationID·the object's initialization data, a MarshalledObject&Î~bIAbX ~€€ɀ€€(€€(€€€€€‚‚€€€€€(€€€‚ÿThis constructor only exports the activatable object to the RMI runtime on the specific port (if port is 0, then an anonymous port is chosenbIAb݅`). It does not inform the ActivationGroup that the object is active, since it is the ActivationGroup that is activating the object and knows it to be active already.The following is an example of a remote object interface, Server, and an implementation, ServerImpl, that extends the Activatable class:ŸbPFbI `€} €ɀ€‚€€‚ÿpackage examples;public interface Server extends java.rmi.Remote { public void doImportantStuff() throws java.rmi.RemoteException;}public class ServerImpl extends Activatable implements Server{ // Constructor for initial construction, registration and export public ServerImpl(String codebase, MarshalledObject data) throws ActivationException, java.rmi.RemoteException { // register object with activation system, then // export on anonymous port super(codebase, data, false, 0); } // Constructor for activation and export; this constructor // is called by the ActivationInstantiator.newInstance // method during activation in order to construct the object. public ServerImpl(ActivationID id, MarshalledObject data) throws java.rmi.RemoteException { // call the superclass's constructor in order to // export the object to the RMI runtime. super(id, 0); // initialize object (using data, for example) } public void doImportantStuff() { ... }}„:IAbÔHbJ b€u€ɀ€€€€(€€€€€€€€€‚ÿAn object is responsible for exporting itself. The constructors for Activatable take care of exporting the object to the RMI runtime with the live reference type of a UnicastRemoteObject, so the object implementation extending Activatable does not need to worry about the detail of exporting the object explicitly (other than invoking the appropriate superclasses constructor). If an object implementation does not extend the class Activatable, the object must export the object explicitly via a call to one of the Activatable.exportObject static methods.³UPFb‡Mb^ Š€«€ɀ€‚€€€(€€€€€€€‚‚€‚‚ÿIn the following example, ServerImpl does not extend Activatable, but rather another class, so ServerImpl is responsible for exporting itself during initial construction and activation. The following class definition shows ServerImpl's initialization constructor and its special "activation" constructor and the appropriate call to export the object within each constructor:package examples;public class ServerImpl extends SomeClass implements Server{ // constructor for initial creation public ServerImpl(String codebase, MarshalledObject data) throws ActivationException, java.rmi.RemoteException { // register and export the object Activatable.exportObject(this, codebase, data, false, 0); } // constructor for activation public ServerImpl(ActivationID id, MarshalledObject data) throws java.rmi.RemoteException { // export the object Activatable.exportObject(this, id, 0); } public void doImportantStuff() { ... }}mEÔHbôMb( €Š€ä€€‚‚ÿRegistering an Activation Descriptor Without Creating the Object)÷‡Mb)€b2 2€ï€ɀ€€€€€‚ÿTo register an activatable remote object with the activation system without first creating the object, the programmer can simply register an activation descriptor (an instance of the class ActivationDesc) for the object. An activation descriptor contains all the necessary information so that the activation system can activate the object when needed. An activation descriptor for an instance of the class examples.ServerImpl can be registered in the following manner (ôMb)€b݅`exception handling elided): ªôMb2ƒb_ Œ€U€ɀ€‚€‚‚‚‚‚‚‚‚€€€€€€€€€€€€(€€€‚ÿServer server;ActivationDesc desc;String codebase = "http://zaphod/codebase/";MarshalledObject data = new MarshalledObject("some data");desc = new ActivationDesc( "examples.ServerImpl", codebase, data);server = (Server)Activatable.register(desc);The register call returns a Remote stub that is the stub for the examples.ServerImpl object and implements the same set of remote interfaces that examples.ServerImpl implements (i.e, the stub implements the remote interface Server). This stub object (above, cast and assigned to server) can be passed as a parameter in any method call expecting an object that implements the examples.Server remote interface.()€bZƒb% €€ɀ€‚ÿ'2ƒbƒb$ €€ä€‚ÿ+Zƒb¬ƒb( €€0䔀 ‚ÿu(ƒb!„bM j€P€ä€‚çø£—Y€‰€ç—Y€‰€ç?—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+¬ƒbL„b( €€0䔀 ‚ÿÊO!„b…b{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1L„bG…b1UÿÿÿÿÿÿÿÿUÿÿÿÿG…bk…b$…bk…b" €€€ ÿl;G…bׅb1ò­çÁ…ÊVׅb†b eJava Remote Method Invocation: 7 - Remote Object ActivationF k…b†b& €@€€€‚ÿ7 - Remote Object ActivationºFׅb׆bt#ž€ŒÂÂX€€çø£—Y€‰€çH—Y€‰€瀗Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,†b‡b' € €€‚€‚ÿ*׆b-‡b' €€ ”€ ‚ÿU#‡b‚‡b2 4€F€€‚€‚€?€ €‚‚ÿ7.4 Activation Interfaces£~-‡b%ˆb% €ü€ä€‚‚ÿIn the RMI activation protocol, there are two guarantees that the activator must make for the system to function properly:ß­‚‡b‰b2 2€[€ɀ€€‚‚€€‚‚ÿ·like all system daemons, the activator should remain running while the machine is up, and·the activator must not reactivate remote objects that are already active.Š€%ˆbª‰b& €€ä€‚‚ÿThe activator maintains a database of appropriate information for the groups and objects that it participates in activating.W&‰bŠb1 2€L€€:€‚€7€€‚‚ÿ7.4.1 The Activator InterfaceˆKª‰b‰b= H€—€ä€€€€(€€€€€‚ÿThe activator is one of the entities that participates during the activation process. As described earlier, a faulting reference (inside a stub) calls the activator's activate method to obtain a "live" reference to an activatable remote object. Upon receiving a request for activation, the activator looks up the activation descriptor for the activation identifier, id, determines the group in which the object should be activated, and invokes the newInstance method on the activation group's instantiator (the remote interface ActivationGroup is described below). The activator initiates the execution of activation groups as necessary. For example, if an activation group for a specific group descriptor is not already executing, the activator will spawn a child JVM for the activation group to establish the group in the new JVM.äŠb¡b4 6€É€ä€‚‚‚€‚‚ÿThe activator is responsible for monitoring and detecting when activation groups fail so that it can remove stale remote references from its internal tables.package java.rmi.activation;public interface Activator extends java.rmi.Remote{ java.rmi.MarshalledObject activate(ActivationID id, boolean force) throws UnknownObjectException, ActivationException, java.rmi.RemoteException;}d‰bÃba €€ä€€€€(€€(€€(€€(€€€€(€€€€€€(€¡bÃbk…b‚ÿThe activate method activates the object associated with the activation identifier, id. If the activator knows the object to be active already and the force parameter is false, the stub with a "live" reference is returned immediately to the caller; otherwise, if the activator does not know that the corresponding remote object is active or the force parameter is true, the activator uses the activation descriptor information (previously registered to obtain the id) to determine the group (JVM) in which the object should be activated. If an ActivationInstantiator corresponding to the object's group already exists, the activator invokes the activation instantiator's newInstance method, passing it the id and the object's activation descriptor.Œ~¡bÍÅb> J€ý€ä€‚€€€€€€€€‚ÿIf the activation instantiator (group) for the object's group descriptor does not yet exist, the activator starts a new incarnation of an ActivationInstantiator executing (by spawning a child process, for example). When the activator re-creates an ActivationInstantiator for a group, it must increment the group's incarnation number. Note that the incarnation number is zero-based. The activation system uses incarnation numbers to detect late ActivationSystem.activeGroup and ActivationMonitor.inactiveGroup calls. The activation system discards calls with an earlier incarnation number than the current number for the group.'ÃbôÅb$ €€ä€‚ÿ(ÍÅbÆb% €€ɀ€‚ÿ,ôÅbHÆb) "€€0ɀ”€ ‚ÿ‘XÆbÙÈb9 @€±€ɀ€‚€€€€€(€‚ÿNote - The activator must communicate both the activation group's identifier, descriptor, and incarnation number when it starts up a new activation group. The activator spawns an activation group in a separate JVM (as a separate or child process, for example), and therefore must pass information specifying the information necessary to create the group via the ActivationGroup.createGroup method. How the activator sends this information to the spawned process is unspecified, however, this information could be sent in the form of marshalled objects to the child process's standard input.(HÆbÉb% €€ɀ€‚ÿ,ÙÈb-Éb) "€€0ɀ”€ ‚ÿ.Éb[Éb) "€ €ɀ€‚€‚ÿŠE-ÉbåÌbE X€‹€ä€€€€€€(€‚‚€€€€‚ÿWhen the activator receives the activation group's call back (via the ActivationSystem.activeGroup method) specifying the activation group's reference and incarnation number, the activator can then invoke that activation instantiator's newInstance method to forward each pending activation request to the activation instantiator and return the result (a marshalled remote object reference, a stub) to each caller.Note that the activator receives a MarshalledObject instead of a Remote object so that the activator does not need to load the code for that object, or participate in distributed garbage collection for that object. If the activator kept a strong reference to the remote object, the activator would then prevent the object from being garbage collected under the normal distributed garbage collection mechanism.»[ÉbêÎbJ b€w€ä€‚€€€€€€€€€(€€€‚ÿThe activate method throws ActivationException if activation fails. Activation may fail for a variety of reasons: the class could not be found, the activation group could not be contacted, etc. The activate method throws UnknownObjectException if no activation descriptor for the activation identifier, id, has been previously registered with this activator. RemoteException is thrown if the remote call to the activator fails.'åÌbÏb$ €€ä€‚ÿ^-êÎboÏb1 2€Z€€:€‚€7€€‚‚ÿ7.4.2 The ActivationSystem InterfaceJåÏbÅce ˜€Ë €ä€€€€(€€€€€€€€€‚‚€‚‚ÿThe ActivationSystem provides a means foroÏbÅck…b registering groups and activatable objects to be activated within those groups. The ActivationSystem works closely with both the Activator, which activates objects registered via the ActivationSystem, and the ActivationMonitor, which obtains information about active and inactive objects and inactive groups.package java.rmi.activation;public interface ActivationSystem extends java.rmi.Remote{ public static final int SYSTEM_PORT = 1098; ActivationGroupID registerGroup(ActivationGroupDesc desc) throws ActivationException, java.rmi.RemoteException; ActivationMonitor activeGroup(ActivationGroupID id, ActivationInstantiator group, long incarnation) throws UnknownGroupException, ActivationException, java.rmi.RemoteException; void unregisterGroup(ActivationGroupID id) throws ActivationException, UnknownGroupException, java.rmi.RemoteException; ActivationID registerObject(ActivationDesc desc) throws ActivationException, UnknownGroupException, java.rmi.RemoteException; void unregisterObject(ActivationID id) throws ActivationException, UnknownObjectException, java.rmi.RemoteException; void shutdown() throws java.rmi.RemoteException;}(oÏbíc% €€ɀ€‚ÿ,Åcc) "€€0ɀ”€ ‚ÿ²QícËca €£€ɀ€‚€€€€€€€€€€€€€€€€€€‚€‚ÿNote - As a security measure, all of the above methods (registerGroup, activeGroup, unregisterGroup, registerObject, unregisterObject, and shutdown) will throw java.rmi.AccessException, a subclass of java.rmi.RemoteException, if called from a client that does not reside on the same host as the activation system.,c÷c) "€€0ɀ”€ ‚ÿ.Ëc%c) "€ €ɀ€‚€‚ÿáz÷c cg œ€õ€ä€€€€(€€€€€€(€€€€€€(€€€€€€€‚ÿThe registerObject method is used to register an activation descriptor, desc, and obtain an activation identifier for an activatable remote object. The ActivationSystem creates an ActivationID (an activation identifier) for the object specified by the descriptor, desc, and records, in stable storage, the activation descriptor and its associated identifier for later use. When the Activator receives an activate request for a specific identifier, it looks up the activation descriptor (registered previously) for the specified identifier and uses that information to activate the object. If the group referred to in desc is not registered with this system, then the method throws UnknownGroupException. If registration fails (e.g., database update failure, etc), then the method throws ActivationException. If the remote call fails, then RemoteException is thrown.]%cccV z€€ä€‚€€€(€€€€(€€(€€€€€€€‚ÿThe unregisterObject method removes the activation identifier, id, and associated descriptor previously registered with the ActivationSystem. After the call completes, the object can no longer be activated via the object's activation id. If the object id is unknown (not registered) the method throws UnknownObjectException. If the unregister operation fails (e.g., database update failure, etc.), then the method throws ActivationException. If the remote call fails, then RemoteException is thrown.¹ cs@cK d€s€ä€‚€€€(€€€€€€€€€‚‚ÿThe registerGroup method registers the activation group specified by the group descriptor, desc, with the activation system and returns the ActivationGroupID assigned to that group. An activation group must be registered with the ActivationSystem before objects can be registered within that group. If group registration fails, ccs@ck…bthe method throws ActivationException. If the remote call fails, then RemoteException is thrown."Ácc•Cca €ƒ€ä€€€€€€(€€(€€€€€€€€€€€€€‚ÿThe activeGroup method is a call back from the ActivationGroup (with the identifier, id), to inform the activation system that group is now active and is the ActivationInstantiator for that JVM. This call is made internally by the ActivationGroup.createGroup method to obtain an ActivationMonitor that the group uses to update the system regarding objects' and the group's status (i.e., that the group or objects within that group have become inactive). If the group is not registered, then the method throws UnknownGroupException. If the group is already active, then ActivationException is thrown. If the remote call to the activation system fails, then RemoteException is thrown.»ws@cPFcD V€ï€ä€‚€€€(€€€€€€€‚ÿThe unregisterGroup method removes the activation group with identifier, id, from the activation system. An activation group makes this call back to inform the activator that the group should be destroyed. If this call completes successfully, objects can no longer be registered or activated within the group. All information of the group and its associated objects is removed from the system. The method throws UnknownGroupException if the group is not registered. If the remote call fails, then RemoteException is thrown. If the unregister fails, ActivationException is thrown (e.g., database update failure, etc.).M•CcHc< F€#€ä€‚€€€€‚‚€€‚‚ÿThe shutdown method gracefully terminates (asynchronously) the activation system and all related activation processes (activator, monitors and groups). All groups spawned by the activation daemon will be destroyed and the activation daemon will exit. In order to shut down the activation system daemon, rmid, execute the command: rmid -stop [-port num]This command will shut down the activation daemon on the specified port (if no port is specified, the daemon on the default port will be shut down).'PFcÄHc$ €€ä€‚ÿ[*HcIc1 2€T€€:€‚€7€€‚‚ÿ7.4.3 The ActivationMonitor Classn*ÄHcJcD V€U€ä€€€€€€€€€€€‚‚ÿAn ActivationMonitor is specific to an ActivationGroup and is obtained when a group is reported via a call to ActivationSystem.activeGroup (this is done internally by the ActivationGroup.createGroup method). An activation group is responsible for informing its ActivationMonitor when:ÜIcŠMc= H€¹€ɀ€‚‚‚‚‚‚€‚‚ÿa. its objects become active,b. its objects become inactive, orc. the group as a whole becomes inactive.package java.rmi.activation;public interface ActivationMonitor extends java.rmi.Remote{ public abstract void inactiveObject(ActivationID id) throws UnknownObjectException, RemoteException; public void activeObject(ActivationID id, java.rmi.MarshalledObject mobj) throws UnknownObjectException, java.rmi.RemoteException; public void inactiveGroup(ActivationGroupID id, long incarnation) throws UnknownGroupException, java.rmi.RemoteException; }Â^Jctcd –€œ€ɀ€€€€€‚‚€€€€€(€€(€€€€€€€€€‚ÿAn activation group calls its monitor's inactiveObject method when an object in its group becomes inactive (deactivates). An activation group discovers that an object (that it participated in activating) in its JVM is no longer active via a call to the activation group's inactiveObject method.The inactiveObject call informs the ActivationMonitor that the remote object reference it holds for the object with the activation identifier, id, is no longer valid. The monitor considers the reŠMctck…bference associated with id as a stale reference. Since the reference is considered stale, a subsequent activate call for the same activation identifier results in re-activating the remote object. If the object is not known to the ActivationMonitor, the method throws UnknownObjectException. If the remote call fails, then RemoteException is thrown.q ŠMcåƒcQ p€A€ɀ€‚€€€€€(€€(€€€€€€€‚ÿThe activeObject call informs the ActivationMonitor that the object associated with id is now active. The parameter obj is the marshalled representation of the object's stub. An ActivationGroup must inform its monitor if an object in its group becomes active by other means than being activated directly by the system (i.e., the object is registered and "activated" itself). If the object id is not previously registered, then the method throws UnknownObjectException. If the remote call fails, then RemoteException is thrown.~3tcc†cK d€g€ɀ€‚€€€(€€(€€(€€€€€‚ÿThe inactiveGroup call informs the monitor that the group specified by id and incarnation is now inactive. The group will be re-created with a greater incarnation number upon a subsequent request to activate an object within the group. A group becomes inactive when all objects in the group report that they are inactive. If either the group id is not registered or the incarnation number is smaller than the current incarnation for the group, then the method throws UnknownGroupException. If the remote call fails, then RemoteException is thrown.(åƒc‹†c% €€ɀ€‚ÿa/c†cì†c2 4€^€ä€:€‚€7€€‚‚ÿ7.4.4 The ActivationInstantiator Class¡Z‹†c‰cG \€µ€ɀ€€€€€€€‚‚€‚‚ÿThe ActivationInstantiator is responsible for creating instances of activatable objects. A concrete subclass of ActivationGroup implements the newInstance method to handle creating objects within the group.package java.rmi.activation;public interface ActivationInstantiator extends java.rmi.Remote{ public MarshalledObject newInstance(ActivationID id, ActivationDesc desc) throws ActivationException, java.rmi.RemoteException; }Ïì†c•Šc9 @€Ÿ€ɀ€€€€(€€(€‚‚ÿThe activator calls an instantiator's newInstance method in order to re-create in that group an object with the activation identifier, id, and descriptor, desc. The instantiator is responsible for:[ÿ‰cðŒc\ †€ÿ€-€€€€‚€€€€‚€€€€€€‚€€€€‚ÿ·determining the class for the object using the descriptor's getClassName method,·loading the class from the codebase path obtained from the descriptor (using the getLocation method),·creating an instance of the class by invoking the special "activation" constructor of the object's class that takes two arguments: the object's ActivationID, and the MarshalledObject containing object-specific initialization data, and·returning a MarshalledObject containing the remote object it created.(•Šcc% €€-€‚ÿÛ”ðŒcóŽcG \€)€ɀ€€€€€€€‚‚€€€€‚‚ÿAn instantiator is also responsible for reporting when objects it creates or activates are no longer active, so that it can make the appropriate inactiveObject call to its ActivationMonitor (see the ActivationGroup class for more details).If object activation fails, then the newInstance method throws ActivationException. If the remote call fails, then the method throws RemoteException.^,cQc2 4€X€ä€:€‚€7€€‚‚ÿ7.4.5 The ActivationGroupDesc ClassÓóŽc_Àc/ ,€§€ɀ€€€‚‚‚‚ÿAn activation group descriptor (ActivationGroupDesc) contains the information necessary to create or re-create an activation Qc_Àck…bgroup in which to activate objects in the same JVM.Such a descriptor contains:FQc¥ÁcD V€€-€€€€€€‚€€‚€€‚‚ÿ·the group's class name (a class name of null indicates the default ActivationGroup implementation),·the group's codebase path (the location of the group's class), and·a "marshalled" object that can contain object-specific initialization data.,ó_ÀcÑÂc9 @€ç€ɀ€€€€€€€‚‚ÿThe group's class must be a concrete subclass of ActivationGroup. A subclass of ActivationGroup is created or re-created via the ActivationGroup.createGroup static method, which invokes a special constructor that takes two arguments:¬p¥Ác}Ãc< H€à€-€€€€‚€€€€‚‚ÿ·the group's ActivationGroupID, and·the group's initialization data (in a java.rmi.MarshalledObject)\"ÑÂcÙÆc: B€E€ɀ€‚‚ÿpackage java.rmi.activation;public final class ActivationGroupDesc implements java.io.Serializable{ public ActivationGroupDesc(java.util.Properties props, CommandEnvironment env);; public ActivationGroupDesc(String className, String codebase, java.rmi.MarshalledObject data, java.util.Properties props, CommandEnvironment env); public String getClassName(); public String getLocation(); public java.rmi.MarshalledObject getData(); public CommandEnvironment getCommandEnvironment(); public java.util.Properties getPropertiesOverrides();}i%}ÃcBÉcD V€K€ɀ€€€€€€€€€€€‚ÿThe first constructor creates a group descriptor that uses system default for group implementation and code location. Properties specify Java application environment overrides (which will override system properties in the group implementation's JVM). The command environment can control the exact command/options used in starting the child JVM, or can be null to accept rmid's default. This constructor will create an ActivationGroupDesc with a null group class name, which indicates the system's default ActivationGroup implementation.2ÕÙÆctËc] ˆ€«€ɀ€‚€€€€‚‚€€€€€€€€‚‚€€‚‚€€‚ÿThe second constructor is the same as the first, but allows the specification of Properties and CommandEnvironment.The getClassName method returns the group's class name (possibly null). A null group class name indicates the system's default ActivationGroup implementation.The getLocation method returns the codebase path from where the group's class can be loaded.The getData method returns the group's initialization data in marshalled form. ÇBÉc}ÌcB R€€ɀ€‚€€€€‚‚€€€€‚‚ÿThe getCommandEnvironment method returns the command environment (possibly null).The getPropertiesOverrides method returns the properties overrides (possibly null) for this descriptor.q?tËcîÌc2 4€~€ä€:€‚€7€€‚‚ÿ7.4.6 The ActivationGroupDesc.CommandEnvironment ClassÒ}ÌcÏcC T€¥€ɀ€€€€€‚‚€€‚ÿThe CommandEnvironment class allows overriding default system properties and specifying implemention-defined options for an ActivationGroup.public static class CommandEnvironment implements java.io.Serializable{ public CommandEnvironment(String cmdpath, String[] args); public boolean equals(java.lang.Object); public String[] getCommandOptions(); public String getCommandPath(); public int hashCode();}KïîÌcZd\ †€ß€ɀ€€€€(€€(€‚‚€€€€€€‚‚€€‚‚€€‚ÿThe constructor creates a CommandEnvironment with the given command, cmdpath, and additional command line options, args.The equals implements content ÏcZdk…bequality for command environment objects. The hashCode method is implemented appropriately so that a CommandEnvironment can be stored in a hash table if necessary.The getCommandOptions method returns the environment object's command line options.The getCommandPath method returns the environment object's command string.(Ïc‚d% €€ɀ€‚ÿ\*ZdÞd2 4€T€ä€:€‚€7€€‚‚ÿ7.4.7 The ActivationGroupID ClasssM‚dQd& €š€ɀ€‚‚ÿThe identifier for a registered activation group serves several purposes:ûÉÞdLd2 2€“€-€€‚‚€€‚‚ÿ·it identifies the group uniquely within the activation system, and·it contains a reference to the group's activation system so that the group can contact its activation system when necessary.‡GQdÓd@ N€€ɀ€€€€€‚‚€‚‚ÿThe ActivationGroupID is returned from the call to ActivationSystem.registerGroup and is used to identify the group within the activation system. This group identifier is passed as one of the arguments to the activation group's special constructor when an activation group is created or re-created.package java.rmi.activation;public class ActivationGroupID implements java.io.Serializable{ public ActivationGroupID(ActivationSystem system); public ActivationSystem getSystem(); public boolean equals(Object obj); public int hashCode();}¹iLdŒdP n€Ó€ɀ€€€€(€‚‚€€‚‚€€‚‚€€€€‚ÿThe ActivationGroupID constructor creates a unique group identifier whose ActivationSystem is system.The getSystem method returns the activation system for the group.The hashCode method returns a hashcode for the group's identifier. Two group identifiers that refer to the same remote group will have the same hash code.The equals method compares two group identifiers for content equality. The method returns true if both of the following conditions are true: 1) the unique identifiers are equivalent (by content), and 2) the activation system specified in each refers to the same remote object.(ÓdŽd% €€ɀ€‚ÿZ(Œd d2 4€P€ä€:€‚€7€€‚‚ÿ7.4.8 The ActivationGroup ClassŽdÐ d3 4€€ɀ€€€€€‚‚ÿAn ActivationGroup is responsible for creating new instances of activatable objects in its group, informing its ActivationMonitor when:®u d~ d9 B€ê€-€€‚‚€€‚‚€€‚‚ÿa. its objects become active,b. its objects become inactive, orc. the group as a whole becomes inactive.yGÐ d÷ d2 4€Ž€ɀ€€€€(€‚‚ÿAn ActivationGroup is initially created in one of several ways:Q~ dH dJ b€€-€€€€‚€€€€‚€€€€‚‚ÿ·as a side-effect of creating a "default" ActivationDesc for an object, or·by an explicit call to the ActivationGroup.createGroup method, or·as a side-effect of activating the first object in a group whose ActivationGroupDesc was only registered.„@÷ dÌdD V€€ɀ€€(€€€€€€€€€‚ÿOnly the activator can re-create an ActivationGroup. The activator spawns, as needed, a separate JVM (as a child process, for example) for each registered activation group and directs activation requests to the appropriate group. It is implementation specific how JVMs are spawned. An activation group is created via the ActivationGroup.createGroup static method. The createGroup method has two requirements on the group to be created: 1) the group must be a concrete subclass of ActivationGroup, and 2) the group must have a constructor that takes two arguments:(H dôd% €€ɀ€‚ÿ£gÌd—d< H€Î€-€€€€‚€€€€‚‚ÿ·the group's ActivationGroupID, and·the group's initialization data (in a MarshalledObject))åôdÌAdD V€Ë€ɀ€€€€€€€€€€€‚ÿWhen created, the default implementa—dÌAdk…btion of ActivationGroup will set the system properties to the system properties in force when the ActivationGroupDesc was created, and will set the security manager to the java.rmi.RMISecurityManager. If your application requires some specific properties to be set when objects are activated in the group, the application should set the properties before creating any ActivationDescs (before the default ActivationGroupDesc is created).¥[—dqHdJ b€· €ɀ€‚€‚‚ÿpackage java.rmi.activation;public abstract class ActivationGroup extends UnicastRemoteObject implements ActivationInstantiator{ protected ActivationGroup(ActivationGroupID groupID) throws java.rmi.RemoteException; public abstract MarshalledObject newInstance(ActivationID id, ActivationDesc desc) throws ActivationException, java.rmi.RemoteException; public abstract boolean inactiveObject(ActivationID id) throws ActivationException, UnknownObjectException, java.rmi.RemoteException; public static ActivationGroup createGroup(ActivationGroupID id, ActivationGroupDesc desc, long incarnation) throws ActivationException; public static ActivationGroupID currentGroupID(); public static void setSystem(ActivationSystem system) throws ActivationException; public static ActivationSystem getSystem() throws ActivationException; protected void activeObject(ActivationID id, java.rmi.MarshalledObject mobj) throws ActivationException, UnknownObjectException, java.rmi.RemoteException; protected void inactiveGroup() throws UnknownGroupException, java.rmi.RemoteException; }å²ÌAdVId3 4€e€ɀ€€€€(€‚‚ÿThe activator calls an activation group's newInstance method in order to activate an object with the activation descriptor, desc. The activation group is responsible for:LöqHd¢KdV z€í€-€€€€‚€€€€‚€€€€€€‚€€‚ÿ·determining the class for the object using the descriptor's getClassName method,·loading the class from the URL path obtained from the descriptor (using the getLocation method),·creating an instance of the class by invoking the special constructor of the object's class that takes two arguments: the object's ActivationID, and a MarshalledObject containing the object's initialization data, and·returning a serialized version of the remote object it just created to the activator.(VIdÊKd% €€-€‚ÿn"¢Kd8NdL f€E€ɀ€€€‚‚€€€€€€€€€€‚ÿThe method throws ActivationException if the instance for the given descriptor could not be created.The group's inactiveObject method is called indirectly via a call to the Activatable.inactive method. A remote object implementation must call Activatable's inactive method when that object deactivates (the object deems that it is no longer active). If the object does not call Activatable.inactive when it deactivates, the object will never be garbage collected since the group keeps strong references to the objects it creates.à{ÊKd$‚de ˜€÷€ɀ€‚€€€(€€€€€‚‚€€€€€€€€€€€€‚ÿThe group's inactiveObject method unexports the remote object, associated with id (only if there are no pending or executing calls to the remote object) from the RMI runtime so that the object can no longer receive incoming RMI calls. If the object currently has pending or executing calls, inactiveObject returns false and no action is taken.8Nd$‚dk…bIf the unexportObject operation was successful (meaning that the object has no pending or executing calls), the group informs its ActivationMonitor (via the monitor's inactiveObject method) that the remote object is not currently active so that the remote object will be reactivated by the activator upon a subsequent activation request. If the operation was successful, inactiveObject returns true. The operation may still succeed if the object is considered active by the ActivationGroup but has already been unexported.Ôu8Ndø…d_ Œ€ë€ɀ€‚€€€€€€‚‚€€€€€€€€€€€€‚ÿThe inactiveObject method throws an UnknownObjectException if the activation group has no knowledge of this object (e.g., the object was previously reported as inactive, or the object was never activated via the activation group). If the inactive operation fails (e.g., if the remote call to the activator or activation group fails), RemoteException is thrown.The createGroup method creates and sets the activation group for the current JVM. The activation group can only be set if it is not currently set. An activation group is set using the createGroup method when the Activator initiates the re-creation of an activation group in order to carry out incoming activate requests. A group must first register a group descriptor with the ActivationSystem before it can be created via this method (passing it the ActivationID obtained from previous registration).°Y$‚dšˆdW |€³€ɀ€‚€€€(€€€€€€€€€€€€€‚ÿThe group specified by the ActivationGroupDesc, desc, must be a concrete subclass of ActivationGroup and have a public constructor that takes two arguments; the ActivationGroupID for the group and a MarshalledObject containing the group's initialization data (obtained from its ActivationGroupDesc). If the ActivationGroupDesc.getClassName method returns null, the system's default group implementation is used. Note: if your application creates its own custom activation group, the group must set a security manager in the constructor, or objects cannot be activated in the group._ø…d‹dY €€ €ɀ€‚€€€€€€€€€€‚‚€€€€€€‚ÿAfter the group is created, the ActivationSystem is informed that the group is active by calling the activeGroup method, which returns the ActivationMonitor for the group. The application need not call activeGroup independently since that callback is taken care of by the createGroup method.Once a group is created, subsequent calls to the currentGroupID method will return the identifier for this group until the group becomes inactive, at which point the currentGroupID method will return null.à]šˆd Àdƒ Ԁ»€ɀ€‚€(€€€€€€€‚‚€€€€€(€€€€€€€€(€€(€€(€€€€€‚ÿThe parameter incarnation indicates the current group incarnation, i.e., the number of times the group has been activated. The incarnation number is used as a parameter to the activeGroup method, once the group has been successfully created. The incarnation number is zero-based. If the group already exists, or if an error occurs during group creation, the createGroup method throws ActivationException.The setSystem method sets the ActivationSystem, system, for the JVM. The activation system can only be set if no group is currently active. If the activation system is not set via an explicit call to setSystem, then the getSystem method will attempt to obtain a reference to the ActivationSystem by looking up the name java.rmi.activation.ActivationSystem in the Activator's registry. By default, the port number used to look up the activation system is defined by ActivationSystem.SYSTEM_PORT. This port can be overridden by setting the property java.rmi.activation.port. If the activation system is already set when setSystem is called, the method throws ActivationException.‹d Àdk…b,Ù‹d8ÂdS t€³€ɀ€‚€€€€‚‚€€€€€(€€(€€€‚ÿThe getSystem method returns the activation system for the JVM. The activation system may be set by the setSystem method (described above).The activeObject method is a protected method used by subclasses to make the activeObject call back to the group's monitor to inform the monitor that the remote object with the specified activation id and whose stub is contained in mobj is now active. The call is simply forwarded to the group's ActivationMonitor.)û ÀdaÃd. *€÷€ɀ€‚€€‚‚ÿThe inactiveGroup method is a protected method used by subclasses to inform the group's monitor that the group has become inactive. A subclass makes this call when each object the group participated in activating in the JVM has become inactive.[)8ÂdŒÃd2 4€R€ä€:€‚€7€€‚‚ÿ7.4.9 The MarshalledObject Classú¶aÃd¶ÆdD V€m€ɀ€€€€€€€€€€€‚ÿA MarshalledObject is a container for an object that allows that object to be passed as a parameter in an RMI call, but postpones deserializing the object at the receiver until the application explicitly requests the object (via a call to the container object). The Serializable object contained in the MarshalledObject is serialized and deserialized (when requested) with the same semantics as parameters passed in RMI calls, which means that any remote object in the MarshalledObject is represented by a serialized instance of its stub. The object contained by the MarshalledObject may be a remote object, a non-remote object, or an entire graph of remote and non-remote objects.7ôŒÃdíÉdC T€é€ɀ€‚€€€€‚‚€‚‚ÿWhen an object is placed inside the MarshalledObject wrapper, the serialized form of the object is annotated with the codebase URL (where the class can be loaded); likewise, when the contained object is retrieved from its MarshalledObject wrapper, if the code for the object is not available locally, the URL (annotated during serialization) is used to locate and load the bytecodes for the object's class.package java.rmi;public final class MarshalledObject implements java.io.Serializable{ public MarshalledObject(Object obj) throws java.io.IOException; public Object get() throws java.io.IOException, ClassNotFoundException; public int hashCode(); public boolean equals();}C¶Æd0Ëd0 .€'€ɀ€€€(€‚‚ÿMarshalledObject's constructor takes a serializable object, obj, as its single argument and holds the marshalled representation of the object in a byte stream. The marshalled representation of the object preserves the semantics of objects that are passed in RMI calls:5þíÉdeÌd7 <€ý€-€€€€‚€€‚‚ÿ·each class in the stream is annotated with its codebase URL so that when the object is reconstructed (by a call to the get method), the bytecodes for each class can be located and loaded, and·remote objects are replaced with their proxy stubs."Ü0Ëd‡ÎdF Z€¹€ɀ€€€€€‚‚€€€€€€‚ÿWhen an instance of the class MarshalledObject is written to a java.io.ObjectOutputStream, the contained object's marshalled form (created during construction) is written to the stream; thus, only the byte stream is serialized.When a MarshalledObject is read from a java.io.ObjectInputStream, the contained object is not deserialized into a concrete object; the object remains in its marshalled representation until the marshalled object's get method is called.•TeÌd(eA P€©€ɀ€‚€€‚‚€€€€€(€‚ÿThe get method always reconstructs a new copy of the contained object from its marshalled form. The internal representation is deserialized with the semantics used for unmarshalling parameters for RMI calls. So, the deserialization of the object's representation loads class code (if not available locally) u‡Îd(ek…bsing the URL annotation embedded in the serialized stream for the object.The hashCode of the marshalled representation of the object is the same as the object passed to the constructor. The equals method will return true if the marshalled representation of the objects being compared are equivalent. The comparison that equals uses ignores a class's codebase annotation, meaning that two objects are equivalent if they have the same serialized representation except for the codebase of each class in the serialized representation.(‡ÎdPe% €€ɀ€‚ÿ'(ewe$ €€ä€‚ÿ+Pe¢e( €€0䔀 ‚ÿu(weeM j€P€ä€‚çø£—Y€‰€çH—Y€‰€瀗Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+¢eBe( €€0䔀 ‚ÿÊOe e{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1Be=e1UÿÿÿÿÿÿÿÿWÿÿÿÿ=eae$ eae" €€€ ÿg6=eÈe1á/Å_ÊXÈe e¹ eJava Remote Method Invocation: 3 - RMI System OverviewAae e& €6€€€‚ÿ3 - RMI System OverviewºFÈeÃet#ž€ŒÂÂX€€çø£—Y€‰€çþ€—Y€‰€çA—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method InvocationK ee/ .€8€€‚€%€‚‚€‚ÿRMI System Overview*Ãe8e' €€ ”€ ‚ÿ&e^e# €€€‚ÿA 8eŸe4#8€o€€€‚€‚ÿÿÿCHAPTER35 ^eÔe( €€€‚€‚‚ÿTopics:.»Ÿees Ž€w€ɀ€7çA—Y€@‰€‚€7çB—Y€@‰€‚€7çC—Y€@‰€‚€7çD—Y€@‰€‚€7çE—Y€@‰€‚‚ÿ·Stubs and Skeletons·Thread Usage in Remote Method Invocations·Garbage Collection of Remote Objects·Dynamic Class Loading·RMI Through Firewalls Via Proxies&Ôe(e# €€€A‚ÿ*eRe' €€ ”€B‚ÿt((eÆeL h€P€€A‚çø£—Y€@‰€çþ€—Y€@‰€çA—Y€@‰€‚€A‚ÿCONTENTS | PREV | NEXT*Reðe' €€ ”€B‚ÿÉOÆe¹ ez Āž€€A‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€C‰€4€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ðeê e1UÿÿÿÿÿÿÿÿYÿÿÿÿê e e$¹ e e" €€€ ÿg6ê eu e1- …Êi„ÊZu e¶ e=FeJava Remote Method Invocation: 3 - RMI System OverviewA e¶ e& €6€€€‚ÿ3 - RMI System OverviewºFu ep et#ž€ŒÂÂX€€çø£—Y€‰€ç@—Y€‰€çB—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,¶ eœ e' € €€‚€‚ÿ*p eÆ e' €€ ”€ ‚ÿS!œ e e2 4€B€€‚€‚€?€ €‚‚ÿ3.1 Stubs and Skeletons5Æ eNe4 6€€ɀ€€(€€(€‚‚‚ÿRMI uses a standard mechanism (employed in RPC systems) for communicating with remote objects: stubs and skeletons. A stub for a remote object acts as a client's local representative or proxy for the remote object. The caller invokes a method on the local stub which is responsible for carrying out the method call on the remote object. In RMI, a stub for a remote object implements the same set of remote interfaces that a remote object implements.When a stub's method is invoked, it does the following:( eve% €€ɀ€‚ÿq+Ne @eF Z€W€-€€‚€€‚€€‚€€‚€€‚‚ÿ·initiates a connection with the remote JVM containing the remote object,·marshals (writes and transmits) the parameters to the remote JVM,·waits for the result of the method invocation,·unmarshals (reads) the return value or exception returned, and·returns the value to the caller.ve @e eüÓveBe) €§€ɀ€‚‚‚‚ÿThe stub hides the serialization of parameters and the network-level communication in order to present a simple invocation mechanism to the caller.In the remote JVM, each remote object may have a corresponding skeleton (in Java 2 platform-only environments, skeletons are not required). The skeleton is responsible for dispatching the call to the actual remote object implementation. When a skeleton receives an incoming method invocation it does the following:Ý @eCe8 >€»€-€€‚€€‚€€‚‚ÿ·unmarshals (reads) the parameters for the remote method,·invokes the method on the actual remote object implementation, and·marshals (writes and transmits) the result (return value or exception) to the caller.d7BeDe- (€o€ɀ€€€‚‚ÿIn the Java 2 SDK, Standard Edition, v1.2 an additional stub protocol was introduced that eliminates the need for skeletons in Java 2 platform-only environments. Instead, generic code is used to carry out the duties performed by skeletons in JDK1.1. Stubs and skeletons are generated by the rmic compiler.'CešDe$ €€ä€‚ÿ+DeÓDe( €€0䔀 ‚ÿu(šDeHEeM j€P€ä€‚çø£—Y€‰€ç@—Y€‰€çB—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+ÓDesEe( €€0䔀 ‚ÿÊOHEe=Fe{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1sEenFe1Uÿÿÿÿÿÿÿÿ[ÿÿÿÿnFe’Fe$=Fe’Fe" €€€ ÿg6nFeùFe1_ʇÊ\ùFe:GeLeJava Remote Method Invocation: 3 - RMI System OverviewA’Fe:Ge& €6€€€‚ÿ3 - RMI System OverviewºFùFeôGet#ž€ŒÂÂX€€çø£—Y€‰€çA—Y€‰€çC—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,:Ge He' € €€‚€‚ÿ*ôGeJHe' €€ ”€ ‚ÿi7 He³He2 4€n€€‚€‚€?€ €‚‚ÿ3.2 Thread Usage in Remote Method InvocationsªƒJHe]Je' €€ɀ€‚‚ÿA method dispatched by the RMI runtime to a remote object implementation may or may not execute in a separate thread. The RMI runtime makes no guarantees with respect to mapping remote object invocations to threads. Since remote method invocation on the same remote object may execute concurrently, a remote object implementation needs to make sure its implementation is thread-safe.'³He„Je$ €€ä€‚ÿ+]Je¯Je( €€0䔀 ‚ÿu(„Je$KeM j€P€ä€‚çø£—Y€‰€çA—Y€‰€çC—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+¯JeOKe( €€0䔀 ‚ÿÊO$KeLe{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1OKeJLe1Uÿÿÿÿÿÿÿÿ]ÿÿÿÿJLenLe$LenLe" €€€ ÿg6JLeÕLe1i„ÊŒ Ë^ÕLeMexŒeJava Remote Method Invocation: 3 - RMI System OverviewAnLeMe& €6€€€‚ÿ3 - RMI System OverviewºFÕLeÐMet#ž€ŒÂÂX€€çø£—Y€‰€çB—Y€‰€çD—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,MeüMe' € €€‚€‚ÿ*ÐMe&Ne' €€ ”€ ‚ÿd2üMeŠNe2 4€d€€‚€‚€?€ €‚‚ÿ3.3 Garbage Collection of Remote Objects8 &Ne΀e, &€€ɀ€€(€‚ÿIn a distributed system, just as in the local system, it is desirable to automatically delete those remote objects that are no longer referenced by any client. This frees the programmer from needing to keep track of the remote objects' clients so that it can terminate appropriately. RMI uses a reference-counting garbage collectŠNe΀enLeion algorithm similar to Modula-3's Network Objects. (See "Network Objects" by Birrell, Nelson, and Owicki, Digital Equipment Corporation Systems Research Center Technical Report 115, 1994.)òËŠNeÀƒe' €—€ɀ€‚‚ÿTo accomplish reference-counting garbage collection, the RMI runtime keeps track of all live references within each Java virtual machine. When a live reference enters a Java virtual machine, its reference count is incremented. The first reference to an object sends a "referenced" message to the server for the object. As live references are found to be unreferenced in the local virtual machine, the count is decremented. When the last reference has been discarded, an unreferenced message is sent to the server. Many subtleties exist in the protocol; most of these are related to maintaining the ordering of referenced and unreferenced messages in order to ensure that the object is not prematurely collected.F΀eAˆe; D€€ɀ€‚‚‚€€€€€€‚ÿWhen a remote object is not referenced by any client, the RMI runtime refers to it using a weak reference. The weak reference allows the Java virtual machine's garbage collector to discard the object if no other local references to the object exist. The distributed garbage collection algorithm interacts with the local Java virtual machine's garbage collector in the usual ways by holding normal or weak references to objects.As long as a local reference to a remote object exists, it cannot be garbage-collected and it can be passed in remote calls or returned to clients. Passing a remote object adds the identifier for the virtual machine to which it was passed to the referenced set. A remote object needing unreferenced notification must implement the java.rmi.server.Unreferenced interface. When those references no longer exist, the unreferenced method will be invoked. unreferenced is called when the set of references is found to be empty so it might be called more than once. Remote objects are only collected when no more references, either local or remote, still exist.S&Àƒe”Še- (€M€ɀ€‚€€‚ÿNote that if a network partition exists between a client and a remote server object, it is possible that premature collection of the remote object will occur (since the transport might believe that the client crashed). Because of the possibility of premature collection, remote references cannot guarantee referential integrity; in other words, it is always possible that a remote reference may in fact not refer to an existing object. An attempt to use such a reference will generate a RemoteException which must be handled by the application.(AˆeŒŠe% €€ɀ€‚ÿ'”ŠeãŠe$ €€ä€‚ÿ+ŒŠe‹e( €€0䔀 ‚ÿu(ãŠeƒ‹eM j€P€ä€‚çø£—Y€‰€çB—Y€‰€çD—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+‹e®‹e( €€0䔀 ‚ÿÊOƒ‹exŒe{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1®‹e©Œe1Uÿÿÿÿÿÿÿÿ_ÿÿÿÿ©Œe͌e$xŒe͌e" €€€ ÿg6©Œe4e1݇Êñ†Ë`4eueNÍeJava Remote Method Invocation: 3 - RMI System OverviewA͌eue& €6€€€‚ÿ3 - RMI System OverviewºF4e/Žet#ž€ŒÂÂX€€çø£—Y€‰€çC—Y€‰€çE—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ue[Že' € €€‚€‚ÿ*/Že…Že' €€ ”€ ‚ÿU#[Žeڎe2 4€F€€‚€‚€?€ €‚‚ÿ3.4 Dynamic Class LoadingN&…Že4Äe( €M €ɀ€‚‚‚ÿRMI allows parameters, return values and exceptions passed in RMI calls to be any object that is serializable. RMI uses the object serialization mechanism to transmit data from one virtual machine to another and also annotates the call stream with the aڎe4Äe͌eppropriate location information so that the class definition files can be loaded at the receiver.When parameters and return values for a remote method invocation are unmarshalled to become live objects in the receiving JVM, class definitions are required for all of the types of objects in the stream. The unmarshalling process first attempts to resolve classes by name in its local class loading context (the context class loader of the current thread). RMI also provides a facility for dynamically loading the class definitions for the actual types of objects passed as parameters and return values for remote method invocations from network locations specified by the transmitting endpoint. This includes the dynamic downloading of remote stub classes corresponding to particular remote object implementation classes (and used to contain remote references) as well as any other type that is passed by value in RMI calls, such as the subclass of a declared parameter type, that is not already available in the class loading context of the unmarshalling side.jڎežÆeK d€?€ɀ€‚€€€€€€€€€€€€‚ÿTo support dynamic class loading, the RMI runtime uses special subclasses of java.io.ObjectOutputStream and java.io.ObjectInputStream for the marshal streams that it uses for marshalling and unmarshalling RMI parameters and return values. These subclasses respectively override the annotateClass method of ObjectOutputStream and the resolveClass method of ObjectInputStream to communicate information about where to locate class files containing the definitions for classes corresponding to the class descriptors in the stream.að4ÄeÿÊeq °€á€ɀ€‚€€€€€€€€‚‚€€€€€€€€€€€€€€€€‚ÿFor every class descriptor written to an RMI marshal stream, the annotateClass method adds to the stream the result of calling java.rmi.server.RMIClassLoader.getClassAnnotation for the class object, which may be null or may be a String object representing the codebase URL path (a space-separated list of URLs) from which the remote endpoint should download the class definition file for the given class.For every class descriptor read from an RMI marshal stream, the resolveClass method reads a single object from the stream. If the object is a String (and the value of the java.rmi.server.useCodebaseOnly property is not true), then resolveClass returns the result of calling RMIClassLoader.loadClass with the annotated String object as the first parameter and the name of the desired class in the class descriptor as the second parameter. Otherwise, resolveClass returns the result of calling RMIClassLoader.loadClass with the name of the desired class as the only parameter.“`žÆe’Ëe3 6€À€ɀ€‚ç0`€‰€‚‚ÿSee the section "The RMIClassLoader Class" for more details about class loading in RMI.'ÿÊe¹Ëe$ €€ä€‚ÿ+’ËeäËe( €€0䔀 ‚ÿu(¹ËeYÌeM j€P€ä€‚çø£—Y€‰€çC—Y€‰€çE—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+äËe„Ìe( €€0䔀 ‚ÿÊOYÌeNÍe{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1„ÌeÍe1UÿÿÿÿÿÿÿÿaÿÿÿÿÍe£Íe$NÍe£Íe" €€€ ÿg6Íe Îe1c Œ Ë/‰Ìb ÎeKÎeMfJava Remote Method Invocation: 3 - RMI System OverviewA£ÍeKÎe& €6€€€‚ÿ3 - RMI System OverviewºF ÎeÏet#ž€ŒÂÂX€€çø£—Y€‰€çD—Y€‰€çj—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,KÎe1Ïe' € €€‚€‚ÿ*Ïe[Ïe' €€ ”€ ‚ÿa/1ÏeŒÏe2 4€^€€‚€‚€?€ €‚‚ÿ3.5 RMI Through Firewalls Via Proxies$ý[Ïeìf' €û€ä€‚‚‚ÿThe RMI transport layer normŒÏeìf£Íeally attempts to open direct sockets to hosts on the Internet. Many intranets, however, have firewalls that do not allow this. The default RMI transport, therefore, provides two alternate HTTP-based mechanisms which enable a client behind a firewall to invoke a method on a remote object which resides outside the firewall.As described in this section, the HTTP-based mechanism that the RMI transport layer uses for RMI calls only applies to firewalls with HTTP proxy servers.'ŒÏef$ €€ä€‚ÿlAìff+ &€‚€€:€‚€‚‚ÿ3.5.1 How an RMI Call is Packaged within the HTTP ProtocoloIfîf& €“€ä€‚‚ÿTo get outside a firewall, the transport layer embeds an RMI call within the firewall-trusted HTTP protocol. The RMI call data is sent outside as the body of an HTTP POST request, and the return information is sent back in the body of the HTTP response. The transport layer will formulate the POST request in one of two ways:ÕgfÃfn#ª€Ïf9倀ÿ€€€‚ÿ"€€€€‚ÿ€€‚ÿÿÿ1.If the firewall proxy will forward an HTTP request directed to an arbitrary port on the host machine, then it is forwarded directly to the port on which the RMI server is listening. The default RMI transport layer on the target machine is listening with a server socket that is capable of understanding and decoding RMI calls inside POST requests.–(îfYfn#ª€Qf9倀ÿ€€€‚ÿ"€€€€‚ÿ€€‚ÿÿÿ2.If the firewall proxy will only forward HTTP requests directed to certain well-known HTTP ports, then the call is forwarded to the HTTP server listening on port 80 of the host machine, and a CGI script is executed to forward the call to the target RMI server port on the same machine.V(Ãf¯f. ,€P€€‚€:€€‚‚ÿ3.5.2 The Default Socket FactoryòÀYf¡ f2 2€€ä€€€€€‚‚ÿThe RMI transport implementation includes an extension of the class java.rmi.server.RMISocketFactory, which is the default resource-provider for client and server sockets used to send and receive RMI calls; this default socket factory can be obtained via the java.rmi.server.RMISocketFactory.getDefaultSocketFactory method. This default socket factory creates sockets that transparently provide the firewall tunnelling mechanism as follows: Яf¬ f; D€¡€ɀ€€€€€€€€‚ÿ·Client sockets first attempt a direct socket connection. Client sockets automatically attempt HTTP connections to hosts that cannot be contacted with a direct socket if that direct socket connection results in either a java.net.NoRouteToHostException or a java.net.UnknownHostException being thrown. If a direct socket connection results in any other exception being thrown, such as a java.net.ConnectException, an HTTP connection will not be attempted.æ¡ fŒ f* "€Í€ɀ€€‚‚ÿ·Server sockets automatically detect if a newly-accepted connection is an HTTP POST request, and if so, return a socket that will expose only the body of the request to the transport and format its output as an HTTP response.G¬ ff2 2€+€ä€€€€€‚‚ÿClient-side sockets, with this default behavior, are provided by the factory's java.rmi.server.RMISocketFactory.createSocket method. Server-side sockets with this default behavior are provided by the factory's java.rmi.server.RMISocketFactory.createServerSocket method.N#Œ fQf+ &€F€€:€‚€‚‚ÿ3.5.3 Configuring the ClientEf–f4 6€#€ä€‚‚€€€€‚‚ÿThere is no special configuration necessary to enable the client to send RMI calls through a firewall.The client can, however, disable the packaging of RMI calls as HTTP requests by setting the java.rmi.server.disableHttp property to equal the boolean value true.N#Qf @f+ &€F€€:€‚€‚‚ÿ3.5.4 Configuring the Server–f @f£Íe(–f4@f% €€ɀ€‚ÿ, @f`@f) "€€0ɀ”€ ‚ÿÒ4@f#Af1 0€%€ɀ€‚€€‚€‚ÿNote - The host name should not be specified as the host's IP address, because some firewall proxies will not forward to such a host name.,`@fOAf) "€€0ɀ”€ ‚ÿ.#Af}Af) "€ €ɀ€‚€‚ÿ|NOAfùCf. *€€ɀ€‚‚€€‚ÿ1. In order for a client outside the server host's domain to be able to invoke methods on a server's remote objects, the client must be able to find the server. To do this, the remote references that the server exports must contain the fully-qualified name of the server host.Depending on the server's platform and network environment, this information may or may not be available to the Java virtual machine on which the server is running. If it is not available, the host's fully qualified name must be specified with the property java.rmi.server.hostname when starting the server. s}Af™Df- *€æ€ɀ€‚€€‚‚ÿFor example, use this command to start the RMI server class ServerImpl on the machine chatsubo.javasoft.com:qHùCf Ef) "€€-€€‚ÿ java -Djava.rmi.server.hostname=chatsubo.javasoft.com ServerImpl¥™Df¯Ef& €þ€ɀ€‚‚ÿ2. If the server will not support RMI clients behind firewalls that can forward to arbitrary ports, use this configuration:Šb Ef9Ff( €Ä€-€‚‚‚‚ÿ1. An HTTP server is listening on port 80.2. A CGI script is located at the aliased URL pathC¯Ef|Ff) "€4€‘€€‚ÿ/cgi-bin/java-rmi.cgi69Ff²Ff& € €-€‚‚ÿThis script:k9|FfHf2 2€s€‘€€‚‚€€‚‚ÿ· Invokes the local interpreter for the Java programming language to execute a class internal to the transport layer which forwards the request to the appropriate RMI server port.· Defines properties in the Java virtual machine with the same names and values as the CGI 1.0 defined environment variables.ë²Ff/If' €×€ɀ€‚‚ÿAn example script is supplied in the RMI distribution for the Solaris and Windows 32 operating systems. Note that the script must specify the complete path to the interpreter for the Java programming language on the server machine.[/HfŠIf, (€^€ä€:€‚€‚‚ÿ3.5.5 Performance Issues and LimitationsÏŠ/IfYKf) €M€ɀ€‚‚‚‚ÿCalls transmitted via HTTP requests are at least an order of magnitude slower that those sent through direct sockets, without taking proxy forwarding delays into consideration.Because HTTP requests can only be initiated in one direction through a firewall, a client cannot export its own remote objects outside the firewall, because a host outside the firewall cannot initiate a method invocation back on the client.'ŠIf€Kf$ €€ä€‚ÿ+YKf«Kf( €€0䔀 ‚ÿu(€Kf LfM j€P€ä€‚çø£—Y€‰€çD—Y€‰€çj—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+«KfKLf( €€0䔀 ‚ÿÊO LfMf{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1KLfFMf1UÿÿÿÿÿÿÿÿcÿÿÿÿFMfjMf$MfjMf" €€€ ÿe4FMfÏMf1!ñ†Ë‚ÍdÏMfNf ‚fJava Remote Method Invocation: 4 - Client Interfaces?jMfNf& €2€€€‚ÿ4 - Client InterfacesºFÏMfÈNft#ž€ŒÂÂX€€çø£—Y€‰€çj—Y€‰€çG—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,NfôNf' € €€‚€‚ÿ*ÈNfOf' €€ ”€ ‚ÿ\$ôNfzOf8 @€H€€‚€‚€?€ €2€ €‚‚ÿ4.1 The Remote Interface͕OfS€f8 >€+€ä€€€çӘVp€‰€‚‚ÿSee the Remote API documentation, and for more details on how to define a rzOfS€fjMfemote interface see the section "The java.rmi.Remote Interface".&zOfy€f# €€€‚ÿ*S€f£€f' €€ ”€ ‚ÿt(y€ffL h€P€€‚çø£—Y€‰€çj—Y€‰€çG—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*£€fAf' €€ ”€ ‚ÿÉOf ‚fz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1Af;‚f1Uÿÿÿÿÿÿÿÿeÿÿÿÿ;‚f_‚f$ ‚f_‚f" €€€ ÿe4;‚fĂf1º/‰ÌÄÍfĂfƒfŒ†fJava Remote Method Invocation: 4 - Client Interfaces?_‚fƒf& €2€€€‚ÿ4 - Client InterfacesºFĂfœƒft#ž€ŒÂÂX€€çø£—Y€‰€çF—Y€‰€çs—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ƒféƒf' € €€‚€‚ÿ*œƒf„f' €€ ”€ ‚ÿa)éƒft„f8 @€R€€‚€‚€?€ €2€ €‚‚ÿ4.2 The RemoteException Class\0„fЄf, (€`€ɀ€€€‚‚ÿSee the RemoteException API documentation.'t„f÷„f$ €€ä€‚ÿ+Єf"…f( €€0䔀 ‚ÿu(÷„f—…fM j€P€ä€‚çø£—Y€‰€çF—Y€‰€çs—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+"…f…f( €€0䔀 ‚ÿÊO—…fŒ†f{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1…fœ†f1Uÿÿÿÿÿÿÿÿgÿÿÿÿœ†fá†f$Œ†fá†f" €€€ ÿe4œ†fF‡f1š‚ÍôÍhF‡f…‡füŠfJava Remote Method Invocation: 4 - Client Interfaces?á†f…‡f& €2€€€‚ÿ4 - Client InterfacesºFF‡f?ˆft#ž€ŒÂÂX€€çø£—Y€‰€çG—Y€‰€çΣ—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,…‡fkˆf' € €€‚€‚ÿ*?ˆf•ˆf' €€ ”€ ‚ÿX kˆfíˆf8 @€@€€‚€‚€?€ €2€ €‚‚ÿ4.3 The Naming ClassS'•ˆf@‰f, (€N€ɀ€€€‚‚ÿSee the Naming API documentation.'íˆfg‰f$ €€ä€‚ÿ+@‰f’‰f( €€0䔀 ‚ÿu(g‰fŠfM j€P€ä€‚çø£—Y€‰€çG—Y€‰€çΣ—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+’‰f2Šf( €€0䔀 ‚ÿÊOŠfüŠf{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.12Šf-‹f1Uÿÿÿÿÿÿÿÿiÿÿÿÿ-‹fQ‹f$üŠfQ‹f" €€€ ÿe4-‹f¶‹f1ÄÍT€Íj¶‹fõ‹fNÁfJava Remote Method Invocation: 4 - Client Interfaces?Q‹fõ‹f& €2€€€‚ÿ4 - Client InterfacesºF¶‹f¯Œft#ž€ŒÂÂX€€çø£—Y€‰€çE—Y€‰€çF—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method InvocationIõ‹føŒf/ .€4€€‚€%€‚‚€‚ÿClient Interfaces*¯Œf"f' €€ ”€ ‚ÿ&øŒfHf# €€€‚ÿA "f‰f4#8€o€€€‚€‚ÿÿÿCHAPTER4&Hf¯f# €€€‚ÿïɍfžŽf, &€‡€ä€€7€‚‚ÿWhen writing an applet or an application that uses remote objects, the programmer needs to be aware of the RMI system's client visible interfaces that are available in the java.rmi package./ ¯f͎f$ €€€‚‚ÿTopics:ŸZžŽf‹fd ˜€Ž€ɀ€7ç$è€@€D€@‰€‚€7çpèð€@€D€@‰€‚€7çiôsr€@€D€@‰€‚‚ÿ·The Remote Interface·The RemoteException Class·The Naming Class&͎f±f# €€€A‚ÿ*‹fۏf' €€ ”€B‚ÿt(±f[ÀfL h€P€€A‚çø£Ûf[ÀfQ‹f—Y€@‰€çE—Y€@‰€çF—Y€@‰€‚€A‚ÿCONTENTS | PREV | NEXT*ۏf…Àf' €€ ”€B‚ÿÉO[ÀfNÁfz Āž€€A‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€C‰€4€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1…ÀfÁf1UÿÿÿÿÿÿÿÿkÿÿÿÿÁf£Áf$NÁf£Áf" €€€ ÿp?ÁfÂf1 ô͍ÍlÂf]ÂfÌÅfJava Remote Method Invocation: 9 - Garbage Collector InterfacesJ$£Áf]Âf& €H€€€‚ÿ9 - Garbage Collector InterfacesºFÂfÃft#ž€ŒÂÂX€€çø£—Y€‰€çp—Y€‰€çl—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,]ÂfCÃf' € €€‚€‚ÿ*ÃfmÃf' €€ ”€ ‚ÿY!CÃfÆÃf8 @€B€€‚€‚€?€ €2€ €‚‚ÿ9.1 The DGC InterfaceO$mÃfÄf+ &€H€ä€€€‚‚ÿSee the DGC API documentation.&ÆÃf;Äf# €€€‚ÿ*ÄfeÄf' €€ ”€ ‚ÿt(;ÄfÙÄfL h€P€€‚çø£—Y€‰€çp—Y€‰€çl—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*eÄfÅf' €€ ”€ ‚ÿÉOÙÄfÌÅfz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ÅfýÅf1UÿÿÿÿÿÿÿÿmÿÿÿÿýÅf!Æf$ÌÅf!Æf" €€€ ÿp?ýÅf‘Æf1 T€ÍƂÍn‘ÆfÛÆfJÊfJava Remote Method Invocation: 9 - Garbage Collector InterfacesJ$!ÆfÛÆf& €H€€€‚ÿ9 - Garbage Collector InterfacesºF‘Æf•Çft#ž€ŒÂÂX€€çø£—Y€‰€çk—Y€‰€çm—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ÛÆfÁÇf' € €€‚€‚ÿ*•ÇfëÇf' €€ ”€ ‚ÿWÁÇfBÈf8 @€>€€‚€‚€?€ €2€ €‚‚ÿ9.2 The Lease ClassQ&ëÇf“Èf+ &€L€ä€€€‚‚ÿSee the Lease API documentation.&BÈf¹Èf# €€€‚ÿ*“ÈfãÈf' €€ ”€ ‚ÿt(¹ÈfWÉfL h€P€€‚çø£—Y€‰€çk—Y€‰€çm—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*ãÈfÉf' €€ ”€ ‚ÿÉOWÉfJÊfz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1Éf{Êf1Uÿÿÿÿÿÿÿÿoÿÿÿÿ{ÊfŸÊf$JÊfŸÊf" €€€ ÿp?{ÊfËf1 ÍÿƒÍpËfYËfÈÎfJava Remote Method Invocation: 9 - Garbage Collector InterfacesJ$ŸÊfYËf& €H€€€‚ÿ9 - Garbage Collector InterfacesºFËfÌft#ž€ŒÂÂX€€çø£—Y€‰€çl—Y€‰€çn—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,YËf?Ìf' € €€‚€‚ÿ*ÌfiÌf' €€ ”€ ‚ÿW?ÌfÀÌf8 @€>€€‚€‚€?€ €2€ €‚‚ÿ9.3 The ObjID ClassQ&iÌfÍf+ &€L€ä€€€‚‚ÿSee the ObjID API documentation.&ÀÌf7Íf# €€€‚ÿ*ÍfaÍf' €€ ”€ ‚ÿt(7ÍfÕÍfL h€P€€‚çø£—Y€‰€çl—Y€‰€çn—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*aÍfÿÍf' €€ ”€ ‚ÿÉOÕÍfÈÎfz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ÿÍfùÎf1UÿÿÿÿÿÿÿÿqÿÿÿÿùÎfÏf$ÈÎfÏf" €€€ ÿp?ùÎfÏf1ýƂÍËÎrÏf×ÏfNgJava Remote Method Invocation: 9 - Garbage Collector InterfacesJ$Ïf×Ïf& €H€€€‚ÿ9 - Garbage Collector InterfacesºFÏfgt#ž€ŒÂÂX€€×ÏfgÏfçø£—Y€‰€çm—Y€‰€ço—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,×ÏfÉg' € €€‚€‚ÿ*góg' €€ ”€ ‚ÿUÉgHg8 @€:€€‚€‚€?€ €2€ €‚‚ÿ9.4 The UID ClassO$óg—g+ &€H€ä€€€‚‚ÿSee the UID API documentation.&Hgœg# €€€‚ÿ*—gçg' €€ ”€ ‚ÿt(œg[gL h€P€€‚çø£—Y€‰€çm—Y€‰€ço—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*çg…g' €€ ”€ ‚ÿÉO[gNgz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1…gg1Uÿÿÿÿÿÿÿÿsÿÿÿÿg£g$Ng£g" €€€ ÿp?gg1žÿƒÍÎtg]gÊgJava Remote Method Invocation: 9 - Garbage Collector InterfacesJ$£g]g& €H€€€‚ÿ9 - Garbage Collector InterfacesºFggt#ž€ŒÂÂX€€çø£—Y€‰€çn—Y€‰€çv£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,]gCg' € €€‚€‚ÿ*gmg' €€ ”€ ‚ÿVCgÃg8 @€<€€‚€‚€?€ €2€ €‚‚ÿ9.5 The VMID ClassP%mgg+ &€J€ä€€€‚‚ÿSee the VMID API documentation.&Ãg9g# €€€‚ÿ*gcg' €€ ”€ ‚ÿt(9g×gL h€P€€‚çø£—Y€‰€çn—Y€‰€çv£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*cgg' €€ ”€ ‚ÿÉO×gÊgz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1gûg1Uÿÿÿÿÿÿÿÿuÿÿÿÿûgg$Êgg" €€€ ÿp?ûgg1eËÎÎvgÙg gJava Remote Method Invocation: 9 - Garbage Collector InterfacesJ$gÙg& €H€€€‚ÿ9 - Garbage Collector InterfacesºFg“ gt#ž€ŒÂÂX€€çø£—Y€‰€çÔ£—Y€‰€çk—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method InvocationH!ÙgÛ g' €B€€‚€‚ÿGarbage Collector Interfaces*“ g g' €€ ”€ ‚ÿ&Û g+ g# €€€‚ÿA  gl g4#8€o€€€‚€‚ÿÿÿCHAPTER9&+ g’ g# €€€‚ÿkl g" g% €Ö€ä€‚‚ÿThe interfaces and classes in this chapter are used by the distributed garbage collector (DGC) for RMI.3 ’ gU g' €€€€‚‚ÿTopics: y" g^ g ð€ò€ɀ€çk—Y€€€‰€‚€çl—Y€€€‰€‚€çm—Y€€€‰€‚€çn—Y€€€‰€‚€ço—Y€€€‰€‚‚ÿ·The DGC Interface·The Lease Class·The ObjID Class·The UID Class·The VMID Class&U g„ g# €€€‚ÿ*^ g® g' €€ ”€ ‚ÿt(„ g" gL h€P€€‚çø£—Y€‰€çÔ£—Y€‰€çk—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*® gL g' €€ ”€ ‚ÿÁL" g gu º€˜€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1L g>g1Uÿÿÿÿÿÿÿÿwÿÿÿÿ>gbg$ gbg" €€€ ÿc2>gÅg1ùÎfÎxÅggÖCgJava Remote Method Invocation: - Exceptions In RMI=bgg& €.€€€‚ÿ- Exceptions In RMIºFÅgŒgt#ž€ŒÂÂX€€çø£—Y€‰€ç|£—Y€‰€çr—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method InvocationIg@g/ .€4€€‚€%€‚‚€‚ÿExceptions In RMIŒg@gbg*Œg;@g' €€ ”€ ‚ÿ&@ga@g# €€€‚ÿF;@g§@g7#>€l$€€€€‚€‚ÿÿÿAPPENDIXA9a@gà@g+ &€€€‚€€‚‚ÿTopics:Għ@g'Bgƒ Ԁ‰€ɀ€çr—Y€‰€‚€瞝—Y€‰€‚€畝—Y€‰€‚€痝—Y€‰€‚€瘝—Y€‰€‚€癝—Y€‰€‚‚ÿ·Exceptions During Remote Object Export·Exceptions During RMI Call·Exceptions or Errors During Return·Naming Exceptions·Activation Exceptions·Other Exceptions&à@gMBg# €€€‚ÿ*'BgwBg' €€ ”€ ‚ÿt(MBgëBgL h€P€€‚çø£—Y€‰€ç|£—Y€‰€çr—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*wBgCg' €€ ”€ ‚ÿÁLëBgÖCgu º€˜€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1CgDg1UÿÿÿÿÿÿÿÿyÿÿÿÿDg+Dg$ÖCg+Dg" €€€ ÿc2DgŽDg1¹ ÎR‡ÎzŽDgËDgSOgJava Remote Method Invocation: - Exceptions In RMI=+DgËDg& €.€€€‚ÿ- Exceptions In RMIºFŽDg…Egt#ž€ŒÂÂX€€çø£—Y€‰€çq—Y€‰€瞝—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ËDg±Eg' € €€‚€‚ÿ*…EgÛEg' €€ ”€ ‚ÿf4±EgAFg2 4€h€€‚€‚€?€ €‚‚ÿA.1 Exceptions During Remote Object Export×ÛEgPHg8 >€¯€ɀ€€€€€€€‚ÿWhen a remote object class is created that extends UnicastRemoteObject, the object is exported, meaning it can receive calls from external Java virtual machines and can be passed in an RMI call as either a parameter or return value. An object can either be exported on an anonymous port or on a specified port. For objects not extended from UnicastRemoteObject, the java.rmi.server.UnicastRemoteObject.exportObject method is used to explicitly export the object.(AFgxHg% €€ɀ€‚ÿŒPHgIgp#°€8d͐€€€‚ÿ€€ÿ"€€€€‚ÿ"€"€€€‚ÿÿÿExceptionContextŠxHgªJg˜#þ€d͐€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿL€T€ɀ€€€€‚ÿÿÿjava.rmi.StubNotFoundExceptionClass of stub not found.Name collision with class of same name as stub causes one of these errors:· Stub can't be instantiated· Stub not of correct classBad URL due to wrong codebase.Stub not of correct class.¯IgYLg•#ø€5d͐€€ɀÿ€€€‚ÿ€€ÿ<€ €€€€(€‚ÿ.€ €€‚ÿÿÿjava.rmi.server.SkeletonNotFoundExceptionnote: this exception is deprecated as of Java 2 SDK, Standard Edition, v1.2Class of skeleton not found.Name collision with class of same name as skeleton causes one of these errors:· Skeleton can't be instantiated(ªJgLg% €€ɀ€‚ÿâ«YLgcMg7 <€W€€€‚‚‚‚‚‚€€‚‚‚‚‚ÿ· Skeleton not of correct classBad URL due to wrong codebase.Skeleton not of correct class.java.rmi.server.ExportExceptionThe port is in use by another VM.3Lg–Mg0#0€€€€‚ÿÿÿ,cMgÂMg' € €€‚€‚ÿ*–MgìMg' €€ ”€ ‚ÿt(ÂMg`NgL h€P€€‚çø£—Y€‰€çq—Y€‰€瞝—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*ìMgŠNg' €€ ”€ ‚ÿÉO`NgSOgz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ŠNg„Og1Uÿÿÿÿÿÿÿÿ{ÿÿÿÿ„OgšOg$SOgšOg" €€€ ÿc2„Og€g1e fÎÑÏ|€gT€gˆŠgJava Remote Method Invocation: - ExceptšOg€gšOgions In RMI=šOgT€g& €.€€€‚ÿ- Exceptions In RMIºF€ggt#ž€ŒÂÂX€€çø£—Y€‰€çr—Y€‰€畝—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,T€g:g' € €€‚€‚ÿ*gdg' €€ ”€ ‚ÿZ(:gŸg2 4€P€€‚€‚€?€ €‚‚ÿA.2 Exceptions During RMI CallšdgX‚g}#ʀ:2â©€€äÿ€€€‚ÿ€€ÿ"€ €€€‚ÿ"€$€€€‚ÿÿÿExceptionContextº;Ÿgƒg#΀v2â©€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€R€‚ÿÿÿjava.rmi.UnknownHostExceptionUnknown host.ÄEX‚gփg#΀Š2â©€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€J€‚ÿÿÿjava.rmi.ConnectExceptionConnection refused to host.ÉJƒgŸ„g#΀”2â©€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€N€‚ÿÿÿjava.rmi.ConnectIOExceptionI/O error creating connection.Öƒg …g€#΀2â©€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€J€‚ÿÿÿjava.rmi.MarshalExceptionI/O error marshaling transport header, marshaling call header, or marshaling arguments.òsŸ„g’†g#΀æ2â©€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€T€‚ÿÿÿjava.rmi.NoSuchObjectExceptionAttempt to invoke a method on an object that is no longer available.ÉJ …g[‡g#΀”2â©€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€T€‚ÿÿÿjava.rmi.StubNotFoundExceptionRemote object not exported.•’†gpˆg€#΀+2â©€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€n€‚ÿÿÿjava.rmi.activation.ActivateFailedExceptionThrown by RMI runtime when activation fails during a remote call to an activatable objectV[‡gƈgP#p€ 2€€ÿ€€€‚ÿ€€‚ÿÿÿ-pˆgóˆg( € €ä€‚€‚ÿ+ƈg‰g( €€0䔀 ‚ÿu(óˆg“‰gM j€P€ä€‚çø£—Y€‰€çr—Y€‰€畝—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+‰gŸ‰g( €€0䔀 ‚ÿÊO“‰gˆŠg{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1Ÿ‰g¹Šg1Uÿÿÿÿÿÿÿÿ}ÿÿÿÿ¹Šg݊g$ˆŠg݊g" €€€ ÿc2¹Šg@‹g1' R‡Î=ƒÏ~@‹g}‹gÇgJava Remote Method Invocation: - Exceptions In RMI=݊g}‹g& €.€€€‚ÿ- Exceptions In RMIºF@‹g7Œgt#ž€ŒÂÂX€€çø£—Y€‰€瞝—Y€‰€疝—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,}‹gcŒg' € €€‚€‚ÿ*7ŒgŒg' €€ ”€ ‚ÿb0cŒgïŒg2 4€`€€‚€‚€?€ €‚‚ÿA.3 Exceptions or Errors During ReturnšŒg‰g}#ʀ:2©©€€äÿ€€€‚ÿ€€ÿ"€ €€€‚ÿ"€$€€€‚ÿÿÿExceptionContext˜õïŒg!g£#ë2©©€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿb€N€ä€€€€€€€€‚ÿÿÿjava.rmi.UnmarshalExceptionCorrupted stream leads to either an I/O or protocol error when:· Marshaling return header· Checking return type· Checking return code· Unmarshaling returnReturn value class not found.{ô‰gšÀg‡#܀é2©©€€äÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ(€P€€€‚ÿÿÿjava.rmi.UnexpectedExceptionAn exception not mentioned in the method signat!gšÀg݊gure occurred (excluding runtime exceptions). The UnexpectedException exception object contains the underlying exception that was thrown by the server.OÉ!g÷Ág†#ڀ“2©©€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ(€@€€€‚ÿÿÿjava.rmi.ServerErrorAny error that occurs while the server is executing a remote method. The ServerError exception object contains the underlying error that was thrown by the server,XÌšÀgOÃgŒ#怙2©©€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ4€H€ç–—Y€‰€‚ÿÿÿjava.rmi.ServerExceptionAny remote exception that occurs while the server is executing a remote method. For examples, see Section A.3.1, "Possible Causes of java.rmi.ServerException".¬÷ÁgûÄgŽ#ê€=2©©€€ÿ€€€‚ÿ€€ÿ8€ €€€€(€‚ÿ(€ô€€€‚ÿÿÿjava.rmi.ServerRuntimeExceptionnote: this exception is deprecated as of Java 2 SDK, Standard Edition, v1.2This exception is not thrown by servers running Java 2 SDK, Standard Edition, v1.2-compatible versions. A RuntimeException are propagated to clients in tact.VOÃgQÅgP#p€ 2€€ÿ€€€‚ÿ€€‚ÿÿÿ-ûÄg~Åg( € €ä€‚€‚ÿ+QÅg©Åg( €€0䔀 ‚ÿu(~ÅgÆgM j€P€ä€‚çø£—Y€‰€瞝—Y€‰€疝—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+©ÅgIÆg( €€0䔀 ‚ÿÊOÆgÇg{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1IÆgDÇg1UÿÿÿÿÿÿÿÿÿÿÿÿDÇghÇg$ÇghÇg" €€€ ÿc2DÇgËÇg1à ÑϋЀËÇgÈgŽhJava Remote Method Invocation: - Exceptions In RMI=hÇgÈg& €.€€€‚ÿ- Exceptions In RMIºFËÇgÂÈgt#ž€ŒÂÂX€€çø£—Y€‰€畝—Y€‰€痝—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ÈgîÈg' € €€‚€‚ÿ*ÂÈgÉg' €€ ”€ ‚ÿq<îÈg‰Ég5 :€x€€‚€‚€:€€7€‚‚ÿA.3.1 Possible Causes of java.rmi.ServerException>ÉgÇËg8 >€ €ɀ€€€€€€€‚ÿThese are some of the underlying exceptions which can occur on the server when the server is itself executing a remote method invocation. These exceptions are wrapped in a java.rmi.ServerException; that is the java.rmi.ServerException contains the original exception for the client to extract. These exceptions are wrapped by ServerException so that the client will know that its own remote method invocation on the server did not fail, but that a secondary remote method invocation made by the server failed.(‰ÉgïËg% €€ɀ€‚ÿŒÇËg{Ìgp#°€8d͐€€€‚ÿ€€ÿ"€€€€‚ÿ"€"€€€‚ÿÿÿExceptionContext8°ïËg³Ígˆ#ހad͐€€ÿ€€€‚ÿ€€ÿ8€ €€€€(€‚ÿ€‚ÿÿÿjava.rmi.server.SkeletonMismatchExceptionnote: this exception is deprecated as of the Java 2 SDK, Standard Edition, v1.2Hash mismatch of stub and skeleton.ðq{Ìg£Îg#΀âd͐€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€N€‚ÿÿÿjava.rmi.UnmarshalExceptionI/O error unmarshaling call header. I/O error unmarshaling arguments.ÊK³ÍgmÏg#΀–d͐€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€J€‚ÿÿÿjava.rmi.MarshalExceptionProtocol error marshaling return.Û\£ÎgTh#΀žd͐€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€H€‚ÿÿÿjava.rmi.RemomÏgThhÇgteExceptionMethod number out of range due to corrupted stream.VmÏgªhP#p€ d€€ÿ€€€‚ÿ€€‚ÿÿÿ(ThÒh% €€ɀ€‚ÿ'ªhùh$ €€ä€‚ÿ+Òh$h( €€0䔀 ‚ÿu(ùh™hM j€P€ä€‚çø£—Y€‰€畝—Y€‰€痝—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+$hÄh( €€0䔀 ‚ÿÊO™hŽh{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1Äh¿h1Uÿÿÿÿÿÿÿÿÿÿÿÿ¿hãh$Žhãh" €€€ ÿc2¿hFh1 =ƒÏ ЂFhƒhT hJava Remote Method Invocation: - Exceptions In RMI=ãhƒh& €.€€€‚ÿ- Exceptions In RMIºFFh=ht#ž€ŒÂÂX€€çø£—Y€‰€疝—Y€‰€瘝—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ƒhih' € €€‚€‚ÿ*=h“h' €€ ”€ ‚ÿQihäh2 4€>€€‚€‚€?€ €‚‚ÿA.4 Naming ExceptionsÁ“h¥h2 2€€ɀ€€€€€‚ÿThe following table lists the exceptions specified in methods of the java.rmi.Naming class and the java.rmi.registry.Registry interface.(ähÍh% €€ɀ€‚ÿŒ¥hYhp#°€8dYÇ€€€‚ÿ€€ÿ"€€€€‚ÿ"€"€€€‚ÿÿÿExceptionContext2²Íh‹h€#΀edYÇ€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€H€‚ÿÿÿjava.rmi.AccessExceptionOperation disallowed. The registry restricts bind, rebind, and unbind to the same host. The lookup operation can originate from any host.Û\Yhfh#΀ždYÇ€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€T€‚ÿÿÿjava.rmi.AlreadyBoundExceptionAttempt to bind a name that is already bound.ÖW‹h< h#΀®dYÇ€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€L€‚ÿÿÿjava.rmi.NotBoundExceptionAttempt to look up a name that is not bound.Þ_fh h#΀ŸdYÇ€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€R€‚ÿÿÿjava.rmi.UnknownHostExceptionAttempt to contact a registry on an unknown host.V< hp hP#p€ d€€ÿ€€€‚ÿ€€‚ÿÿÿ( h˜ h% €€ɀ€‚ÿ'p h¿ h$ €€ä€‚ÿ+˜ hê h( €€0䔀 ‚ÿu(¿ h_ hM j€P€ä€‚çø£—Y€‰€疝—Y€‰€瘝—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+ê hŠ h( €€0䔀 ‚ÿÊO_ hT h{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1Š h… h1Uÿÿÿÿÿÿÿÿƒÿÿÿÿ… h© h$T h© h" €€€ ÿc2… h h1 ‹Ð&ƒÐ„ hI h%GhJava Remote Method Invocation: - Exceptions In RMI=© hI h& €.€€€‚ÿ- Exceptions In RMIºF hht#ž€ŒÂÂX€€çø£—Y€‰€痝—Y€‰€癝—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,I h/h' € €€‚€‚ÿ*hYh' €€ ”€ ‚ÿU#/h®h2 4€F€€‚€‚€?€ €‚‚ÿA.5 Activation ExceptionsË¥Yhyh& €K€ɀ€‚ÿThe following table lists the exceptions that can be thrown in activities involving activatable objects. The activation API is in the package java.rmi.activation.(®h¡h% €€ɀ€‚ÿŒyh9@hp#°€8d␀€€‚ÿ€€ÿ"€€€€‚ÿ"€"€¡h9@h© h€€‚ÿÿÿExceptionContext–¡hOAh€#΀-d␀€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€n€‚ÿÿÿjava.rmi.activation.ActivateFailedExceptionThrown by RMI runtime when activation fails during a remote call to an activatable object.ý~9@hLBh#΀üd␀€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€f€‚ÿÿÿjava.rmi.activation.ActivationExceptionGeneral exception class used by the activation interfaces and classes.väOAhÂCh’#ò€Éd␀€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ@€j€€€€€€€‚ÿÿÿjava.rmi.activation.UnknownGroupExceptionThrown by methods of the activation classes and interfaces when the ActivationGroupID parameter or ActivationGroupID in an ActivationGroupDesc parameter is invalid.)£LBhëDh†#ڀGd␀€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ(€l€€€‚ÿÿÿjava.rmi.activation.UnknownObjectExceptionThrown by methods of the activation classes and interfaces when the ActivationID parameter is invalid.VÂChAEhP#p€ d€€ÿ€€€‚ÿ€€‚ÿÿÿ(ëDhiEh% €€ɀ€‚ÿ'AEhEh$ €€ä€‚ÿ+iEh»Eh( €€0䔀 ‚ÿu(Eh0FhM j€P€ä€‚çø£—Y€‰€痝—Y€‰€癝—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+»Eh[Fh( €€0䔀 ‚ÿÊO0Fh%Gh{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1[FhVGh1Uÿÿÿÿÿÿÿÿ…ÿÿÿÿVGhzGh$%GhzGh" €€€ ÿc2VGhÝGh1¯ ÐцÝGhHhp€hJava Remote Method Invocation: - Exceptions In RMI=zGhHh& €.€€€‚ÿ- Exceptions In RMIºFÝGhÔHht#ž€ŒÂÂX€€çø£—Y€‰€瘝—Y€‰€çÿ€—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,HhIh' € €€‚€‚ÿ*ÔHh*Ih' €€ ”€ ‚ÿPIhzIh2 4€<€€‚€‚€?€ €‚‚ÿA.6 Other Exceptionsš*IhJh}#ʀ:2©€€äÿ€€€‚ÿ€€ÿ"€ €€€‚ÿ"€$€€€‚ÿÿÿExceptionContextOÁzIhcKhŽ#ꀃ2©€€ÿ€€€‚ÿ€€ÿ8€ €€€€(€‚ÿ(€ø€€€‚ÿÿÿjava.rmi.RMISecurityExceptionnote: this exception is deprecated as of the Java 2 SDK, Standard Edition, v1.2A security exception that is thrown by the RMISecurityManager.ÁBJh$Lh#΀„2©€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€`€‚ÿÿÿjava.rmi.server.ServerCloneExceptionClone failed.E¿cKhiMh†#ڀ2©€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ(€h€€€‚ÿÿÿjava.rmi.server.ServerNotActiveExceptionAttempt to get the client host via the RemoteServer.getClientHost method when the remote server is not executing in a remote method.ãd$LhLNh#΀È2©€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€f€‚ÿÿÿjava.rmi.server.SocketSecurityExceptionAttempt to export object on an illegal port.ViMh¢NhP#p€ 2€€ÿ€€€‚ÿ€€‚ÿÿÿ-LNhÏNh( € €ä€‚€‚ÿ+¢NhúNh( €€0䔀 ‚ÿu(ÏNhoOhM j€P€ä€‚çø£—Y€‰€瘝—Y€‰€çÿ€—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+úNhšOh( €€0䔀 ‚ÿÊOoOhp€h{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.htmlšOhp€hzGh",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1šOh¡€h1Uÿÿÿÿÿÿÿÿ‡ÿÿÿÿ¡€hŀh$p€hŀh" €€€ ÿ`/¡€h%h1&ƒÐ7ш%h_h>…hJava Remote Method Invocation: 1 - Introduction:ŀh_h& €(€€€‚ÿ1 - IntroductionºF%h‚ht#ž€ŒÂÂX€€çø£—Y€‰€çø£—Y€‰€盝—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method InvocationD_h]‚h/ .€*€€‚€%€‚‚€‚ÿIntroduction*‚h‡‚h' €€ ”€ ‚ÿ&]‚h­‚h# €€€‚ÿA ‡‚hî‚h4#8€o€€€‚€‚ÿÿÿCHAPTER19­‚h'ƒh+ &€€€‚€€‚‚ÿTopics:h&î‚hƒhB T€L€ɀ€盝—Y€‰€‚€眝—Y€‰€‚‚ÿ·Background·System Goals&'ƒhµƒh# €€€‚ÿ*ƒh߃h' €€ ”€ ‚ÿt(µƒhS„hL h€P€€‚çø£—Y€‰€çø£—Y€‰€盝—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*߃h}„h' €€ ”€ ‚ÿÁLS„h>…hu º€˜€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1}„ho…h1Uÿÿÿÿÿÿÿÿ‰ÿÿÿÿo…h“…h$>…h“…h" €€€ ÿ`/o…hó…h1Ž Ñ€ÑŠó…h-†h|ÀhJava Remote Method Invocation: 1 - Introduction:“…h-†h& €(€€€‚ÿ1 - IntroductionºFó…hç†ht#ž€ŒÂÂX€€çø£—Y€‰€皝—Y€‰€眝—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,-†h‡h' € €€‚€‚ÿ*ç†h=‡h' €€ ”€ ‚ÿJ‡h‡‡h2 4€0€€‚€‚€?€ €‚‚ÿ1.1 Backgroundë=‡h˜‰h& €×€ɀ€‚ÿDistributed systems require that computations running in different address spaces, potentially on different hosts, be able to communicate. For a basic communication mechanism, the Java programming language supports sockets, which are flexible and sufficient for general communication. However, sockets require the client and server to engage in applications-level protocols to encode and decode messages for exchange, and the design of such protocols is cumbersome and can be error-prone.xC‡‡hh5 8€‡€ɀ€‚‚‚€(€€(€‚ÿAn alternative to sockets is Remote Procedure Call (RPC), which abstracts the communication interface to the level of a procedure call. Instead of working directly with sockets, the programmer has the illusion of calling a local procedure, when in fact the arguments of the call are packaged up and shipped off to the remote target of the call. RPC systems encode arguments and return values using an external data representation, such as XDR.RPC, however, does not translate well into distributed object systems, where communication between program-level objects residing in different address spaces is needed. In order to match the semantics of object invocation, distributed object systems require remote method invocation or RMI. In such systems, a local surrogate (stub) object manages the invocation on a remote object.€|˜‰hŽŽh( €ù€ɀ€‚‚‚ÿThe Java platform's remote method invocation system described in this specification has been specifically designed to operate in the Java application environment. The Java programming language's RMI system assumes the homogeneous environment of the Java virtual machine (JVM), and the system can therefore take advantage of the Java platform's object model whenever possible.'hێh$ €€ä€‚ÿ+ŽŽhh( €€0䔀 ‚ÿu(ێh{hM j€P€ä€‚çø£—Y€‰€皝—Y€‰€眝—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+hŠh( €€0䔀 ‚ÿÊO{h|Àh{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICoŠh|Àh“…hpyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1Šh­Àh1Uÿÿÿÿÿÿÿÿ‹ÿÿÿÿ­ÀhÑÀh$|ÀhÑÀh" €€€ ÿ`/­Àh1Áh1 7ць1ÁhkÁhRÊhJava Remote Method Invocation: 1 - Introduction:ÑÀhkÁh& €(€€€‚ÿ1 - IntroductionºF1Áh%Âht#ž€ŒÂÂX€€çø£—Y€‰€盝—Y€‰€睝—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,kÁhQÂh' € €€‚€‚ÿ*%Âh{Âh' €€ ”€ ‚ÿLQÂhÇÂh2 4€4€€‚€‚€?€ €‚‚ÿ1.2 System Goals|V{ÂhCÃh& €¬€ɀ€‚‚ÿThe goals for supporting distributed objects in the Java programming language are:ÕÇÂh]ÅhE X€«€-€€‚€€‚€€‚€€‚€€‚ÿ·Support seamless remote invocation on objects in different virtual machines·Support callbacks from servers to applets·Integrate the distributed object model into the Java programming language in a natural way while retaining most of the Java programming language's object semantics·Make differences between the distributed object model and local Java platform's object model apparent·Make writing reliable distributed applications as simple as possibleƒKCÃhàÆh8 >€—€-€€‚€€‚€€‚‚ÿ·Preserve the type-safety provided by the Java platform's runtime environment·Support various reference semantics for remote objects; for example live (nonpersistent) references, persistent references, and lazy activation·Maintain the safe environment of the Java platform provided by security managers and class loaders¶]Åh–Èh) €€ɀ€‚‚‚‚ÿUnderlying all these goals is a general requirement that the RMI model be both simple (easy to use) and natural (fits well in the language).The first two chapters in this specification describe the distributed object model for the Java programming language and the system overview. The remaining chapters describe the RMI client and server visible APIs which are part of the Java 2 platform.'àÆhœÈh$ €€ä€‚ÿ+–ÈhèÈh( €€0䔀 ‚ÿu(œÈh]ÉhM j€P€ä€‚çø£—Y€‰€盝—Y€‰€睝—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+èÈhˆÉh( €€0䔀 ‚ÿÊO]ÉhRÊh{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ˆÉhƒÊh1UÿÿÿÿÿÿÿÿÿÿÿÿƒÊh§Êh$RÊh§Êh" €€€ ÿl;ƒÊhËh1ó€ÑҎËhYËh'iJava Remote Method Invocation: 2 - Distributed Object ModelF §ÊhYËh& €@€€€‚ÿ2 - Distributed Object Model”CËhíËhQ r€†€çø£—Y€‰€眝—Y€‰€ç¥—Y€‰€‚‚€%€‚‚€‚ÿCONTENTS | PREV | NEXTDistributed Object Model*YËhÌh' €€ ”€ ‚ÿ&íËh=Ìh# €€€‚ÿA Ìh~Ìh4#8€o€€€‚€‚ÿÿÿCHAPTER29=Ìh·Ìh+ &€€€‚€€‚‚ÿTopics:µ"~ÌhlÎh“ ô€E€ɀ€ç¥—Y€‰€‚€çù€—Y€‰€‚€çú€—Y€‰€‚€çû€—Y€‰€‚€çü€—Y€‰€‚€çý€—Y€‰€‚€çþ€—Y€‰€‚‚ÿ·Distributed Object Applications·Definition of Terms·The Distributed and Nondistributed Models Contrasted·Overview of RMI Interfaces and Classes·Implementing a Remote Interface·Parameter Passing in Remote Method Invocation·Locating Remote Objects&·Ìh’Îh# €€€‚ÿ*lÎhŒÎh' €€ ”€ ‚ÿt(’Îh0ÏhL h€P€€‚çø£—Y€‰€眝—Y€‰€ç¥—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*ŒÎhZÏh' €€ ”€ ‚ÿÁL0Ïh'iu º€˜€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+ÿCopyright © 1997-2001 Sun Microsystems,ZÏh'i§Êh Inc. All Rights Reserved.1ZÏhXi1UÿÿÿÿÿÿÿÿÿÿÿÿXi|i$'i|i" €€€ ÿl;Xièi1± †Ñ Ґèi.i® iJava Remote Method Invocation: 2 - Distributed Object ModelF |i.i& €@€€€‚ÿ2 - Distributed Object ModelºFèièit#ž€ŒÂÂX€€çø£—Y€‰€睝—Y€‰€çù€—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,.ii' € €€‚€‚ÿ*èi>i' €€ ”€ ‚ÿ_-ii2 4€Z€€‚€‚€?€ €‚‚ÿ2.1 Distributed Object ApplicationsyS>ii& €§€ɀ€‚ÿRMI applications are often comprised of two separate programs: a server and a client. A typical server application creates a number of remote objects, makes references to those remote objects accessible, and waits for clients to invoke methods on those remote objects. A typical client application gets a remote reference to one or more remote objects in the server and then invokes methods on them. RMI provides the mechanism by which the server and the client communicate and pass information back and forth. Such an application is sometimes referred to as a distributed object application.T-iji' €Z€ɀ€‚‚‚ÿDistributed object applications need to:)îi“i; D€Ý€-€€‚‚€€‚‚€€‚‚‚ÿ·Locate remote objectsApplications can use one of two mechanisms to obtain references to remote objects. An application can register its remote objects with RMI's simple naming facility, the rmiregistry, or the application can pass and return remote object references as part of its normal operation.·Communicate with remote objectsDetails of communication between remote objects are handled by RMI; to the programmer, remote communication looks like a standard method invocation.,üji¿i0 .€ù€-€‚€€‚‚‚‚ÿ·Load class bytecodes for objects that are passed as parameters or return valuesBecause RMI allows a caller to pass objects to remote objects, RMI provides the necessary mechanisms for loading an object's code as well as transmitting its data.±‹“ip i& €€ɀ€‚ÿThe illustration below depicts an RMI distributed application that uses the registry to obtain references to a remote object. The server calls the registry to associate a name with a remote object. The client looks up the remote object by its name in the server's registry and then invokes a method on it. The illustration also shows that the RMI system uses an existing web server to load bytecodes of classes written in the Java programming language, from server to client and from client to server, for objects when needed. RMI can load class bytecodes using any URL protocol (e.g., HTTP, FTP, file, etc.) that is supported by the Java platform.(¿i˜ i% €€ɀ€‚ÿ2p iÊ i. ,€ €ɀ€†"€‚ÿ(˜ iò i% €€ɀ€‚ÿ'Ê i i$ €€ä€‚ÿ+ò iD i( €€0䔀 ‚ÿu( i¹ iM j€P€ä€‚çø£—Y€‰€睝—Y€‰€çù€—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+D iä i( €€0䔀 ‚ÿÊO¹ i® i{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ä iß i1Uÿÿÿÿÿÿÿÿ‘ÿÿÿÿß ii$® ii" €€€ ÿl;ß ioi1ûÒ͂ҒoiµiŠDiJava Remote Method Invocation: 2 - Distributed Object ModelF iµi& €@€€€‚ÿ2 - Distributed Object ModelºFoioit#ž€ŒÂÂX€€çø£—Y€‰€ç¥—Y€‰€çú€—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,µi›i' € €€‚€‚ÿ*oiÅi' €€ ”€ ‚ÿS!›i$@i2 4€B€€‚€‚€?€ €‚‚ÿ2.2 Åi$@iiDefinition of Terms‚HÅiŠBi: B€‘€ɀ€€(€€(€‚‚€(€‚ÿIn the Java platform's distributed object model, a remote object is one whose methods can be invoked from another Java virtual machine, potentially on a different host. An object of this type is described by one or more remote interfaces, which are interfaces written in the Java programming language that declare the methods of the remote object.Remote method invocation (RMI) is the action of invoking a method of a remote interface on a remote object. Most importantly, a method invocation on a remote object has the same syntax as a method invocation on a local object.($@iÎBi% €€ɀ€‚ÿ'ŠBiõBi$ €€ä€‚ÿ+ÎBi Ci( €€0䔀 ‚ÿu(õBi•CiM j€P€ä€‚çø£—Y€‰€ç¥—Y€‰€çú€—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+ CiÀCi( €€0䔀 ‚ÿÊO•CiŠDi{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ÀCi»Di1Uÿÿÿÿÿÿÿÿ“ÿÿÿÿ»DißDi$ŠDißDi" €€€ ÿl;»DiKEi1á  Ò~‰Ò”KEi‘EiAOiJava Remote Method Invocation: 2 - Distributed Object ModelF ßDi‘Ei& €@€€€‚ÿ2 - Distributed Object ModelºFKEiKFit#ž€ŒÂÂX€€çø£—Y€‰€çù€—Y€‰€çû€—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,‘EiwFi' € €€‚€‚ÿ*KFi¡Fi' €€ ”€ ‚ÿtBwFiGi2 4€„€€‚€‚€?€ €‚‚ÿ2.3 The Distributed and Nondistributed Models Contrasted›v¡Fi°Gi% €ì€ä€‚‚ÿThe Java platform's distributed object model is similar to the Java platform's object model in the following ways:Þ GiŽIi> J€A€ɀ€€‚€€‚€€€€‚‚ÿ·A reference to a remote object can be passed as an argument or returned as a result in any method invocation (local or remote).·A remote object can be cast to any of the set of remote interfaces supported by the implementation using the syntax for casting built into the Java programming language.·The built-in instanceof operator can be used to test the remote interfaces supported by a remote object.’m°Gi Ji% €Ú€ä€‚‚ÿThe Java platform's distributed object model differs from the Java platform's object model in these ways:WŽIiwLiD V€'€ɀ€€‚€€‚€€‚€€€€‚ÿ·Clients of remote objects interact with remote interfaces, never with the implementation classes of those interfaces.·Non-remote arguments to, and results from, a remote method invocation are passed by copy rather than by reference. This is because references to objects are only useful within a single virtual machine.·A remote object is passed by reference, not by copying the actual remote implementation.·The semantics of some of the methods defined by class java.lang.Object are specialized for remote objects.é JiŠMi* "€Ó€ɀ€€‚‚ÿ·Since the failure modes of invoking remote objects are inherently more complicated than the failure modes of invoking local objects, clients must deal with additional exceptions that can occur during a remote method invocation.&wLi°Mi# €€€‚ÿ*ŠMiÚMi' €€ ”€ ‚ÿt(°MiNNiL h€P€€‚çø£—Y€‰€çù€—Y€‰€çû€—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*ÚMixNi' €€ ”€ ‚ÿÉONNiAOiz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1xNirOi1Uÿÿÿÿÿÿÿÿ•ÿÿÿÿrOi–Oi$AOi–Oi" €€€ ÿl;rOi€i1e͂Ò‰Ó–€iT€iÍiJava Remote Method Invocation: 2 - Distributed Object Mod–Oi€i–OielF –OiT€i& €@€€€‚ÿ2 - Distributed Object ModelºF€iit#ž€ŒÂÂX€€çø£—Y€‰€çú€—Y€‰€çü€—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,T€i:i' € €€‚€‚ÿ*idi' €€ ”€ ‚ÿf4:iʁi2 4€h€€‚€‚€?€ €‚‚ÿ2.4 Overview of RMI Interfaces and Classesôdiä‚i& €é€ä€‚‚ÿThe interfaces and classes that are responsible for specifying the remote behavior of the RMI system are defined in the java.rmi package hierarchy. The following figure shows the relationship between several of these interfaces and classes:0ʁiƒi, (€ €€†"€‚ÿa-ä‚iuƒi4 8€Z€€‚€:€€7€€‚‚ÿ2.4.1 The java.rmi.Remote InterfaceïÃid„i, &€‡€ä€€(€‚‚ÿIn RMI, a remote interface is an interface that declares a set of methods that may be invoked from a remote Java virtual machine. A remote interface must satisfy the following requirements:Auƒi¥…i> J€€ɀ€€€€‚‚€€€(€‚‚ÿ·A remote interface must at least extend, either directly or indirectly, the interface java.rmi.Remote.·Each method declaration in a remote interface or its super-interfaces must satisfy the requirements of a remote method declaration as follows:ÕUd„iz‡i€#΀«®9€€ÿ€€€‚ÿ€€‚ÿF€€€€€€€€€€‚ÿÿÿ-A remote method declaration must include the exception java.rmi.RemoteException (or one of its superclasses such as java.io.IOException or java.lang.Exception) in its throws clause, in addition to any application-specific exceptions (note that application specific exceptions do not have to extend java.rmi.RemoteException).‘#¥…i ‰in#ª€G®9€€ÿ€€€‚ÿ€€‚ÿ"€€€(€‚ÿÿÿ-In a remote method declaration, a remote object declared as a parameter or return value (either declared directly in the parameter list or embedded within a non-remote object in a parameter) must be declared as the remote interface, not the implementation class of that interface.&z‡i1‰i# €€€‚ÿžV ‰iϊiH ^€­€ä€€€‚‚€€‚€(€€€€€‚‚ÿThe interface java.rmi.Remote is a marker interface that defines no methods:public interface Remote {}A remote interface must at least extend the interface java.rmi.Remote (or another remote interface that extends java.rmi.Remote). However, a remote interface may extend a non-remote interface under the following condition:êÀ1‰i¹‹i* "€€ɀ€€‚‚ÿ·A remote interface may also extend another non-remote interface, as long as all of the methods (if any) of the extended interface satisfy the requirements of a remote method declaration.x=ϊi1Ži; D€{€ä€€€‚‚€€‚ÿFor example, the following interface BankAccount defines a remote interface for accessing a bank account. It contains remote methods to deposit to the account, to get the account balance, and to withdraw from the account:public interface BankAccount extends java.rmi.Remote { public void deposit(float amount) throws java.rmi.RemoteException; public void withdraw(float amount) throws OverdrawnException, java.rmi.RemoteException; public float getBalance() throws java.rmi.RemoteException;}8¹‹iŸÀiI `€q€ä€€€€€€€‚‚€€‚ÿThe next example shows a valid remote interface Beta that extends a non-remote interface Alpha, which has remote methods, and the interface java.rmi.Remote:public interface Alpha { public final String okay = "constants are okay too"; public Object foo(Object obj) throws java.rmi.RemoteException; public void bar() throws java.io.IOExceptio1ŽiŸÀi–Oin; public int baz() throws java.lang.Exception;}public interface Beta extends Alpha, java.rmi.Remote { public void ping() throws java.rmi.RemoteException;}Y(1ŽiÁi1 2€P€€:€‚€7€€‚‚ÿ2.4.2 The RemoteException Classr-ŸÀi‰ÃiE X€[€ä€€€€€€€€€‚‚€€‚ÿThe java.rmi.RemoteException class is the superclass of exceptions thrown by the RMI runtime during a remote method invocation. To ensure the robustness of applications using the RMI system, each remote method declared in a remote interface must specify java.rmi.RemoteException (or one of its superclasses such as java.io.IOException or java.lang.Exception) in its throws clause.The exception java.rmi.RemoteException is thrown when a remote method invocation fails for some reason. Some reasons for remote method invocation failure include:'Ái°Ãi$ €€ä€‚ÿå‰ÃiÏÄi: B€Ë€ɀ€€‚‚€€‚‚€€‚‚ÿ·Communication failure (the remote server is unreachable or is refusing connections; the connection is closed by the server, etc.)·Failure during parameter or return value marshalling or unmarshalling·Protocol errorsÞ¬°Ãi­Åi2 2€Y€ä€€€€€‚‚ÿThe class RemoteException is a checked exception (one that must be handled by the caller of a remote method and is checked by the compiler), not a RuntimeException.i8ÏÄiÆi1 2€p€€:€‚€7€€‚‚ÿ2.4.3 The RemoteObject Class and its Subclasses Ë­ÅiÇi> J€—€ä€€€€€€€€€‚‚ÿRMI server functions are provided by java.rmi.server.RemoteObject and its subclasses, java.rmi.server.RemoteServer and java.rmi.server.UnicastRemoteObject and java.rmi.activation.Activatable.zÆi™Éi[ „€?€ɀ€€€€€€€€€€€€‚‚€€€€€€‚ÿ·The class java.rmi.server.RemoteObject provides implementations for the java.lang.Object methods, hashCode, equals, and toString that are sensible for remote objects.·The methods needed to create remote objects and export them (make them available to remote clients) are provided by the classes UnicastRemoteObject and Activatable. The subclass identifies the semantics of the remote reference, for example whether the server is a simple remote object or is an activatable remote object (one that executes when invoked).ÂzÇi[ËiH ^€õ€ɀ€‚€€€€‚‚€€€€€(€‚‚ÿ·The java.rmi.server.UnicastRemoteObject class defines a singleton (unicast) remote object whose references are valid only while the server process is alive.·The class java.rmi.activation.Activatable is an abstract class that defines an activatable remote object that starts executing when its remote methods are invoked and can shut itself down when necessary.&™ÉiËi# €€€‚ÿ*[Ëi«Ëi' €€ ”€ ‚ÿt(ËiÌiL h€P€€‚çø£—Y€‰€çú€—Y€‰€çü€—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*«ËiIÌi' €€ ”€ ‚ÿÉOÌiÍiz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1IÌiCÍi1Uÿÿÿÿÿÿÿÿ—ÿÿÿÿCÍigÍi$ÍigÍi" €€€ ÿl;CÍiÓÍi1L ~‰ÒŽԘÓÍiÎi jJava Remote Method Invocation: 2 - Distributed Object ModelF gÍiÎi& €@€€€‚ÿ2 - Distributed Object ModelºFÓÍiÓÎit#ž€ŒÂÂX€€çø£—Y€‰€çû€—Y€‰€çý€—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ÎiÿÎi' € €€‚€‚ÿ*ÓÎi)Ïi' €€ ”€ ‚ÿ_-ÿÎiˆÏi2 4€Z€€‚€‚€?€ €‚‚ÿ2.5 Implementing a Remote InterfacezT)Ïij& €š€ɀ€‚‚ÿThe general rules for a class that implements a remote interface are as follows:ˆÏijgÍi/ÙˆÏi=jV z€³€-€€€(€€€€€€€‚€€‚€€‚€€‚ÿ·The class usually extends java.rmi.server.UnicastRemoteObject, thereby inheriting the remote behavior provided by the classes java.rmi.server.RemoteObject and java.rmi.server.RemoteServer.·The class can implement any number of remote interfaces.·The class can extend another remote implementation class.·The class can define methods that do not appear in the remote interface, but those methods can only be used locally and are not available remotely.(jej% €€-€‚ÿŸf=j#jX ~€Í€ɀ€€€€€€€‚‚€€‚ÿFor example, the following class BankAcctImpl implements the BankAccount remote interface and extends the java.rmi.server.UnicastRemoteObject class:package mypackage;import java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;public class BankAccountImpl extends UnicastRemoteObject implements BankAccount{ private float balance = 0.0; public BankAccountImpl(float initialBalance) throws RemoteException { balance = initialBalance; } public void deposit(float amount) throws RemoteException { ... } public void withdraw(float amount) throws OverdrawnException, RemoteException { ... } public float getBalance() throws RemoteException { ... }}Çej4jJ b€€ɀ€€€€€€€€€€€€€‚ÿNote that if necessary, a class that implements a remote interface can extend some other class besides java.rmi.server.UnicastRemoteObject. However, the implementation class must then assume the responsibility for exporting the object (taken care of by the UnicastRemoteObject constructor) and for implementing (if needed) the correct remote semantics of the hashCode, equals, and toString methods inherited from the java.lang.Object class.(#j\j% €€ɀ€‚ÿ'4jƒj$ €€ä€‚ÿ+\j®j( €€0䔀 ‚ÿu(ƒj# jM j€P€ä€‚çø£—Y€‰€çû€—Y€‰€çý€—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+®jN j( €€0䔀 ‚ÿÊO# j j{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1N jI j1Uÿÿÿÿÿÿÿÿ™ÿÿÿÿI jm j$ jm j" €€€ ÿl;I jÙ j1ä‰Ó€՚Ù j j3…jJava Remote Method Invocation: 2 - Distributed Object ModelF m j j& €@€€€‚ÿ2 - Distributed Object ModelºFÙ jÙ jt#ž€ŒÂÂX€€çø£—Y€‰€çü€—Y€‰€çþ€—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation, j j' € €€‚€‚ÿ*Ù j/ j' €€ ”€ ‚ÿm; jœ j2 4€v€€‚€‚€?€ €‚‚ÿ2.6 Parameter Passing in Remote Method Invocation°r/ jLj> J€å€ɀ€€(€€€çD—Y€‰€‚ÿAn argument to, or a return value from, a remote object can be any object that is serializable. This includes primitive types, remote objects, and non-remote objects that implement the java.io.Serializable interface. For more details on how to make classes serializable, see the "Java Object Serialization Specification." Classes, for parameters or return values, that are not available locally are downloaded dynamically by the RMI system. See the section on "Dynamic Class Loading" for more information on how RMI downloads parameter and return value classes when reading parameters, return values and exceptions.(œ jtj% €€ɀ€‚ÿS'LjÇj, (€N€ä€:€‚€‚‚ÿ2.6.1 Passing Non-remote ObjectssCtjFBj0 .€‡€ɀ€€(€‚‚‚‚‚ÿA non-reÇjFBjm jmote object, that is passed as a parameter of a remote method invocation or returned as a result of a remote method invocation, is passed by copy; that is, the object is serialized using the object serialization mechanism of the Java platform.So, when a non-remote object is passed as an argument or return value in a remote method invocation, the content of the non-remote object is copied before invoking the call on the remote object.When a non-remote object is returned from a remote method invocation, a new object is created in the calling virtual machine.(ÇjnBj% €€ɀ€‚ÿO#FBjœBj, (€F€ä€:€‚€‚‚ÿ2.6.2 Passing Remote ObjectsX1nBjDj' €c€ɀ€‚‚ÿWhen passing an exported remote object as a parameter or return value in a remote method call, the stub for that remote object is passed instead. Remote objects that are not exported will not be replaced with a stub instance. A remote object passed as a parameter can only implement remote interfaces.N"œBjcDj, (€D€ä€:€‚€‚‚ÿ2.6.3 Referential IntegrityüÕDj_Fj' €«€ɀ€‚‚ÿIf two references to an object are passed from one JVM to another JVM in parameters (or in the return value) in a single remote method call and those references refer to the same object in the sending JVM, those references will refer to a single copy of the object in the receiving JVM. More generally stated: within a single remote method call, the RMI system maintains referential integrity among the objects passed as parameters or as a return value in the call.IcDjšFj, (€:€ä€:€‚€‚‚ÿ2.6.4 Class Annotationf?_FjHj' €€ɀ€‚‚ÿWhen an object is sent from one JVM to another in a remote method call, the RMI system annotates the class descriptor in the call stream with information (the URL) of the class so that the class can be loaded at the receiver. It is a requirement that classes be downloaded on demand during remote method invocation.O#šFj]Hj, (€F€ä€:€‚€‚‚ÿ2.6.5 Parameter Transmission?ÝHjœKjb ’€»€ɀ€€€€€€€€€€€€€€€€€€€€€‚ÿParameters in an RMI call are written to a stream that is a subclass of the class java.io.ObjectOutputStream in order to serialize the parameters to the destination of the remote call. The ObjectOutputStream subclass overrides the replaceObject method to replace each exported remote object with its corresponding stub instance. Parameters that are objects are written to the stream using the ObjectOutputStream's writeObject method. The ObjectOutputStream calls the replaceObject method for each object written to the stream via the writeObject method (that includes objects referenced by those objects that are written). The replaceObject method of RMI's subclass of ObjectOutputStream returns the following:(]HjÄKj% €€ɀ€‚ÿ†&œKjJNj` Ž€M€-€€€€€€€€€(€€€€€‚€€€€€€‚ÿ·If the object passed to replaceObject is an instance of java.rmi.Remote and that object is exported to the RMI runtime, then it returns the stub for the remote object. If the object is an instance of java.rmi.Remote and the object is not exported to the RMI runtime, then replaceObject returns the object itself. A stub for a remote object is obtained via a call to the method java.rmi.server.RemoteObject.toStub.·If the object passed to replaceObject is not an instance of java.rmi.Remote, then the object is simply returned.(ÄKjrNj% €€-€‚ÿkJNjé€jR r€3€ɀ€€€€€çD—Y€‰€€€‚‚€€€€‚ÿRMI's subclass of ObjectOutputStream also implements the annotateClass method that annotates the call stream with the location of the class so that it can be downloaded at the receiver. See the section "Dynamic Class Loading" for more information on how annotateClass is used.Since parameters are writterNjé€jm jn to a single ObjectOutputStream, references that refer to the same object at the caller will refer to the same copy of the object at the receiver. At the receiver, parameters are read by a single ObjectInputStream.frNjOƒjG \€?€ɀ€‚€€€€€€€€‚‚€€‚ÿAny other default behavior of ObjectOutputStream for writing objects (and similarly ObjectInputStream for reading objects) is maintained in parameter passing. For example, the calling of writeReplace when writing objects and readResolve when reading objects is honored by RMI's parameter marshal and unmarshal streams.In a similar manner to parameter passing in RMI as described above, a return value (or exception) is written to a subclass of ObjectOutputStream and has the same replacement behavior as parameter transmission.(é€jwƒj% €€ɀ€‚ÿ'Oƒjžƒj$ €€ä€‚ÿ+wƒjɃj( €€0䔀 ‚ÿu(žƒj>„jM j€P€ä€‚çø£—Y€‰€çü€—Y€‰€çþ€—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+Ƀji„j( €€0䔀 ‚ÿÊO>„j3…j{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1i„jd…j1Uÿÿÿÿÿÿÿÿ›ÿÿÿÿd…jˆ…j$3…jˆ…j" €€€ ÿl;d…jô…j1nŽÔz՜ô…j:†jwŒjJava Remote Method Invocation: 2 - Distributed Object ModelF ˆ…j:†j& €@€€€‚ÿ2 - Distributed Object ModelºFô…jô†jt#ž€ŒÂÂX€€çø£—Y€‰€çý€—Y€‰€ç@—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,:†j ‡j' € €€‚€‚ÿ*ô†jJ‡j' €€ ”€ ‚ÿW% ‡j¡‡j2 4€J€€‚€‚€?€ €‚‚ÿ2.7 Locating Remote ObjectsòŸJ‡j“Šj4 6€}€ɀ€€€‚‚€€‚ÿA simple bootstrap name server is provided for storing named references to remote objects. A remote object reference can be stored using the URL-based methods of the class java.rmi.Naming.For a client to invoke a method on a remote object, that client must first obtain a reference to the object. A reference to a remote object is usually obtained as a parameter or return value in a method call. The RMI system provides a simple bootstrap name server from which to obtain remote objects on given hosts. The java.rmi.Naming class provides Uniform Resource Locator (URL) based methods to look up, bind, rebind, unbind, and list the name-object pairings maintained on a particular host and port.(¡‡j»Šj% €€ɀ€‚ÿ'“ŠjâŠj$ €€ä€‚ÿ+»Šj ‹j( €€0䔀 ‚ÿu(âŠj‚‹jM j€P€ä€‚çø£—Y€‰€çý€—Y€‰€ç@—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT+ ‹j­‹j( €€0䔀 ‚ÿÊO‚‹jwŒj{ ƀž€ä€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1­‹jšŒj1UÿÿÿÿÿÿÿÿÿÿÿÿšŒǰj$wŒǰj" €€€ ÿc2šŒj/j1Q€Õ|€Õž/jlj˜ÁjJava Remote Method Invocation: - Properties In RMI=̌jlj& €.€€€‚ÿ- Properties In RMIºF/j&Žjt#ž€ŒÂÂX€€çø£—Y€‰€癝—Y€‰€祗Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method InvocationIljoŽj/ .€4€€‚€%€‚‚€‚ÿProperties In RMI*&Žj™Žj' €€ ”€ ‚ÿ&oŽj¿Žj# €€€‚ÿF™Žjj7#>€l$€€€€‚€‚ÿÿÿAPPENDIXB9¿Žj>j+ &€€€‚€€‚‚ÿTopics:ŸMjݏjR t€š€ɀ€祗Y€‰€‚€ç¥—Y€‰€‚€ç£—Y€‰€‚‚ÿ·Server Properties·Activation Properties·Other Properties&>jÀj# €€€‚ÿݏjÀǰj*ݏj9Àj' €€ ”€ ‚ÿt(Àj­ÀjL h€P€€‚çø£—Y€‰€癝—Y€‰€祗Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*9Àj×Àj' €€ ”€ ‚ÿÁL­Àj˜Áju º€˜€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1×ÀjÉÁj1UÿÿÿÿÿÿÿÿŸÿÿÿÿÉÁjíÁj$˜ÁjíÁj" €€€ ÿc2ÉÁjPÂj1zՋ֠PÂjÂjnkJava Remote Method Invocation: - Properties In RMI=íÁjÂj& €.€€€‚ÿ- Properties In RMIºFPÂjGÃjt#ž€ŒÂÂX€€çø£—Y€‰€çÿ€—Y€‰€ç¥—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ÂjsÃj' € €€‚€‚ÿ*GÃjÃj' €€ ”€ ‚ÿQsÃjîÃj2 4€>€€‚€‚€?€ €‚‚ÿB.1 Server PropertiesѬÃj¿Äj% €Y€ä€‚ÿThe following table contains a list of properties typically used by servers for configuration. Note that properties are typically restricted from being set from applets.'îÃjæÄj$ €€ä€‚ÿ¿ÄjuÅjp#°€>2d€‚ÿ€€ÿ"€€€€‚ÿ"€ €€€‚ÿÿÿPropertyDescriptionÉCæÄj>Çj†#ڀ‡2dÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ(€H€€(€‚ÿÿÿjava.rmi.server.codebaseIndicates the codebase URL of classes originating from the JVM. The codebase property is used to annotate class descriptors of classes originating from a JVM so that the class for an object sent as a parameter or return value in a remote method call can be loaded at the receiver.sçuÅj±ÈjŒ#æ€Ï2dÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ4€N€€€€€‚ÿÿÿjava.rmi.server.disableHttpIf set to true, disables the use of HTTP for RMI calls. This means that RMI will never resort to using HTTP to invoke a call via a firewall. Defaults to false (HTTP usage is enabled).èh>Çj™Êj€#΀Ñ2dÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€H€‚ÿÿÿjava.rmi.server.hostnameRMI uses IP addresses to indicate the location of a server (embedded in a remote reference). If the use of a hostname is desired, this property is used to specify the fully-qualified hostname for RMI to use for remote objects exported to the local JVM. The property can also be set to an IP address. Not set by default.%¥±ÈjŸËj€#΀K2dÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ€F€‚ÿÿÿjava.rmi.dgc.leaseValueSets the lease duration that the RMI runtime grants to clients referencing remote objects in the JVM. Defaults to 10 minutes.†™ÊjÐÌjŒ#æ€ 2dÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ4€H€€€€€‚ÿÿÿjava.rmi.server.logCallsIf set to true, server call logging is turned on and prints to stderr. Defaults to false.fÔŸËj6Îj’#ò€©2dÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ@€V€€€€€€€‚ÿÿÿjava.rmi.server.useCodebaseOnlyIf set to true, when RMI loads classes (if not available via CLASSPATH) they are only loaded using the URL specified by the property java.rmi.server.codebase.ølÐÌj:kŒ#æ€Ù2dÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ4€X€€€€€‚ÿÿÿjava.rmi.server.useLocalHostnameIf the java.rmi.server.hostname property is not set and this property is set, then RMI will not use an IP address to denote the location (embedded in remote references) of remote objects that are exported into the JVM. Instead, RMI will use the value of the call to the m6Îj:kíÁjethod java.net.InetAddress.getLocalHost.V6ÎjkP#p€ 2€€ÿ€€€‚ÿ€€‚ÿÿÿ':k·k$ €€ä€‚ÿ&kÝk# €€€‚ÿ*·kk' €€ ”€ ‚ÿt(Ýk{kL h€P€€‚çø£—Y€‰€çÿ€—Y€‰€ç¥—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*k¥k' €€ ”€ ‚ÿÉO{knkz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1¥kŸk1Uÿÿÿÿÿÿÿÿ¡ÿÿÿÿŸkÃk$nkÃk" €€€ ÿb1Ÿk%k1Þ|€ÕâÖ¢%kbk kava Remote Method Invocation: - Properties In RMI=Ãkbk& €.€€€‚ÿ- Properties In RMIºF%kkt#ž€ŒÂÂX€€çø£—Y€‰€祗Y€‰€ç£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,bkHk' € €€‚€‚ÿ*krk' €€ ”€ ‚ÿU#HkÇk2 4€F€€‚€‚€?€ €‚‚ÿB.2 Activation PropertieslHrk3k$ €€ä€‚ÿThe following table contains a list of properties used in activation.'ÇkZk$ €€ä€‚ÿ3kékp#°€>2ŽÄ€€€‚ÿ€€ÿ"€€€€‚ÿ"€ €€€‚ÿÿÿPropertyDescriptionc×ZkLkŒ#怯2ŽÄ€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ4€H€€€€€‚ÿÿÿjava.rmi.activation.portThe port number on which the ActivationSystem is exported. This port number should be specified in a JVM if the activation daemon rmid uses a port other than the default.ékÛkŒ#æ€2ŽÄ€€ÿ€€€‚ÿ€€ÿ(€ €€€‚ÿ4€^€€€€€‚ÿÿÿjava.rmi.activation.activator.classThe class that implements the interface java.rmi.activation.Activator. This property is used internally to locate the resident implementation of the Activator from which the stub class name can be found.VLk1 kP#p€ 2€€ÿ€€€‚ÿ€€‚ÿÿÿ'ÛkX k$ €€ä€‚ÿ&1 k~ k# €€€‚ÿ*X kš k' €€ ”€ ‚ÿt(~ k kL h€P€€‚çø£—Y€‰€祗Y€‰€ç£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*š kF k' €€ ”€ ‚ÿÉO k kz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1F k@ k1Uÿÿÿÿÿÿÿÿ£ÿÿÿÿ@ kd k$ kd k" €€€ ÿc2@ kÇ k1‹ ‹ÖׂրÇ k k$FkJava Remote Method Invocation: - Properties In RMI=d k k& €.€€€‚ÿ- Properties In RMI£;Ç k§ kh# €vÂÂ@€€çø£—Y€‰€ç¥—Y€‰€‚ÿ€2€ÿ€4€€(€‚ÿÿÿCONTENTS | PREVJava Remote Method Invocation, kÓ k' € €€‚€‚ÿ*§ ký k' €€ ”€ ‚ÿPÓ kM k2 4€<€€‚€‚€?€ €‚‚ÿB.3 Other PropertiesåÀý k2k% €€ä€‚ÿThese properties are used to locate specific implementation classes within implementation packages. Note: all these properties have been deprecated as of Java 2 SDK, Standard Edition, v1.2.'M kYk$ €€ä€‚ÿ2kèkp#°€>2©©€€€‚ÿ€€ÿ"€€€€‚ÿ"€ €€€‚ÿÿÿPropertyDescriptionŽúYk‚@k”#ö€õ2©©€€ÿ€€€‚ÿ€€ÿ8€ €€€€(€‚ÿ4€ð€€€€€‚ÿÿÿjava.rmi.loader.packagePrefixnote: this exception is deprecated as of Java 2 SDK, Standard Edition, v1.2The packageèk‚@kd k prefix for the class that implements the interface java.rmi.server.LoaderHandler. Defaults to sun.rmi.server.–èkBk”#ö€2©©€€ÿ€€€‚ÿ€€ÿ8€ €€€€(€‚ÿ4€ô€€€€€‚ÿÿÿjava.rmi.registry.packagePrefixnote: this exception is deprecated as of Java 2 SDK, Standard Edition, v1.2The package prefix for the class that implements the interface java.rmi.registry.RegistryHandler. Defaults to sun.rmi.registry.ïU‚@kDkš#«2©©€€ÿ€€€‚ÿ€€ÿ8€ €€€€(€‚ÿ@€ð€€€€€€€‚ÿÿÿjava.rmi.server.packagePrefixnote: this exception is deprecated as of Java 2 SDK, Standard Edition, v1.2The server package prefix. Assumes that the implementation of the server reference classes (such as UnicastRef and UnicastServerRef) are located in the package defined by the prefix. Defaults to sun.rmi.server.VBk]DkP#p€ 2€€ÿ€€€‚ÿ€€‚ÿÿÿ'Dk„Dk$ €€ä€‚ÿ&]DkªDk# €€€‚ÿ*„DkÔDk' €€ ”€ ‚ÿ]ªDk1Ek@ P€:€€‚çø£—Y€‰€ç¥—Y€‰€‚€‚ÿCONTENTS | PREV*ÔDk[Ek' €€ ”€ ‚ÿÉO1Ek$Fkz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1[EkUFk1Uÿÿÿÿÿÿÿÿ¥ÿÿÿÿUFkyFk$$FkyFk" €€€ ÿf5UFkßFk1âÖÄ֊ßFkGkðKkJava Remote Method Invocation: 10 - RMI Wire Protocol@yFkGk& €4€€€‚ÿ10 - RMI Wire ProtocolºFßFkÙGkt#ž€ŒÂÂX€€çø£—Y€‰€ço—Y€‰€çw£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method InvocationIGk"Hk/ .€4€€‚€%€‚‚€‚ÿRMI Wire Protocol*ÙGkLHk' €€ ”€ ‚ÿ&"HkrHk# €€€‚ÿBLHkŽHk4#8€o€€€‚€‚ÿÿÿCHAPTER109rHkíHk+ &€€€‚€€‚‚ÿTopics:TÑŽHkAJkƒ Ԁ£€ɀ€çw£—Y€‰€‚€çx£—Y€‰€‚€çy£—Y€‰€‚€çz£—Y€‰€‚€ç{£—Y€‰€‚€ç|£—Y€‰€‚‚ÿ·Overview·RMI Transport Protocol·RMI's Use of Object Serialization Protocol·RMI's Use of HTTP POST Protocol·Application-Specific Values for RMI·RMI's Multiplexing Protocol&íHkgJk# €€€‚ÿ*AJk‘Jk' €€ ”€ ‚ÿt(gJkKkL h€P€€‚çø£—Y€‰€ço—Y€‰€çw£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*‘Jk/Kk' €€ ”€ ‚ÿÁLKkðKku º€˜€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1/Kk!Lk1Uÿÿÿÿÿÿÿÿ§ÿÿÿÿ!LkELk$ðKkELk" €€€ ÿf5!Lk«Lk1Ðׂ֐ך«LkëLk"…kJava Remote Method Invocation: 10 - RMI Wire Protocol@ELkëLk& €4€€€‚ÿ10 - RMI Wire ProtocolºF«Lk¥Mkt#ž€ŒÂÂX€€çø£—Y€‰€çv£—Y€‰€çx£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ëLkÑMk' € €€‚€‚ÿ*¥MkûMk' €€ ”€ ‚ÿIÑMkDNk2 4€.€€‚€‚€?€ €‚‚ÿ10.1 Overview`;ûMk°€k% €w€ä€‚ÿThe RMI protocol makes use of two other protocols for its on-the-wire format: Java Object Serialization and HTTP. The Object Serialization protocol is used to marshal call and return data. The HTTP protocol is used to "POST" a remote method invocation and obtain return data when circumstances warrant. Each protocol is documented as a separate grammar. Nonterminal symbols in production rules may refer toDNk°€kELk rules governed by another protocol (either Object Serialization or HTTP). When a protocol boundary is crossed, subsequent productions use that embedded protocol.'DNk׀k$ €€ä€‚ÿH!°€kk' €B€€€‚‚ÿNotes about Grammar Notation$ç׀kCƒk= H€Ï€ɀ€€€(€‚€€‚€€‚ÿ·We use a similar notation to that used in The Java Language Specification (see section 2.3 of the JLS).·Control codes in the stream are represented by literal values expressed in hexadecimal.·Some nonterminal symbols in the grammar represent application specific values supplied in a method invocation. The definition of such a nonterminal consists of its Java programming language type. A table mapping each of these nonterminals to its respective type follows the grammar.(kkƒk% €€ɀ€‚ÿ&Cƒk‘ƒk# €€€‚ÿ*kƒk»ƒk' €€ ”€ ‚ÿt(‘ƒk/„kL h€P€€‚çø£—Y€‰€çv£—Y€‰€çx£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*»ƒkY„k' €€ ”€ ‚ÿÉO/„k"…kz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1Y„kS…k1Uÿÿÿÿÿÿÿÿ©ÿÿÿÿS…kw…k$"…kw…k" €€€ ÿf5S…k݅k1U(ÄÖêت݅k†kNlJava Remote Method Invocation: 10 - RMI Wire Protocol@w…k†k& €4€€€‚ÿ10 - RMI Wire ProtocolºF݅k׆kt#ž€ŒÂÂX€€çø£—Y€‰€çw£—Y€‰€çy£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,†k‡k' € €€‚€‚ÿ*׆k-‡k' €€ ”€ ‚ÿW%‡k„‡k2 4€J€€‚€‚€?€ €‚‚ÿ10.2 RMI Transport ProtocolI -‡k͈k= H€€ä€€(€€(€€(€€(€‚ÿThe wire format for RMI is represented by a Stream. The terminology adopted here reflects a client perspective. Out refers to output messages and In refers to input messages. The contents of the transport header are not formatted using object serialization.'„‡kôˆk$ €€ä€‚ÿU͈kI‰kG#^€2c€€€‚ÿ€€€€‚ÿÿÿStream:lôˆkµ‰k\#ˆ€ 2c;€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿOutkI‰k Šk\#ˆ€2c;€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿInAµ‰kŸŒk> J€ƒ€ä€‚€(€€(€€(€€(€‚ÿThe input and output streams used by RMI are paired. Each Out stream has a corresponding In stream. An Out stream in the grammar maps to the output stream of a socket (from the client's perspective). An In stream (in the grammar) is paired with the corresponding socket's input stream. Since output and input streams are paired, the only header information needed on an input stream is an acknowledgment as to whether the protocol is understood; other header information (such as the magic number and version number) can be implied by the context of stream pairing.' Škƌk$ €€ä€‚ÿS(ŸŒkk+ &€P€€:€‚€‚‚ÿ10.2.1 Format of an Output Stream÷ÅÆŒkŽk2 2€‹€ä€€(€€(€‚‚ÿAn output stream in RMI consists of transport Header information followed by a sequence of Messages. Alternatively, an output stream can contain an invocation embedded in the HTTP protocol.V kfŽkI#b€2¢€€€‚ÿ €€€(€‚‚‚ÿÿÿOut:xŽkގk\#ˆ€82¢Y€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿHeader MessagestfŽkRk\#ˆ€02¢Y€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿHttpMessage[ގk­kJ#d€"2¢€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿHeader:1RkFÀk\#ˆ€b2¢Y€€€‚ÿ€€‚‚ÿ"€ €‚€(­kFÀkw…k€‚‚‚ÿÿÿ0x4a 0x52 0x4d 0x49 Version Protocol\­k¢ÀkJ#d€$2¢€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿVersion:rFÀkÁk\#ˆ€,2¢Y€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿ0x00 0x01]¢ÀkqÁkJ#d€&2¢€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿProtocol:wÁkèÁk\#ˆ€62¢Y€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿStreamProtocolyqÁkaÂk\#ˆ€:2¢Y€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿSingleOpProtocolzèÁkÛÂk\#ˆ€<2¢Y€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿMultiplexProtocolcaÂk>ÃkJ#d€22¢€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿStreamProtocol:mÛÂk«Ãk\#ˆ€"2¢Y€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿ0x4be>ÃkÄkJ#d€62¢€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿSingleOpProtocol:m«Ãk}Äk\#ˆ€"2¢Y€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿ0x4cfÄkãÄkJ#d€82¢€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿMultiplexProtocol:m}ÄkPÅk\#ˆ€"2¢Y€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿ0x4d]ãÄk­ÅkJ#d€&2¢€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿMessages:pPÅkÆk\#ˆ€(2¢Y€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿMessagey­Åk–Æk\#ˆ€:2¢Y€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿMessages MessageNØÆkäÊkv º€±€ä€‚€(€€(€€(€€(€€(€€(€€(€‚‚€(€€(€€(€€(€€(€€(€‚ÿThe Messages are wrapped within a particular protocol as specified by Protocol. For the SingleOpProtocol, there may only be one Message after the Header, and there is no additional data that the Message is wrapped in. The SingleOpProtocol is used for invocation embedded in HTTP requests, where interaction beyond a single request and response is not possible.For the StreamProtocol and the MultiplexProtocol, the server must respond with a a byte 0x4e acknowledging support for the protocol, and an EndpointIdentifier that contains the host name and port number that the server can see is being used by the client. The client can use this information to determine its host name if it is otherwise unable to do that for security reasons. The client must then respond with another EndpointIdentifier that contains the client's default endpoint for accepting connections. This can be used by a server in the MultiplexProtocol case to identify the client.Ä–ÆkòÌkJ b€‰€ä€‚€(€€(€€(€ç|£—Y€‰€€(€‚ÿFor the StreamProtocol, after this endpoint negotiation, the Messages are sent over the output stream without any additional wrapping of the data. For the MultiplexProtocol, the socket connection is used as the concrete connection for a multiplexed connection, as described in Section 10.6, "RMI's Multiplexing Protocol." Virtual connections initiated over this multiplexed connection consist of a series of Messages as described below.Ì‚äÊkŸÎkJ b€€ä€‚€(€€(€€(€€(€€(€€(€‚ÿThere are three types of output messages: Call, Ping and DgcAck. A Call encodes a method invocation. A Ping is a transport-level message for testing liveness of a remote virtual machine. A DGCAck is an acknowledgment directed to a server's distributed garbage collector that indicates that remote objects in a return value from a server have been received by the client.'òÌkåÎk$ €€ä€‚ÿZŸÎk?ÏkI#b€"2l€€€‚ÿ €€€(€‚‚‚ÿÿÿMessage:måÎk¬Ïk\#ˆ€"2lÏ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿCallm?Ïk%l\#ˆ€"2lÏ€€€‚ÿ€€‚‚ÿ"€ €‚€(€¬Ïk%lw…k‚‚‚ÿÿÿPingo¬Ïk”l\#ˆ€&2lÏ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿDgcAckY%lílJ#d€2l€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿCall:v”lcl\#ˆ€42lÏ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿ0x50 CallDataYílŒlJ#d€2l€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿPing:mcl)l\#ˆ€"2lÏ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿ0x52[Œl„lJ#d€"2l€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿDgcAck:~")ll\#ˆ€D2lÏ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿ0x54 UniqueIdentifier'„l)l$ €€ä€‚ÿR'l{l+ &€N€€:€‚€‚‚ÿ10.2.2 Format of an Input Streamp )lëlP n€A€ä€€(€€(€€(€€(€€(€€(€€(€‚‚ÿThere are currently three types of input messages: ReturnData, HttpReturn and PingAck. ReturnData is the result of a "normal" RMI call. An HttpReturn is a return result from an invocation embedded in the HTTP protocol. A PingAck is the acknowledgment for a Ping message.U {l@lI#b€2Ø€€€‚ÿ €€€(€‚‚‚ÿÿÿIn:| ëlŒl\#ˆ€@2ØÆ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿProtocolAck Returns}!@l9l\#ˆ€B2ØÆ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿProtocolNotSupportedsŒl¬l\#ˆ€.2ØÆ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿHttpReturn`9l lJ#d€,2Ø€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿProtocolAck:m¬lyl\#ˆ€"2ØÆ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿ0x4ei lâlJ#d€>2Ø€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿProtocolNotSupported:mylOl\#ˆ€"2ØÆ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿ0x4f\âl«lJ#d€$2Ø€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿReturns:oOl l\#ˆ€&2ØÆ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿReturnw«l‘ l\#ˆ€62ØÆ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿReturns Return[ lì lJ#d€"2Ø€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿReturn:s‘ l_ l\#ˆ€.2ØÆ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿReturnDatapì lÏ l\#ˆ€(2ØÆ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿPingAck__ l. lJ#d€*2Ø€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿReturnData:yÏ l§ l\#ˆ€:2ØÆ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿ0x51 ReturnValue\. l lJ#d€$2Ø€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿPingAck:m§ lp l\#ˆ€"2ØÆ€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿ0x53' l— l$ €€ä€‚ÿ&p lœ l# €€€‚ÿ*— lç l' €€ ”€ ‚ÿt(œ l[ lL h€P€€‚çø£—Y€‰€çw£—Y€‰€çy£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*ç l… l' €€ ”€ ‚ÿÉO[ lNlz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1… ll1Uÿÿÿÿÿÿÿÿ«ÿÿÿÿl£l$Nl£l" €€€ ÿf5l l1#×$Ù¬ lIlS‡lJava Remote Method Invocation: 10 - RMI Wire Protocol@£lIl& €4€€€‚ÿ10 - RMI Wire ProtocolºF l@lt#ž€ŒÂÂX€€çø£—Y€‰€çx£—Y€‰€çz£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method InvocationIl@l£l,Il;@l' € €€‚€‚ÿ*@le@l' €€ ”€ ‚ÿb0;@lÇ@l2 4€`€€‚€‚€?€ €‚‚ÿ10.3 RMI's Use of Object SerializationÕe@lßBlC T€«€ä€€(€€(€€(€€(€€(€‚ÿCall and return data in RMI calls are formatted using the Java Object Serialization protocol. Each method invocation's CallData is written to a Java object output stream that contains the ObjectIdentifier (the target of the call), an Operation (a number representing the method to be invoked), a Hash (a number that verifies that client stub and remote object skeleton use the same stub protocol), followed by a list of zero or more Arguments for the call.°Ç@lñDlb ’€a€ä€‚€(€€(€€(€€€€€€(€€(€çÑ£—Y€€€‰€‚ÿIn the JDK1.1 stub protocol the Operation represents the method number as assigned by rmic, and the Hash was the stub/skeleton hash which is the stub's interface hash. As of the Java 2 stub protocol (Java 2 stubs are generated using the -v1.2 option with rmic), Operation has the value -1 and the Hash is a hash representing the method to call. The hash is described in the section "The RemoteRef Interface".'ßBlEl$ €€ä€‚ÿ[ñDlsElI#b€$2§€€€‚ÿ €€€(€‚‚‚ÿÿÿCallData:•9ElFl\#ˆ€r2§™€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿObjectIdentifier Operation Hash ArgumentsoptzsEl‚Fl\#ˆ€<2§™€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿObjectIdentifier:†*FlGl\#ˆ€T2§™€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿObjectNumber UniqueIdentifiere‚FlmGlJ#d€62§€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿUniqueIdentifier:zGlçGl\#ˆ€<2§™€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿNumber Time Count^mGlEHlJ#d€(2§€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿArguments:nçGl³Hl\#ˆ€$2§™€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿValuexEHl+Il\#ˆ€82§™€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿArguments ValueZ³Hl…IlJ#d€ 2§€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿValue:o+IlôIl\#ˆ€&2§™€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿObjectr…IlfJl\#ˆ€,2§™€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿPrimitive_ôIlÅKlF Z€3€ä€€(€€(€€€€(€€(€€(‚ÿA ReturnValue of an RMI call consists of a return code to indicate either a normal or exceptional return, a UniqueIdentifier to tag the return value (used to send a DGCAck if necessary) followed by the return result: either the Value returned or the Exception thrown.'fJlìKl$ €€ä€(‚ÿVÅKlBLlC#V€&2Š€€€(‚ÿ€€‚‚‚ÿÿÿReturnValue:)ìKlÁLlV#|€R2Š€€€(‚ÿ€€‚‚ÿ€ €‚‚‚‚ÿÿÿ0x01 UniqueIdentifier Valueopt€*BLlAMlV#|€T2Š€€€(‚ÿ€€‚‚ÿ€ €‚‚‚‚ÿÿÿ0x02 UniqueIdentifier Exception'ÁLlhMl$ €€ä€‚ÿ(AMlMl% €€ɀ€‚ÿ,hMlŒMl) "€€0ɀ”€ ‚ÿ®\MljOlR r€¹€ɀ€‚€€(€€(€€(€€(€€(€€(€‚€‚ÿNote - ObjectIdentifier, UniqueIdentifier, and EndpointIdentifier are not written out using default serialization, but each uses its own special write method (this is not the writeObject method used by object serialization); the write method for each type of identifier adds its component data consecutively to the output stream.,ŒMl–Ol) "€€0ɀ”€ ‚ÿ.jOlÄOl) "€ €ɀ€‚€‚ÿ[0–Ol+€l+ &€`€€:€‚€‚‚ÿ10.3.1 Class AÄOl+€l£lnnotation and Class Loading#ŒÄOlNƒlg œ€y€ä€€€€€€€€€€€€€€€€€€€€€€€‚ÿRMI overrides the annotateClass and resolveClass methods of ObjectOutputStream and ObjectInputStream respectively. Each class is annotated with the codebase URL (the location from which the class can be loaded). In the annotateClass method, the classloader that loaded the class is queried for its codebase URL. If the classloader is non-null and the classloader has a non-null codebase, then the codebase is written to the stream using the ObjectOutputStream.writeObject method; otherwise a null is written to the stream using the writeObject method. Note: as an optimization, classes in the "java" package are not annotated, since they are always available to the receiver.'ã+€lu…lD V€Ç€ä€‚€€€€€€€€€€‚ÿThe class annotation is resolved during deserialization using the ObjectInputStream.resolveClass method. The resolveClass method first reads the annotation via the ObjectInputStream.readObject method. If the annotation, a codebase URL, is non-null, then it obtains the classloader for that URL and attempts to load the class. The class is loaded by using a java.net.URLConnection to fetch the class bytes (the same mechanism used by a web browser's applet classloader).'Nƒlœ…l$ €€ä€‚ÿ&u…l…l# €€€‚ÿ*œ…lì…l' €€ ”€ ‚ÿt(…l`†lL h€P€€‚çø£—Y€‰€çx£—Y€‰€çz£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*ì…lІl' €€ ”€ ‚ÿÉO`†lS‡lz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1Іl„‡l1Uÿÿÿÿÿÿÿÿ­ÿÿÿÿ„‡lš‡l$S‡lš‡l" €€€ ÿf5„‡lˆl1 êØ"Ù®ˆlNˆl ÃlJava Remote Method Invocation: 10 - RMI Wire Protocol@š‡lNˆl& €4€€€‚ÿ10 - RMI Wire ProtocolºFˆl‰lt#ž€ŒÂÂX€€çø£—Y€‰€çy£—Y€‰€ç{£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,Nˆl4‰l' € €€‚€‚ÿ*‰l^‰l' €€ ”€ ‚ÿ`.4‰lŸ‰l2 4€\€€‚€‚€?€ €‚‚ÿ10.4 RMI's Use of HTTP POST ProtocolH^‰lŒlH ^€€ä€‚‚€(€€(‚€‚‚€(€€(€€(€‚ÿIn order to invoke remote methods through a firewall, some RMI calls make use of the HTTP protocol, more specifically HTTP POST. The URL specified in the post header can be one of the following:http://:/ http://:80/cgi-bin/java-rmi?forward=The first URL is used for direct communication with an RMI server on the specific host and port. The second URL form is used to invoke a "cgi" script on the server which forwards the invocation to the server on the specified port.X Ÿ‰l^l8 >€A€ä€‚€(€€(€€(€‚ÿAn HttpPostHeader is a standard HTTP header for a POST request. An HttpResponseHeader is a standard HTTP response to a post. If the response status code is not 200, then it is assumed that there is no Return. Note that only a single RMI call is embedded in an HTTP POST request.'Œl…l$ €€ä€‚ÿ^^lãlI#b€*2€€€‚ÿ €€€(€‚‚‚ÿÿÿHttpMessage:†*…liŽl\#ˆ€T21€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿHttpPostHeader Header Message_ãlȎlJ#d€*2€€€‚ÿ"€€‚€(€‚‚‚ÿÿÿHttpReturn:‚&iŽlJl\#ˆ€L21€€€‚ÿ€€‚‚ÿ"€ €‚€(€‚‚‚ÿÿÿHttpResponseHeader ReturnFȎllA#R€ 2€€€‚ÿ€€‚ÿÿÿ'Jl·l$ €€ä€‚ÿ(lߏl% €€ɀ€‚ÿ,·lÀl) "€€0ɀ”ߏlÀlš‡l€ ‚ÿá˜ßløÀlI `€1€ɀ€‚€€€(€€(€€(€€(€‚€‚ÿNote - Only the SingleOpProtocol appears in the Header of an HttpMessage. An HttpReturn does not contain a protocol acknowledgment byte.,Àl$Ál) "€€0ɀ”€ ‚ÿ.øÀlRÁl) "€ €ɀ€‚€‚ÿ&$ÁlxÁl# €€€‚ÿ*RÁl¢Ál' €€ ”€ ‚ÿt(xÁlÂlL h€P€€‚çø£—Y€‰€çy£—Y€‰€ç{£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*¢Ál@Âl' €€ ”€ ‚ÿÉOÂl Ãlz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1@Âl:Ãl1Uÿÿÿÿÿÿÿÿ¯ÿÿÿÿ:Ãl^Ãl$ Ãl^Ãl" €€€ ÿf5:ÃlÄÃl12 $ÙÚ°ÄÃlÄlmJava Remote Method Invocation: 10 - RMI Wire Protocol@^ÃlÄl& €4€€€‚ÿ10 - RMI Wire ProtocolºFÄÃlŸÄlt#ž€ŒÂÂX€€çø£—Y€‰€çz£—Y€‰€ç|£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ÄlêÄl' € €€‚€‚ÿ*ŸÄlÅl' €€ ”€ ‚ÿd2êÄlxÅl2 4€d€€‚€‚€?€ €‚‚ÿ10.5 Application-Specific Values for RMIùÔÅlqÆl% €©€ä€‚ÿThis table lists the nonterminal symbols that represent application-specific values used by RMI. The table maps each symbol to its respective type. Each is formatted using the protocol in which it is embedded.'xÅl˜Æl$ €€ä€‚ÿqÆl(Çlu#º€62™æ€€€‚ÿ€€ÿ&€€€(€‚ÿ(€€€€‚ÿÿÿCountshortŽ/˜ÆlÜÇl…#ڀ^2™æ€€ÿ€€€‚ÿ€€ÿ(€ €€(€‚ÿ(€*€€€‚ÿÿÿExceptionjava.lang.Exception (Çl|Èl…#ڀ62™æ€€ÿ€€€‚ÿ€€ÿ(€ €€(€‚ÿ(€ €€€‚ÿÿÿHashlong£ÜÇlÉl…#ڀ<2™æ€€ÿ€€€‚ÿ€€ÿ(€ €€(€‚ÿ(€(€€€‚ÿÿÿHostnameUTF¡|ÈlÀÉl…#ڀ82™æ€€ÿ€€€‚ÿ€€ÿ(€ €€(€‚ÿ(€$€€€‚ÿÿÿNumberint®)ÉlnÊl…#ڀR2™æ€€ÿ€€€‚ÿ€€ÿ(€ €€(€‚ÿ(€$€€€‚ÿÿÿObjectjava.lang.Objectš#ÀÉlËl…#ڀF2™æ€€ÿ€€€‚ÿ€€ÿ(€ €€(€‚ÿ(€0€€€‚ÿÿÿObjectNumberlong€nÊlºËl…#ڀ>2™æ€€ÿ€€€‚ÿ€€ÿ(€ €€(€‚ÿ(€*€€€‚ÿÿÿOperationint¥ Ël_Ìl…#ڀ@2™æ€€ÿ€€€‚ÿ€€ÿ(€ €€(€‚ÿ(€,€€€‚ÿÿÿPortNumberintÒ;ºËl1Íl—#þ€v2™æ€€ÿ€€€‚ÿ€€ÿ(€ €€(€‚ÿL€*€€€€€€€€€‚ÿÿÿPrimitivebyte, int, short, long... _ÌlÑÍl…#ڀ62™æ€€ÿ€€€‚ÿ€€ÿ(€ €€(€‚ÿ(€ €€€‚ÿÿÿTimelongV1Íl'ÎlP#p€ 2€€ÿ€€€‚ÿ€€‚ÿÿÿ'ÑÍlNÎl$ €€ä€‚ÿ&'ÎltÎl# €€€‚ÿ*NÎlžÎl' €€ ”€ ‚ÿt(tÎlÏlL h€P€€‚çø£—Y€‰€çz£—Y€‰€ç|£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*žÎl<Ïl' €€ ”€ ‚ÿÉOÏlmz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved<Ïlm^Ãl.1<ÏlBm1Uÿÿÿÿÿÿÿÿ±ÿÿÿÿBmfm$mfm" €€€ ÿf5BmÌm1yL"ÙUܲÌm m­ nJava Remote Method Invocation: 10 - RMI Wire Protocol@fm m& €4€€€‚ÿ10 - RMI Wire ProtocolºFÌmÆmt#ž€ŒÂÂX€€çø£—Y€‰€ç{£—Y€‰€çq—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation, mòm' € €€‚€‚ÿ*Æmm' €€ ”€ ‚ÿ\*òmxm2 4€T€€‚€‚€?€ €‚‚ÿ10.6 RMI's Multiplexing Protocolæm‰m+ $€Í€ä€€(€‚ÿThe purpose of multiplexing is to provide a model where two endpoints can each open multiple full duplex connections to the other endpoint in an environment where only one of the endpoints is able to open such a bidirectional connection using some other facility (e.g., a TCP connection). RMI use this simple multiplexing protocol to allow a client to connect to an RMI server object in some situations where that is otherwise not possible. For example, some security managers for applet environments disallow the creation of server sockets to listen for incoming connections, thereby preventing such applets to export RMI objects and service remote calls from direct socket connections. If the applet can open a normal socket connection to its codebase host, however, then it can use the multiplexing protocol over that connection to allow the codebase host to invoke methods on RMI objects exported by the applet. This section describes how the format and rules of the multiplexing protocol.'xm°m$ €€ä€‚ÿD‰môm+ &€2€€:€‚€‚‚ÿ10.6.1 Definitions3ø°m' m; D€ñ€ä€‚‚€(€‚‚€€€(€‚ÿThis sections defines some terms as they are used in the rest of the description of the protocol.An endpoint is one of the two users of a connection using the multiplexing protocol.The multiplexing protocol must layer on top of one existing bidirectional, reliable byte stream, presumably initiated by one of the endpoints to the other. In current RMI usage, this is always a TCP connection, made with a java.net.Socket object. This connection will be referred to as the concrete connection.™[ômÀ m> J€·€ä€‚€(€€(€€(€€(€‚ÿThe multiplexing protocol facilitates the use of virtual connections, which are themselves bidirectional, reliable byte streams, representing a particular session between two endpoints. The set of virtual connections between two endpoints over a single concrete connection comprises a multiplexed connection. Using the multiplexing protocol, virtual connections can be opened and closed by either endpoint. The state of an virtual connection with respect to a given endpoint is defined by the elements of the multiplexing protocol that are sent and received over the concrete connection. Such state involves if the connection is open or closed, the actual data that has been transmitted across, and the related flow control mechanisms. If not otherwise qualified, the term connection used in the remainder of this section means virtual connection.qD' m1m- (€‰€ä€‚€(€‚‚ÿA virtual connections within a given multiplexed connection is identified by a 16 bit integer, known as the connection identifier. Thus, there exist 65,536 possible virtual connections in one multiplexed connection. The implementation may limit the number of these virtual connections that may be used simultaneously.Z/À m‹m+ &€^€€:€‚€‚‚ÿ10.6.2 Connection State and Flow Controlh/1mÿ@m9 @€_€ä€€(€ç|£—Y€‰€‚‚‚ÿConnections are manipulated using the various operations defined by the multiplexing protocol. The following are the names of the operations defined by the protocol: OPEN, CLOSE, CLOSEACK, REQUEST, and TRANSMIT. The exact format and rules for all the operations are detailed in Section 10.6.3, "Protocol Format‹mÿ@mfm."The OPEN, CLOSE, and CLOSEACK operations control connections becoming opened and closed, while the REQUEST and TRANSMIT operations are used to transmit data across an open connection within the constraints of the flow control mechanism.'‹m&Am$ €€ä€‚ÿ=ÿ@mcAm' €,€€€‚‚ÿConnection States< &AmŸCm3 4€€ä€€(€‚‚€(€‚ÿA virtual connection is open with respect to a particular endpoint if the endpoint has sent an OPEN operation for that connection, or it has received an OPEN operation for that connection (and it had not been subsequently closed). The various protocol operations are described below.A virtual connection is pending close with respect to a particular endpoint if the endpoint has sent a CLOSE operation for that connection, but it has not yet received a subsequent CLOSE or CLOSEACK operation for that connection. ÝcAm©Dm- (€»€ä€‚€(€‚‚ÿA virtual connection is closed with respect to a particular endpoint if it has never been opened, or if it has received a CLOSE or a CLOSEACK operation for that connection (and it has not been subsequently opened).8ŸCmáDm' €"€€€‚‚ÿFlow ControlΩ©Dm¯Hm% €S€ä€‚ÿThe multiplexing protocol uses a simple packeting flow control mechanism to allow multiple virtual connections to exist in parallel over the same concrete connection. The high level requirement of the flow control mechanism is that the state of all virtual connections is independent; the state of one connection may not affect the behavior of others. For example, if the data buffers handling data coming in from one connection become full, this cannot prevent the transmission and processing of data for any other connection. This is necessary if the continuation of one connection is dependent on the completion of the use of another connection, such as would happen with recursive RMI calls. Therefore, the practical implication is that the implementation must always be able to consume and process all of the multiplexing protocol data ready for input on the concrete connection (assuming that it conforms to this specification).Ë—áDmzKm4 6€/€ä€‚€(€€(€‚‚‚ÿEach endpoint has two state values associated with each connection: how many bytes of data the endpoint has requested but not received (input request count) and how many bytes the other endpoint has requested but have not been supplied by this endpoint (output request count).An endpoint's output request count is increased when it receives a REQUEST operation from the other endpoint, and it is decreased when it sends a TRANSMIT operation. An endpoint's input request count is increased when it sends a REQUEST operation, and it is decreased when it receives a TRANSMIT operation. It is a protocol violation if either of these values becomes negative.J"¯HmÄNm( €E€ä€‚‚‚‚ÿIt is a protocol violation for an endpoint to send a REQUEST operation that would increase its input request count to more bytes that it can currently handle without blocking. It should, however, make sure that its input request count is greater than zero if the user of the connection is waiting to read data.It is a protocol violation for an endpoint to send a TRANSMIT operation containing more bytes that its output request count. It may buffer outgoing data until the user of the connection requests that data written to the connection be explicitly flushed. If data must be sent over the connection, however, by either an explicit flush or because the implementation's output buffers are full, then the user of the connection may be blocked until sufficient TRANSMIT operations can proceed. äzKmÏOm' €É€ä€‚‚‚ÿBeyond the rules outlined above, implementations are free to send REQUEST and TRANSMIT operations as deemed appropriate. For example, an endpoint may request more data for a connection even if its input buffer is not empty.HÄNm#€m+ &€:€€:€‚€‚‚ÿ10.6.ÏOm#€mfm3 Protocol Format\7ÏOmm% €o€ä€‚ÿThe byte stream format of the multiplexing protocol consists of a contiguous series of variable length records. The first byte of the record is an operation code that identifies the operation of the record and determines the format of the rest of its content. The following legal operation codes are defined:'#€mЁm$ €€ä€‚ÿlm‚mW#~€*2J€€€‚ÿ€€‚‚‚ÿ€€‚‚‚‚ÿÿÿvaluenamemЁm‚mX#€€*2J€€€‚ÿ€€‚‚‚‚ÿ€€‚‚‚‚ÿÿÿ0xE1OPENn‚mí‚mX#€€,2J€€€‚ÿ€€‚‚‚‚ÿ€€‚‚‚‚ÿÿÿ0xE2CLOSEq‚m^ƒmX#€€22J€€€‚ÿ€€‚‚‚‚ÿ€€‚‚‚‚ÿÿÿ0xE3CLOSEACKpí‚m΃mX#€€02J€€€‚ÿ€€‚‚‚‚ÿ€€‚‚‚‚ÿÿÿ0xE4REQUESTq^ƒm?„mX#€€22J€€€‚ÿ€€‚‚‚‚ÿ€€‚‚‚‚ÿÿÿ0xE5TRANSMITF΃m…„mA#R€ 2€€€‚ÿ€€‚ÿÿÿâ»?„mg…m' €w€ä€‚‚‚ÿIt is a protocol violation if the first byte of a record is not one of the defined operation codes. The following sections describe the format of the records for each operation code.:…„m¡…m' €&€€€‚‚ÿOPEN operation\8g…mý…m$ €p€ä€‚ÿThis is the format for records of the OPEN operation:'¡…m$†m$ €€ä€‚ÿ—,ý…m»†mk#Š€X2{NÝ€€€‚ÿ€€‚‚‚ÿ€&€‚‚‚‚ÿ€8€‚‚‚‚ÿÿÿsize (bytes)namedescription¢0$†m]‡mr#Ž€`2{NÝ€€€‚ÿ€€‚‚‚‚ÿ"€€‚€(€‚‚‚ÿ€,€‚‚‚‚ÿÿÿ1opcodeoperation code (OPEN)ž,»†mû‡mr#Ž€X2{NÝ€€€‚ÿ€€‚‚‚‚ÿ"€€‚€(€‚‚‚ÿ€$€‚‚‚‚ÿÿÿ2IDconnection identifierF]‡mAˆmA#R€ 2€€€‚ÿ€€‚ÿÿÿS%û‡m”Šm. *€K€ä€‚€(€‚‚‚ÿAn endpoint sends an OPEN operation to open the indicated connection. It is a protocol violation if ID refers to a connection that is currently open or pending close with respect to the sending endpoint. After the connection is opened, both input and request count states for the connection are zero for both endpoints.Receipt of an OPEN operation indicates that the other endpoint is opening the indicated connection. After the connection is opened, both input and output request count states for the connection are zero for both endpoints. çAˆm¡m& €Ï€ä€‚‚ÿTo prevent identifier collisions between the two endpoints, the space of valid connection identifiers is divided in half, depending on the value of the most significant bit. Each endpoint is only allowed to open connections with a particular value for the high bit. The endpoint that initiated the concrete connection must only open connections with the high bit set in the identifier and the other endpoint must only open connections with a zero in the high bit. For example, if an RMI applet that cannot create a server socket initiates a multiplexed connection to its codebase host, the applet may open virtual connections in the identifier range 0x8000-7FFF, and the server may open virtual connection in the identifier range 0-0x7FFF.'”Šmȍm$ €€ä€‚ÿ;¡mŽm' €(€€€‚‚ÿCLOSE operation]9ȍm`Žm$ €r€ä€‚ÿThis is the format for records of the CLOSE operation:'Žm‡Žm$ €€ä€‚ÿ—,`Žmmk#Š€X2{NÝ€€€‚ÿ€€‚‚‚ÿ€&€‚‚‚‚ÿ€8€‚‚‚‚ÿÿÿsize (bytes)namedescription¢0‡ŽmÀmr#Ž€`2{NÝ€€€‚ÿ€€‚‚‚‚ÿ"€€‚€(€‚‚‚ÿ€,€‚‚‚‚ÿÿÿ1opcodeoperation code (OPEN)ž,mjÀmr#Ž€X2{NÝ€€€‚ÿ€ÀmjÀmfm€‚‚‚‚ÿ"€€‚€(€‚‚‚ÿ€$€‚‚‚‚ÿÿÿ2IDconnection identifierFÀm°ÀmA#R€ 2€€€‚ÿ€€‚ÿÿÿFjÀmöÂm, &€5€ä€‚€(€‚ÿAn endpoint sends a CLOSE operation to close the indicated connection. It is a protocol violation if ID refers to a connection that is currently closed or pending close with respect to the sending endpoint (it may be pending close with respect to the receiving endpoint if it has also sent a CLOSE operation for this connection). After sending the CLOSE, the connection becomes pending close for the sending endpoint. Thus, it may not reopen the connection until it has received a CLOSE or a CLOSEACK for it from the other endpoint.,°Àm"Åm& € €ä€‚‚ÿReceipt of a CLOSE operation indicates that the other endpoint has closed the indicated connection, and it thus becomes closed on the receiving endpoint. Although the receiving endpoint may not send any more operations for this connection (until it is opened again), it still should provide data in the implementation's input buffers to readers of the connection. If the connection had previously been open instead of pending close, the receiving endpoint must respond with a CLOSEACK operation for the connection.'öÂmIÅm$ €€ä€‚ÿ>"Åm‡Åm' €.€€€‚‚ÿCLOSEACK operationkGIÅmòÅm$ €Ž€ä€‚ÿThe following is the format for records with the CLOSEACK operation:'‡ÅmÆm$ €€ä€‚ÿ—,òÅm°Æmk#Š€X2{NÝ€€€‚ÿ€€‚‚‚ÿ€&€‚‚‚‚ÿ€8€‚‚‚‚ÿÿÿsize (bytes)namedescription¢0ÆmRÇmr#Ž€`2{NÝ€€€‚ÿ€€‚‚‚‚ÿ"€€‚€(€‚‚‚ÿ€,€‚‚‚‚ÿÿÿ1opcodeoperation code (OPEN)ž,°ÆmðÇmr#Ž€X2{NÝ€€€‚ÿ€€‚‚‚‚ÿ"€€‚€(€‚‚‚ÿ€$€‚‚‚‚ÿÿÿ2IDconnection identifierFRÇm6ÈmA#R€ 2€€€‚ÿ€€‚ÿÿÿÚðÇmùÉm) €5€ä€‚‚‚‚‚ÿAn endpoint sends a CLOSEACK operation to acknowledge a CLOSE operation from the receiving endpoint. It is a protocol violation if ID refers to a connection that is not pending close for the receiving endpoint when the operation is received.Receipt of a CLOSEACK operation changes the state of the indicated connection from pending close to closed, and thus the connection may be reopened in the future.=6Èm6Êm' €,€€€‚‚ÿREQUEST operation_;ùÉm•Êm$ €v€ä€‚ÿThis is the format for records of the REQUEST operation:'6ÊmŒÊm$ €€ä€‚ÿ—,•ÊmSËmk#Š€X2{NP€€€‚ÿ€€‚‚‚ÿ€&€‚‚‚‚ÿ€8€‚‚‚‚ÿÿÿsize (bytes)namedescription¢0ŒÊmõËmr#Ž€`2{NP€€€‚ÿ€€‚‚‚‚ÿ"€€‚€(€‚‚‚ÿ€,€‚‚‚‚ÿÿÿ1opcodeoperation code (OPEN)ž,SËm“Ìmr#Ž€X2{NP€€€‚ÿ€€‚‚‚‚ÿ"€€‚€(€‚‚‚ÿ€$€‚‚‚‚ÿÿÿ2IDconnection identifier°>õËmCÍmr#Ž€|2{NP€€€‚ÿ€€‚‚‚‚ÿ"€€‚€(€‚‚‚ÿ€*€‚‚‚‚ÿÿÿ4countnumber of additional bytes requestedF“Ìm‰ÍmA#R€ 2€€€‚ÿ€€‚ÿÿÿ²rCÍmGn@ N€å€ä€‚€(€€(€€(€‚‚€(€‚ÿAn endpoint sends a REQUEST operation to increase its input request count for the indicated connection. It is a protocol violation if ID does not refer to a connection that is open with respect to the sending endpoint. The endpoint's input request count is incremented by the value count. The value of count is a signed 32 bit integer, and it is a protocol violation if it is negative or zero.Receipt of a REQUEST operation causes the output request count for the indicated connection to increase by count. If the connection is pending close by the receiv‰ÍmGnfming endpoint, then any REQUEST operations may be ignored.'‰Ímnn$ €€ä€‚ÿ>Gn¬n' €.€€€‚‚ÿTRANSMIT operation`<nn n$ €x€ä€‚ÿThis is the format for records of the TRANSMIT operation.'¬n3n$ €€ä€‚ÿ—, nÊnk#Š€X2{N(€€€‚ÿ€€‚‚‚ÿ€&€‚‚‚‚ÿ€8€‚‚‚‚ÿÿÿsize (bytes)namedescription¢03nlnr#Ž€`2{N(€€€‚ÿ€€‚‚‚‚ÿ"€€‚€(€‚‚‚ÿ€,€‚‚‚‚ÿÿÿ1opcodeoperation code (OPEN)ž,Ên nr#Ž€X2{N(€€€‚ÿ€€‚‚‚‚ÿ"€€‚€(€‚‚‚ÿ€$€‚‚‚‚ÿÿÿ2IDconnection identifier«9lnµnr#Ž€r2{N(€€€‚ÿ€€‚‚‚‚ÿ"€€‚€(€‚‚‚ÿ€*€‚‚‚‚ÿÿÿ4countnumber of bytes in transmission . nUnr#Ž€\2{N(€€€‚ÿ"€€‚€(€‚‚‚ÿ€€‚‚‚‚ÿ€0€‚‚‚‚ÿÿÿcountdatatransmission dataFµn›nA#R€ 2€€€‚ÿ€€‚ÿÿÿBUnÝn2 2€!€ä€‚€(€€(€‚ÿAn endpoint sends a TRANSMIT operation to actually transmit data over the indicated connection. It is a protocol violation if ID does not refer to a connection that is open with respect to the sending endpoint. The endpoint's output request count is decremented by the value count. The value of count is a signed 32 bit integer, and it is a protocol violation if it is negative or zero. It is also a protocol violation if the TRANSMIT operation would cause the sending endpoint's output request count to become negative.ð›nùn, &€á€ä€‚€(€‚ÿReceipt of a TRANSMIT operation causes the count bytes of data to be added to the queue of bytes available for reading from the connection. The receiving endpoint's input request count is decremented by count. If this causes the input request count to become zero and the user of the connection is trying to read more data, the endpoint should respond with another REQUEST operation. If the connection is pending close by the receiving endpoint, then any TRANSMIT operations may be ignored.'Ýn n$ €€ä€‚ÿ?ùn_ n' €0€€€‚‚ÿProtocol Violations—k nö n, &€×€ä€€(€‚‚ÿIf a protocol violation occurs, as defined above or if a communication error is detected in the concrete connection, then the multiplexed connection is shut down. The real connection is terminated, and all virtual connections become closed immediately. Data already available for reading from virtual connections may be read by the users of the connections.&_ n n# €€€‚ÿ*ö nF n' €€ ”€ ‚ÿt( nº nL h€P€€‚çø£—Y€‰€ç{£—Y€‰€çq—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*F nä n' €€ ”€ ‚ÿÉOº n­ nz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ä nÞ n1Uÿÿÿÿÿÿÿÿ³ÿÿÿÿÞ n n$­ n n" €€€ ÿg6Þ ni n1ªÚT€ÜŽi nª n/AnJava Remote Method Invocation: 6 - Registry InterfacesA nª n& €6€€€‚ÿ6 - Registry InterfacesºFi ndnt#ž€ŒÂÂX€€çø£—Y€‰€ç¡£—Y€‰€ç~£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ª nn' € €€‚€‚ÿ*dnºn' €€ ”€ ‚ÿ^&nn8 @€L€€‚€‚€?€ €2€ €‚‚ÿ6.1 The Registry InterfaceT)ºnln+ &€R€ä€€€‚‚ÿSee the Registry API documentation.&n’n# €€€‚ÿ*lnŒn' €€ ”€ ‚ÿt(’n<@nL h€P€€‚çø£—Y€‰€ç¡£—Y€‰€ç~£—Y€‰€Œn<@n n‚€‚ÿCONTENTS | PREV | NEXT*Œnf@n' €€ ”€ ‚ÿÉO<@n/Anz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1f@n`An1Uÿÿÿÿÿÿÿÿµÿÿÿÿ`An„An$/An„An" €€€ ÿg6`AnëAn1pUÜiݶëAn,Bný†nJava Remote Method Invocation: 6 - Registry InterfacesA„An,Bn& €6€€€‚ÿ6 - Registry InterfacesºFëAnæBnt#ž€ŒÂÂX€€çø£—Y€‰€ç}£—Y€‰€窣—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,,BnCn' € €€‚€‚ÿ*æBn‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.14†n.‡n1Uÿÿÿÿÿÿÿÿ·ÿÿÿÿ.‡nR‡n$ý†nR‡n" €€€ ÿg6.‡n¹‡n1žT€Ü±Ýž¹‡nú‡n‹nJava Remote Method Invocation: 6 - Registry InterfacesAR‡nú‡n& €6€€€‚ÿ6 - Registry InterfacesºF¹‡nވnt#ž€ŒÂÂX€€çø£—Y€‰€ç~£—Y€‰€ç—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ú‡nàˆn' € €€‚€‚ÿ*ވn ‰n' €€ ”€ ‚ÿe-àˆno‰n8 @€Z€€‚€‚€?€ €2€ €‚‚ÿ6.3 The RegistryHandler Interface[0 ‰nʉn+ &€`€ä€€€‚‚ÿSee the RegistryHandler API documentation.&o‰nð‰n# €€€‚ÿ*ʉnŠn' €€ ”€ ‚ÿt(ð‰nŽŠnL h€P€€‚çø£—Y€‰€ç~£—Y€‰€ç—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*ŠnžŠn' €€ ”€ ‚ÿÉOŽŠn‹nz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1žŠn²‹n1Uÿÿÿÿÿÿÿÿ¹ÿÿÿÿ²‹n֋n$‹n֋n" €€€ ÿg6²‹n=Œn1riÝö€Ýº=Œn~ŒnîÃnJava Remote Method Invocation: 6 - Registry InterfacesA֋n~Œn& €6€€€‚ÿ6 - Registry InterfacesºF=Œn8nt#ž€ŒÂÂX€€çø£—Y€‰€瀣—Y€‰€ç}£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method InvocationK~Œnƒn/ .€8€€‚€%€‚‚€‚ÿRegistry Interfaces*8n­n' €€ ”€ ‚ÿ&ƒnӍn# €€€‚ÿA ­nŽn4#8€o€€€‚€‚ÿÿÿCHAPTER6&Ӎn:Žn# €€€‚ÿÓŒŽnÁnG \€€ä€€€€€‚‚€(€‚‚€€€€‚ÿThe RMI system uses the java.rmi.registry.Registry interface and the java.rmi.registry.LocateRegistry class to provide a well-known bootstrap service for retrieving and registering objects by simple names.A registry is a remote object that maps names to remote objects. Any server process can support its own registry or a single registry can be used for a host.The method:ŽnÁn֋ns of LocateRegistry are used to get a registry operating on a particular host or host and port. The methods of the java.rmi.Naming class makes calls to a remote object that implements the Registry interface using the appropriate LocateRegistry.getRegistry method.':Žn@Án$ €€ä€‚ÿ3 ÁnsÁn' €€€€‚‚ÿTopics:Ìh@Án?Ând ˜€Ð€ɀ€ç}£—Y€€€‰€‚€ç~£—Y€€€‰€‚€窣—Y€€€‰€‚‚ÿ·The Registry Interface·The LocateRegistry Class·The RegistryHandler Interface&sÁneÂn# €€€‚ÿ*?ÂnÂn' €€ ”€ ‚ÿt(eÂnÃnL h€P€€‚çø£—Y€‰€瀣—Y€‰€ç}£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*Ân-Ãn' €€ ”€ ‚ÿÁLÃnîÃnu º€˜€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1-ÃnÄn1Uÿÿÿÿÿÿÿÿ»ÿÿÿÿÄnCÄn$îÃnCÄn" €€€ ÿe4ÄnšÄn1.±Ý†ÝŒšÄnçÄnäÌnJava Remote Method Invocation: 5 - Server Interfaces?CÄnçÄn& €2€€€‚ÿ5 - Server InterfacesºFšÄn¡Ånt#ž€ŒÂÂX€€çø£—Y€‰€çÍ£—Y€‰€磣—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,çÄnÍÅn' € €€‚€‚ÿ*¡Ån÷Ån' €€ ”€ ‚ÿg/ÍÅn^Æn8 @€^€€‚€‚€?€ €2€ €‚‚ÿ5.9 The RMIFailureHandler InterfaceNþ÷Ån¬ÈnP n€ý€ä€€€‚‚€€‚€€€€€€€€‚ÿThe java.rmi.server.RMIFailureHandler interface provides a method for specifying how the RMI runtime should respond when server socket creation fails (except during object export).package java.rmi.server;public interface RMIFailureHandler { public boolean failure(Exception ex);}The failure method is invoked with the exception that prevented the RMI runtime from creating a java.net.ServerSocket. The method returns true if the runtime should attempt to retry and false otherwise.Z^ÆnËnR r€€ä€‚€€€€‚‚€€€€€€€€€€‚ÿBefore this method can be invoked, a failure handler needs to be registered via the RMISocketFactory.setFailureHandler call. If the failure handler is not set, the RMI runtime attempts to re-create the ServerSocket after waiting for a short period of time.Note that the RMIFailureHandler is not called when ServerSocket creation fails upon initial export of the object. The RMIFailureHandler will be called when there is an attempt to create a ServerSocket after a failed accept on that ServerSocket.'¬Èn-Ën$ €€ä€‚ÿ&ËnSËn# €€€‚ÿ*-Ën}Ën' €€ ”€ ‚ÿt(SËnñËnL h€P€€‚çø£—Y€‰€çÍ£—Y€‰€磣—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*}ËnÌn' €€ ”€ ‚ÿÉOñËnäÌnz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ÌnÍn1UÿÿÿÿÿÿÿÿœÿÿÿÿÍn9Ín$äÌn9Ín" €€€ ÿe4ÍnžÍn1³ö€Ý|ÞŸžÍnÝÍnsoJava Remote Method Invocation: 5 - Server Interfaces?9ÍnÝÍn& €2€€€‚ÿ5 - Server InterfacesºFžÍn—Înt#ž€ŒÂÂX€€çø£—Y€‰€碣—Y€‰€瀣—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ÝÍnÃÎn' € €€‚€‚ÿ*—ÎníÎn' €€ ”€ ‚ÿ\$ÃÎnIÏn8 @€H€€‚€‚€?€ €2€ €‚‚ÿ5.10 The LogStream ClassU*íÎnžÏn+ &€T€ä€€€‚‚ÿSee the LogStream API documentation.&IÏnÄÏn# €€€‚ÿ*žÏn o' €€ ”€ ‚ÿÄÏn o9Ínt(ÄÏn€oL h€P€€‚çø£—Y€‰€碣—Y€‰€瀣—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT* oªo' €€ ”€ ‚ÿÉO€osoz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ªo€o1Uÿÿÿÿÿÿÿÿ¿ÿÿÿÿ€oÈo$soÈo" €€€ ÿe4€o-o1á†ÝFÞÀ-olooJava Remote Method Invocation: 5 - Server Interfaces?Èolo& €2€€€‚ÿ5 - Server InterfacesºF-o&ot#ž€ŒÂÂX€€çø£—Y€‰€磣—Y€‰€ç¡£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,loRo' € €€‚€‚ÿ*&o|o' €€ ”€ ‚ÿ[)Ro×o2 4€R€€‚€‚€?€ €‚‚ÿ5.11 Stub and Skeleton CompilerÏ|oÚo4 6€Ÿ€ä€€€‚‚€€‚‚ÿThe rmic stub and skeleton compiler is used to compile the appropriate stubs and skeletons for a specific remote object implementation.Please see the following URLs for further information on rmic:W.×o1o) "€\€ɀ€€‚‚ÿ·For the SolarisTM operating environment:rJÚo£o( €”€ä€€‚ÿhttp://java.sun.com/products/j2se/1.4/docs/tooldocs/solaris/rmic.htmlR)1oõo) "€R€ɀ€€‚‚ÿ·For the Microsoft Windows platform:pH£oeo( €€ä€€‚ÿhttp://java.sun.com/products/j2se/1.4/docs/tooldocs/win32/rmic.html&õo‹o# €€€‚ÿ*eoµo' €€ ”€ ‚ÿt(‹o)oL h€P€€‚çø£—Y€‰€磣—Y€‰€ç¡£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*µoSo' €€ ”€ ‚ÿÉO)ooz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1SoMo1UÿÿÿÿÿÿÿÿÁÿÿÿÿMoqo$oqo" €€€ ÿe4MoÖo1®|ނÞÂÖo o’ oJava Remote Method Invocation: 5 - Server Interfaces?qo o& €2€€€‚ÿ5 - Server InterfacesºFÖoÏ ot#ž€ŒÂÂX€€çø£—Y€‰€çΣ—Y€‰€犣—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation, oû o' € €€‚€‚ÿ*Ï o% o' €€ ”€ ‚ÿ^&û oƒ o8 @€L€€‚€‚€?€ €2€ €‚‚ÿ5.1 The RemoteObject ClassX-% oÛ o+ &€Z€ä€€€‚‚ÿSee the RemoteObject API documentation.&ƒ o o# €€€‚ÿ*Û o+ o' €€ ”€ ‚ÿt( oŸ oL h€P€€‚çø£—Y€‰€çΣ—Y€‰€犣—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*+ oÉ o' €€ ”€ ‚ÿÉOŸ o’ oz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1É oà o1UÿÿÿÿÿÿÿÿÃÿÿÿÿà oç o$’ oç o" €€€ ÿe4à oL o1®FÞT€ÞÄL o‹ oAoJava Remote Method Invocation: 5 - Server Interfaces?ç o‹ o& €2€€€‚ÿ5 - Server InterfacesºFL oEot#ž€ŒÂÂX€€çø£—Y€‰€祣—Y€‰€ç§£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,‹ oqo' € €€‚€‚ÿ*Eo›o' €€ ”€ ‚ÿ^&qoùo8 @€L€€‚€‚€?€ €2€ €‚‚ÿ5.2 The RemoteServer ClassX-›oQo+ &€Z€ä€€€‚‚ÿSee the RemoteServer API documentation.&ùowo# €€€‚ÿ*Qo¡o' €€ ”€ ‚ÿt(wo!@oL h€P€€‚çø£—Y€‰€祣—Y€‰€ç§£—Y€‰€‚€‚ÿCONTENTS | ¡o!@oç oPREV | NEXT*¡oK@o' €€ ”€ ‚ÿÉO!@oAoz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1K@oEAo1UÿÿÿÿÿÿÿÿÅÿÿÿÿEAoiAo$AoiAo" €€€ ÿe4EAoÎAo1\#‚Þ¹‚߯ÎAo BozÄoJava Remote Method Invocation: 5 - Server Interfaces?iAo Bo& €2€€€‚ÿ5 - Server InterfacesºFÎAoÇBot#ž€ŒÂÂX€€çø£—Y€‰€犣—Y€‰€皣—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation, BoóBo' € €€‚€‚ÿ*ÇBoCo' €€ ”€ ‚ÿe-óBo‚Co8 @€Z€€‚€‚€?€ €2€ €‚‚ÿ5.3 The UnicastRemoteObject Classë¿ComDo, &€€ä€€€‚‚ÿThe class java.rmi.server.UnicastRemoteObject provides support for creating and exporting remote objects. The class implements a remote server object with the following characteristics:V‚CoÃEo8 >€=€ɀ€€‚€€‚€€‚‚ÿ·References to such objects are valid only for, at most, the life of the process that creates the remote object.·Communication with the remote object uses a TCP transport.·Invocations, parameters, and results use a stream protocol for communicating between client and server.ZmDoKo@ N€5 €ä€€‚ÿpackage java.rmi.server;public class UnicastRemoteObject extends RemoteServer { protected UnicastRemoteObject() throws java.rmi.RemoteException {...} protected UnicastRemoteObject(int port) throws java.rmi.RemoteException {...} protected UnicastRemoteObject(int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws java.rmi.RemoteException {...} public Object clone() throws java.lang.CloneNotSupportedException {...} public static RemoteStub exportObject(java.rmi.Remote obj) throws java.rmi.RemoteException {...} public static Remote exportObject(java.rmi.Remote obj, int port) throws java.rmi.RemoteException {...} public static Remote exportObject(Remote obj, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws java.rmi.RemoteException {...} public static boolean unexportObject(java.rmi.Remote obj, boolean force) throws java.rmi.NoSuchObjectException {...}}X-ÃEouKo+ &€Z€€:€‚€‚‚ÿ5.3.1 Constructing a New Remote ObjectÖKoˆNo= H€­€ä€€€€€€€€€‚ÿA remote object implementation (one that implements one or more remote interfaces) must be created and exported. Exporting a remote object makes that object available to accept incoming calls from clients. For a remote object implementation that is exported as a UnicastRemoteObject, the exporting involves listening on a TCP port (note that more than one remote object can accept incoming calls on the same port, so listening on a new port is not always necessary). A remote object implementation can extend the class UnicastRemoteObject to make use of its constructors that export the object, or it can extend some other class (or none at all) and export the object via UnicastRemoteObject's exportObject methods.v,uKo oJ b€Y€ä€‚€(€€(€€€€€€€€€‚ÿThe no argument constructor creates and exports a remote object on an anonymous (or arbitrary) port, chosen at runtime. The second form of the constructor takes a single argument, port, that specifies the port number on which the remote object accepts incoming calls. The third constructor creates ˆNo oiAoand exports a remote object that accepts incoming calls on the specified port via a ServerSocket created from the RMIServerSocketFactory; clients will make connections to the remote object via Sockets supplied from the RMIClientSocketFactory.'ˆNo1o$ €€ä€‚ÿvH o§o. ,€€€:€‚€7€‚‚ÿ5.3.2 Exporting an Implementation Not Extended From RemoteObjectnï1o…o ̀߀䀀€€€€€€(€€€€€€(€€(€€€€(€€€€(€€€€(€€(€‚ÿAn exportObject method (any of the forms) is used to export a simple peer-to-peer remote object that is not implemented by extending the UnicastRemoteObject class. The first form of the exportObject method takes a single parameter, obj, which is the remote object that will accept incoming RMI calls; this exportObject method exports the object on an anonymous (or arbitrary) port, chosen at runtime. The second exportObject method takes two parameters, both the remote object, obj, and port, the port number on which the remote object accepts incoming calls. The third exportObject method exports the object, obj, with the specified RMIClientSocketFactory, csf, and RMIServerSocketFactory, ssf, on the specified port.㪧oø…o9 @€U€ä€‚€€€€€€‚‚ÿThe exportObject method returns a Remote stub which is the stub object for the remote object, obj, that is passed in place of the remote object in an RMI call.l;…od†o1 2€v€€:€‚€7€€‚‚ÿ5.3.3 Passing a UnicastRemoteObject in an RMI Callæø…ouˆo+ $€Í€ä€€€‚ÿAs stated above, when an exported object of type UnicastRemoteObject is passed as a parameter or return value in an RMI call, the object is replaced by the remote object's stub. An exported remote object implementation remains in the virtual machine in which it was created and does not move (even by value) from that virtual machine. In other words, an exported remote object is passed by reference in an RMI call; exported remote object implementations cannot be passed by value.'d†oœˆo$ €€ä€‚ÿ]/uˆoùˆo. ,€^€€:€‚€7€‚‚ÿ5.3.4 Serializing a UnicastRemoteObjectËœˆoŒoQ p€—€ä€€€€€€€‚‚€€€€€€€€‚ÿInformation contained in UnicastRemoteObject is transient and is not saved if an object of that type is written to a user-defined ObjectOutputStream (for example, if the object is written to a file using serialization). An object that is an instance of a user-defined subclass of UnicastRemoteObject, however, may have non-transient data that can be saved when the object is serialized.When a UnicastRemoteObject is read from an ObjectInputStream using UnicastRemoteObject's readObject method, the remote object is automatically exported to the RMI runtime so that it may receive RMI calls. If exporting the object fails for some reason, deserializing the object will terminate with an exception.'ùˆo<Œo$ €€ä€‚ÿ]/Œo™Œo. ,€^€€:€‚€7€‚‚ÿ5.3.5 Unexporting a UnicastRemoteObject Ò<Œo¢o7 <€¥€ä€€€€(€€€‚ÿThe unexportObject method makes the remote object, obj, unavailable for incoming calls. If the force parameter is true, the object is forcibly unexported even if there are pending calls to the remote object or the remote object still has calls in progress. If the force parameter is false, the object is only unexported if there are no pending or in-progress calls to the object. If the object is successfully unexported, the RMI runtime removes the object from its internal tables. Unexporting the object in this forcible manner may leave clients holding stale remote references to the remote object. This method throws java.rmi.NoSuchObjectException if the object was not previously exported to the RMI runtime.'™Œoɏo$ €€ä€‚ÿP¢o%Ào1 2€>€€:€‚€7€€‚‚ÿ5.3.6ɏo%ÀoiAo The clone methodw4ɏoœÂoC T€i€ä€€€€€€€€€€€‚ÿObjects are only clonable using the Java programming language's default mechanism if they support the java.lang.Cloneable interface. The class java.rmi.server.UnicastRemoteObject does not implement this interface, but does implement the clone method so that if subclasses need to implement Cloneable, the remote object will be capable of being cloned properly. The clone method can be used by a subclass to create a cloned remote object with initially the same contents, but is exported to accept remote calls and is distinct from the original object.'%ÀoÃÂo$ €€ä€‚ÿ&œÂoéÂo# €€€‚ÿ*ÃÂoÃo' €€ ”€ ‚ÿt(éÂo‡ÃoL h€P€€‚çø£—Y€‰€犣—Y€‰€皣—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*Ão±Ão' €€ ”€ ‚ÿÉO‡ÃozÄoz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1±Ão«Äo1UÿÿÿÿÿÿÿÿÇÿÿÿÿ«ÄoÏÄo$zÄoÏÄo" €€€ ÿe4«Äo4Åo1x T€ÞI‰ßÈ4ÅosÅoºÎoJava Remote Method Invocation: 5 - Server Interfaces?ÏÄosÅo& €2€€€‚ÿ5 - Server InterfacesºF4Åo-Æot#ž€ŒÂÂX€€çø£—Y€‰€ç§£—Y€‰€ç©£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,sÅoYÆo' € €€‚€‚ÿ*-ÆoƒÆo' €€ ”€ ‚ÿb*YÆoåÆo8 @€T€€‚€‚€?€ €2€ €‚‚ÿ5.4 The Unreferenced Interface®cƒÆo“ÊoK d€Ç€ä€€‚€€€€€€€(€€€‚ÿpackage java.rmi.server;public interface Unreferenced { public void unreferenced();}The java.rmi.server.Unreferenced interface allows a server object to receive notification that there are no clients holding remote references to it. The distributed garbage collection mechanism maintains for each remote object, the set of client virtual machines that hold references to that remote object. As long as some client holds a remote reference to the remote object, the RMI runtime keeps a local reference to the remote object. Each time the remote object's "reference" set becomes empty (meaning that the number of clients that reference the object becomes zero), the Unreferenced.unreferenced method is invoked (if that remote object implements the Unreferenced interface). A remote object is not required to support the Unreferenced interface.IåÆoÜÌo2 2€/€ä€‚€€€€‚ÿAs long as some local reference to the remote object exists, it may be passed in remote calls or returned to clients. The process that receives the reference is added to the reference set for the remote object. When the reference set becomes empty, the remote object's unreferenced method will be invoked. As such, the unreferenced method can be called more than once (each time the set is newly emptied). Remote objects are only collected when no more references, either local references or those held by clients, still exist.'“ÊoÍo$ €€ä€‚ÿ&ÜÌo)Ío# €€€‚ÿ*ÍoSÍo' €€ ”€ ‚ÿt()ÍoÇÍoL h€P€€‚çø£—Y€‰€ç§£—Y€‰€ç©£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*SÍoñÍo' €€ ”€ ‚ÿÉOÇÍoºÎoz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ñÍoëÎo1UÿÿÿÿÿÿÿÿÉÿÿÿÿëÎoÏo$ºÎoÏo" €€€ ÿe4ëÎotÏo1÷¹‚ßéàÊtÏo³ÏoHpJava Remote Method Invocation: 5 - Server Interfaces?Ïo³Ïo& €2€€€‚ÿ5 - Server InterfacesºFtÏoypt#ž€ŒÂÂX€€çø£—Y€‰€皣—Y€‰€çÕ£—Y€³ÏoypÏo‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,³Ïo¥p' € €€‚€‚ÿ*ypÏp' €€ ”€ ‚ÿd,¥p3p8 @€X€€‚€‚€?€ €2€ €‚‚ÿ5.5 The RMISecurityManager Class^3Ïp‘p+ &€f€ä€€€‚‚ÿSee the RMISecurityManager API documentation.&3p·p# €€€‚ÿ*‘páp' €€ ”€ ‚ÿt(·pUpL h€P€€‚çø£—Y€‰€皣—Y€‰€çÕ£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*ápp' €€ ”€ ‚ÿÉOUpHpz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1pyp1UÿÿÿÿÿÿÿÿËÿÿÿÿypp$Hpp" €€€ ÿe4ypp1²I‰ß)àÌpApÂpJava Remote Method Invocation: 5 - Server Interfaces?pAp& €2€€€‚ÿ5 - Server InterfacesºFpûpt#ž€ŒÂÂX€€çø£—Y€‰€ç©£—Y€‰€çÌ£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,Ap'p' € €€‚€‚ÿ*ûpQp' €€ ”€ ‚ÿ`('p±p8 @€P€€‚€‚€?€ €2€ €‚‚ÿ5.6 The RMIClassLoader ClassZ/Qp p+ &€^€ä€€€‚‚ÿSee the RMIClassLoader API documentation.&±p1p# €€€‚ÿ* p[p' €€ ”€ ‚ÿt(1pÏpL h€P€€‚çø£—Y€‰€ç©£—Y€‰€çÌ£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*[pùp' €€ ”€ ‚ÿÉOÏpÂpz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ùpóp1UÿÿÿÿÿÿÿÿÍÿÿÿÿópp$Âpp" €€€ ÿe4óp|p1ŽéàkàÎ|p»p> pJava Remote Method Invocation: 5 - Server Interfaces?p»p& €2€€€‚ÿ5 - Server InterfacesºF|pu pt#ž€ŒÂÂX€€çø£—Y€‰€çÕ£—Y€‰€çÍ£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,»p¡ p' € €€‚€‚ÿ*u pË p' €€ ”€ ‚ÿc+¡ p. p8 @€V€€‚€‚€?€ €2€ €‚‚ÿ5.7 The LoaderHandler InterfaceY.Ë p‡ p+ &€\€ä€€€‚‚ÿSee the LoaderHandler API documentation.&. p­ p# €€€‚ÿ*‡ p× p' €€ ”€ ‚ÿt(­ pK pL h€P€€‚çø£—Y€‰€çÕ£—Y€‰€çÍ£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*× pu p' €€ ”€ ‚ÿÉOK p> pz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1u po p1UÿÿÿÿÿÿÿÿÏÿÿÿÿo p“ p$> p“ p" €€€ ÿe4o pø p1()àì€áÐø p7 pªÂpJava Remote Method Invocation: 5 - Server Interfaces?“ p7 p& €2€€€‚ÿ5 - Server InterfacesºFø pñ pt#ž€ŒÂÂX€€çø£—Y€‰€çÌ£—Y€‰€碣—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,7 pp' € €€‚€‚ÿ*ñ pGp' €€ ”€ ‚ÿT"p›p2 4€D€€‚€‚€?€ €‚‚ÿ5.8 RMI Socket FactoriesålGpŒBpy À€Ù€ä€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚ÿWhen the RMI runtime implementation needs instances of java.net.Socket and java.net.ServerSocket for its connections, instead of instantiating objects of those classes directly, it calls the createSocket and createServerSocket ›pŒBp“ pmethods on the current RMISocketFactory object, returned by the static method RMISocketFactory.getSocketFactory. This allows the application to have a hook to customize the type of sockets used by the RMI transport, such as alternate subclasses of the java.net.Socket and java.net.ServerSocket classes. The instance of RMISocketFactory to be used can be set once by trusted system code. In JDK1.1, this customization was limited to relatively global decisions about socket type, because the only parameters supplied to the factory's methods were host and port (for createSocket) and just port (for createServerSocket).S ›pßDpF Z€€ä€‚€€€€‚‚€€€€€€‚ÿIn the Java 2 platform, the new interfaces RMIServerSocketFactory and RMIClientSocketFactory have been introduced to provide more flexible customization of what protocols are used to communicate with remote objects.To allow applications using RMI to take advantage of these new socket factory interfaces, several new constructors and exportObject methods, that take the client and server socket factory as additional parameters, have been added to both UnicastRemoteObject and java.rmi.activation.Activatable.7çŒBpGpP n€Ï€ä€‚€€€€€€€€€€€€€€‚ÿRemote objects exported with either of the new constructors or exportObject methods (with RMIClientSocketFactory and RMIServerSocketFactory parameters) will be treated differently by the RMI runtime. For the lifetime of such a remote object, the runtime will use the custom RMIServerSocketFactory to create a ServerSocket to accept incoming calls to the remote object and use the custom RMIClientSocketFactory to create a Socket to connect clients to the remote object.ž\ßDpÎKp\ †€¹€ä€‚€€€€€€€€€€€€€€€€€€‚ÿThe implementation of RemoteRef and ServerRef used in the stubs and skeletons for remote objects exported with custom socket factories is UnicastRef2 and UnicastServerRef2, respectively. The wire representation of the UnicastRef2 type contains a different representation of the "endpoint" to contact than the UnicastRef type has (which used just a host name string in UTF format, following by an integer port number). For UnicastRef2, the endpoint's wire representation consists of a format byte specifying the contents of the rest of the endpoint's representation (to allow for future expansion of the endpoint representation) followed by data in the indicated format. Currently, the data may consist of a hostname in UTF format, a port number, and optionally (as specified by the endpoint format byte) the serialized representation of an RMIClientSocketFactory object that is used by clients to generate socket connections to remote object at this endpoint. The endpoint representation does not contain the RMIServerSocketFactory object that was specified when the remote object was exported.w9GpENp> J€s€ä€‚€€€€€€€€‚ÿWhen calls are made through references of the UnicastRef2 type, the runtime uses the createSocket method of the RMIClientSocketFactory object in the endpoint when creating sockets for connections to the referent remote object. Also, when the runtime makes DGC "dirty" and "clean" calls for a particular remote object, it must call the DGC on the remote JVM using a connection generated from the same RMIClientSocketFactory object as specified in the remote reference, and the DGC implementation on the server side should verify that this was done correctly.#ßÎKpt€pD V€¿€ä€‚€€€€€€€€€€‚ÿRemote objects exported with the older constructor or method on UnicastRemoteObject that do not take custom socket factories as arguments will have RemoteRef and ServerRef of type UnicastRef and UnicastServerRef as before and use the old wire representation for their endpoints, i.e. a host string in UTF format followed by an integer specifying the port number. ENpt€p“ pThis is so that RMI servers that do not use new 1.2 features will interoperate with older RMI clients.'ENp›€p$ €€ä€‚ÿZ)t€põ€p1 2€R€€:€‚€7€€‚‚ÿ5.8.1 The RMISocketFactory ClassÀm›€pµ„pS t€Û€ä€€€€€€€€€‚‚€€‚ÿThe java.rmi.server.RMISocketFactory abstract class provides an interface for specifying how the transport should obtain sockets. Note that the class below uses Socket and ServerSocket from the java.net package.package java.rmi.server;public abstract class RMISocketFactory implements RMIClientSocketFactory, RMIServerSocketFactory{ public abstract Socket createSocket(String host, int port) throws IOException;  public abstract ServerSocket createServerSocket(int port) throws IOException; public static void setSocketFactory(RMISocketFactory fac) throws IOException {...} public static RMISocketFactory getSocketFactory() {...} public static void setFailureHandler(RMIFailureHandler fh) {...} public static RMIFailureHandler getFailureHandler() {...}}·õ€p»‡pO l€o€ä€€€€€€€€€€€€€€€‚ÿThe static method setSocketFactory is used to set the socket factory from which RMI obtains sockets. The application may invoke this method with its own RMISocketFactory instance only once. An application-defined implementation of RMISocketFactory could, for example, do preliminary filtering on the requested connection and throw exceptions, or return its own extension of the java.net.Socket or java.net.ServerSocket classes, such as ones that provide a secure communication channel. Note that the RMISocketFactory may only be set if the current security manager allows setting a socket factory; if setting the socket factory is disallowed, a SecurityException will be thrown.Ð\µ„p‹Špt ¶€¹€ä€‚€€€€‚‚€€€€€€€€‚‚€€‚€€€(€€(€€€€(€‚ÿThe static method getSocketFactory returns the socket factory used by RMI. The method returns null if the socket factory is not set.The transport layer invokes the createSocket and createServerSocket methods on the RMISocketFactory returned by the getSocketFactory method when the transport needs to create sockets. For example:RMISocketFactory.getSocketFactory().createSocket(myhost, myport)The method createSocket should create a client socket connected to the specified host and port. The method createServerSocket should create a server socket on the specified port.އ»‡p?‹p- (€€ä€‚€€‚‚ÿThe default transport's implementation of RMISocketFactory provides for transparent RMI through firewalls using HTTP as follows:窋Šp&p= H€U€ɀ€€€€‚€€€€‚‚ÿ·On createSocket, the factory automatically attempts HTTP connections to hosts that cannot be contacted with a direct socket.·On createServerSocket, the factory returns a server socket that automatically detects if a newly accepted connection is an HTTP POST request. If so, it returns a socket that will transparently expose only the body of the request to the transport and format its output as an HTTP response.Ï?‹p4p? L€Ÿ€ä€€€€€‚‚€€€€‚ÿThe method setFailureHandler sets the failure handler to be called by the RMI runtime if the creation of a server socket fails. The failure handler returns a boolean to indicate if retry should occur. The default failure handler returns false, meaning that by default recreation of sockets is not attempted by the runtime.The method getFailureHandler returns the current handler for socket creation failure, or null if the failure handler is not set.'&p[p$ €€ä€‚ÿd34p¿p1 2€f€€:€‚€7€€‚‚ÿ5.8.2 The RMIServerSocketFactory Interfaceb7[p-Àp+ &€n€ä€€€‚‚ÿSee the RMIServerSoc¿p-Àp“ pketFactory API documentation.d3¿p‘Àp1 2€f€€:€‚€7€€‚‚ÿ5.8.3 The RMIClientSocketFactory Interfaceb7-ÀpóÀp+ &€n€ä€€€‚‚ÿSee the RMIClientSocketFactory API documentation.&‘ÀpÁp# €€€‚ÿ*óÀpCÁp' €€ ”€ ‚ÿt(Áp·ÁpL h€P€€‚çø£—Y€‰€çÌ£—Y€‰€碣—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*CÁpáÁp' €€ ”€ ‚ÿÉO·ÁpªÂpz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1áÁpÛÂp1UÿÿÿÿÿÿÿÿÑÿÿÿÿÛÂpÿÂp$ªÂpÿÂp" €€€ ÿe4ÛÂpdÃp1kàçƒáÒdÃp£ÃpuÊpJava Remote Method Invocation: 5 - Server Interfaces?ÿÂp£Ãp& €2€€€‚ÿ5 - Server InterfacesºFdÃp]Äpt#ž€ŒÂÂX€€çø£—Y€‰€çs—Y€‰€祣—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method InvocationI£ÃpŠÄp/ .€4€€‚€%€‚‚€‚ÿServer Interfaces*]ÄpÐÄp' €€ ”€ ‚ÿ&ŠÄpöÄp# €€€‚ÿA ÐÄp7Åp4#8€o€€€‚€‚ÿÿÿCHAPTER5&öÄp]Åp# €€€‚ÿ˜m7ÅpõÅp+ &€Ú€ä€€€‚‚ÿThe java.rmi.server package contains interfaces and classes typically used to implement remote objects.3 ]Åp(Æp' €€€€‚‚ÿTopics:5õÅp?Èp⠒k€ɀ€祣—Y€€€‰€‚€犣—Y€€€‰€‚€ç§£—Y€€€‰€‚€皣—Y€€€‰€‚€ç©£—Y€€€‰€‚€çÕ£—Y€€€‰€‚€çÌ£—Y€€€‰€‚€çÍ£—Y€‰€‚€碣—Y€€€‰€‚ÿ·The RemoteObject Class·The RemoteServer Class·The UnicastRemoteObject Class·The Unreferenced Interface·The RMISecurityManager Class·The RMIClassLoader Class·The LoaderHandler Interface·RMI Socket Factories·The RMIFailureHandler Interface‡?(ÆpÆÈpH `€~€ɀ€磣—Y€€€‰€‚€瀣—Y€‰€‚‚ÿ·The LogStream Class·Stub and Skeleton Compiler&?ÈpìÈp# €€€‚ÿ*ÆÈpÉp' €€ ”€ ‚ÿt(ìÈpŠÉpL h€P€€‚çø£—Y€‰€çs—Y€‰€祣—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*ÉpŽÉp' €€ ”€ ‚ÿÁLŠÉpuÊpu º€˜€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ŽÉpŠÊp1UÿÿÿÿÿÿÿÿÓÿÿÿÿŠÊpÊÊp$uÊpÊÊp" €€€ ÿl;ŠÊp6Ëp1óì€áùâÔ6Ëp|Ëp# qJava Remote Method Invocation: 8 - Stub/Skeleton InterfacesF ÊÊp|Ëp& €@€€€‚ÿ8 - Stub/Skeleton InterfacesºF6Ëp6Ìpt#ž€ŒÂÂX€€çø£—Y€‰€瀗Y€‰€çУ—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,|ËpbÌp' € €€‚€‚ÿ*6ÌpŒÌp' €€ ”€ ‚ÿ\$bÌpèÌp8 @€H€€‚€‚€?€ €2€ €‚‚ÿ8.1 The RemoteStub Class&íŒÌpÏp9 @€Û€ä€€€‚‚€€‚ÿThe java.rmi.server.RemoteStub class is the common superclass for stubs of remote objects. Stub objects are surrogates that support exactly the same set of remote interfaces defined by the actual implementation of a remote object.package java.rmi.server;public abstract class RemoteStub extends java.rmi.RemoteObject { protected RemoteStub() {...} protected RemoteStub(RemoteRef ref) {...} protected static void setRef(RemoteStub stub, RemoteRef ref) {...}}I èÌpcq@ N€€ä€€€€€€(€‚‚€€‚‚ÿThe first constructor of RemoteStub creates a stub with a null remote reference. The second constructor creates a stub with the given remote reference, ref.The setRef ÏpcqÊÊpmethod is deprecated (and unsupported) as of the Java 2 SDK, Standard Edition, v1.2.lAÏpÏq+ &€‚€€:€‚€‚‚ÿ8.1.1 Type Equivalency of Remote Objects with a Stub Class6 cqq+ $€€ä€€(€‚ÿClients interact with stub (surrogate) objects that have exactly the same set of remote interfaces defined by the remote object's class; the stub class does not include the non-remote portions of the class hierarchy that constitutes the object's type graph. This is because the stub class is generated from the most refined implementation class that implements one or more remote interfaces. For example, if C extends B and B extends A, but only B implements a remote interface, then a stub is generated from B, not C.œŽÏqÂq/ ,€€ä€‚‚‚€€‚‚ÿBecause the stub implements the same set of remote interfaces as the remote object's class, the stub has the same type as the remote portions of the server object's type graph. A client, therefore, can make use of the built-in Java programming language operations to check a remote object's type and to cast from one remote interface to another.Stubs are generated using the rmic compiler.j<q,q. ,€x€€:€‚€7€‚‚ÿ8.1.2 The Semantics of Object Methods Declared finalºˆÂqæq2 2€€ä€€€€€‚‚ÿThe following methods are declared final in the java.lang.Object class and therefore cannot be overridden by any implementation:k-,qQq> L€Z€ɀ€€‚€€‚€€‚€€‚‚ÿ·getClass·notify·notifyAll·waitô©æqE qK d€S€ä€€€€€€€‚‚€€€€€€‚ÿThe default implementation for getClass is appropriate for all objects written in the Java programming language, local or remote; so, the method needs no special implementation for remote objects. When used on a remote stub, the getClass method reports the exact type of the stub object, generated by rmic. Note that stub type reflects only the remote interfaces implemented by the remote object, not that object's local interfaces.The wait and notify methods of java.lang.Object deal with waiting and notification in the context of the Java programming language's threading model. While use of these methods for remote stubs does not break the threading model, these methods do not have the same semantics as they do for local objects written in the Java programming language. Specifically, these methods operate on the client's local reference to the remote object (the stub), not the actual object at the remote site.'Qql q$ €€ä€‚ÿ&E q’ q# €€€‚ÿ*l qŒ q' €€ ”€ ‚ÿt(’ q0 qL h€P€€‚çø£—Y€‰€瀗Y€‰€çУ—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*Œ qZ q' €€ ”€ ‚ÿÉO0 q# qz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1Z qT q1UÿÿÿÿÿÿÿÿÕÿÿÿÿT qx q$# qx q" €€€ ÿl;T qä q1=çƒá†âÖä q* q[JqJava Remote Method Invocation: 8 - Stub/Skeleton InterfacesF x q* q& €@€€€‚ÿ8 - Stub/Skeleton InterfacesºFä qä qt#ž€ŒÂÂX€€çø£—Y€‰€çÏ£—Y€‰€çÑ£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,* qq' € €€‚€‚ÿ*ä q:q' €€ ”€ ‚ÿ`(qšq8 @€P€€‚€‚€?€ €2€ €‚‚ÿ8.2 The RemoteCall Interface¶Š:qPq, &€€ä€€€‚‚ÿThe interface RemoteCall is an abstraction used by the stubs and skeletons of remote objects to carry out a call to a remote object.(šqxq% €€ɀ€‚ÿ,Pq€q) "€€0ɀ”€ ‚ÿs0xq#AqC T€a€ɀ€‚€€€€€€€€‚€‚ÿNote - The RemoteCal€q#Aqx ql interface is deprecated as of the Java 2 SDK, Standard Edition, v1.2. The 1.2 stub protocol does not make use of this interface anymore. As of the Java 2 SDK, Standard Edition, v1.2, stubs now use the new invoke method which does not require RemoteCall as a parameter.,€qOAq) "€€0ɀ”€ ‚ÿ.#Aq}Aq) "€ €ɀ€‚€‚ÿ-ùOAqªCq4 6€ó€ä€€‚ÿpackage java.rmi.server;import java.io.*;public interface RemoteCall { ObjectOutput getOutputStream() throws IOException; void releaseOutputStream() throws IOException; ObjectInput getInputStream() throws IOException; void releaseInputStream() throws IOException; ObjectOutput getResultStream(boolean success) throws IOException, StreamCorruptedException; void executeCall() throws Exception; void done() throws IOException;}S }AqýEqI `€€ä€€€‚‚€€‚‚€€€€‚‚€€‚ÿThe method getOutputStream returns the output stream into which either the stub marshals arguments or the skeleton marshals results.The method releaseOutputStream releases the output stream; in some transports this will release the stream.The method getInputStream returns the InputStream from which the stub unmarshals results or the skeleton unmarshals parameters.The method releaseInputStream releases the input stream. This will allow some transports to release the input side of a connection early.1ëªCq.HqF Z€×€ä€‚€€€(€€€€€‚‚€€‚ÿThe method getResultStream returns an output stream (after writing out header information relating to the success of the call). Obtaining a result stream should only succeed once per remote call. If success is true, then the result to be marshaled is a normal return; otherwise the result is an exception. StreamCorruptedException is thrown if the result stream has already been obtained for this remote call.The method executeCall does whatever it takes to execute the call.vJýEq€Hq, (€”€ä€‚€€‚‚ÿThe method done allows cleanup after the remote call has completed.&.HqÊHq# €€€‚ÿ*€HqôHq' €€ ”€ ‚ÿt(ÊHqhIqL h€P€€‚çø£—Y€‰€çÏ£—Y€‰€çÑ£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*ôHq’Iq' €€ ”€ ‚ÿÉOhIq[Jqz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1’IqŒJq1Uÿÿÿÿÿÿÿÿ×ÿÿÿÿŒJq°Jq$[Jq°Jq" €€€ ÿl;ŒJqKq1Óùâ„ãØKqbKq¡ÇqJava Remote Method Invocation: 8 - Stub/Skeleton InterfacesF °JqbKq& €@€€€‚ÿ8 - Stub/Skeleton InterfacesºFKqLqt#ž€ŒÂÂX€€çø£—Y€‰€çУ—Y€‰€çÒ£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,bKqHLq' € €€‚€‚ÿ*LqrLq' €€ ”€ ‚ÿ_'HLqÑLq8 @€N€€‚€‚€?€ €2€ €‚‚ÿ8.3 The RemoteRef InterfaceCúrLq qI `€õ€ä€€€€€‚‚€€‚ÿThe interface RemoteRef represents the handle for a remote object. Each stub contains an instance of RemoteRef that contains the concrete representation of a reference. This remote reference is used to carry out remote calls on the remote object for which it is a reference.package java.rmi.server;public interface RemoteRef extends java.io.Externalizable { Object invoke(Remote obj, java.lang.reflect.Method method, Object[] params, long opnum) throws Exception; RemoteCall newCall(RemoteObject obj, Operation[] op, int opnum, long hash) throws RemoteException; ÑLq q°Jq void invoke(RemoteCall call) throws Exception; void done(RemoteCall call) throws RemoteException; String getRefClass(java.io.ObjectOutput out); int remoteHashCode(); boolean remoteEquals(RemoteRef obj); String remoteToString();}œÑLq&„qI `€{€ä€€€€(€€(€€(€€€€(€‚ÿThe first invoke method delegates method invocation to the stub's (obj) remote reference and allows the reference to take care of setting up the connection to the remote host, marshaling some representation for the method and parameters, params, then communicating the method invocation to the remote host. This method either returns the result of the method invocation on the remote object which resides on the remote host or throws a RemoteException if the call failed or an application-level exception if the remote invocation throws an exception. Note that the operation number, opnum, represents a hash of the method signature and may be used to encode the method for transmission.`( q††q8 >€Q€ä€‚€(€€€€(€‚ÿThe method hash to be used for the opnum parameter is a 64-bit (long) integer computed from the first two 32-bit values of the message digest of a particular byte stream using the National Institute of Standards and Technology (NIST) Secure Hash Algorithm (SHA-1). This byte stream contains a string as if it was written using the java.io.DataOutput.writeUTF method, consisting of the remote method's name followed by its method descriptor (see section 4.3.3 of The Java Virtual Machine Specification for a description of method descriptors).n(&„qôˆqF Z€Q€ä€‚‚‚€€‚‚‚€€‚€€€€‚ÿFor example, if a method of a remote interface has the following name and signature: void myRemoteMethod(int count, Object obj, boolean flag)the string containing the remote method's name and descriptor would be the following: myRemoteMethod(ILjava.lang.Object;Z)VThe hash value is assembled from the first two 32-bit values of the SHA-1 message digest. If the result of the message digest, the five 32-bit words H0 H1 H2 H3 H4, is in an array of five int values named sha, the hash value would be computed as follows:šf††qŽŠq4 6€Í€ä€‚€€‚ÿlong hash = ((sha[0] >>> 24) & 0xFF) | ((sha[0] >>> 16) & 0xFF) << 8 | ((sha[0] >>> 8) & 0xFF) << 16 | ((sha[0] >>> 0) & 0xFF) << 24 | ((sha[1] >>> 24) & 0xFF) << 32 | ((sha[1] >>> 16) & 0xFF) << 40 | ((sha[1] >>> 8) & 0xFF) << 48 | ((sha[1] >>> 0) & 0xFF) << 56;(ôˆq¶Šq% €€ɀ€‚ÿ,ŽŠqâŠq) "€€0ɀ”€ ‚ÿì…¶ŠqΌqg œ€ €ɀ€‚€€€€€€€€€€€€€€€€€€€€‚€‚ÿNote - The newCall, invoke, and done methods are deprecated as of the Java 2 SDK, Standard Edition, v1.2. The stubs generated by rmic using the 1.2 stub protocol version do not use these methods any longer. The sequence of calls consisting of newCall, invoke, and done have been replaced by a new invoke method that takes a Method object as one of its parameters.,âŠqúŒq) "€€0ɀ”€ ‚ÿ.Όq(q) "€ €ɀ€‚€‚ÿPúŒqxq= H€'€ä€€€€(€€(€€(€‚ÿThe method newCall creates an appropriate call object for a new remote method invocation on the remote object obj. The operation array, op, contains the available operations on the remote object. The operation number, opnum, is an index into the operation array which specifies the particular operation for this remote call. Passing the operation array and index allows the stubs generator to assign the operation indexes and interpret them. The remote reference may need the operation description to encode in the call.Oý(qÓÁqR r€û€ä€‚€€€€€€€€‚‚€€€€€€‚ÿThe method invoke executes the remote call. invokxqÓÁq°Jqe will raise any "user" exceptions which should pass through and not be caught by the stub. If any exception is raised during the remote invocation, invoke should take care of cleaning up the connection before raising the "user exception" or RemoteException.The method done allows the remote reference to clean up (or reuse) the connection. done should only be called if the invoke call returns successfully (non-exceptionally) to the stub.ÓxqòÃqL f€§€ä€‚€€€(€‚‚€€€€€€€€‚ÿThe method getRefClass returns the nonpackage-qualified class name of the reference type to be serialized onto the stream out.The method remoteHashCode returns a hashcode for a remote object. Two remote object stubs that refer to the same remote object will have the same hash code (in order to support remote objects as keys in hashtables). A RemoteObject forwards a call to its hashCode method to the remoteHashCode method of the remote reference.ø«ÓÁqêÅqM h€W€ä€‚€€€€€€€€‚‚€€€€‚‚ÿThe method remoteEquals compares two remote objects for equality. Two remote objects are equal if they refer to the same remote object. For example, two stubs are equal if they refer to the same remote object. A RemoteObject forwards a call to its equals method to the remoteEquals method of the remote reference.The method remoteToString returns a String that represents the reference of this remote object.&òÃqÆq# €€€‚ÿ*êÅq:Æq' €€ ”€ ‚ÿt(Æq®ÆqL h€P€€‚çø£—Y€‰€çУ—Y€‰€çÒ£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*:ÆqØÆq' €€ ”€ ‚ÿÉO®Æq¡Çqz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ØÆqÒÇq1UÿÿÿÿÿÿÿÿÙÿÿÿÿÒÇqöÇq$¡ÇqöÇq" €€€ ÿl;ÒÇqbÈq1G†âäÚbÈqšÈqŸÏqJava Remote Method Invocation: 8 - Stub/Skeleton InterfacesF öÇqšÈq& €@€€€‚ÿ8 - Stub/Skeleton InterfacesºFbÈqbÉqt#ž€ŒÂÂX€€çø£—Y€‰€çÑ£—Y€‰€çÓ£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,šÈqŽÉq' € €€‚€‚ÿ*bÉqžÉq' €€ ”€ ‚ÿ_'ŽÉqÊq8 @€N€€‚€‚€?€ €2€ €‚‚ÿ8.4 The ServerRef Interface‹9žÉq¢ÌqR r€s€ä€€€‚‚€€‚€€€€€(€€(€‚ÿThe interface ServerRef represents the server-side handle for a remote object implementation.package java.rmi.server;public interface ServerRef extends RemoteRef { RemoteStub exportObject(java.rmi.Remote obj, Object data) throws java.rmi.RemoteException; String getClientHost() throws ServerNotActiveException;}The method exportObject finds or creates a client stub object for the supplied Remote object implementation obj.The parameter data contains information necessary to export the object (such as port number).e2ÊqÎq3 4€e€ä€‚€€€€‚‚ÿThe method getClientHost returns the host name of the current client. When called from a thread actively handling a remote method invocation, the host name of the client invoking the call is returned. If a remote method call is not currently being service, then ServerNotActiveException is called.&¢Ìq-Îq# €€€‚ÿ*ÎqWÎq' €€ ”€ ‚ÿt(-ÎqËÎqL h€P€€‚çø£—Y€‰€çÑ£—Y€‰€çÓ£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*WÎqõÎq' €€ ”€ ‚ÿÉOËÎqŸÏqz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1õÎq r1UÿÿÿÿÿÿÿÿÛÿÿÿÿ r0rŸÏq rŸÏq$ŸÏq0r" €€€ ÿl; rœr1€ „ã‡äÜœrâr1 rJava Remote Method Invocation: 8 - Stub/Skeleton InterfacesF 0râr& €@€€€‚ÿ8 - Stub/Skeleton InterfacesºFœrœrt#ž€ŒÂÂX€€çø£—Y€‰€çÒ£—Y€‰€çÔ£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,ârÈr' € €€‚€‚ÿ*œròr' €€ ”€ ‚ÿ^&ÈrPr8 @€L€€‚€‚€?€ €2€ €‚‚ÿ8.5 The Skeleton Interfaceéòrkr2 2€Ó€ä€€€€€‚‚ÿThe interface Skeleton is used solely by the implementation of skeletons generated by the rmic compiler. A skeleton for a remote object is a server-side entity that dispatches calls to the actual remote object implementation.(Pr“r% €€ɀ€‚ÿ,kr¿r) "€€0ɀ”€ ‚ÿ\ “rrQ p€€ɀ€‚€€€€€€€€€€€(€€(€‚ÿNote - The Skeleton interface was deprecated as of the Java 2 SDK, Standard Edition, v 1.2. Every 1.1 (and version 1.1 compatible skeletons generated in 1.2 using rmic -vcompat, the default) skeleton class generated by the rmic stub compiler implements this interface. Skeletons are no longer required for remote method call dispatch as of Java 2 SDK, Standard Edition, v1.2-compatible versions. To generate stubs that are compatible with 1.2 or later versions, use the command rmic with the option -v1.2.(¿rCr% €€ɀ€‚ÿ,ror) "€€0ɀ”€ ‚ÿ.Crr) "€ €ɀ€‚€‚ÿ;ôorØrG \€é€ä€€‚€€€(€€(€€(€‚ÿpackage java.rmi.server;public interface Skeleton { void dispatch(Remote obj, RemoteCall call, int opnum, long hash) throws Exception; Operation[] getOperations();}The dispatch method unmarshals any arguments from the input stream obtained from the call object, invokes the method (indicated by the operation number opnum) on the actual remote object implementation obj, and marshals the return value or throws an exception if one occurs during the invocation.¢vrz r, (€ì€ä€‚€€‚‚ÿThe getOperations method returns an array containing the operation descriptors for the remote object's methods.&Ør  r# €€€‚ÿ*z rÊ r' €€ ”€ ‚ÿt(  r> rL h€P€€‚çø£—Y€‰€çÒ£—Y€‰€çÔ£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*Ê rh r' €€ ”€ ‚ÿÉO> r1 rz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1h rb r1UÿÿÿÿÿÿÿÿÝÿÿÿÿb r† r$1 r† r" €€€ ÿl;b rò r1²ä~‚äÞò r8 rÀDrJava Remote Method Invocation: 8 - Stub/Skeleton InterfacesF † r8 r& €@€€€‚ÿ8 - Stub/Skeleton InterfacesºFò rò rt#ž€ŒÂÂX€€çø£—Y€‰€çÓ£—Y€‰€çp—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method Invocation,8 r r' € €€‚€‚ÿ*ò rH r' €€ ”€ ‚ÿ[# r£ r8 @€F€€‚€‚€?€ €2€ €‚‚ÿ8.6 The Operation ClassšoH r=r+ &€Þ€ä€€€‚‚ÿThe class Operation holds a description of a method in the Java programming language for a remote object.(£ rer% €€ɀ€‚ÿ,=r‘r) "€€0ɀ”€ ‚ÿµferR@rO l€Í€ɀ€‚€€€€€€€€€€€€‚€‚ÿNote - The Operation interface is deprecated as of the Java 2 SDK, Standard Edition, v1.2. The 1.2 stub protocol no longer uses the old RemoteRef.invoke method which takes an Operation as one of its arguments. As of the Java 2 SDK, Standard Edition, v1.2, stubs now use the new ‘rR@r† rinvoke method which does not require Operation as a parameter.,‘r~@r) "€€0ɀ”€ ‚ÿ.R@r¬@r) "€ €ɀ€‚€‚ÿ6ñ~@râBrE X€ã€ä€€‚€€‚‚€€‚‚€€‚ÿpackage java.rmi.server;public class Operation { public Operation(String op) {...} public String getOperation() {...} public String toString() {...}}An Operation object is typically constructed with the method signature.The method getOperation returns the contents of the operation descriptor (the value with which it was initialized).The method toString also returns the string representation of the operation descriptor (typically the method signature).'¬@r Cr$ €€ä€‚ÿ&âBr/Cr# €€€‚ÿ* CrYCr' €€ ”€ ‚ÿt(/CrÍCrL h€P€€‚çø£—Y€‰€çÓ£—Y€‰€çp—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*YCr÷Cr' €€ ”€ ‚ÿÉOÍCrÀDrz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1÷CrñDr1UÿÿÿÿÿÿÿÿßÿÿÿÿñDrEr$ÀDrEr" €€€ ÿl;ñDrEr1܇ä܄äàErÇErrKrJava Remote Method Invocation: 8 - Stub/Skeleton InterfacesF ErÇEr& €@€€€‚ÿ8 - Stub/Skeleton InterfacesºFErFrt#ž€ŒÂÂX€€çø£—Y€‰€ç?—Y€‰€çÏ£—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method InvocationP!ÇErÑFr/ .€B€€‚€%€‚‚€‚ÿStub/Skeleton Interfaces*FrûFr' €€ ”€ ‚ÿ&ÑFr!Gr# €€€‚ÿA ûFrbGr4#8€o€€€‚€‚ÿÿÿCHAPTER8&!GrˆGr# €€€‚ÿŠ{bGr.Hr+ &€ö€ä€€€‚‚ÿThis section contains the interfaces and classes used by the stubs and skeletons generated by the rmic stub compiler.3 ˆGraHr' €€€€‚‚ÿTopics:b».HrÃIr§ w€ɀ€çÏ£—Y€€€‰€‚€çУ—Y€€€‰€‚€çÑ£—Y€€€‰€‚€çÒ£—Y€€€‰€‚€çÓ£—Y€€€‰€‚€çÔ£—Y€€€‰€‚‚ÿ·The RemoteStub Class·The RemoteCall Interface·The RemoteRef Interface·The ServerRef Interface·The Skeleton Interface·The Operation Class&aHréIr# €€€‚ÿ*ÃIrJr' €€ ”€ ‚ÿt(éIr‡JrL h€P€€‚çø£—Y€‰€ç?—Y€‰€çÏ£—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*Jr±Jr' €€ ”€ ‚ÿÁL‡JrrKru º€˜€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1±Jr£Kr1Uÿÿÿÿÿÿÿÿáÿÿÿÿ£KrÇKr$rKrÇKr" €€€ ÿX'£KrLr10~‚äqåâLrQLr\rJava Remote Method Invocation: Contents2 ÇKrQLr& €€€€‚ÿContents~LrÏLrb#”€8„@€€çø£—Y€‰€çø£—Y€‰€‚ÿ€2€ÿ€4€‚ÿÿÿCONTENTS | NEXT&QLrõLr# €€€‚ÿ*ÏLrMr' €€ ”€ ‚ÿ,õLrKMr' € €€‚€‚ÿW0Mr¢Mr' €`€€%€‚‚ÿJava Remote Method Invocation Specification§KMrIOr& €€ä€‚‚ÿJava Remote Method Invocation (RMI) is a distributed object model for the Java programming language that retains the semantics of the Java platform's object model, making distributed objects easy to implement and to use. The system combines aspects of the Modula-3 Network Objects system and Spring's subcontract and includes some novel features made possible by the Java platform.Y4¢Mr¢Or% €h€ä€‚‚ÿRevision 1.8, Java 2 SDK, Standard Edition, v1.4&IOrÈOr# €€€‚ÿ*¢Or €r' €€ ”€ ‚ÿÈOr €rÇKr]ÈOri€r@ P€:€€‚çø£—Y€‰€çø£—Y€‰€‚€‚ÿCONTENTS | NEXT* €r“€r' €€ ”€ ‚ÿÉOi€r\rz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1“€rr1Uÿÿÿÿÿÿÿÿãÿÿÿÿr±r$\r±r" €€€ ÿZ)r ‚r1Ç܄ä]ƒåä ‚r?‚rׯrJava Remote Method Invocation: - Contents4±r?‚r& €€€€‚ÿ- ContentsºF ‚rù‚rt#ž€ŒÂÂX€€çø£—Y€‰€ç÷£—Y€‰€皝—Y€‰€‚ÿ€H€ÿ€J€€(€‚ÿÿÿCONTENTS | PREV | NEXTJava Remote Method InvocationC?‚r<ƒr+ &€0€€‚€%€‚‚ÿTable of Contents&ù‚rbƒr# €€€‚ÿ*<ƒrŒƒr' €€ ”€ ‚ÿRbƒrރr8 @€4€€‚€‚€ 皝—Y€E‰€‚‚ÿ1 Introductione*ŒƒrC„r; F€T€ä盝—Y€‰€‚眝—Y€‰€‚‚ÿ1.1 Background1.2 System GoalsW'ރrš„r0 0€N€€ çF‰£Õ€E‰€‚‚ÿ2 Java Distributed Object Model­0C„rG†r} Ȁa€ä祗Y€‰€‚çù€—Y€‰€‚çú€—Y€‰€‚çû€—Y€‰€‚çü€—Y€‰€‚çý€—Y€‰€‚çþ€—Y€‰€‚‚ÿ2.1 Distributed Object Applications2.2 Definition of Terms2.3 The Distributed and Nondistributed Models Contrasted2.4 Overview of RMI Interfaces and Classes2.5 Implementing a Remote Interface2.6 Parameter Passing in Remote Method Invocation2.7 Locating Remote ObjectsMš„r”†r0 0€:€€ ç ø•³€E‰€‚‚ÿ3 RMI System Overview(ÅG†rŒ‡rc ”€‹€äçA—Y€‰€‚çB—Y€‰€‚çC—Y€‰€‚çD—Y€‰€‚çE—Y€‰€‚‚ÿ3.1 Stubs and Skeletons3.2 Thread Usage in Remote Method Invocations3.3 Garbage Collection of Remote Objects3.4 Dynamic Class Loading3.5 RMI Through Firewalls Via ProxiesK”†rˆr0 0€6€€ çÏ® €E‰€‚‚ÿ4 Client Interfacesº`Œ‡rÁˆrZ „€À€äçF—Y€€€‰€‚çG—Y€€€‰€‚çs—Y€€€‰€‚‚ÿ4.1 The Remote Interface4.2 The RemoteException Class4.3 The Naming ClassKˆr ‰r0 0€6€€ ç;ân€E‰€‚‚ÿ5 Server Interfaces GÁˆr‹rÆ Z€ä祣—Y€€€‰€‚犣—Y€€€‰€‚ç§£—Y€€€‰€‚皣—Y€€€‰€‚ç©£—Y€€€‰€‚çÕ£—Y€€€‰€‚çÌ£—Y€€€‰€‚çÍ£—Y€‰€‚碣—Y€€€‰€‚ÿ5.1 The RemoteObject Class5.2 The RemoteServer Class5.3 The UnicastRemoteObject Class5.4 The Unreferenced Interface5.5 The RMISecurityManager Class5.6 The RMIClassLoader Class5.7 The LoaderHandler Interface5.8 RMI Socket Factories5.9 The RMIFailureHandler Interface†E ‰rŸ‹rA R€Š€ä磣—Y€€€‰€‚瀣—Y€‰€‚‚ÿ5.10 The LogStream Class5.11 Stub and Skeleton CompilerM‹rì‹r0 0€:€€ çdJ8€E‰€‚‚ÿ6 Registry InterfacesÈnŸ‹rތrZ „€Ü€äç}£—Y€€€‰€‚ç~£—Y€€€‰€‚窣—Y€€€‰€‚‚ÿ6.1 The Registry Interface6.2 The LocateRegistry Class6.3 The RegistryHandler InterfaceR"ì‹rr0 0€D€€ çĘf€E‰€‚‚ÿ7 Remote Object Activation㍎ŒrérV z€€ä睗Y€‰€‚睗Y€‰€‚çH—Y€‰€‚ç?—Y€‰€‚‚ÿ7.1 Overview7.2 Activation Protocol7.3 Implementation Model for an "Activatable" Remote Object7.4 Activation InterfacesR"r;Žr0 0€D€€ çñŠ«€E‰€‚‚ÿ8 Stub/Skeleton Interfaces[Çér–r” ö€€äçÏ£—Y€€€‰€‚çУ—Y€€€‰€‚çÑ£—Y€€€‰€‚çÒ£—Y€€€‰€‚çÓ£—Y€€€‰€‚çÔ£—Y€€€‰€‚‚ÿ8.1 The RemoteStub Class8.2 The RemoteCall Interface8.3 The RemoteRef Interface8.4 The ServerRef Interface8.5 The Skeleton Interface8.6 The Operation ClassV&;Žr Àr0 0€L€€ çAfµ €E‰€‚‚ÿ9 Garbage Collector Interfaces–r Àr±rƒ–rÁr Ѐ€äçk—Y€€€‰€‚çl—Y€€€‰€‚çm—Y€€€‰€‚çn—Y€€€‰€‚ço—Y€€€‰€‚‚ÿ9.1 The DGC Interface9.2 The Lease Class9.3 The ObjID Class9.4 The UID Class9.5 The VMID ClassL Àr\Ár0 0€8€€ ç³€E‰€‚‚ÿ10 RMI Wire ProtocolSãÁr¯Ârp ®€Ç€äçw£—Y€‰€‚çx£—Y€‰€‚çy£—Y€‰€‚çz£—Y€‰€‚ç{£—Y€‰€‚ç|£—Y€‰€‚‚ÿ10.1 Overview10.2 RMI Transport Protocol10.3 RMI's Use of Object Serialization Protocol10.4 RMI's Use of HTTP POST Protocol10.5 Application-Specific Values for RMI10.6 RMI's Multiplexing ProtocolK\ÁrúÂr0 0€6€€ çFøî`€E‰€‚‚ÿA Exceptions In RMI@ЯÂr:Ärp ®€¡€äçr—Y€‰€‚瞝—Y€‰€‚畝—Y€‰€‚痝—Y€‰€‚瘝—Y€‰€‚癝—Y€‰€‚‚ÿA.1 Exceptions During Remote Object ExportA.2 Exceptions During RMI CallA.3 Exceptions or Errors During ReturnA.4 Naming ExceptionsA.5 Activation ExceptionsA.6 Other ExceptionsKúÂr…Är0 0€6€€ çWc“€E‰€‚‚ÿB Properties In RMI›S:Är ÅrH `€Š€ä祗Y€‰€‚祗Y€‰€‚磗Y€‰€‚‚ÿB.1 Server PropertiesB.2 Activation PropertiesB.3 Other Properties&…ÄrFÅr# €€€‚ÿ* ÅrpÅr' €€ ”€ ‚ÿt(FÅräÅrL h€P€€‚çø£—Y€‰€ç÷£—Y€‰€皝—Y€‰€‚€‚ÿCONTENTS | PREV | NEXT*pÅrÆr' €€ ”€ ‚ÿÉOäÅrׯrz Āž€€‚ÌHEF("http://java.sun.com/j2se/1.4/docs/relnotes/SMICopyright.html",`',1)€>‰€+€‚‚ÿCopyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.1ÆrÇr1UÿÿÿÿÿÿÿÿåÿÿÿÿÇr,Çr$ׯr,Çr" €€€ ÿ`/ÇrŒÇr1"qåææŒÇråÇr sSubscribing/Unsubscribing to the RMI-USERS ListY3,ÇråÇr& €f€€€‚ÿSubscribing/Unsubscribing to the RMI-USERS ListU2ŒÇr:Èr# €d€€%‚ÿSubscribing/Unsubscribing to the RMI-USERS List,åÇrfÈr' € €€‚€‚ÿ*:ÈrÈr' €€ ”€ ‚ÿ=fÈrÍÈr) "€(€€‚€‚‚‚ÿTo subscribe:#åÈrðÉr> J€Ë€ä€F€€F€‚€F€€F€‚‚‚‚ÿ· Send email to: listserv@java.sun.com· In the body of the message, type: subscribe RMI-USERSAfter subscribing, you can choose to receive all of the RMI-USERS daily email batched into just just a few email messages:ŠjÍÈr–Êr< H€Ô€ɀ€F€€F€‚€F€€F€‚‚ÿ· Send email to: listserv@java.sun.com· In the body of the message, type: set RMI-USERS digestˆcðÉrËr% €Æ€ä€‚‚ÿIf you decide at a later time that you'd rather receive all of the email messages individually:šl–ÊrÆËr< H€Ø€ɀ€F€€F€‚€F€€F€‚‚ÿ· Send email to: listserv@java.sun.com· In the body of the message, type: set RMI-USERS nodigest7ËrýËr$ €&€€‚‚ÿTo unsubscribe:¢gÆËrŸÌr; F€Î€ä€F€€F€‚€F€€F€‚‚ÿ· Send email to: listserv@java.sun.com· In the body of the message, type: signoff RMI-USERSZÕýËrùÍr… ؀«€€€GÌ@EF("http://archives.java.sun.com/archives/rmi-users.html",`',1)€H‰€‚‚çñœ—Y€‰€‚‚€‚ÿIf you'd like to check out the RMI-USERS email archives, they can be found here .You may also want to take a look at the answers to Frequently Asked Questions about RMI and Object Serialization .*ŸÌr#Îr' €€ ”€ ‚ÿ&ùÍrIÎr# €€€‚ÿg‰#Îr°ÏrÞ#ЁÂ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€‰€€‚ÿ€ÿ(€†"€‚ÿÿÿCopyright © 2001 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com &IÎr s# €€€‚ÿ°Ïr s,Çr1°Ïr=s1Uÿÿÿÿÿÿÿÿçÿÿÿÿ=sas$ sas" €€€ ÿC=s€s1ð?]ƒåõŠçè€sàs/Ïssun.rmi Properties<asàs& €,€€€‚ÿsun.rmi PropertiesB€s"s* $€0€€<€%€‚‚ÿsun.rmi Properties&àsHs# €€€‚ÿ*"srs' €€ ”€ ‚ÿ•RHssC T€¥€€‚€‚€(€ç—Y€€‰€‚‚€‚ÿWARNING: The properties described here are not supported, can change at any time, and only exist in certain implementations of RMI from Sun Microsystems. These properties are not part of the RMI public API. To see a list of the properties that are part of the RMI public API, please refer to the page, java.rmi Properties.*rs1s' €€ ”€ ‚ÿ‰øsºs‘ ð€ñ€€‚€‚€€€€‚‚€€€€€€€€€(€€(€€€€€ç—Y€‰€€€€€€€€€€€‚ÿPlease Note: Unless otherwise stated, any output from these properties is sent to System.err. Each of the properties that have names ending in ".logLevel" have possible values of "SILENT", "BRIEF", and "VERBOSE". These values are case insensitive and may be abbreviated as a string containing the first n letters, where n is greater than or equal to 1. If not specified, these properties have a default value of "SILENT". A value of "BRIEF" causes the corresponding Logger to be set to the level Level.FINE, and a value of "VERBOSE" causes the corresponding Logger to be set to the level Level.FINER. Use of the logging configuration file is now preferred over the use of these sun.rmi.* system properties for logging.?1s;sB R€€€‚€€€€€€€€‚‚€‚ÿLogging messages are sent to System.err. For instance, if a property is said to send output to the "transport" log, this means that logging messages are sent to a LogStream returned by java.rmi.server.LogStream.log("transport"), which sends messages to System.err, unless you've set it to something else.*ºses' €€ ”€ ‚ÿ^,;sÃs2 4€X€€‚€‚€ €2€‚‚ÿProperties that can be set on rmidZ3es s' €f€ä€€‚ÿsun.rmi.activation.execTimeout (1.2 and later) ‡ZÃs€ s- (€µ€ɀ€€€‚‚ÿThe value of this property represents the time (in milliseconds) that the activation system will wait for a spawned activation group to start up. Setting this property gives you the ability to shorten or lengthen the maximum time that rmid will wait for an activation group to start up. The default value is 30000 milliseconds (30 seconds).^7 s s' €n€ä€€‚ÿsun.rmi.activation.snapshotInterval (1.2 and later)³u€ sµ s> J€ë€ɀ€€€€€€€€€‚ÿThis property controls the number of updates for which the activation system will wait before it serializes a snapshot of its state to the rmid log file on disk. An "update" refers to a persistent change in the state of the activation system (for example, the registration of an Activatable object) since the last snapshot was taken. Changing the value of this property can be used to make rmid re-start more quickly (by taking snapshots of the log more often) or to make rmid more efficient (by taking snapshots of the log less often). The value of this property is a positive integer value. The default value is 200.( sÝ s% €€ɀ€‚ÿ»µ s˜s< H€þ€ɀ€€‚€€€€€€‚‚ÿsun.rmi.log.debug (1.2 and later) If this value is true, details of rmid's logging activity are sent to System.err.b&Ý sBs< F€M€ɀ€€‚€€€€€€‚ÿsun.rmi.rmid.maxstartgroup (1.2 and later) The value of this property represents the maximum number of activation group VMs that rmid will allow to be in the "spawning but not yet active" state simultaneously. If more VMs need to be started, they will queue up until one of the current spawn att˜sBsasempts either succeeds or times out. Note that this property does not limit the maximum number of active VMs; it is intended to smooth out sudden spikes of activity to avoid reaching operating system limits. While setting the value of this property to a lower number may result in a longer start-up time for rmid, and setting the value to a higher number could shorten the start-up time, setting this value too high can crash rmid, because your system may run out of resources. The default value is 3.(˜s.Bs% €€ɀ€‚ÿ^7BsŒBs' €n€ä€€‚ÿsun.rmi.server.activation.debugExec (1.2 and later)ã.Bs¢Cs3 4€Ç€ɀ€€€€€‚‚ÿIf this value is true, the activation system will print out debugging information to the command line that is used for spawning activation groups. By default, the value is false, so debugging information is not printed.pIŒBsDs' €’€€ €‚‚ÿProperties that are useful to set on JVMs that export remote objectsQ*¢CscDs' €T€ä€€‚ÿsun.rmi.dgc.ackTimeout (1.4 and later)\0Ds¿Gs, &€a€ɀ€€€‚ÿThe value of this property represents the length of time (in milliseconds) that the server-side RMI runtime will strongly refer to a remote object (or a reference to a remote object) that has been returned from the current virtual machine as part of the result of a remote method call, until it receives positive acknowledgment from the client that the remote reference has been fully received and processed. This timeout only applies to failure situations (in which the client fails to send the acknowledgment). Setting the value too low can increase the risk of a remote object being prematurely garbage collected when the only known reference to the remote object is the one in transit as part of the remote method call result. The maximum value is Long.MAX_VALUE. The default value is 300000 (five minutes).(cDsçGs% €€ɀ€‚ÿÖ¿GsèHs+ $€­€ɀ€€‚‚‚ÿsun.rmi.dgc.checkInterval (1.1 and later) The value of this property represents (in milliseconds) how often the RMI runtime checks for expired DGC leases. The default value is 300000 milliseconds (5 minutes).òÇçGsÚIs+ $€€ɀ€€‚‚‚ÿsun.rmi.dgc.logLevel (1.1 and later) This property controls the logging of incoming and outgoing calls related to DGC lease granting, renewing, and expiration. It sends output to the "dgc" log.©~èHsƒKs+ $€ý€ɀ€€‚‚‚ÿsun.rmi.dgc.server.gcInterval (1.2 and later) When it is necessary to ensure that unreachable remote objects are unexported and garbage collected in a timely fashion, the value of this property represents the maximum interval (in milliseconds) that the RMI runtime will allow between garbage collections of the local heap. The default value is 60000 milliseconds (60 seconds).¿ÚIsBNs2 2€€ɀ€€‚‚‚€(€‚ÿsun.rmi.loader.logLevel (1.2 and later) This property controls the logging of each class name and codebase, whenever the RMI runtime attempts to load a class as a result of unmarshalling either an argument or return value. This property sends output to the "loader" log.Please note in 1.3 that while the codebase that is printed is the annotated codebase, it may not necessarily be the actual codebase from which the class gets loaded; the RMI class loader defers the class loading to the current thread's context class loader, which may load the class from the CLASSPATH, rather than the annotated codebase. This issue no longer exists in 1.4.(ƒKsjNs% €€ɀ€‚ÿ‚KBNs €s7 <€—€ɀ€€‚€€€€‚‚ÿsun.rmi.server.exceptionTrace (1.2 and later) This property controls the output of server-side stack traces from exceptions and errors that are thrown by dispatched, incoming remote calls. If this value is true, exception stack traces will be printed. By default (false), exception and error stack traces are not printed.jNs €sas]6jNsi€s' €l€ä€€‚ÿsun.rmi.server.suppressStackTraces (1.4 and later)3 €sœ‚s, &€€ɀ€€€‚ÿIf this value is true, the server-side RMI runtime implementation will clear the stack traces of all exceptions thrown from the current virtual machine as the result of remote calls. This property is useful for certain RMI server applications that may wish to prevent any server-side stack trace data from accompanying an exception to be marshalled out as the result of an incoming remote call (as part of the exception's default serialized form in J2SE 1.4), perhaps for reasons of performance or confidentiality.(i€sĂs% €€ɀ€‚ÿË œ‚sƒs+ $€A€ɀ€€‚‚‚ÿsun.rmi.transport.logLevel (1.1 and later) This property controls detailed logging throughout the transport layer. It sends output to the "transport" log.?Ăs΄s+ $€)€ɀ€€‚‚‚ÿsun.rmi.transport.tcp.localHostNameTimeOut (1.1.7 and later) The value of this property represents the time (in milliseconds) that the RMI runtime will wait to obtain a fully qualified domain name for the local host. The default value is 10000 milliseconds (10 seconds).Óšƒs¡…s+ $€Q€ɀ€€‚‚‚ÿsun.rmi.transport.tcp.logLevel (1.1 and later) This property provides detailed logging for the TCP-specific transport sub-layer. It sends output to the "tcp" log.^7΄sÿ…s' €n€ä€€‚ÿsun.rmi.transport.tcp.readTimeout (1.2.2 and later)Œƒ¡…s»‡s9 @€€ɀ€€€ç„Ç¿}€1‰€‚‚ÿThe value of this property represents the time (in milliseconds) used as an idle timeout for incoming RMI-TCP connections. The value is passed to java.net.Socket.setSoTimeout. This property is used only for cases where a client has not dropped an unused connection as it should (see sun.rmi.transport.connectionTimeout). The default value is 2*3600*1000 milliseconds (2 hours).sLÿ…s.ˆs' €˜€€ €‚‚ÿProperties that are useful to set on JVMs that make remote method callsR+»‡s€ˆs' €V€ä€€‚ÿsun.rmi.client.logCalls (1.4 and later)5ð.ˆsµ‰sE X€á€ɀ€€€€€€€€€€€‚‚ÿIf the value of this property is true, the sun.rmi.client.call logger will be set to the level Level.FINER. Remote calls are logged at the level Level.FINER, and exceptions from remote calls are logged at the level Level.FINE.-€ˆsâŠs+ $€€ɀ€€‚‚‚ÿsun.rmi.dgc.cleanInterval (1.1 and later) The value of this property represents the maximum length of time (in milliseconds) that the RMI runtime will wait before retrying a failed DGC "clean" call. The default value is 180000 milliseconds (3 minutes).Y2µ‰s;‹s' €d€ä€€‚ÿsun.rmi.dgc.client.gcInterval (1.2 and later) uNâŠs°Œs' €€ɀ€‚‚ÿWhen it is necessary to ensure that DGC clean calls for unreachable remote references are delivered in a timely fashion, the value of this property represents the maximum interval (in milliseconds) that the RMI runtime will allow between garbage collections of the local heap. The default value is 60000 milliseconds (60 seconds).¿;‹sos2 2€€ɀ€€‚‚‚€(€‚ÿsun.rmi.loader.logLevel (1.2 and later) This property controls the logging of each class name and codebase, whenever the RMI runtime attempts to load a class as a result of unmarshalling either an argument or return value. This property sends output to the "loader" log.Please note in 1.3 that while the codebase that is printed is the annotated codebase, it may not necessarily be the actual codebase from which the class gets loaded; the RMI class loader defers the class loading to the current thread's context class loader, which may load the class from the CLASSPATH, rather than the annotated codebase. This issue no longer exists in 1.4.(°Œs—s% €€ɀ€‚ÿúÏosÀs+ $€Ÿ€ɀ€€‚‚‚ÿsun.rmi.server.logLevel (1.1 and later) This property contr—sÀsasols the logging of information related to outgoing calls, including some connection-reuse information. It sends output to the "transport" log.`9—sýÀs' €r€ä€€‚ÿsun.rmi.transport.connectionTimeout (1.1.6 and later)k8ÀshÂs3 4€q€ɀ€çŒ5ï/€1‰€‚‚ÿThe value of this property represents the period (in milliseconds) for which RMI socket connections may reside in an "unused" state, before the RMI runtime will allow those connections to be freed (closed). The default value is 15000 milliseconds (15 seconds). See also sun.rmi.transport.tcp.readTimeout.Ë ýÀs3Ãs+ $€A€ɀ€€‚‚‚ÿsun.rmi.transport.logLevel (1.1 and later) This property controls detailed logging throughout the transport layer. It sends output to the "transport" log.ÎhÂsCÅsB R€€ɀ€€‚€€€€€€€€‚ÿsun.rmi.transport.proxy.connectTimeout (1.1 and later) The value of this property represents the maximum length of time (in milliseconds) that the RMI runtime will wait for a connection attempt (createSocket) to complete, before attempting to contact the server using HTTP. This property is only used when the http.proxyHost property is set and the value of java.rmi.server.disableHttp is false. The default value is 15000 milliseconds (15 seconds).(3ÃskÅs% €€ɀ€‚ÿ[4CÅsÆÅs' €h€ä€€‚ÿsun.rmi.transport.proxy.logLevel (1.1 and later)¬skÅsrÇs9 @€ç€ɀ€€€€€€€‚‚ÿThis property controls the logging of events (createSocket and createServerSocket) when the default RMISocketFactory class is used. This type of logging is likely to be useful for applications that use RMI over HTTP. Events in custom socket factories are not logged by this property. It sends some messages to the "proxy" log, and others to the "transport" log.a:ÆÅsÓÇs' €t€ä€€‚ÿsun.rmi.transport.tcp.handshakeTimeout (1.4 and later)ã·rÇs¶Ês, &€o€ɀ€€€‚ÿThe value of this property represents the length of time (in milliseconds) that the client-side RMI runtime will use as a socket read timeout when reading initial handshake data (protocol acknowledgment) when establishing a new JRMP connection. This property is used to configure how long the RMI runtime will wait before deciding that a TCP connection accepted by a remote server cannot actually be used, either because the entity listening on the remote host's port is not actually an RMI server, or because the server is somehow not functioning correctly. The maximum value is Integer.MAX_VALUE, and a value of zero indicates an infinite timeout. The default value is 60000 (one minute).(ÓÇsÞÊs% €€ɀ€‚ÿÓš¶Ês±Ës+ $€Q€ɀ€€‚‚‚ÿsun.rmi.transport.tcp.logLevel (1.1 and later) This property provides detailed logging for the TCP-specific transport sub-layer. It sends output to the "tcp" log.¡;ÞÊsRÍsf š€w€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€0‰€‚‚€€‚€‚ÿWe are very interested in knowing whether this information is useful. Please send any comments or suggestions to: rmi-comments@java.sun.com, with a subject of "sun.rmi properties FAQ".*As used on this web site, the terms "Java(TM) virtual machine" or "JVM" mean a virtual machine for the Java platform.*±Ës|Ís' €€ ”€ ‚ÿ&RÍs¢Ís# €€€‚ÿg‰|Ís ÏsÞ#ЁÂ€€ÿ€çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€€€Ì,EF("mailto:rmi-comments@java.sun.com",`',1)€=‰€€‚ÿ€ÿ(€†"€‚ÿÿÿCopyright © 2001 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: rmi-comments@java.sun.com &¢Ís/Ïs# €€€‚ÿ1 Ïs`Ïs1Uÿÿÿÿÿÿÿÿéÿÿÿÿ`Ïs„Ïs$/Ïs„Ïs" €€€ ÿE`ÏsÉÏs1x3æ¹éêÉÏst ŠtAccess Control Lists>„Ïst& €0€€€‚ÿAccess Control LÉÏst„ÏsistsuBÉÏsˆt3 6€„€€%€‚‚€:€‚‚€‚ÿAccess Control AbstractionsLast Modified: 30 April 2001*t²t' €€ ”€ ‚ÿOˆtt3 6€8€€‚€‚€%€‚‚€‚ÿjava.security.acl*²t+t' €€ ”€ ‚ÿ’MtœtE X€›€€‚€‚€ €‚‚€(€€(€€(€‚‚‚ÿIntroductionAn Access Control List (ACL) is a data structure that guards access to resources. The java.security.acl package provides the interface to such a data structure and the sun.security.acl package provides a default implementation of the interfaces specified in the java.security.acl package.Note: This API is not used internally for JDK system security. It was introduced in JDK 1.1, and remains for backwards compatibility. It may undergo substantial revision and extension or even replacement in future releases. This document describes the current interfaces.þ×+t»t' €¯ €€‚‚‚‚ÿAn ACL can be thought of as a data structure with multiple ACL entries. Each ACL entry, of interface type AclEntry, contains a set of permissions associated with a particular principal. (A principal represents an entity such as an individual user or a group). Additionally, each ACL entry is specified as being either positive or negative. If positive, the permissions are to be granted to the associated principal. If negative, the permissions are to be denied.An access control list is independent of the authentication scheme used to verify the validity of the principal. It is also independent of the encryption scheme used to transmit the data across the network. The ACL is consulted after the authentication phase. After the principal is verified to be an authenticated user in the system, the principal might access resources. For each such resource, the principal might or might not be granted access depending on the permissions that are granted to the principal in the ACL that guards the resource. The ACL itself is independent of the resource that it guards. The ACL can be consulted to find the list of permissions a particular principal has or to find out whether or not a principal is granted a particular permission.h œt# t] ˆ€€€‚€ €‚‚€(€€(€€(€€(€€(€€(€€(€€(€‚ÿACL structureAn ACL is an object that implements the java.security.acl.Acl interface. Each Acl is a list of AclEntry objects. Each AclEntry associates a Principal or a Group object to a list of Permission objects. (Note: Group is a subclass of Principal.) Each AclEntry can also be designated as a positive entry or a negative entry. A positive entry grants the list of permissions in the entry to the principal or group and a negative entry denies the list of permissions to the principal or group.³…»tÖ t. *€ €€‚€ €‚‚‚‚ÿCalculation of granted permissionsWhen calculating the net permissions a principal is granted, the following rules are used.†^# t\t( €œ€ä€‚‚‚‚ÿ1. Each principal or group can have at most one positive ACL entry and one negative entry; that is, multiple positive or negative ACL entries are not allowed for any principal or group.2. If there is no entry for a particular principal or a group, then the principal or the group has the null permission set.3. The net group positive permission set for a principal is the union of all the positive permissions of each group that the principal belongs to.4. The net group negative permission set for a principal is the union of all the negative permissions of each group that the principal belongs to.{UÖ tã@t& €«€ä€‚‚ÿ5. If there is a positive entry that grants a principal or a group a particular permission and a negative entry that denies the principal or group the same permission, then that permission is removed from both the positive permissions set and the negative permissions set.6. Individual permissions (permissions granted or denied to a specific principal) always override the Group \tã@t„Ïspermissions. Specifically, individual negative permissions (specific denial of permissions) override the group's positive permissions. And individual positive permissions override the group's negative permissions.Ûµ\tŸBt& €k€ä€‚‚ÿ7. Assume that the positive permission set of all the groups that the principal belongs to is g1 and the negative permission set of all the groups that the principal belongs to is g2. Also assume that the individual positive permission set for the principal is p1 and the individual negative permission set for the principal is p2. Then the resulting permissions that the principal is granted are (p1 + (g1 - p2)) - (p2 + (g2 - p1)).%ûã@tãCt* "€÷€€ €‚‚‚‚ÿExample permission calculationsAssume that a principal P belongs to groups G1 and G2. The table below shows 5 columns using some examples of permissions given to G1, G2 and P. The resulting permissions granted to P are shown in the last column.IˆŸBt,EtÁ#Pb¡¢¡¢Š€€€€‚ÿ€ €€€‚ÿ€<€€€‚ÿ€n€€€‚ÿ€ €€€‚ÿ€Ö€€€‚ÿ€ €‚ÿÿÿGroup G1 PermissionsGroup G2 PermissionsUnion (G1, G2) permsIndividual PermissionsResulting PermissionsÉ%ãCtõEt€#Jb¡¢¡¢Š€€€€‚ÿ€€ÿ€€€‚ÿ€$€‚ÿ€*€‚ÿ€4€‚ÿ€:€ÿ€<€‚ÿÿÿPositiveABA+BCA+B+CÞ:,EtÓFt€#tb¡¢¡¢Š€€€€‚ÿ€€ÿ€€€‚ÿ€2€‚ÿ€F€‚ÿ€Z€‚ÿ€n€ÿ€p€‚ÿÿÿNegativenull setnull setnull setnull set3õEtGt0#0€b€€€‚ÿÿÿÅ!ÓFtËGt€#Bb¡¢¡¢Š€€€€‚ÿ€€ÿ€€€‚ÿ€$€‚ÿ€*€‚ÿ€0€‚ÿ€6€ÿ€8€‚ÿÿÿPositiveABBCB+CÌ(Gt—Ht€#Pb¡¢¡¢Š€€€€‚ÿ€€ÿ€€€‚ÿ€&€‚ÿ€.€‚ÿ€6€‚ÿ€J€ÿ€L€‚ÿÿÿNegative-C-A-Cnull set3ËGtÊHt0#0€b€€€‚ÿÿÿÇ#—Ht‘It€#Fb¡¢¡¢Š€€€€‚ÿ€€ÿ€€€‚ÿ€$€‚ÿ€*€‚ÿ€4€‚ÿ€:€ÿ€<€‚ÿÿÿPositiveABA+BCB+CØ4ÊHtiJt€#hb¡¢¡¢Š€€€€‚ÿ€€ÿ€€€‚ÿ€2€‚ÿ€F€‚ÿ€Z€‚ÿ€b€ÿ€d€‚ÿÿÿNegativenull setnull setnull set-A3‘ItœJt0#0€b€€€‚ÿÿÿÃiJt_Kt€#>b¡¢¡¢Š€€€€‚ÿ€€ÿ€€€‚ÿ€$€‚ÿ€*€‚ÿ€0€‚ÿ€6€ÿ€8€‚ÿÿÿPositiveACABBÆ"œJt%Lt€#Db¡¢¡¢Š€€€€‚ÿ€€ÿ€€€‚ÿ€&€‚ÿ€.€‚ÿ€6€‚ÿ€>€ÿ€@€‚ÿÿÿNegative-C-B-B-A~ ó _Kt¯ˆt‹ ä€ç€€‚€ €‚‚€€‚ÿExample usage/* Note: This sample program is meant just as an example * of the types of things that can be done with an * implementation of the java.security.acl interfaces. * This example uses the implementation supplied by the * sun.security.acl package. Please note that sun.* classes * are unsupported and subject to change.*/import java.security.Principal;import java.security.acl.*;import sun.security.acl.*;import java.util.Enumeration;public class AclEx { public static void main(String argv[]) throws Exception { Principal p1 = new PrincipalImpl("user1"); Principal p2 = new PrincipalImpl("user2"); Principal owner = new PrincipalImpl("owner"); Permission read = new PermissionImpl("READ"); Permission write = new PermissionImpl("WRITE"); System.out.println("Creating a new group %Lt¯ˆt„Ïswith two members: user1 anduser2"); Group g = new GroupImpl("group1"); g.addMember(p1); g.addMember(p2); // // create a new acl with the name "exampleAcl" // System.out.println("Creating a new Acl named 'exampleAcl'"); Acl acl = new AclImpl(owner, "exampleAcl"); // // Allow group all permissions // System.out.println("Creating a new Acl Entry in exampleAcl for thegroup, "); System.out.println(" with read & write permissions"); AclEntry entry1 = new AclEntryImpl(g); entry1.addPermission(read); entry1.addPermission(write); acl.addEntry(owner, entry1); // // Take away WRITE permissions for // user1. All others in groups still have // WRITE privileges. // System.out.println("Creating a new Acl Entry in exampleAcl for user1"); System.out.println(" without write permission"); AclEntry entry2 = new AclEntryImpl(p1); entry2.addPermission(write); entry2.setNegativePermissions(); acl.addEntry(owner, entry2); // // This enumeration is an enumeration of // Permission interfaces. It should return // only "READ" permission. Enumeration e1 = acl.getPermissions(p1); System.out.println("Permissions for user1 are:"); while (e1.hasMoreElements()) { System.out.println(" " + e1.nextElement()); }; // // This enumeration should have "READ" and"WRITE" // permissions. Enumeration e2 = acl.getPermissions(p2); System.out.println("Permissions for user2 are:"); while (e2.hasMoreElements()) { System.out.println(" " + e2.nextElement()); }; // This should return false. boolean b1 = acl.checkPermission(p1, write); System.out.println("user1 has write permission: " + b1); // This should all return true; boolean b2 = acl.checkPermission(p1, read); boolean b3 = acl.checkPermission(p2, read); boolean b4 = acl.checkPermission(p2, write); System.out.println("user1 has read permission: " + b2); System.out.println("user2 has read permission: " + b3); System.out.println("user2 has write permission: " + b4); }}&%LtՈt# €€€‚ÿ*¯ˆtÿˆt' €€ ”€ ‚ÿ!°Õˆt Štq °€c€€‚€ˆ"€çñ˜Y€ ‰€‚Ì(EF("mailto:java-security@sun.com",`',1)€ ‰€‚‚ÿCopyright © 1996-2001 Sun Microsystems, Inc., 2550 Garcia Ave., Mtn. View, CA 94043-1100 USA. All rights reserved.Please send comments to: java-security@sun.com1ÿˆtQŠt1UÿÿÿÿÿÿÿÿëÿÿÿÿQŠtuŠt$ ŠtuŠt" €€€ ÿCQŠtžŠt1~BõŠçë잊tôŠt1ŠuX.509 certificates<uŠtôŠt& €,€€€‚ÿX.509 certificates&žŠt‹t# €€€‚ÿ*ôŠtD‹t' €€ ”€ ‚ÿ&‹tj‹t# €€€‚ÿ’_D‹tü‹t3 6€Ÿ€€‚€%€‚‚€:€‚‚ÿX.509 Certificates and Certificate Revocation Lists (CRLs)Last Modified: 1 May, 2001&j‹t"Œt# €€€‚ÿ*ü‹tLŒt' €€ ”€ ‚ÿ,"ŒtxŒt' € €€‚€‚ÿ¡1LŒtŽtp ®€c€äç7µ—“€‰€‚çwÔÿµ€‰€‚çøÒ’!€‰€‚çåöyʀ‰€‚çJÓÿµ€‰€‚çJœÖ•€‰€‚‚ÿIn One Sentence: What is a Certificate?What Applications use Certificates?How do I get a Certificate?What is Inside an X.509 Certificate?What Java API Can Be Used to Access and Manage Certificates?What Java Tool Can Generate, Display, Import, and Export X.509 Certificates?&xŒt?Žt# €€€‚ÿ*ŽtiŽt' €€ ”€ ‚ÿ_0?ŽtȎt/ .€`€€‚€‚€%€‚‚ÿIn One Sentence: What is a Certificate?Þ²iŽtŠt, &€e€ä€€€‚‚ÿA public-key certificate is a digitally signed statement from one entity, saying that the public key (and some other information) of another entity has some specific value.zOȎt,Àt+ &€ž€€‚‚€(€‚ÿLet us expand on some of the key terms used inŠt,ÀtuŠt this sentence:Public KeysëÆŠtÁt% €€ä€‚ÿThese are numbers associated with a particular entity, and are intended to be known to everyone who needs to have trusted interactions with that entity. Public keys are used to verify signatures.:,ÀtQÁt& €(€€(€‚ÿDigitally SignedãÁt_Ât+ $€Ç€ä€€(€‚ÿIf some data is digitally signed it has been stored with the "identity" of an entity, and a signature that proves that entity knows about the data. The data is rendered unforgeable by signing with the entitys' private key.2 QÁt‘Ât& €€€(€‚ÿIdentityÝž_ÂtnÃt% €q€ä€‚ÿA known way of addressing an entity. In some systems the identity is the public key, in others it can be anything from a Unix UID to an Email address to an X.509 Distinguished Name.3 ‘Ât¡Ãt& €€€(€‚ÿSignature~ZnÃtÄt$ €Ž€ä€‚ÿA signature is computed over some data using the private key of an entity (the signer).6¡ÃtUÄt& € €€(€‚ÿPrivate KeysÙŽÄt.Æt% €i€ä€‚ÿThese are numbers, each of which is supposed to be known only to the particular entity whose private key it is (that is, it's supposed to be kept secret). Private and public keys exist in pairs in all public key cryptography systems (also referred to as "public key crypto systems"). In a typical public key crypto system, such as DSA, a private key corresponds to exactly one public key. Private keys are used to compute signatures.0 UÄt^Æt& €€€(€‚ÿEntity£~.ÆtÇt% €ü€ä€‚‚ÿAn entity is a person, organization, program, computer, business, bank, or something else you are trusting to some degree.Rž^ÆtSËtŽ 6=€€€(€€(€Ì#EF("http://www.verisign.com",`',1)€‰€Ì!EF("http://www.thawte.com",`',1)€‰€Ì"EF("http://www.entrust.com",`',1)€‰€‚ÿBasically, public key cryptography requires access to users' public keys. In a large-scale networked environment it is impossible to guarantee that prior relationships between communicating entities have been established or that a trusted repository exists with all used public keys. Certificates were invented as a solution to this public key distribution problem. Now a Certification Authority (CA) can act as a Trusted Third Party. CAs are entities (e.g., businesses) that are trusted to sign (issue) certificates for other entities. It is assumed that CAs will only create valid and reliable certificates as they are bound by legal agreements. There are many public Certification Authorities, such as VeriSign, Thawte, Entrust, and so on. You can also run your own Certification Authority using products such as the Netscape/Microsoft Certificate Servers or the Entrust CA product for your organization.&ÇtyËt# €€€‚ÿ*SËt£Ët' €€ ”€ ‚ÿâyËtžÍt3 4€Å€€‚€‚€%€‚‚‚‚‚ÿWhat Applications use Certificates?Probably the most widely visible application of X.509 certificates today is in web browsers (such as Netscape Navigator and Microsoft Internet Explorer) that support the SSL protocol. SSL (Secure Socket Layer) is a security protocol that provides privacy and authentication for your network traffic. These browsers can only use this protocol with web servers that support SSL.Other technologies that rely on X.509 certificates include:&£ËtÞÍt# €€€‚ÿùžÍt×Ît7 <€…€ä€€‚€€‚€€‚‚ÿ· Various code-signing schemes, such as signed Java ARchives, and Microsoft Authenticode.· Various secure E-Mail standards, such as PEM and S/MIME.· E-Commerce protocols, such as SET.&ÞÍtýÎt# €€€‚ÿ*×Ît'Ït' €€ ”€ ‚ÿ^ýÎt¶Ït1 2€Œ€€‚€‚€%€‚‚‚‚ÿHow do I Get a Certificate?There are two basic techniques used to get certificates:Ú'ÏtÕu9 @€µ€ä€çJœÖ•€‰€‚€€‚‚ÿ1. you can creat¶ÏtÕuuŠte one yourself (using the right tools, such as keytool), or2. you can ask a Certification Authority to issue you one (either directly or using a tool such as keytool to generate the request).ðŸ¶ÏtÅuQ p€?€€‚€€€(€çJœÖ•€‰€€€‚‚€€€(€‚ÿThe main inputs to the certificate creation process are:· Matched public and private keys, generated using some special tools (such as keytool), or a browser. Only the public key is ever shown to anyone else. The private key is used to sign data; if someone knows your private key, they can masquerade as you ... perhaps forging legal documents attributed to you!· You need to provide information about the entity being certified (e.g., you). This normally includes information such as your name and organizational address. If you ask a CA to issue a certificate for you, you will normally need to provide proof to show correctness of the information.ŽOÕuSu? L€Ÿ€€‚çJœÖ•€‰€‚‚çJœÖ•€‰€‚ÿIf you are asking a CA to issue you a certificate, you provide your public key and some information about you. You'll use a tool (such as keytool or a browser that supports Certificate Signing Request generation). to digitally sign this information, and send it to the CA. The CA will then generate the certificate and return it.If you're generating the certificate yourself, you'll take that same information, add a little more (dates during which the certificate is valid, a serial number), and just create the certificate using some tool (such as keytool). Not everyone will accept self-signed certificates; one part of the value provided by a CA is to serve as a neutral and trusted introduction service, based in part on their verification requirements, which are openly published in their Certification Service Practices (CSP).&Åuyu# €€€‚ÿ*Su£u' €€ ”€ ‚ÿ;yuÞu9 @€€€‚€‚€%€‚‚‚‚€€‚ÿWhat's Inside an X.509 Certificate?The X.509 standard defines what information can go into a certificate, and describes how to write it down (the data format). All X.509 certificates have the following data, in addition to the signature:VersionÕ°£u³ u% €a€ä€‚ÿThis identifies which version of the X.509 standard applies to this certificate, which affects what information can be specified in it. Thus far, three versions are defined.7Þuê u& €"€€€‚ÿSerial NumberM(³ u7 u% €Q€ä€‚ÿThe entity that created the certificate is responsible for assigning it a serial number to distinguish it from other certificates it issues. This information is used in numerous ways, for example when a certificate is revoked its serial number is placed in a Certificate Revocation List (CRL).H"ê u u& €D€€€‚ÿSignature Algorithm IdentifierlH7 uë u$ €€ä€‚ÿThis identifies the algorithm used by the CA to sign the certificate.5 u u& €€€€‚ÿIssuer Name=ë u] u+ $€%€ä€€(€‚ÿThe X.500 name of the entity that signed the certificate. This is normally a CA. Using this certificate implies trusting the entity that signed this certificate. (Note that in some cases, such as root or top-level CA certificates, the issuer signs its own certificate.)9 u– u& €&€€€‚ÿValidity Period,] uÂu% €€ä€‚ÿEach certificate is valid only for a limited amount of time. This period is described by a start date and time and an end date and time, and can be as short as a few seconds or almost as long as a century. The validity period chosen depends on a number of factors, such as the strength of the private key used to sign the certificate or the amount one is willing to pay for a certificate. This is the expected period that entities can rely on the public value, if the associated private key has not been compromised.6– u @u& € €€€‚ÿSubject NameÂu @uuŠt¶‡ÂuÂAu/ ,€€ä€‚‚€€‚‚ÿThe name of the entity whose public key the certificate identifies. This name uses the X.500 standard, so it is intended to be unique across the Internet. This is the Distinguished Name (DN) of the entity, for example, CN=Java Duke, OU=Java Software Division, O=Sun Microsystems Inc, C=US(These refer to the subject's Common Name, Organizational Unit, Organization, and Country.)H" @u Bu& €D€€€‚ÿSubject Public Key InformationçÁÂAuñBu& €ƒ€ä€‚‚ÿThis is the public key of the entity being named, together with an algorithm identifier which specifies which public key crypto system this key belongs to and any associated key parameters.X BuIHuI `€ €€(€‚‚€(€‚‚€(€€(€€(€€(€‚ÿX.509 Version 1 has been available since 1988, is widely deployed, and is the most generic.X.509 Version 2 introduced the concept of subject and issuer unique identifiers to handle the possibility of reuse of subject and/or issuer names over time. Most certificate profile documents strongly recommend that names not be reused, and that certificates should not make use of unique identifiers. Version 2 certificates are not widely used.X.509 Version 3 is the most recent (1996) and supports the notion of extensions, whereby anyone can define an extension and include it in the certificate. Some common extensions in use today are: KeyUsage (limits the use of the keys to particular purposes such as "signing-only") and AlternativeNames (allows other identities to also be associated with this public key, e.g. DNS names, Email addresses, IP addresses). Extensions can be marked critical to indicate that the extension should be checked and enforced/used. For example, if a certificate has the KeyUsage extension marked critical and set to "keyCertSign" then if this certificate is presented during SSL communication, it should be rejected, as the certificate extension indicates that the associated private key should only be used for signing certificates and not for SSL use.ÊHñBuKu‚ Ҁ‘€€‚€(€€(€‚‚Ì?EF("http://www.ietf.org/html.charters/pkix-charter.html",`',1)€‰€€(€‚ÿAll the data in a certificate is encoded using two related standards called ASN.1/DER. Abstract Syntax Notation 1 describes data. The Definite Encoding Rules describe a single way to store and transfer that data. People have been known to describe this combination simultaneously as "powerful and flexible" and as "cryptic and awkward".The IETF PKIX working group is in the process of defining standards for the Internet Public Key Infrastructure. We are closely following their work, and are supporting its X.509 Certificate and CRL Profile, which is being specified.&IHu9Ku# €€€‚ÿ*KucKu' €€ ”€ ‚ÿð 9KuSLuP n€A€€‚€‚€%€‚‚ï””YJdk14doc.3.hlp€‰€‚‚ÿWhat Java API Can Be Used to Access and Manage Certificates?The Certificate API, found in the java.security.cert package, includes the following:n2cKuÁNu< F€e€ä€€€€‚‚€€€€‚ÿ· the CertificateFactory class defines the functionality of a certificate factory, which is used to generate certificate and certificate revocation list (CRL) objects from their encoding.· the Certificate class is an abstract class for managing a variety of certificates. It is an abstraction for certificates that have different formats but important common uses. For example, different types of certificates, such as X.509 and PGP, share general certificate functionality (like encoding and verifying) and some types of information like public key.šZSLuuuN j€µ€ä€‚€€€€‚‚€€€€‚‚€€€€‚ÿ· the CRL class is an abstract class for managing a variety of Certificate Revocation Lists (CRLs).· the X509Certificate class is an abstract class for X.509 Certificates. It provides a standard way to access all the attributes oÁNuuuuŠtf an X.509 certificate.· the X509Extension interface is an interface for an X.509 extension. The extensions defined for X.509 v3 certificates and v2 CRLs (Certificate Revocation Lists) provide mechanisms for associating additional attributes with users or public keys, such as for managing the certification hierarchy, and for managing CRL distribution.†EÁNuû‚uA P€‹€ä€‚€€€€‚‚€€€€‚‚ÿ· the X509CRL class is an abstract class for an X.509 Certificate Revocation List (CRL). A CRL is a time-stamped list identifying revoked certificates. It is signed by a Certification Authority (CA) and made freely available in a public repository.· the X509CRLEntry class is an abstract class for a CRL entry.&uu!ƒu# €€€‚ÿ*û‚uKƒu' €€ ”€ ‚ÿ¥!ƒu]…um š€K€€‚€‚€%€‚‚€€ç °˜Y€‰€çﵘY€‰€€€ç䯘Y€‰€çt·˜Y€‰€‚ÿWhat Java Tool Can Generate, Display, Import, and Export X.509 Certificates?There is a tool named keytool ( for Solaris ) ( for Win32 ) that can be used to create public/private key pairs and self-signed X.509 v1 certificates, and to manage keystores. Keys and certificates are used to digitally sign your Java applications and applets (see the jarsigner ( for Solaris ) ( for Win32 ) tool).Æ{Kƒu#ˆuK d€÷€€‚€(€‚‚€€çA¹E؀‰€çwºœ€‰€‚ÿA keystore is a protected database that holds keys and certificates for an enterprise. Access to a keystore is guarded by a password (defined at the time the keystore is created, by the person who creates the keystore, and changeable only when providing the current password). In addition, each private key in a keystore can be guarded by its own password.Using keytool, it is possible to display, import, and export X.509 v1, v2, and v3 certificates stored as files, and to generate new self-signed v1 certificates. For examples, see the "EXAMPLES" section of the keytool documentation ( for Solaris ) ( for Win32 ).,]…uOˆu' € €€‚€‚ÿ*#ˆuyˆu' €€ ”€ ‚ÿ&OˆuŸˆu# €€€‚ÿl¡yˆu ŠuË#dEÂÂꀀ€‚çñ˜Y€ ‰€ÌEF("http://www.sun.com/",`',1)€ ‰€Ì(EF("mailto:java-security@sun.com",`',1)€ ‰€‚‚‚ÿ€ÿ6€†"€€€+‚€‚ÿÿÿCopyright © 1995-2001 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: java-security@sun.com Java Software Division&Ÿˆu1Šu# €€€‚ÿ1 ŠubŠu1UÿÿÿÿÿÿÿÿíÿÿÿÿbŠu†Šu$1Šu†Šu" €€€ ÿc2bŠuéŠu1¹éû‡úîéŠuE‹uœI}Java(TM) Certification Path API Programmer's Guide\6†ŠuE‹u& €l€€€‚ÿJava(TM) Certification Path API Programmer's Guided7éŠu©‹u- *€n€€ €€ €‚‚ÿJavaTM Certification Path API Programmer's Guidea7E‹u Œu* $€n€€€(‚€‚ÿAuthor: Sean MullanLast Modified: 8 February 2002&©‹u0Œu# €€€‚ÿ* ŒuZŒu' €€ ”€ ‚ÿ]É0Œu·u” ö€“€€‚€‚çImh€E‰€‚‚ç;™T€‰€)çy'4"€‰€)ç:Ç4"€‰€)çro([€‰€)çÎ]z€‰€‚‚ç#'!€E‰€‚‚çïŒa€@‰€‚‚ÿOverviewChanges since J2SE 1.4 BetaAcknowledgmentsWho Should Read This DocumentRelated DocumentationIntroductionCore Classes and InterfacesBasic ClassesÊmZŒuŽu] Š€Ú€-€€çÉ—a€‰€‚€€‚çÏ>€‰€‚€€‚çw'Bs€‰€‚‚ÿ· The CertPath Class ·The CertificateFactory Class ·The CertPathParameters InterfaceY,·uڎu- *€X€çñY €@‰€‚‚ÿCertification Path Validation ClassesžUŽuxuI b€ª€-€€çÍÀ>Ÿ€‰€‚‚€€çžaŠ€€‰€‚‚ÿ· The CertPathValidator Class· The CertPathValidatorResult InterfaceW*ڎuϏu- *€T€ç‚íW|€@‰€‚‚ÿCertification Path Building ClassesšQxuuÀuI b€¢€-€€çޗùx€‰€ϏuuÀu†Šu‚‚€€ç—obN€‰€‚‚ÿ· The CertPathBuilder Class· The CertPathBuilderResult InterfaceS&ϏuÈÀu- *€L€çß¹†5€@‰€‚‚ÿCertificate/CRL Storage Classes’IuÀuZÁuI b€’€-€€çe’e€‰€‚‚€€ç³C_’€‰€‚‚ÿ· The CertStore Class· The CertStoreParameters InterfaceŠ]ÈÀuÂuI b€º€‘€€çlÙF€‰€‚‚€€ç1áÍ €‰€‚‚ÿ· The LDAPCertStoreParameters Class· The CollectionCertStoreParameters Classk6ZÁukÂu5 :€l€-€€çßՌ€‰€‚‚ÿ· The CertSelector and CRLSelector Interfaces‘HÂuüÂuI b€€‘€€ç«G¯X€‰€‚‚€€çX=Þñ€‰€‚‚ÿ· The X509CertSelector Class· The X509CRLSelector Class@kÂu<Ãu- *€&€çl=w+€E‰€‚‚ÿPKIX ClassesÜ.üÂuÅu® *]€ɀ€€ç1î뀉€‚€€‚çÐÞNõ€‰€‚‚€€çØÿŒò€‰€‚‚€€ç¬ó'º€‰€‚‚€€ç¯AˆÁ€‰€‚‚€€ç¡uñÿ€‰€‚‚€€ç☮¹€‰€‚‚ÿ· The TrustAnchor Class ·The PKIXParameters Class· The PKIXCertPathValidatorResult Class· The PolicyNode Interface and PolicyQualifierInfo Class· The PKIXBuilderParameters Class· The PKIXCertPathBuilderResult Class· The PKIXCertPathChecker Class¹l<ÃuÑÅuM j€Ø€ç»€E‰€‚‚ç ߀E‰€‚‚ç!߀E‰€‚‚€‚ÿImplementing a Service ProviderAppendix A: Standard NamesAppendix B: The "SUN" Provider*ÅuûÅu' €€ ”€ ‚ÿS$ÑÅuNÆu/ .€H€€‚€‚€ €‚‚ÿChanges since J2SE 1.4 BetajûÅužÈue ˜€ €ä€€€€€€€€€€‚€€€€€€€€€€€€‚ÿ· Changed the TrustAnchor(X509Certificate, byte[]) constructor to not throw InvalidAlgorithmParameterException and declared it to throw IllegalArgumentException instead (only in javadoc since it is a RuntimeException).· Changed the TrustAnchor(String, PublicKey, byte[]) constructor to not throw InvalidAlgorithmParameterException and declared it to throw IllegalArgumentException instead. Also changed it to throw an IllegalArgumentException if the caName parameter is incorrectly specified.…úNÆu=Ëu‹ ä€õ€ä€€€€‚€€€€€€€€€€€€‚€€€€€€‚€€€€€€€€€€€€‚ÿ· Marked PolicyQualifierInfo class final.· Marked the getTrustedCert, getCAName, getCAPublicKey, and getNameConstraints methods of TrustAnchor final.· Removed the isImmutable method of PolicyNode and required that all instances be immutable.· Changed the constructors of PKIXCertPathValidatorResult and PKIXCertPathBuilderResult to not throw InvalidParameterException if the policyTree parameter is not immutable (since PolicyNode instances are now always immutable).ÁžÈuWÍuY €€ƒ€ä€€€€€€€€€€€€‚€€€€€€‚ÿ· Changed the specification of the setMaxPathLength method of PKIXBuilderParameters to be consistent with the PKIX certificate profile defined in http://www.ietf.org/internet-drafts/draft-ietf-pkix-new-part1-08.txt. Also changed the method to throw an InvalidParameterException (a RuntimeException) if the maxPathLength parameter is out of range.· Clarified that an X.509 CertPath should not include the TrustAnchor certificate.M=ËuØÍu4 8€š€ä€€€€€€‚‚ÿ· Added a new standard encoding format for X.509 CertPaths: PkiPath.Ô‘WÍužvC T€#€€ €‚‚‚‚çê×ƀ‰€çþ£—Y€‰€‚ÿOverviewThe Java Certification Path API consists of classes and interfaces for handling certification paths (also known as "certificate chains"). A certification path is an ordered list of certificates. If a certification path meets certain validation rules, it may be used to securely establish the mapping of a public key to a subject.This API defines interfaces and abstract classes for creating, building, and validating certification paths. Implementations may be plugged iØÍužv†Šun using a provider-based interface. The API is based on the Cryptographic Service Provider architecture, described in the Java Cryptography Architecture Document.þîØÍu¶v îÝ€€‚Ì?EF("http://www.ietf.org/html.charters/pkix-charter.html",`',1)€‰€‚‚Ì;EF("http://java.sun.com/aboutJava/communityprocess/",`',1)€‰€ÌQEF("http://java.sun.com/aboutJava/communityprocess/jsr/jsr_055_certp.html",`',1)€‰€‚ÿThe API also includes algorithm-specific classes for building and validating X.509 certification paths according to the PKIX standards. The PKIX standards are developed by the IETF PKIX working group.This API is being reviewed using the Java Community Process program as Java Specification Request (JSR) 000055. The API is included in the Java 2 SDK, Standard Edition (J2SDK), v 1.4. Please refer to the JSR 055 Home Page for more information on the JSR and the latest status.&žvÜv# €€€‚ÿ á¶vçv* "€Ã€ä€ €‚‚‚ÿAcknowledgmentsThe author would like to thank the individuals who contributed to the Certification Path API and provided useful comments and technical advice. Special thanks to the members of the Sun Microsystems Laboratories team who designed and developed the Certification Path API which provided the basis of the work for the Java Community Process. This team includes Anne Anderson, Yassir Elley, Geoff Goodell, Steve Hanna, Sean Mullan, Radia Perlman, and Seth Proctor.¢|Üv‰v& €ø€ä€‚‚‚ÿThe expert group helped improve and refine the API using the Java Community Process and includes the following members:>ñçvÇvM h€ã€ɀ€€‚€€‚€€‚€€‚€€‚€€‚‚ÿ· Peter Hesse, CygnaCom Solutions, An Entrust Technologies Company· Sean Mullan, Sun Microsystems (Specification Lead)· Anthony Nadalin, IBM· Bob Naugle, Bluestone Software· Hemma Prafullchandra, VeriSign· Ming Yung, DSTC9‰v v% €)€ä€‚ÿMaxine Erlund, Steve Hanna, Phil Rosenzweig and Bob Sproull of Sun Microsystems provided leadership and vision. The members of the Java Security, Networking and Naming Group of Sun Microsystems contributed invaluable comments and support, especially Sharon Liu, Jeff Nisewanger, Gary Ellison, and Andreas Sterbenz. Helpful comments and advice were received from many in the technical community, especially Mary Dageforde, Edward Dobner, Tom Gindin, Jan Luehe, David Kuehr-McLaren, Parag Salvi, Alexei Semidetnov, and Yanni Zhang.˜jÇv˜ v. ,€Ô€ä€‚€ €‚‚‚‚ÿWho Should Read This DocumentThis document is intended for two classes of experienced developers:öÍ vŽ v) €›€ɀ€‚‚‚‚ÿ1. those who want to design secure applications that build or validate certification paths. 2.those who want to write a service provider implementation for building or validating certification paths.í¶˜ v{ v7 <€m€ä€ €‚‚ç"€—Y€‰€‚‚ÿRelated DocumentationThis document assumes you have already read the following documents (available online at http://java.sun.com/j2se/1.4/docs/guide/security/index.html):¹Ž v’ v^ Š€s€ɀ€€çü£—Y€‰€‚‚€€çþ£—Y€‰€‚‚€€ç+€—Y€‰€‚‚ÿ· X.509 Certificates and Certificate Revocation Lists (CRLs)· Java Cryptography Architecture· How to Implement a Provider for the Java Cryptography Architecture_#{ v @v< F€G€ä€ €‚‚€€€€€€‚ÿIntroductionUsers of public key applications and systems must be confident that a subject's public key is genuine, i.e., that the associated private key is owned by the subject. Public key certificates are used to establish this trust. A public key (or identity) certificate is a binding of a public key to an identity, which is digitally signed by the private key of another entity, often called a Certification Authority (CA). We shall use the term CA to refer to an entity that signs a certificate for the remainder of this section.’ v @v†Šu—Y’ v£Cv> J€³€ä€‚€€€€€€€€‚ÿIf the user does not have a trusted copy of the public key of the CA that signed the subject's public key certificate, then another public key certificate vouching for the signing CA is required. This logic can be applied recursively, until a chain of certificates (or a certification path) is discovered from a trust anchor or a most-trusted CA to the target subject (commonly referred to as the end-entity). The most-trusted CA is usually specified by a certificate issued to a CA that the user directly trusts. In general, a certification path is an ordered list of certificates, usually comprised of the end-entity's public key certificate and zero or more additional certificates. A certification path typically has one or more encodings, allowing it to be safely transmitted across networks and to different operating system architectures.Ý @v§Dv' €»€ä€‚‚‚ÿFigure 1 illustrates a certification path from a most-trusted CA's public key (CA 1) to the target subject (Alice). The certification path establishes trust in Alice's public key through an intermediate CA named CA2.Z$£CvEv6 <€J€ɀ€†"€€‚€‚‚ÿFigure 1: Certification Pathƒ#§Dv„Hv` Ž€G€ä€‚‚Ì/EF("http://www.ietf.org/rfc/rfc2587.txt",`',1)€‰€‚ÿA certification path must be validated before it can be relied on to establish trust in a subject's public key. Validation can consist of various checks on the certificates contained in the certification path, such as verifying the signatures and checking that each certificate has not been revoked. The PKIX standards define an algorithm for validating certification paths consisting of X.509 certificates.Often a user may not have a certification path from a most-trusted CA to the subject. Providing services to build or discover certification paths is an important feature of public key enabled systems. RFC 2587 defines an LDAP (Lightweight Directory Access Protocol) schema definition which facilitates the discovery of X.509 certification paths using the LDAP directory service protocol.’fEvKv, &€Í€ä€‚€€‚ÿBuilding and validating certification paths is an important part of many standard security protocols such as SSL/TLS, S/MIME, and IPSEC. The Java Certification Path API provides a set of classes and interfaces for developers who need to integrate this functionality into their applications. This API benefits two types of developers: those who need to write service provider implementations for a specific certification path building or validation algorithm; and those who need to access standard algorithms for creating, building, and validating certification paths in an implementation-independent manner.'„Hv=Kv$ €€ä€‚ÿ‘VKvÎMv; D€­€€ €‚‚çl=w+€‰€€€‚ÿCore Classes and InterfacesThe core classes of the Java Certification Path API consist of interfaces and classes that support certification path functionality in an algorithm- and implementation -independent manner. The API also includes a set of algorithm-specific classes for the PKIX standards that are discussed in the section titled PKIX Classes. The API builds on and extends the existing Java 2 SDK, Standard Edition (J2SDK) java.security.cert package for handling certificates. The core classes can be broken up into 4 class categories: Basic, Validation, Building, and Storage:&=KvôMv# €€€‚ÿ_+ÎMvSNv4 8€V€ä€€çïŒa€‰€‚‚ÿ· Basic Certification Path Classesp;ôMvÃNv5 :€v€ɀ€€€€€€‚‚ÿ· CertPath, CertificateFactory, CertPathParametersd0SNv'Ov4 8€`€ä€€çñY €‰€‚‚ÿ· Certification Path Validation Classesb3ÃNv‰Ov/ .€f€ɀ€€€€‚‚ÿ· CertPathValidator, CertPathValidatorResultb.'Ov €v4 8€\€ä€€ç‚íW|€‰€‚‚ÿ· Certification Path Building Classes‰Ov €v†Šu^/‰Ovj€v/ .€^€ɀ€€€€‚‚ÿ· CertPathBuilder, CertPathBuilderResult^* €vȀv4 8€T€ä€€çß¹†5€‰€‚‚ÿ· Certificate/CRL Storage ClassesFj€vIv; F€Œ€ɀ€€€€€€€€‚‚ÿ· CertStore, CertStoreParameters, CertSelector, CRLSelector8Ȁv‚v% €'€€‚‚ÿThe following sections describe the most commonly used methods of each class and interface. Usage examples for some of the classes are interspersed throughout the guide. The complete reference documentation for the relevant Certification Path API classes can be found in:w.Ivø‚vI b€\€ä€€ï””YJdk14doc.3.hlp€€‰€‚‚ÿ· java.security.cert package summaryn.‚vf†v@ N€]€€‚‚€ €‚‚€€€€€€‚ÿMost of the classes and interfaces in the CertPath API are not thread-safe. However, there are some exceptions which will be noted in this guide and the API specification. Multiple threads that need to access a single non-thread-safe object concurrently should synchronize amongst themselves and provide the necessary locking. Multiple threads each manipulating separate objects need not synchronize.Basic Certification Path ClassesThe basic certification path classes provide fundamental functionality for encoding and representing certification paths. The key basic class in the Java Certification Path API is CertPath, which encapsulates the universal aspects shared by all types of certification paths. An application uses an instance of the CertificateFactory class to create a CertPath object.ì¬ø‚vRˆv@ N€Y€€‚€ €‚‚€€€€€€‚‚ÿThe CertPath ClassThe CertPath class is an abstract class for certification paths. It defines the functionality shared by all certification path objects. Various certification path types can be implemented by subclassing the CertPath class, even though they may have different contents and ordering schemes. All CertPath objects are serializable, immutable and thread-safe and share the following characteristics:Çf†vmŠvT v€€ä€€‚€€‚‚€€‚çÛ+†Ç€‰€‚€€‚‚€€‚ÿ· A type This corresponds to the type of the certificates in the certification path, for example: X.509. The type of a CertPath is obtained using the method: public String getType()See Appendix A in the Java Cryptography Architecture API Specification & Reference for information about standard certificate types. ·A list of certificates The getCertificates method returns the list of certificates in the certification path: ”RˆvsŽvr ²€)€ä€‚€€‚€€€€€€€€€€‚‚€€€€€€çÍÀ>Ÿ€‰€€€‚ÿ public abstract List getCertificates()This method returns a List of zero or more java.security.cert.Certificate objects. The returned List and the Certificates contained within it are immutable, in order to protect the contents of the CertPath object.The ordering of the certificates returned depends on the type. By convention, the certificates in a CertPath object of type X.509 are ordered starting with the target certificate and ending with a certificate issued by the trust anchor. That is, the issuer of one certificate is the subject of the following one. The certificate representing the TrustAnchor should not be included in the certification path. Unvalidated X.509 CertPaths may not follow this convention. PKIX CertPathValidators will detect any departure from these conventions that cause the certification path to be invalid and throw a CertPathValidatorException. å“mŠvdÁvR r€'€ä€€‚‚€€‚‚€€‚€€€€ç ߀‰€‚ÿ·One or more encodings Each CertPath object supports one or more encodings. These are external encoded forms for the certification path, used when a standard representation of the path is needed outside the Java Virtual Machine (as when transmitting the path over a network to some other party). Each path cansŽvdÁv†Šu be encoded in a default format, the bytes of which are returned using the method: public abstract byte[] getEncoded()Alternatively, the getEncoded(String) method returns a specific supported encoding by specifying the encoding format as a String (ex: "PKCS7"). A list of standard encoding formats are defined in Appendix A. CsŽv§ÂvC T€€ä€‚€€‚€€€€‚‚€€‚ÿ public abstract byte[] getEncoded(String encoding)Also, the getEncodings method returns an iterator over the supported encoding format Strings (the default encoding format is returned first): public abstract Iterator getEncodings()cÎdÁv Æv• ø€€€€€€€€€€ïàù“YJdk14doc.3.hlp€‰€€€‚‚€€€€çÏ>€‰€€€€€€€€€€€‚ÿAll CertPath objects are also Serializable. CertPath objects are resolved into an alternate CertPathRep object during serialization. This allows a CertPath object to be serialized into an equivalent representation regardless of its underlying implementation.CertPath objects are generated from an encoded byte array or list of Certificates using a CertificateFactory. Alternatively, a CertPathBuilder may be used to try to find a CertPath from a most-trusted CA to a particular subject. Once a CertPath object has been created, it may be validated by passing it to the validate method of CertPathValidator. Each of these concepts are explained in more detail in subsequent sections.¥§Âv¯Év‡ ܀=€€‚€ €‚‚碀wO€‰€ç n¬:€‰€€€€€çÉ—a€‰€€€€€çޗùx€‰€€€€€€€‚ÿThe CertificateFactory ClassThe CertificateFactory class is an engine class that defines the functionality of a certificate factory. In releases prior to J2SDK, v 1.4 it was used to generate Certificate and CRL objects. It has been enhanced in J2SDK, v 1.4 to also be used to generate certification path (CertPath) objects. A CertificateFactory should not be confused with a CertPathBuilder. A CertPathBuilder (discussed later) is used to discover or find a certification path when one does not exist. In contrast, a CertificateFactory is used when a certification path has already been discovered and the caller needs to instantiate a CertPath object from its contents which exist in a different form such as an encoded byte array or an array of Certificates.& ÆvÕÉv# €€€‚ÿ”¯ÉvëÌv‚ Ҁ)€ä€€‚‚碀wO€‰€€€‚‚€€‚‚€€€€€€€€€€€€€€€€€€€€‚ÿCreating a CertificateFactory ObjectSee the CertificateFactory section in the Java Cryptography Architecture for details on creating a CertificateFactory object.Generating CertPath ObjectsA CertificateFactory instance generates CertPath objects from a List of Certificate objects or from an InputStream that contains the encoded form of a CertPath. Just like a CertPath, each CertificateFactory supports a default encoding format for certification paths (ex: PKCS#7). To generate a CertPath object and initialize it with the data read from an input stream (in the default encoding format), use the generateCertPath method:hÕÉvSÏvU x€'€ä€‚€€‚‚‚€€‚€€‚‚€€‚€€€€‚ÿ public final CertPath generateCertPath(InputStream inStream)or from a particular encoding format: public final CertPath generateCertPath(InputStream inStream, String encoding)To find out what encoding formats are supported, use the getCertPathEncodings method (the default encoding is returned first): public final Iterator getCertPathEncodings()To generate a certification path object from a List of Certificate objects, use the following method:AíëÌv wT v€Û€ä€‚€€‚€€€€€€€€€€€€‚‚‚ÿ public final CertPath generateCertPath(List certificates)A CertificateFactorySÏv w†Šu always returns CertPath objects that consist of Certificates that are of the same type as the factory. For example, a CertificateFactory of type X.509 returns CertPath objects consisting of certificates that are an instance of java.security.cert.X509Certificate.The following code sample illustrates generating a certification path from a PKCS#7 encoded certificate reply stored in a file:6éSÏvÖwM h€Ó€ä€‚€€€€€€€€‚ÿ // open an input stream to the file FileInputStream fis = new FileInputStream(filename); // instantiate a CertificateFactory for X.509 CertificateFactory cf = CertificateFactory.getInstance("X.509"); // extract the certification path from // the PKCS7 SignedData structure CertPath cp = cf.generateCertPath(fis, "PKCS7"); // print each certificate in the path List certs = cp.getCertificates(); Iterator i = certs.iterator(); while (i.hasNext()) { X509Certificate cert = (X509Certificate) i.next(); System.out.println(cert); } Here's another code sample that fetches a certificate chain from a KeyStore and converts it to a CertPath using a CertificateFactory:±M w‡ wd –€›€€‚€€€€€€€€€€€€€€€€‚ÿ // instantiate a KeyStore with type JKS KeyStore ks = KeyStore.getInstance("JKS"); // load the contents of the KeyStore ks.load(new FileInputStream("./keystore"), "password".toCharArray()); // fetch certificate chain stored with alias "sean" Certificate[] certArray = ks.getCertificateChain("sean"); // convert chain to a List List certList = Arrays.asList(certArray); // instantiate a CertificateFactory for X.509 CertificateFactory cf = CertificateFactory.getInstance("X.509"); // extract the certification path from // the List of Certificates CertPath cp = cf.generateCertPath(certList); Note that there is an existing method in CertificateFactory named generateCertificates that parses a sequence of Certificates. For encodings consisting of multiple certificates, use generateCertificates when you want to parse a collection of possibly unrelated certificates. Otherwise, use generateCertPath when you want to generate a CertPath and subsequently validate it with a CertPathValidator (discussed later).Ì{ÖwS wQ p€÷€€‚€ €‚‚€€€€€€€€€€€€‚ÿThe CertPathParameters InterfaceThe CertPathParameters interface is a transparent representation of the set of parameters used with a particular certification path builder or validation algorithm. Its main purpose is to group (and provide type safety for) all certification path parameter specifications. The CertPathParameters interface extends the Cloneable interface and defines a clone() method that does not throw an exception. All concrete implementations of this interface should implement and override the Object.clone() method, if necessary. This allows applications to clone any CertPathParameters object.Tó‡ w§wa €ç€€‚€€çÍÀ>Ÿ€‰€çޗùx€‰€€€€€€€çÐÞNõ€‰€‚ÿObjects implementing the CertPathParameters interface are passed as arguments to methods of the CertPathValidator and CertPathBuilder classes. Typically, a concrete implementation of the CertPathParameters interface will hold a set of input parameters specific to a particular certification path build or validation algorithm. For example, the PKIXParameters class is an implementation of the CertPathParameters interface that holds a set of input parameters for the PKIX certification path validation algorithm. One such parameter is the set of most-trusted CAs that the caller trusts for anchoring the validation process. This parameter among others is discussed in more detail in the section discussing the PKIXParameters class.NóS wBw[ „€ç€€‚€ €‚‚€€€€€€‚‚€ €‚‚€€ç n¬:€‰€§wBw†Šu‚ÿCertification Path Validation ClassesThe Java Certification Path API includes classes and interfaces for validating certification paths. An application uses an instance of the CertPathValidator class to validate a CertPath object. If successful, the result of the validation algorithm is returned in an object implementing the CertPathValidatorResult interface.The CertPathValidator ClassThe CertPathValidator class is an engine class used to validate a certification path.&§w'Bw# €€€‚ÿš_BwÏDwI `€¿€ä€€‚‚€€€€€€‚‚€€‚ÿCreating a CertPathValidator ObjectAs with all engine classes, the way to get a CertPathValidator object for a particular validation algorithm is to call one of the getInstance static factory methods on the CertPathValidator class: public static CertPathValidator getInstance(String algorithm) public static CertPathValidator getInstance(String algorithm, String provider) public static CertPathValidator getInstance(String algorithm, Provider provider)ê‹'Bw¹Gw_ Œ€€ä€€€€€ç”QꞀ‰€‚‚€€‚‚€€€€‚‚€€‚ÿThe algorithm parameter is the name of a certification path validation algorithm (for example, "PKIX"). Standard CertPathValidator algorithm names are listed in Appendix A.Validating a Certification PathOnce a CertPathValidator object is created, paths can be validated by calling the validate method, passing it the certification path to be validated and a set of algorithm-specific parameters: public final CertPathValidatorResult validate(CertPath certPath, CertPathParameters params) throws CertPathValidatorException, InvalidAlgorithmParameterExceptionÏDwIKwu ž€7€ä€çžaŠ€€‰€€€€€€€‚‚€€€€€€€€€€€€€€€€‚ÿIf the validation algorithm is successful, the result is returned in an object implementing the CertPathValidatorResult interface. Otherwise, a CertPathValidatorException is thrown. The CertPathValidatorException contains methods that return the CertPath, and if relevant, the index of the certificate that caused the algorithm to fail and the root exception or cause of the failure.Note that the CertPath and CertPathParameters passed to the validate method must be of a type that is supported by the validation algorithm. Otherwise, an InvalidAlgorithmParameterException is thrown. For example, a CertPathValidator instance that implements the PKIX algorithm validates CertPath objects of type X.509 and CertPathParameters that are an instance of PKIXParameters.'¹GwpKw$ €€ä€‚ÿCöIKw³MwM h€í€€ €‚‚€€€€€€€€€€€€‚ÿThe CertPathValidatorResult InterfaceThe CertPathValidatorResult interface is a transparent representation of the successful result or output of a certification path validation algorithm. Its main purpose is to group (and provide type safety for) all validation results. Like the CertPathParameters interface, CertPathValidatorResult extends Cloneable and defines a clone() method that does not throw an exception. This allows applications to clone any CertPathValidatorResult object.•.pKwTwg œ€]€€‚€€€€€çÍÀ>Ÿ€‰€€€€€€€€€€çØÿŒò€‰€‚ÿObjects implementing the CertPathValidatorResult interface are returned by the validate method of CertPathValidator (only when successful; otherwise a CertPathValidatorException is thrown with a description of the failure). Typically, a concrete implementation of the CertPathValidatorResult interface will hold a set of output parameters specific to a particular certification path validation algorithm. For example, the PKIXCertPathValidatorResult class is an impleme³MwTw†Šuntation of the CertPathValidatorResult interface which contains methods to get the output parameters of the PKIX certification path validation algorithm. One such parameter is the valid policy tree. This parameter among others is discussed in more detail in the section discussing the PKIXCertPathValidatorResult class.ý€³MwQ†wY €€I €€‚€€€€€€€€‚‚€€‚ÿHere's a simplified code sample that illustrates how to create a CertPathValidator and use it to validate a certification path. The sample assumes that the CertPath and CertPathParameters objects which are passed to the validate method have been previously created; a more complete example will be illustrated in the section describing the PKIX classes. // create CertPathValidator that implements the "PKIX" algorithm CertPathValidator cpv = null; try { cpv = CertPathValidator.getInstance("PKIX"); } catch (NoSuchAlgorithmException nsae) { System.err.println(nsae); System.exit(1); } // validate certification path ("cp") with specified parameters ("params") try { CertPathValidatorResult cpvResult = cpv.validate(cp, params); } catch (InvalidAlgorithmParameterException iape) { System.err.println("validation failed: " + iape); System.exit(1); } catch (CertPathValidatorException cpve) { System.err.println("validation failed: " + cpve); System.err.println("index of certificate that caused exception: " + cpve.getIndex()); System.exit(1); })ÒTwzˆwW |€¥€€ €‚‚€€€€€€‚‚€ €‚‚€€ç n¬:€‰€‚ÿCertification Path Building ClassesThe Java Certification Path API includes classes for building (or discovering) certification paths. An application uses an instance of the CertPathBuilder class to build a CertPath object. If successful, the result of the build is returned in an object implementing the CertPathBuilderResult interface.The CertPathBuilder ClassThe CertPathBuilder class is an engine class used to build a certification path.&Q†w ˆw# €€€‚ÿŽEzˆw.‹wI `€‹€ä€€‚‚€€€€€€‚‚€€‚ÿCreating a CertPathBuilder ObjectAs with all engine classes, the way to get a CertPathBuilder object for a particular build algorithm is to call one of the getInstance static factory method on the CertPathBuilder class: public static CertPathBuilder getInstance(String algorithm) public static CertPathBuilder getInstance(String algorithm, String provider) public static CertPathBuilder getInstance(String algorithm, Provider provider)Œ. ˆwºw^ Š€]€ä€€€€€çÀû֚€‰€‚‚€€‚‚€€€€‚‚€€‚ÿThe algorithm parameter is the name of a certification path builder algorithm (for example, "PKIX"). Standard CertPathBuilder algorithm names are listed in Appendix A.Building a Certification PathOnce a CertPathBuilder object is created, paths can be constructed by calling the build method, passing it an algorithm-specific parameter specification: public final CertPathBuilderResult build(CertPathParameters params) throws CertPathBuilderException, InvalidAlgorithmParameterException)Þ.‹w ÀwK d€œ€ä€ç—obN€‰€€€‚‚€€€€€€‚ÿIf the build algorithm is successful, the result is returned in an object implementing the CertPathBuilderResult interface. Otherwise, a CertPathBuilderException is thrown containing information about the failure; for example, the underlying exception (if any) and an error message.Note that the CertPathParameters passed to the build method must be of a type that is supported by the build algorithm. Otherwise, an InvalidAlgorithmParameterException is thrown.ºw Àw†Šu'ºw3Àw$ €€ä€‚ÿï’ Àw"Ãw] ˆ€%€€ €‚‚€€‚‚€€‚€€€€€€€€€€€€‚ÿThe CertPathBuilderResult InterfaceThe CertPathBuilderResult interface is a transparent representation of the result or output of a certification path builder algorithm. This interface contains a method to return the certification path that has been successfully built: public CertPath getCertPath()The purpose of the CertPathBuilderResult interface is to group (and provide type safety for) all build results. Like the CertPathValidatorResult interface, CertPathBuilderResult extends Cloneable and defines a clone() method that does not throw an exception. This allows applications to clone any CertPathBuilderResult object.Ê3Àw=ÅwQ p€•€€‚€€€€çޗùx€‰€‚‚€€€€€€‚ÿObjects implementing the CertPathBuilderResult interface are returned by the build method of CertPathBuilder.Here's a simplified code sample that illustrates how to create a CertPathBuilder and use it to build a certification path. The sample assumes that the CertPathParameters object which is passed to the build method has been previously created; a more complete example will be illustrated in the section describing the PKIX classes.W"Ãw”Èw? L€1€€‚€€‚ÿ // create CertPathBuilder that implements the "PKIX" algorithm CertPathBuilder cpb = null; try { cpb = CertPathBuilder.getInstance("PKIX"); } catch (NoSuchAlgorithmException nsae) { System.err.println(nsae); System.exit(1); } // build certification path using specified parameters ("params") try { CertPathBuilderResult cpbResult = cpb.build(params); CertPath cp = cpbResult.getCertPath(); System.out.println("build passed, path contents: " + cp); } catch (InvalidAlgorithmParameterException iape) { System.err.println("build failed: " + iape); System.exit(1); } catch (CertPathBuilderException cpbe) { System.err.println("build failed: " + cpbe); System.exit(1); }/È=ÅwÃËwg œ€‘€€ €‚‚€€€€€€€€çÐÞNõ€‰€‚‚€€€€€€€€‚ÿCertificate/CRL Storage ClassesThe Java Certification Path API also includes the CertStore class for retrieving certificates and CRLs from a repository. This is useful because it allows a caller to specify the repository a CertPathValidator or CertPathBuilder implementation should use to find certificates and CRLs (see the addCertStores method of PKIXParameters for an example).A CertPathValidator implementation may use the CertStore object that the caller specifies as a callback mechanism to fetch CRLs for performing revocation checks. Similarly, a CertPathBuilder may use the CertStore as a callback mechanism to fetch certitificates and, if performing revocation checks, CRLs.MÜ”ÈwÏwq °€¹€€‚€ €‚‚€€ç n¬:€‰€€çޗùx€‰€€çÍÀ>Ÿ€‰€‚‚€€€€€€‚ÿThe CertStore ClassThe CertStore class is an engine class used to provide the functionality of a certificate and certificate revocation list (CRL) repository. It can be used by CertPathBuilder and CertPathValidator implementations to find certificates and CRLs or as a general purpose certificate and CRL retrieval mechanism.Unlike the java.security.KeyStore class, which provides access to a cache of private keys and trusted certificates, a CertStore is designed to provide access to a potentially vast repository of untrusted certificates and CRLs. For example, an LDAP implementation of CertStore provides access to certificates and CRLs stored in one or more directories using the LDAP protocol.q?ÃËwx2 2€€€‚€€€€‚‚ÿAll public methods of CertStore objects are thread-safe. That is, multiple threads may concurrently invoke these methods on a single CertStore object (or more than one) with no ill effecÏwx†Šuts. This allows a CertPathBuilder to search for a CRL while simultaneously searching for further certificates, for instance.x.ÏwxJ b€]€ä€€‚‚€€€€€€‚‚€€‚ÿCreating a CertStore ObjectAs with all engine classes, the way to get a CertStore object for a particular repository type is to call one of the getInstance static factory methods on the CertStore class: public static CertStore getInstance(String type, CertStoreParameters params) public static CertStore getInstance(String type, CertStoreParameters params, String provider) public static CertStore getInstance(String type, CertStoreParameters params, Provider provider)¡>xŠxc ”€}€ä€€€€€繹螀‰€‚‚€€€€€€€€€€€€‚ÿThe type parameter is the name of a certificate repository type (for example, "LDAP"). Standard CertStore types are listed in Appendix A.The initialization parameters (params) are specific to the repository type. For example, the initialization parameters for a server-based repository may include the hostname and the port of the server. An InvalidAlgorithmParameterException is thrown if the parameters are invalid for this CertStore type. The getCertStoreParameters method returns the CertStoreParameters that were used to initialize a CertStore:sxxX ~€7€ä€‚€€‚€€‚‚€€€€çßՌ€‰€‚‚€€‚ÿ public final CertStoreParameters getCertStoreParameters()Retrieving CertificatesOnce you have created a CertStore object, you can retrieve certificates from the repository using the getCertificates method. This method takes a CertSelector (discussed in more detail later) object as an argument, which specifies a set of selection criteria for determining which certificates should be returned: public final Collection getCertificates(CertSelector selector) throws CertStoreExceptionQèŠxj xi  €Ñ€ä€€€€€€€€€‚‚€€€€€€€€€€€€€€‚ÿThis method returns a Collection of java.security.cert.Certificate objects that satisfy the selection criteria. An empty Collection is returned if there are no matches. A CertStoreException is usually thrown if an unexpected error condition is encountered, such as a communications failure with a remote repository.For some CertStore implementations, it may not be feasible to search the entire repository for certificates or CRLs that match the specified selection criteria. In these instances, the CertStore implementation may use information that is specified in the selectors to locate certificates and CRLs. For instance, an LDAP CertStore may not search all entries in the directory. Instead, it may just search entries that are likely to contain the certificates it is looking for. If the CertSelector provided does not provide enough information for the LDAP CertStore to determine which entries it should look in, the LDAP CertStore may throw a CertStoreException.‰,xóx] ˆ€Y€ä€‚€€‚‚€€çßՌ€‰€‚‚€€‚€€€€€€‚ÿRetrieving CRLsYou can also retrieve CRLs from the repository using the getCRLs method. This method takes a CRLSelector (discussed in more detail later) object as an argument, which specifies a set of selection criteria for determining which CRLs should be returned: public final Collection getCRLs(CRLSelector selector) throws CertStoreExceptionThis method returns a Collection of java.security.cert.CRL objects that satisfy the selection criteria. An empty Collection is returned if there are no matches.'j xx$ €€ä€‚ÿ›HóxÁAxS t€‘€€ €‚‚€€€€€€€€€€€€€€‚ÿThe CertStoreParameters InterfaceThe CertStoreParameters interface is a transparent representation of the set of parameters used with a partixÁAx†Šucular CertStore. Its main purpose is to group (and provide type safety for) all certificate storage parameter specifications. The CertStoreParameters interface extends the Cloneable interface and defines a clone method that does not throw an exception. Implementations of this interface should implement and override the Object.clone() method, if necessary. This allows applications to clone any CertStoreParameters object.Š4xKCxV z€i€€‚€€€€€€€€çlÙF€‰€ç1áÍ €‰€‚‚ÿObjects implementing the CertStoreParameters interface are passed as arguments to the getInstance method of the CertStore class. Two classes implementing the CertStoreParameters interface are defined in this API: the LDAPCertStoreParameters and the CollectionCertStoreParameters classes.¢ÁAxOExb ’€E€ä€€‚‚€€€€€€€€‚‚ïq”YJdk14doc.3.hlp€‰€‚ÿThe LDAPCertStoreParameters ClassThe LDAPCertStoreParameters class is an implementation of the CertStoreParameters interface and holds a set of minimal initialization parameters (host and port number of the directory server) for retrieving certificates and CRLs from a CertStore of type LDAP.Please refer to the LDAPCertStoreParameters API documentation for more detailed information on this class.í†KCxŸ€‰€€€‚ÿThe PKIXParameters ClassThis class (which implements the CertPathParameters interface) specifies the set of input parameters defined by the PKIX certification path validation algorithm. It also includes a few additional useful parameters.An X.509 CertPath object and a PKIXParameters object are passed as arguments to the validate method of a CertPathValidator instance implementing the PKIX algorithm. The CertPathValidator uses the parameters to initialize the PKIX certification path validation algorithm.'@Ky×My$ €€ä€‚ÿÕ°My €y= H€«€ɀ€€‚‚€€‚‚€€‚ÿCreating a PKIXParameters ObjectTo instantiate a PKIXParameters object, a caller must specify "the most-trusted CA(s)" as defined by the PKIX validation algorithm. The most-trusted CAs can be specified using one of two constructors: public PKIXParameters(Set trustAnchors) throws InvalidAlgorithmParameterException public PKIXParameters(KeyStore keystore) throws KeyStoreException, InvalidAlgorithmParameterException×My €y†ŠuœW×Myɂyf š€¯€ɀ€€€€€€€‚‚€€‚‚€€ï›”YJdk14doc.3.hlp€‰€‚ÿThe first constructor allows the caller to specify the most-trusted CAs as a Set of TrustAnchor objects. Alternatively, a caller can use the second constructor and specify a KeyStore instance containing trusted certificate entries, each of which will be considered as a most-trusted CA.Setting Parameter ValuesOnce a PKIXParameters object has been created, a caller can set (or replace the current value of) various parameters. A few of the methods for setting parameters are described here. Please refer to the PKIXParameters API documentation for details on the other methods.U €y…yU x€€ɀ€‚€€€€€€€€‚‚€€‚€€€€‚ÿThe setInitialPolicies method sets the initial policy identifiers, as specified by the PKIX validation algorithm. The elements of the Set are object identifiers (OIDs) represented as a String. If the initialPolicies parameter is null or not set, any policy is acceptable: public void setInitialPolicies(Set initialPolicies)The setDate method sets the time for which the validity of the path should be determined. If the date parameter is not set or is null, the current date is used:)ÛɂyG‡yN j€·€ɀ€‚€€‚€€‚‚€€‚€€‚‚€€‚ÿ public void setDate(Date date)The setPolicyMappingInhibited method sets the value of the policy mapping inhibited flag. The default value for the flag, if not specified, is false: public void setPolicyMappingInhibited(boolean val)The setExplicitPolicyRequired method sets the value of the explicit policy required flag. The default value for the flag, if not specified, is false: public void setExplicitPolicyRequired(boolean val)G…y։yH ^€€ɀ€€€‚‚€€‚€€€€€€‚ÿThe setAnyPolicyInhibited method sets the value of the any policy inhibited flag. The default value for the flag, if not specified, is false: public void setAnyPolicyInhibited(boolean val)The setTargetCertConstraints method allows the caller to set constraints on the target or end-entity certificate. For example, the caller can specify that the target certificate must contain a specific subject name. The constraints are specified as a CertSelector object. If the selector parameter is null or not set, no constraints are defined on the target certificate:OðG‡y%Œy_ Œ€á€ɀ€‚€€‚€€€€€€€€€€€€€€€€‚ÿ public void setTargetCertConstraints(CertSelector selector)The setCertStores method allows a caller to specify a List of CertStore objects that will be used by a PKIX implementation of CertPathValidator to find CRLs for path validation. This provides an extensible mechanism for specifying where to locate CRLs. The setCertStores method takes a List of CertStore objects as a parameter. The first CertStores in the list may be preferred to those that appear later. Ð։yEŽyP n€¡€ɀ€‚€€‚€€€€ç☮¹€‰€‚‚€€‚ÿ public void setCertStores(List stores)The setCertPathCheckers method allows a caller to extend the PKIX validation algorithm by creating implementation-specific certification path checkers. For example, this mechanism can be used to process private certificate extensions. The setCertPathCheckers method takes a list of PKIXCertPathChecker (discussed later) objects as a parameter: public void setCertPathCheckers(List checkers)Šn%Œy÷Ày8 >€Ý€ɀ€€€€€€€‚ÿThe setRevocationEnabled method allows a caller to disable revocation checking. Revocation checking is enabled by default, since it is a required check of the PKIX validation algorithm. However, PKIX does not define how revocation should be checked. An implementation may use CRLs or OCSP, for example. This method allows the caller to disable the implementation's default revocation EŽy÷Ày†Šuchecking mechanism if it is not appropriate. A different revocation checking mechanism can then be specified by calling the setCertPathCheckers method, and passing it a PKIXCertPathChecker that implements the alternate mechanism.G÷EŽy>ÃyP n€ï€ɀ€‚€€‚€€€€€€€€‚‚€€‚ÿ public void setRevocationEnabled(boolean val)The setPolicyQualifiersRejected method allows a caller to enable or disable policy qualifier processing. When a PKIXParameters object is created, this flag is set to true. This setting reflects the most common (and simplest) strategy for processing policy qualifiers. Applications that want to use a more sophisticated policy must set this flag to false. public void setPolicyQualifiersRejected(boolean qualifiersRejected)/ß÷ÀymÄyP n€¿€ɀ€€‚‚€€ï›”YJdk14doc.3.hlp€‰€‚‚ÿGetting Parameter ValuesThe current values for each of the parameters can be retrieved using an appropriate get method. Please refer to the PKIXParameters API documentation for further details on these methods.`>ÃyÍÆy] ˆ€€ä€€‚‚çžaŠ€€‰€€€€€€€€€€çÍÀ>Ÿ€‰€‚ÿThe PKIXCertPathValidatorResult ClassThis class (which implements the CertPathValidatorResult interface) represents the result of the PKIX certification path validation algorithm. It holds the valid policy tree and subject public key resulting from the validation algorithm, and includes methods (getPolicyTree() and getPublicKey()) for returning them. Instances of PKIXCertPathValidatorResult are returned by the validate method of CertPathValidator objects implementing the PKIX algorithm.ËmÄy˜ÊyŒ F€ä€‚ïš”YJdk14doc.3.hlp€‰€‚‚€€‚‚‚‚€€€€€€ÌPEF("http://www.ietf.org/internet-drafts/draft-ietf-pkix-new-part1-08.txt",`',1)€‰€‚ÿPlease refer to the PKIXCertPathValidatorResult API documentation for more detailed information on this class.The PolicyNode Interface and PolicyQualifierInfo ClassThe PKIX validation algorithm defines several outputs related to certificate policy processing. Most applications will not need to use these outputs, but all providers that implement the PKIX validation or building algorithm must support them.The PolicyNode interface represents a node of a valid policy tree resulting from a successful execution of the PKIX certification path validation. An application can obtain the root of a valid policy tree using the getPolicyTree method of PKIXCertPathValidatorResult. Policy Trees are discussed in more detail in the PKIX Certificate and CRL profile.‰CÍÆy!ÍyF Z€‡€ä€‚€€€€€€€€‚‚€€‚ÿThe getPolicyQualifiers method of PolicyNode returns a Set of PolicyQualifierInfo objects, each of which represents a policy qualifier contained in the Certificate Policies extension of the relevant certificate that this policy applies to.Most applications will not need to examine the valid policy tree and policy qualifiers. They can achieve their policy processing goals by setting the policy-related parameters in PKIXParameters. However, the valid policy tree is available for more sophisticated applications, especially those that process policy qualifiers.3Á˜ÊyTÏyr ²€ƒ€ä€‚€ïœ”YJdk14doc.3.hlp€‰€€ïȔYJdk14doc.3.hlp€‰€‚‚€€‚‚‚ÿPlease refer to the PolicyNode and PolicyQualifierInfo API documentation for more detailed information on these classes.Example of Validating a Certification Path using the PKIX algorithmThis is an example of validating a certification path with the PKIX validation algorithm. The example ignores most of the exception handling and assumes that the certification path and public key of the trust anchor have already been created.8Þ!Íy˜zZ ‚€œ€ä€‚€çÍÀ>Ÿ€‰€‚‚€€‚ç1î뀉€€€‚‚€€‚ÿFirst, create the CertPathValidator, as in the following line: CertPaTÏy˜z†ŠuthValidator cpv = CertPathValidator.getInstance("PKIX");The next step is to create a TrustAnchor object. This will be used as an anchor for validating the certification path. In this example, the most-trusted CA is specified as a public key and name (name constraints are not applied and are specified as null): TrustAnchor anchor = new TrustAnchor("O=xyz,C=us", pubkey, null);žWTÏy6zG \€¯€ä€çÐÞNõ€‰€€€€€‚‚€€‚‚ÿThe next step is to create a PKIXParameters object. This will be used to populate the parameters used by the PKIX algorithm. In this example, we pass to the constructor a Set containing a single element - the TrustAnchor we created in the previous step: PKIXParameters params = new PKIXParameters(Collections.singleton(anchor));Next, we populate the parameters object with constraints or other parameters used by the validation algorithm. In this example, we enable the explicitPolicyRequired flag and specify a set of initial policy OIDs (the contents of the set are not shown):ʉ˜zzA P€€ä€‚€€‚‚‚€€‚ÿ // set other PKIX parameters here params.setExplicitPolicyRequired(true); params.setInitialPolicies(policyIds);The final step is to validate the certification path using the input parameter set we have created: try { PKIXCertPathValidatorResult result = (PKIXCertPathValidatorResult) cpv.validate(certPath, params); PolicyNode policyTree = result.getPolicyTree(); PublicKey subjectPublicKey = result.getPublicKey(); } catch (CertPathValidatorException cpve) { System.out.println("Validation failure, cert[" + cpve.getIndex() + "] :" + cpve.getMessage()); }$Ý6z$ zG \€»€ä€€€€€€€‚‚€€‚‚€€‚ÿIf the validation algorithm is successful, the policy tree and subject public key resulting from the validation algorithm are obtained using the getPolicyTree and getPublicKey methods of PKIXCertPathValidatorResult.Otherwise, a CertPathValidatorException is thrown and the caller can catch the exception and print some details about the failure, such as the error message and the index of the certificate that caused the failure.The PKIXBuilderParameters Classvzš zg œ€€ä€‚çÐÞNõ€‰€çޗùx€€‰€‚‚€€€€çޗùx€‰€€€€(€‚ÿThis class (which extends the PKIXParameters class) specifies the set of parameters to be used with CertPathBuilders that build certification paths validated against the PKIX certification path validation algorithm.A PKIXBuilderParameters object is passed as an argument to the build method of a CertPathBuilder instance implementing the PKIX algorithm. All PKIX CertPathBuilders must return certification paths which have been validated according to the PKIX certification path validation algorithm. Ø$ z€ z2 2€±€ä€‚€€€€‚ÿPlease note that the mechanism that a PKIX CertPathBuilder uses to validate a constructed path is an implementation detail. For example, an implementation might attempt to first build a path with minimal validation and then fully validate it using an instance of a PKIX CertPathValidator, whereas a more efficient implementation may validate more of the path as it is building it, and backtrack to previous stages if it encounters validation failures or dead-ends.'š zË z$ €€ä€‚ÿ]€ z4@zU x€€ɀ€€‚‚€€€€€(€€€€€€€€€‚ÿCreating a PKIXBuilderParameters ObjectCreating a PKIXBuilderParameters object is similar to creating a PKIXParameters object. However, a caller must specify constraints on the target or end-entity certificate when creating a PKIXBuilderParameters object. These constraints should provide the CertPathBuilder with enough information to find the target certificate. The constraints are specified as a CertSelector object. Use one of the following constructors to crË z4@z†Šueate a PKIXBuilderParameters object:ö«Ë z*CzK d€W€ɀ€‚€€€‚‚€€€€€€‚ÿ public PKIXBuilderParameters(Set trustAnchors, CertSelector targetConstraints) throws InvalidAlgorithmParameterException public PKIXBuilderParameters(KeyStore keystore, CertSelector targetConstraints) throws KeyStoreException, InvalidAlgorithmParameterException Getting/Setting Parameter ValuesThe PKIXBuilderParameters class inherits all of the parameters that can be set in the PKIXParameters class. In addition, the setMaxPathLength method can be called to place a limit on the maximum number of certificates in a certification path:õŽ4@zFzA P€i€ɀ€‚€€‚€€€€€€‚ÿ public void setMaxPathLength(int maxPathLength)The maxPathLength parameter specifies the maximum number of non-self-issued intermediate certificates that may exist in a certification path. A CertPathBuilder instance implementing the PKIX algorithm must not build paths longer than the length specified. If the value is 0, the path can only contain a single certificate. If the value is -1, the path length is unconstrained (i.e., there is no maximum). The default maximum path length, if not specified, is 5. This method is useful to prevent the CertPathBuilder from spending resources and time constructing long paths that may or may not meet the caller's requirements.É*Cz7IzO l€“€ɀ€‚€€€€‚‚€€‚€€€€€€‚ÿIf any of the CA certificates in the path contain a Basic Constraints extension, the value of the pathLenConstraint component of the extension overrides the value of the maxPathLength parameter whenever the result is a certification path of smaller length. There is also a corresponding getMaxPathLength method for retrieving this parameter: public int getMaxPathLength()Also, the setCertStores method (inherited from the PKIXParameters class) is typically used by a PKIX implementation of CertPathBuilder to find Certificates for path construction as well as finding CRLs for path validation. This provides an extensible mechanism for specifying where to locate Certificates and CRLs.(Fz_Iz% €€ɀ€‚ÿ€7IzßLzz € €ä€€‚‚€€ç—obN€‰€€€€€çޗùx€‰€‚‚€€€€€€€€€€€€‚ÿThe PKIXCertPathBuilderResult ClassThis class (which extends the PKIXCertPathValidatorResult class and implements the CertPathBuilderResult interface) represents the successful result of the PKIX certification path construction algorithm. Instances of PKIXCertPathBuilderResult are returned by the build method of CertPathBuilder objects implementing the PKIX algorithm.The getCertPath method of a PKIXCertPathBuilderResult instance always returns a CertPath object validated using the PKIX certification path validation algorithm. The returned CertPath object does not include the most-trusted CA certificate that may have been used to anchor the path. Instead, use the getTrustAnchor method to get the Certificate of the most-trusted CA.Rð_Iz1Ozb ’€á€ä€‚YJdk14doc.3.hlp€‰€‚‚€€‚‚€€‚‚çޗùx€‰€‚ÿPlease refer to the PKIXCertPathBuilderResult API documentation for more detailed information on this class.Example of Building a Certification Path using the PKIX algorithmThis is an example of of building a certification path validated against the PKIX algorithm. Some details have been left out, such as exception handling, and the creation of the trust anchors and certificates for populating the CertStore.First, create the CertPathBuilder, as in the following example:ú£ßLz7‚zW |€G€ä€‚€€‚€€‚‚ç¯AˆÁ€‰€€€‚‚€€‚ÿ CertPathBuilder cpb = CertPathBuilder.getInstance("PKIX");This call creates a CertPathBuilder object that re1Oz7‚z†Šuturns paths validated against the PKIX algorithm.The next step is to create a PKIXBuilderParameters object. This will be used to populate the PKIX parameters used by the CertPathBuilder: // Create parameters object, passing it a Set of // trust anchors for anchoring the path // and a target subject DN. X509CertSelector targetConstraints = new X509CertSelector(); targetConstraints.setSubject("CN=alice,O=xyz,C=us"); PKIXBuilderParameters params = new PKIXBuilderParameters(trustAnchors, targetConstraints);=ù1Ozt„zD V€ó€ä€€€€€€€‚‚€€‚‚ÿThe next step is to specify the CertStore that the CertPathBuilder will use to look for certificates and CRLs. For this example, we will populate a Collection CertStore with the certificates and CRLs: CollectionCertStoreParameters ccsp = new CollectionCertStoreParameters(certsAndCrls); CertStore store = CertStore.getInstance("Collection", ccsp); params.addCertStore(store);The next step is to build the certification path using the input parameter set we have created:b7‚zֆzL f€-€ä€‚€€‚€€€€€€€€‚ÿ try { PKIXCertPathBuilderResult result = (PKIXCertPathBuilderResult) cpb.build(params); CertPath cp = result.getCertPath(); } catch (CertPathBuilderException cpbe) { System.out.println("build failed: " + cpbe.getMessage()); }If the CertPathBuilder cannot build a path that meets the supplied parameters it will throw a CertPathBuilderException. Otherwise, the validated certification path can be obtained from the PKIXCertPathBuilderResult using the getCertPath method.1×t„zŠzZ ‚€¯€ä€‚€€‚‚€€€€‚‚€€€€€€€€€€‚ÿThe PKIXCertPathChecker ClassThis section describes a powerful class that allows a user to extend a PKIX CertPathValidator or CertPathBuilder implementation. This is an advanced feature that most users will not need to understand. However, anyone implementing a PKIX service provider should read this section.The PKIXCertPathChecker class is an abstract class that executes one or more checks on an X.509 certificate. Developers should create concrete implementations of the PKIXCertPathChecker class when it is necessary to dynamically extend a PKIX CertPathValidator or CertPathBuilder implementation at runtime. The following are a few examples of when a PKIXCertPathChecker implementation is useful:'ֆz.Šz$ €€ä€‚ÿ,˜ŠzZz” ö€1€-€€€€€€€€Ì/EF("http://www.ietf.org/rfc/rfc2560.txt",`',1)€‰€‚‚€€€€€€€€€€‚ÿ· If the revocation mechanism supplied by a PKIX CertPathValidator or CertPathBuilder implementation is not adequate. For example, a developer might implement a PKIXCertPathChecker that uses OCSP ( RFC 2560) to check that certificates have not been revoked.· If the user wants to recognize certificates containing a critical private extension. Since the extension is private, it will not be recognized by the PKIX CertPathValidator or CertPathBuilder implementation and a CertPathValidatorException will be thrown. In this case, a developer can implement a PKIXCertPathChecker that recognizes and processes the critical private extension.ýÇ.ŠzWŽz6 :€€-€‚€€‚‚€€‚‚ÿ· If the developer wants to record information about each certificate processed for debugging or display purposes.· If the user wants to reject certificates with certain policy qualifiers.ÇkZz*Àz\ †€×€ä€€€€€€€€€€€€€€€€€€€‚‚ÿThe setCertPathCheckers method of the PKIXParameters class allows a user to pass a List of PKIXCertPathChecker objects to a PKIX CertPathValidator or CertPathBuilder implementation. Each of the PKIXCertPathChecker objects will be called in turn, for each certificate processed by the PKIX CertPathValidator or CertPWŽz*Àz†ŠuathBuilder implementation.5ïWŽz_ÂzF Z€ß€ɀ€€‚‚€€€€€€‚‚€€‚ÿCreating and using a PKIXCertPathChecker ObjectThe PKIXCertPathChecker class does not have a public constructor. This is intentional, since creating an instance of PKIXCertPathChecker is an implementation-specific issue. For example, the constructor for a PKIXCertPathChecker implementation that uses OCSP to check a certificate's revocation status may require the hostname and port of the OCSP server: PKIXCertPathChecker checker = new OCSPChecker("ocsp.sun.com", 1321);•*ÀzôÄzv º€?€ɀ€€€€€‚‚€€‚€€€€€€‚‚€€‚‚€€€€€€€€€€‚ÿOnce the checker has been instantiated, it can be added as a parameter using the addCertPathChecker method of the PKIXParameters class: params.addCertPathChecker(checker);Alternatively, a List of checkers can be added using the setCertPathCheckers method of the PKIXParameters class.Implementing a PKIXCertPathChecker ObjectThe PKIXCertPathChecker class is abstract. It has four methods (check, getSupportedExtensions, init, and isForwardCheckingSupported) that all concrete subclasses must implement.²_Âz÷ÇzQ p€e€ɀ€‚€€€€€€€€€€€€€€‚ÿImplementing a PKIXCertPathChecker may be trivial or complex. A PKIXCertPathChecker implementation can be stateless or stateful. A stateless implementation does not maintain state between successive calls of the check method. For example, a PKIXCertPathChecker that checks that each certificate contains a particular policy qualifier is stateless. In contrast, a stateful implementation does maintain state between successive calls of the check method. The check method of a stateful implementation usually depends on the contents of prior certificates in the certification path. For example, a PKIXCertPathChecker that processes the NameConstraints extension is stateful.ùºôÄzðÊz? L€u€ɀ€‚€€€(€€(€€€‚ÿAlso, the order in which the certificates processed by a service provider implementation are presented (passed) to a PKIXCertPathChecker is very important, especially if the implementation is stateful. Depending on the algorithm used by the service provider, the certificates may be presented in reverse or forward order. A reverse ordering means that the certificates are ordered from the most trusted CA (if present) to the target subject, whereas a forward ordering means that the certificates are ordered from the target subject to the most trusted CA. The order must be made known to the PKIXCertPathChecker implementation, so that it knows how to process consecutive certificates.(÷ÇzËz% €€ɀ€‚ÿµðÊz&ÎzY €€k€-€€‚‚€€‚‚€€‚€€€€€€€€€€‚ÿInitializing a PKIXCertPathChecker ObjectThe init method initializes the internal state of the checker: public abstract void init(boolean forward)All stateful implementations should clear or initialize any internal state in the checker. This prevents a service provider implementation from calling a checker that is in an uninitialized state. It also allows stateful checkers to be reused in subsequent operations without reinstantiating them. The forward parameter indicates the order of the certificates presented to the PKIXCertPathChecker. If forward is true, the certificates are presented from target to trust anchor; if false, from trust anchor to target.ãrËz{q °€å€-€‚€€‚‚€€€€€€‚‚€€‚€€€(€€€€(€‚‚€€€€‚ÿForward CheckingThe isForwardCheckingSupported method returns a boolean that indicates if the PKIXCertPathChecker supports forward checking: public abstract boolean isForwardCheckingSupported()All PKIXCertPathChecker implementations must support reverse checking. A PKIXCertPathChecker implementation may support forward checkin&Îz{†Šug.Supporting forward checking improves the efficiency of CertPathBuilders that build forward, since it allows paths to be checked as they are built. However, some stateful PKIXCertPathCheckers may find it difficult or impossible to support forward checking.'Ÿ&Îz<{i  €}€-€‚€€‚‚€€€€€€€€‚‚€€‚€€€€€€€€‚ÿSupported ExtensionsThe getSupportedExtensions method returns an immutable Set of OID Strings for the X.509 extensions that the PKIXCertPathChecker implementation supports (i.e., recognizes, is able to process): public abstract Set getSupportedExtensions()The method should return null if no extensions are processed. All implementations should return the Set of OID Strings that the check method may process.Ç{K{H ^€€-€‚€€€€‚‚€€‚‚‚‚€€‚ÿA CertPathBuilder can use this information to identify certificates with unrecognized critical extensions, even when performing a forward build with a PKIXCertPathChecker that does not support forward checking.Executing the CheckThe following method executes a check on the certificate: public abstract void check(Certificate cert, Collection unresolvedCritExts) throws CertPathValidatorExceptionÙ<{j{F Z€³€-€€€€€€€€€‚‚€€‚ÿThe unresolvedCritExts parameter contains a collection of OIDs as Strings. These OIDs represent the set of critical extensions in the certificate that have not yet been resolved by the certification path validation algorithm. Concrete implementations of the check method should remove any critical extensions that it processes from the unresolvedCritExts parameter.If the certificate does not pass the check(s), a CertPathValidatorException should be thrown.RçK{Œ {k €€Ï€-€‚€€‚‚€€€€€€€€€€€€€€€€€€€€‚ÿCloning a PKIXCertPathCheckerThe PKIXCertPathChecker class implements the Cloneable interface. All stateful PKIXCertPathChecker implementations must override the clone method if necessary. The default implementation of the clone method calls the Object.clone method, which performs a simple clone by copying all fields of the original object to the new object. A stateless implementation should not override the clone method. However, all stateful implementations must ensure that the default clone method is correct, and override it if necessary. For example, a PKIXCertPathChecker that stores state in an array must override the clone method to make a copy of the array, rather than just a reference to the array.œbj{X {: B€Å€-€‚€€€€€€‚‚ÿThe reason that PKIXCertPathChecker objects are Cloneable is to allow a PKIX CertPathBuilder implementation to efficiently backtrack and try another path when a potential certification path reaches a dead end or point of failure. In this case, the implementation is able to restore prior path validation states by restoring the cloned objects.æ}Œ {JE{i  €û€ɀ€€‚‚€€‚‚€€‚ÿExampleThis is an example of a stateless PKIXCertPathChecker implementation. It checks if a private extension exists in a certificate and processes it according to some rules. import java.security.cert.Certificate; import java.security.cert.X509Certificate; import java.util.Collection; import java.util.Collections; import java.util.Set; import java.security.cert.PKIXCertPathChecker; import java.security.cert.CertPathValidatorException; public class MyChecker extends PKIXCertPathChecker { private static Set supportedExtensions = Collections.singleton("2.16.840.1.113730.1.1"); /* * Initialize checker */ public void init(boolean forward) throws CertPathValidX {JE{†ŠuatorException { // nothing to initialize } public Set getSupportedExtensions() { return supportedExtensions; } public boolean isForwardCheckingSupported() { return true; } /* * Check certificate for presence of Netscape's * private extension * with OID "2.16.840.1.113730.1.1" */ public void check(Certificate cert, Collection unresolvedCritExts) throws CertPathValidatorException { X509Certificate xcert = (X509Certificate) cert; byte[] ext = xcert.getExtensionValue("2.16.840.1.113730.1.1"); if (ext == null) return; // // process private extension according to some // rules - if check fails, throw a // CertPathValidatorException ... // {insert code here} // remove extension from collection of unresolved // extensions (if it exists) if (unresolvedCritExts != null) unresolvedCritExts.remove("2.16.840.1.113730.1.1"); } }.ïX {xG{? L€ß€ɀ€€‚‚€€‚‚€€‚ÿHow a PKIX Service Provider implementation should use a PKIXCertPathCheckerEach PKIXCertPathChecker object must be initialized by a service provider implementation before commencing the build or validation algorithm, for example: List checkers = params.getCertPathCheckers(); ListIterator li = checkers.listIterator(); while (li.hasNext()) { PKIXCertPathChecker checker = (PKIXCertPathChecker) li.next(); checker.init(false); }ÉJE{€I{? L€“€ɀ€€€€€‚‚€€‚ÿFor each certificate that it validates, the service provider implementation must call the check method of each PKIXCertPathChecker object in turn, passing it the certificate and any remaining unresolved critical extensions: ListIterator li = checkers.listIterator(); while (li.hasNext()) { PKIXCertPathChecker checker = (PKIXCertPathChecker) li.next(); checker.check(cert, unresolvedCritExts); }ÑxG{•K{D V€£€ɀ€€€€€€€€€€€‚ÿIf any of the checks throw a CertPathValidatorException, a CertPathValidator implementation should terminate the validation procedure. However, a CertPathBuilder implementation may simply log the failure and continue to search for other potential paths. If all of the checks are successful, the service provider implementation should check that all critical extensions have been resolved and if not, consider the validation to have failed. For example:—b€I{,M{5 8€Å€ɀ€‚€€‚ÿ if (unresolvedCritExts != null && !unresolvedCritExts.isEmpty()) { // note that a CertPathBuilder may have an enclosing // try block to catch the exception below and continue on error throw new CertPathValidatorException ("Unrecognized Critical Extension"); }ˆE•K{ŽO{C T€‹€ä€€€€€€€€€€(€‚ÿAs discussed in the previous section, a CertPathBuilder implementation may need to backtrack when a potential certification path reaches a dead end or point of failure. Backtracking in this context implies returning to the previous certificate in the path and checking for other potential paths. If the CertPathBuilder implementation is validating the path as it is building it, it will need to restore the previous state of each PKIXCertPathChecker. It can do this by making clones of the PKIXCertPathChecker objects before each certificate is processed, for example:T!,M{{3 4€C€ä€‚€€‚ÿ /* clone checkŽO{{†Šuers */ List newList = new ArrayList(checkers); ListIterator li = newList.listIterator(); while (li.hasNext()) { PKIXCertPathChecker checker = (PKIXCertPathChecker) li.next(); li.set(checker.clone()); }œ…ŽO{т{8 >€ €€ €‚‚ç+€—Y€‰€‚‚‚‚ÿImplementing a Service ProviderThis section is intended for experienced programmers wishing to create their own provider packages supplying certification path service implementations. This section assumes you have read the document: How to Implement a Provider for the Java Cryptography Architecture.The following engine classes are defined in the Java Certification Path API: Ɓ{܃{E X€€ä€€€€‚‚€€€‚‚€€€‚‚ÿ· CertPathValidator - used to validate certification paths· CertPathBuilder - used to build certification paths· CertStore - used to retrieve certificates and CRLs from a repository$àт{ˆ{D V€Á€€€€‚‚€€€€€€€€‚ÿIn addition, the pre-existing CertificateFactory engine class has been enhanced in the J2SDK, v 1.4 to support generation of certification paths.The application interfaces supplied by an engine class are implemented in terms of a "Service Provider Interface" (SPI). The name of each SPI class is the same as that of the corresponding engine class, followed by "Spi". For example, the SPI class corresponding to the CertPathValidator engine class is the CertPathValidatorSpi class. Each SPI class is abstract. To supply the implementation of a particular type of service, for a specific algorithm or type, a provider must subclass the corresponding SPI class and provide implementations for all the abstract methods. For example, the CertStore class provides access to the functionality of retrieving certificates and CRLs from a repository. The actual implementation supplied in a CertStoreSpi subclass would be that for a specific type of certificate repository, such as LDAP.<ü܃{<‰{@ N€ù€€‚€€‚‚ç1vp€€€‰€‚‚ÿSteps to Implement and Integrate a ProviderDevelopers should follow the required steps listed in the How To Implement A Provider for the Java Cryptography Architecture document. Here are some additional rules to follow for certain steps:$íˆ{`Š{7 <€Û€ä€€‚‚€(€€(€‚‚ÿStep 3: Write your "Master Class", a subclass of ProviderThese are the properties that must be defined for the certification path services, where the algorithm name is substituted for algName, and certstore type for storeType:§\<‰{‹{K f€ž€ɀ€€€(€‚‚€€€(€‚‚€€€(€‚‚ÿ· CertPathValidator.algName· CertPathBuilder.algName· CertStore.storeType#à`Š{*{C T€Á€ä€ç ߀‰€€(€€(€€€‚ÿSee Appendix A for the standard names that are defined for algName and storeType. The value of each property must be the fully qualified name of the class implementing the specified algorithm, or certstore type. That is, it must be the package name followed by the class name, where the two are separated by a period. For example, a provider sets the CertPathValidator.PKIX property to have the value "sun.security.provider.certpath.PKIXCertPathValidator" as follows:'‹{Q{$ €€ä€‚ÿƒZ*{ԍ{) "€Ž€ɀ€€‚‚ÿput("CertPathValidator.PKIX", "sun.security.provider.certpath.PKIXCertPathValidator")²†Q{†{, &€ €ä€€€‚‚ÿIn addition, service attributes can be defined for the certification path services. These attributes can be used as filters for selecting service providers. See Appendix A for the definition of some standard service attributes. For example, a provider may set the ValidationAlgorithm service attribute to the name of an RFC or specification that defines the PKIX validation algorithm:kBԍ{ À{) "€„€ɀ€€‚‚ÿput("CertPathValidator.PKIX ValidationAlgorithm", "RFC2459");†{ À{†Šuǜ†{ÓÀ{+ $€9€ä€€‚‚‚‚ÿStep 8: Document your Provider and its Supported ServicesCertification path service providers should document the following information for each SPI:“` À{fÃ{3 4€Á€ɀ€€‚‚‚‚€€‚ÿCertificate FactoriesA provider should document what types of certification paths (and the version numbers of the certificates in the path, if relevant) can be created by the factory. A provider should describe the ordering of the certificates in the certification path, as well as the contents.A provider should document the list of encoding formats supported. This is not technically necessary, since the client can request them by calling the getCertPathEncodings method. However, the documentation should describe each encoding format in more detail and reference any standards when applicable.j.ÓÀ{ÐÄ{< F€]€ɀ€‚€€‚‚€€€€‚‚ÿCertification Path Validators A provider should document any relevant information regarding the CertPathValidator implementation, including the types of certification paths that it validates. In particular, a PKIX CertPathValidator implementation should document the following information:àfÃ{èÅ{8 >€Á€-€€‚€€‚€€‚‚ÿ· The RFC or specification it is compliant with. · The mechanism it uses to check that certificates have not been revoked. · Any optional certificate or CRL extensions that it recognizes and how it processes them.€HÐÄ{hÇ{8 >€‘€ɀ€€‚‚€€€€‚‚ÿCertification Path BuildersA provider should document any relevant information regarding the CertPathBuilder implementation, including the types of certification paths that it creates and whether or not they are validated. In particular a PKIX CertPathBuilder implementation should document the following information:ŒèÅ{iÊ{E X€y€-€€‚€€‚€€‚€€‚€€‚ÿ· The RFC or specification it is compliant with. · The mechanism it uses to check that certificates have not been revoked. · Any optional certificate or CRL extensions that it recognizes and how it processes them. · Details on the algorithm it uses for finding certification paths. Ex: depth-first, breadth-first, forward (i.e., from target to trust anchor(s)), reverse (i.e., from trust anchor(s) to target). · The algorithm it uses to select and sort potential certificates. For example, given two certificates that are potential candidates for the next certificate in the path, what criteria are used to select one before the other? What criteria are used to reject a certificate? „GhÇ{íË{= H€€-€€‚€€€€€€‚‚ÿ· If applicable, the algorithm it uses for backtracking or constructing another path (i.e., when potential paths do not meet constraints). · The types of CertStore implementations that have been tested. The implementation should be designed to work with any CertStore type, but this information may still be useful.FiÊ{}Ï{J b€€ɀ€€€‚‚€€‚‚€€‚‚€€€€‚ÿAll CertPathBuilder implementations should provide additional debugging support, in order to analyze and correct potential path building problems. Details on how to access this debugging information should be documented.Certificate/CRL StoresA provider should document what types of certificates and CRLs (and the version numbers, if relevant) are retrieved by the CertStore.A provider should also document any relevant information regarding the CertStore implementation (such as protocols used or formats supported). For example, an LDAP CertStore implementation should describe which versions of LDAP are supported and which standard attributes are used for finding certificates and CRLs. It should also document if the implementation caches results, and for how long (i.e., under what conditions are they refreshed).ŠqíË{/|5 8€ã€ɀ€‚‚€€€€‚‚ÿIf the implementation returns the certificates and CRLs in a particular orde}Ï{/|†Šur, it should describe the sorting algorithm. An implementation should also document any additional or default initialization parameters.Finally, an implementation should document if and how it uses information in the CertSelector or CRLSelector objects to find certificates and CRLs.²ˆ}Ï{á|* "€€€€‚‚‚‚ÿService InterdependenciesHere are some common types of algorithm interdependencies in certification path service implementations:Mõ/|.|X ~€ë€ä€€‚‚€€€€€€€€‚‚€€‚‚€€€€‚ÿCertification Path Validation and Signature AlgorithmsA CertPathValidator implementation often requires use of a signature algorithm to verify each certificate's digital signature. The setSigProvider method of the PKIXParameters class allows a user to specify a specific Signature provider.Certification Path Builders and Certificate FactoriesA CertPathBuilder implementation will often utilize a CertificateFactory to generate a certification path from a list of certificates.‘Já|¿|G \€•€ä€‚€€‚‚€€€€€€€€‚‚ÿCertStores and Certificate FactoriesA CertStore implementation will often utilize a CertificateFactory to generate certificates and CRLs from their encodings. For example, an LDAP CertStore implementation may use an X.509 CertificateFactory to generate X.509 certificates and CRLs from their ASN.1 encoded form. Œg.|{|U x€Ï€€€‚‚€(€€€€€‚‚€€€€€€€€‚ÿCertification Path Parameter Specification InterfacesThe Certification Path API contains two interfaces representing transparent specifications of parameters, the CertPathParameters and CertStoreParameters interfaces.Two implementations of the CertPathParameters interface are included, the PKIXParameters and PKIXBuilderParameters classes. If you are working with PKIX certification path validation and algorithm parameters, you can utilize these classes. If you need parameters for a different algorithm, you will need to supply your own CertPathParameters implementation for that algorithm.Æ?¿|A|‡ ܀ €€‚€€€€€€€€€€‚‚€€€€€€€€€€€€€€€€€€€€€€‚ÿTwo implementations of the CertStoreParameters interface are included, the LDAPCertStoreParameters and the CollectionCertStoreParameters classes. These classes are to be used with LDAP and Collection CertStore implementations, respectively. If you need parameters for a different repository type, you will need to supply your own CertStoreParameters implementation for that type. The CertPathParameters and CertStoreParameters interfaces each define a clone method that implementations should override. A typical implementation will perform a "deep" copy of the object, such that subsequent changes to the copy will not affect the original (and vice versa). However, this is not an absolute requirement for implementations of CertStoreParameters. A shallow copy implementation of clone is more appropriate for applications that need to hold a reference to a parameter contained in the CertStoreParameters. For example, since CertStore.getInstance makes a clone of the specified CertStoreParamters, a shallow copy clone allows an application to hold a reference to and later release the resources of a particular CertStore initialization parameter, rather than waiting for the garbage collection mechanism. This should be done with the utmost care, since the CertStore may still be in use by other threads.åŒ{|2A|Y €€€€‚€€‚‚€(€€€€€‚‚€€€€€€€€‚ÿCertification Path Result Specification InterfacesThe Certification Path API contains two interfaces representing transparent specifications of results, the CertPathValidatorResult and CertPathBuilderResult interfaces.One implementation for each of the interfaces is included: the PKIXCertPathValidatorResult and PKIXCertPathBuilderResult cA|2A|†Šulasses. If you are implementing PKIX certification path service providers, you can utilize these classes. If you need certification path results for a different algorithm, you will need to supply your own CertPathValidatorResult or CertPathBuilderResult implementation for that algorithm.ÕA|DC|= H€«€€‚€€€€€€€€‚ÿA PKIX implementation of a CertPathValidator or a CertPathBuilder may find it useful to store additional information in the PKIXCertPathValidatorResult or PKIXCertPathBuilderResult, such as debugging traces. In these cases, the implementation should implement a subclass of the appropriate result class with methods to retrieve the relevant information. These classes must be shipped with the provider classes, for example, as part of the provider JAR file.áw2A|%G|j ¢€ï€€‚€€‚‚€€€€€€‚€€€€€€€€€€€€€€‚ÿCertification Path Exception ClassesThe Certification Path API contains a set of exception classes for handling errors. CertPathValidatorException, CertPathBuilderException, and CertStoreException are subclasses of GeneralSecurityException. You may need to extend these classes in your service provider implementation. For example, a CertPathBuilder implementation may provide additional information such as debugging traces when a CertPathBuilderException is thrown. The implementation may throw a subclass of CertPathBuilderException that holds this information. Likewise, a CertStore implementation can provide additional information when a failure occurs by throwing a subclass of CertStoreException. Also, you may want to implement a subclass of CertPathValidatorException to describe a particular failure mode of your CertPathValidator implementation. (ÜDC|MI|L f€¹€€‚‚€€‚‚€€€€€€€€€€‚ÿIn each case, the new exception classes must be shipped with the provider classes, for example, as part of the provider JAR file. Each provider should document the exception subclasses. TrustAnchor ClassAs previously mentioned, a PKIX CertPathValidator or CertPathBuilder is not required to support the nameConstraints parameter of the TrustAnchor class. Implementations should throw an InvalidAlgorithmParameterException if this parameter is not supported.0é%G|}L|G \€Ó€€‚€ €‚‚çÛ+†Ç€‰€€(€‚‚€€‚ÿAppendix A: Standard NamesThe Java Certification Path API requires and utilizes a set of standard names for certification path validation algorithms, encodings and certificate storage types. It supplements the list of standard names defined in Appendix A in the Java Cryptography Architecture API Specification and Reference. Note that algorithm names are treated as case-insensitive (for comparison).Please note that a service provider may choose to define a new name for a proprietary or non-standard algorithm not mentioned below. However, to prevent name collisions, it is recommended that the name be prefixed with the reverse Internet domain name of the provider's organization (for example: com.sun.MyCertPathValidator).ÁMI|>M|4 6€€€‚€€‚‚€€‚‚ÿCertPathValidator AlgorithmsThe algorithm names in this section can be specified when generating an instance of CertPathValidator.¬x}L|êM|4 8€ð€ä€€ç4 z€‰€‚‚ÿPKIX: The PKIX certification path validation algorithm as defined in the ValidationAlgorithm service attribute.·‡>M|¡N|0 .€€€€‚‚€€‚‚ÿCertPathBuilder AlgorithmsThe algorithm names in this section can be specified when generating an instance of CertPathBuilder.BêM| €|; D€€ä€€ç4 z€‰€€€‚‚ÿPKIX: The PKIX certification path validation algorithm as defined in the ValidationAlgorithm service attribute. The output of CertPathBuilder instances implementing this algorithm is a certification path validated against the PKIX validation algorithm.¡N| €|†Šu•f¡N|¡€|/ .€Ì€€€‚‚€€‚‚ÿCertStore TypesThe following types can be specified when generating an instance of CertStore:'Ó €|Ȃ|T v€§€ä€€€€ç4 z€‰€‚‚€€€€€€€€‚ÿLDAP: A CertStore implementation that fetches certificates and CRLs from an LDAP directory using the schema defined in the LDAPSchema service attribute.Collection: A CertStore implementation that retrieves certificates and CRLs from a Collection. This type of CertStore is particularly useful in applications where certificates or CRLs are received in a bag or some sort of attachment, such as with a signed email message or in an SSL negotiation.'¡€|ï‚|$ €€ä€‚ÿ ÈȂ|ùƒ|B R€‘€€€‚‚€€€€€€€€‚‚ÿCertPath EncodingsThe following encodings may be passed to the getEncoded method of CertPath or the generateCertPath(InputStream inStream, String encoding) method of CertificateFactory.Sï‚|L†|C T€!€ä€€€€€€€€€€€‚ÿPKCS7: A PKCS#7 SignedData object, with the only significant field being certificates. In particular, the signature and the contents are ignored. If no certificates are present, a zero-length CertPath is assumed. Warning: PKCS#7 does not maintain the order of certificates in a certification path. This means that if a CertPath is converted to PKCS#7 encoded bytes and then converted back, the order of the certificates may change, potentially rendering the CertPath invalid. Users should be aware of this behavior.xPùƒ|Ć|( € €ä€€‚‚ÿPkiPath: an ASN.1 DER encoded sequence of certificates, defined as follows:Q(L†|‡|) "€P€ɀ€€‚‚ÿPkiPath ::= SEQUENCE OF CertificateØ$Ć|í‰|Ž 6I€ä€€€€€€€€€ÌmEF("ftp://ftp.bull.com/pub/OSIdirectory/DefectResolution/DraftTechnicalCorrigenda/8-DTC2%284th%29.pdf",`',1)€‰€‚ÿWithin the sequence, the order of certificates is such that the subject of the first certificate is the issuer of the second certificate, etc. Each certificate in PkiPath shall be unique. No certificate may appear more than once in a value of Certificate in PkiPath. The PkiPath format is defined in defect report 279 against X.509 (2000) and is incorporated into Draft Technical Corrigenda 2 for the fourth edition (2000) of X.509 at ftp://ftp.bull.com/pub/OSIdirectory/DefectResolution/DraftTechnicalCorrigenda/8-DTC2%284th%29.pdf.'‡|Š|$ €€ä€‚ÿ>í‰|RŠ|' €.€€€‚‚ÿService Attributes©]Š|ûŒ|L f€»€ä€€€€€€€€€€€€€€‚ÿValidationAlgorithm: The name of the specification that defines the certification path validation algorithm that an implementation of CertPathBuilder or CertPathValidator supports. RFCs should be specified as "RFC#" (ex: "RFC2459") and Internet Drafts as the name of the draft (ex: "draft-ietf-pkix-new-part1-08.txt"). Values for this attribute that are specified as selection criteria to the Security.getProviders method will be compared using the String.equalsIgnoreCase method. All PKIX implementations of CertPathBuilder and CertPathValidator should provide a value for this attribute.’_RŠ|Ž|3 4€¿€ä€‚€€€€‚‚ÿLDAPSchema: The name of the specification that defines the LDAP schema that an implementation of an LDAP CertStore uses to retrieve certificates and CRLs. The format and semantics of this attribute is the same as described for the ValidationAlgorithm attribute. All LDAP implementations of CertStore should provide a value for this attribute.&ûŒ|³Ž|# €€€‚ÿ*Ž|ݎ|' €€ ”€ ‚ÿŽ|̏|2 2€{€€‚€‚€ €‚‚‚‚ÿAppendix B: The "SUN" ProviderThe "SUN" provider which is supplied with J2SDK has been enhanced for version 1.4 to support the following standard algorithms, types and encodings:NÝݎ|&Á|q °€»€ä€€€€€€€̏|&Á|†Šu€€€‚€€€€‚€€€€‚€€€€€€€‚‚ÿ· CertificateFactory: X.509 CertPath type with PKCS7 and PkiPath encodings· CertPathValidator: PKIX algorithm· CertPathBuilder: PKIX algorithm· CertStore: LDAP and Collection CertStore typesþy̏|$Ä|… ؀󀀂‚€€‚‚€€€€Ì/EF("http://www.ietf.org/rfc/rfc2315.txt",`',1)€‰€€€€€€€‚ÿEach of these service provider interface implementations is discussed in more detail below.CertificateFactoryThe "SUN" provider for the CertificateFactory engine class has been enhanced to support generation of X.509 CertPath objects. The PKCS7 and PkiPath encodings are supported. The PKCS#7 implementation supports a subset of RFC 2315 (only the SignedData ContentInfo type is supported). The certificates in the CertPath are ordered in the forward direction (from target to trust anchor). Each certificate in the CertPath is of type java.security.cert.X509Certificate, and versions 1, 2 and 3 are supported.sà&Á|—Æ|“ ô€Á€€‚€€‚‚€€€€ÌPEF("http://www.ietf.org/internet-drafts/draft-ietf-pkix-new-part1-08.txt",`',1)€‰€‚ÿCertPathValidatorThe "SUN" provider supplies a PKIX implementation of the CertPathValidator engine class. The implementation validates CertPaths of type X.509 and implements the certification path validation algorithm defined in the 9th version of the Internet-Draft for the PKIX Certificate and CRL Profile. This draft, when complete, will obsolete RFC 2459. The implementation sets the ValidationAlgorithm service attribute to "draft-ietf-pkix-new-part1-08.txt".F!$Ä|ÝÈ|% €C€€‚‚ÿThe PKIX Certificate and CRL Profile has many optional features. The "SUN" provider implements support for the policy mapping extension and the reason code CRL entry extension. It does not implement support for the CRL distribution point, Freshest CRL, Authority Information Access, or Subject Information Access certificate extensions. It also does not include support for the Freshest CRL, Delta CRL, and Issuing Distribution Point CRL extensions and the Certificate Issuer, Invalidity Date, and Hold Instruction Code CRL entry extensions.=Á—Æ|Ë|| ƀƒ€€‚€€€€€€€€€€Ì/EF("http://www.ietf.org/rfc/rfc2560.txt",`',1)€‰€‚ÿThe implementation supports a CRL revocation checking mechanism that conforms to section 6.3 of the PKIX Certificate and CRL Profile. An application must specify one or more CertStores containing CRLs in a PKIXParameters object. For each certificate in the CertPath, the CertPathValidator searches the specified CertStores for applicable CRLs. OCSP (RFC 2560) is not currently supported as a built in revocation checking mechanism.L™ÝÈ|fÎ|³ 43€€‚€€€€€€€€‚‚€€‚‚€€€€€€ÌPEF("http://www.ietf.org/internet-drafts/draft-ietf-pkix-new-part1-08.txt",`',1)€‰€‚ÿThe implementation does not support the nameConstraints parameter of the TrustAnchor class and the validate method throws an InvalidAlgorithmParameterException if it is specified.CertPathBuilderThe "SUN" provider supplies a PKIX implementation of the CertPathBuilder engine class. The implementation builds CertPaths of type X.509. Each CertPath is validated according to the PKIX algorithm defined in the 9th version of the Internet-Draft for the PKIX Certificate and CRL Profile. This draft, when complete, will obsolete RFC 2459. The implementation sets the ValidationAlgorithm service attribute to "draft-ietf-pkix-new-part1-08.txt".?îË|±}Q p€Ý€€‚€€€€€€€€€€‚‚€€€€‚ÿThe implementation requires that the targetConstraints parameter of a PKIXBuilderParameters object be an instance of X509CertSelector. Otherwise the build method throws an InvalidAlgorithmParameterException.The implementation builds CertPath objects in a forward direction using a depth-first algorithm. It backtrfÎ|±}†Šuacks to previous states and tries alternate paths when a potential path is determined to be invalid or exceeds the PKIXBuilderParameters maxPathLength parameter.åfÎ|É}3 4€Ë€€‚€€‚‚€€‚ÿValidation of the path is performed in the same manner as the CertPathValidator implementation. The implementation validates most of the path as it is being built, in order to eliminate invalid paths earlier in the process. Validation checks that cannot be executed on certificates ordered in a forward direction are delayed and executed on the path after it has been constructed (but before it is returned to the application).When two or more potential certificates are discovered that may lead to finding a path that meets the specified constraints, the implementation uses the following criteria to prioritize the certificates (in the examples below, assume a TrustAnchor distinguished name of "ou=D,ou=C,o=B,c=A" is specified):&±}ï}# €€€‚ÿÊÉ}ò}9 @€•€ä€€€‚€€‚€€‚ÿ1. The issuer DN of the certificate matches the DN of one of the specified TrustAnchors (ex: issuerDN = "ou=D,ou=C,o=B,c=A").2. The issuer DN of the certificate is a descendant of the DN of one of the TrustAnchors, ordered by proximity to the anchor (ex: issuerDN = "ou=E,ou=D,ou=C,o=B,c=A").3. The issuer DN of the certificate is an ancestor of the DN of one of the TrustAnchors, ordered by proximity to the anchor (ex: issuerDN = "ou=C,o=B,c=A".R%ï}D}- (€K€ä€€€‚‚‚ÿ4. The issuer DN of the certificate is in the same namespace of one of the TrustAnchors, ordered by proximity to the anchor (ex: issuerDN = "ou=G,ou=C,o=B,c=A").5. The issuer DN of the certificate is an ancestor of the subject DN of the certificate, ordered by proximity to the subject.Íò}U }D V€›€€‚‚€€‚‚€€€€‚‚€€‚‚ÿThese are followed by certificates which don't meet any of the above criteria.This implementation has been tested with the LDAP and Collection CertStore implementations included in this release of the "SUN" provider.Debugging support can be enabled by setting the java.security.debug property to certpath. For example: java -Djava.security.debug=certpath BuildCertPathThis will print additional debugging information to standard error.ªwD}ÿ }3 6€î€€‚€€‚‚€€‚‚ÿCertStoreThe "SUN" provider supports two implementations of the CertStore engine class: Collection and LDAP.mæU }l }‡ ܀̀䀀‚‚€€€€€€‚‚‚‚€€‚‚€€Ì/EF("http://www.ietf.org/rfc/rfc2587.txt",`',1)€‰€‚ÿCollection CertStoreThe Collection CertStore implementation can hold any objects that are an instance of java.security.cert.Certificate or java.security.cert.CRL.The certificates and CRLs are not returned in any particular order and will not contain duplicates.LDAP CertStoreThe LDAP CertStore implementation retrieves certificates and CRLs from an LDAP directory using the LDAP schema defined in RFC 2587. The LDAPSchema service attribute is set to "RFC2587".-ÿ }™ }- (€€ä€‚€€‚‚ÿThe implementation fetches certificates from different locations, depending on the values of the subject, issuer, and basicConstraints selection criteria specified in the X509CertSelector. It performs as many of the following operations as possible:)ùl }Â}0 .€ó€ɀ€‚‚‚‚‚‚‚‚‚‚‚ÿ1. Subject non-null, basicConstraints <= -1Looks for certificates in the subject DN's "userCertificate" attribute.2. Subject non-null, basicConstraints >= -1Looks for certificates in the forward element of the subject DN's "crossCertificatePair" attribute AND in the subject's "caCertificate" attribute.3. Issuer non-null, basicConstraints >= -1Looks for certificates in the reverse element of the issuer DN's "crossCertificatePair" attribute AND in the issuer DN's "caCertificate" attribute.(™ } @}% €€ɀ€‚ÿÂ} @}†Šu:Â}C}G \€u€ä€€€‚‚‚‚€€€€€€€€‚ÿIn each case, certificates are checked using X509CertSelector.match() before adding them to the resulting collection.If none of the conditions specified above applies, then an exception is thrown to indicate that it was impossible to fetch certificates using the criteria supplied. Note that even if one or more of the conditions apply, the Collection returned may still be empty if there are no certificates in the directory.The implementation fetches CRLs from the issuer DNs specified in the setCertificateChecking, addIssuerName or setIssuerNames methods of the X509CRLSelector class. If no issuer DNs have been specified using one of these methods, the implementation throws an exception indicating it was impossible to fetch CRLs using the criteria supplied. Otherwise, the CRLs are searched as follows:R @}ßF}@ N€%€ä€‚€€€€€€‚‚€€‚ÿThe implementation first creates a list of issuer names. If a certificate was specified in the setCertificateChecking method, it uses the issuer of that certificate. Otherwise, it uses the issuer names specified using the addIssuerName or setIssuerNames methods.Next, the implementation iterates through the list of issuer names. For each issuer name, it searches first in the issuer's "authorityRevocationList" attribute and then, if no matching CRL was found there, in the issuer's "certificateRevocationList" attribute. One exception to the above is that if the issuer name was obtained from the certificate specified in the setCertificateChecking method, it only checks the issuer's "authorityRevocationList" attribute if the specified certificate is a CA certificate.õƍC}ÔG}/ ,€€ä€‚€€‚‚‚‚ÿAll CRLs are checked using X509CRLSelector.match() before adding them to the resulting collection.If no CRLs satisfying the selection criteria can be found, an empty Collection is returned.&ßF}úG}# €€€‚ÿ*ÔG}$H}' €€ ”€ ‚ÿ&úG}JH}# €€€‚ÿMÛ$H}—I}r#²€·„˜€€€‚€€‚‚€Ì(EF("mailto:java-security@sun.com",`',1)€ ‰€€‚ÿÿÿCopyright © 1998-2002, Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. All Rights Reserved.Please send comments to: java-security@sun.com. This is not a subscription list.&JH}œI}# €€€‚ÿ1—I}îI}1UÿÿÿÿÿÿÿÿïÿÿÿÿîI}J}$œI}J}" €€€ ÿOîI}aJ}1Ø@ë? ðaJ}©J}· †Java Cryptography ArchitectureH"J}©J}& €D€€€‚ÿJava Cryptography Architecture&aJ}ÏJ}# €€€‚ÿ*©J}ùJ}' €€ ”€ ‚ÿ&ÏJ}K}# €€€‚ÿ­lùJ}ÌK}A R€Ø€€‚€%€€%€‚‚€%€‚‚€:€‚‚ÿJavaTM Cryptography ArchitectureAPI Specification & ReferenceLast Modified: 8 February 2002&K}òK}# €€€‚ÿ*ÌK}L}' €€ ”€ ‚ÿ,òK}HL}' € €€‚€‚ÿAL}‰L}. ,€&€äç©dôy€!‰€‚‚ÿIntroduction6HL}M}I b€l€ɀçÕO"0€‰€‚çâúc€‰€‚ç’ô耉€‚‚ÿDesign PrinciplesArchitectureConceptsP"‰L}XM}. ,€D€äç4‚¹3€!‰€‚‚ÿCore Classes and InterfacesPM}šM}5 :€6€ɀç ïl€€€‰€‚‚ÿThe Provider Class“WXM};N}< H€®€-ç‚>Q€‰€‚çwsȀ‰€‚‚ÿHow Provider Implementations are Requested and SuppliedInstalling ProvidersÜtšM}O}h  €è€ɀçÿØån€€€‰€‚çÔÍ,€€€€‰€‚癑˜i€€€‰€‚çêo˜°€‰€‚‚ÿThe Security ClassThe MessageDigest ClassThe Signature ClassAlgorithm Parameters Classesn?;N}…O}/ .€~€-ç¬òZ怉€‚‚ÿAlgorithm Parameter Specification Interfaces and Classes–NO}'€}H `€œ€‘ç°]#„€€€‰€‚çUٌš€€€‰€‚‚ÿThe AlgorithmParameterSpec InterfaceThe D…O}'€}J}SAParameterSpec ClassšR…O}Á€}H `€€€-çò4ݝ€€€‰€‚çÊÀŒ €€€‰€‚‚ÿThe AlgorithmParameters ClassThe AlgorithmParameterGenerator Class†D'€}G}B T€ˆ€ɀçȚh"€€‰€‚ç¬ë  ‰€‚‚ÿKey InterfacesKey Specification Interfaces and ClassesSÁ€}š}5 :€<€-ç5ƒd€€€‰€‚‚ÿThe KeySpec Interface§üG}Aƒ}« $ù€‘çúox€€€€"‰çVœ†’€€€€"‰çˆúG €€€€"‰çë9{B€€€€"‰çávj!€€€€"‰ç/7€€€€"‰çúox€€€€"‰€‚ÿThe DSAPrivateKeySpec ClassThe DSAPublicKeySpec ClassThe RSAPrivateKeySpec ClassThe RSAPrivateCrtKeySpec ClassThe RSAMultiPrimePrivateCrtKeySpec ClassThe RSAPublicKeySpec ClassThe EncodedKeySpec Class•Jš}փ}K f€”€õçj"F+€€€€"‰çj"F+€€€€"‰€‚ÿThe PKCS8EncodedKeySpec ClassThe X509EncodedKeySpec ClassŒAƒ}ބ}| ƀ€ɀç^S·ó€€€€"‰ç¢€wO€€€€"‰ç^S·ó€€€€"‰çœh"€€€‰€‚ç_jm–€‰€‚‚ÿThe KeyFactory ClassThe CertificateFactory ClassThe KeyPair ClassThe KeyPairGenerator ClassKey Management Nփ}~…}R t€œ€-çÆ ‹v€€"‰ç‹d!Ÿ€€"‰çÆ ‹v€€€€"‰€‚ÿKeystore LocationKeystore ImplementationThe KeyStore ClassTބ}҅}5 :€>€ɀçê|€€€‰€‚‚ÿThe SecureRandom ClassB~…}†}. ,€(€äçÜzzK€!‰€‚‚ÿCode ExamplesÏB҅}ã‡} 者€ɀçQb”Ç€€€‰€‚ç†È’…€‰€‚ç  +‡€‰€‚ç%G€€€€‰€‚çYc[„€‰€‚çI‚/€‰€‚çXu\€‰€‚‚ÿComputing a MessageDigest ObjectGenerating a Pair of KeysGenerating and Verifying a Signature Using Generated KeysGenerating/Verifying Signatures Using Key Specifications and KeyFactoryDetermining If Two Keys Are EqualReading Base64-Encoded CertificatesParsing a Certificate Replyw<†}Zˆ}; F€x€äçÛ+†Ç€!‰€‚çÜ+†Ç€!‰€‚‚ÿAppendix A: Standard NamesAppendix B: Algorithms&ã‡}€ˆ}# €€€‚ÿ*Zˆ}ªˆ}' €€ ”€ ‚ÿD€ˆ}îˆ}/ .€*€€‚€‚€%€‚‚ÿIntroductionAªˆ}/‹}- (€)€ä€€€‚‚‚ÿThe Security API is a core API of the Java programming language, built around the java.security package (and its subpackages). This API is designed to allow developers to incorporate both low-level and high-level security functionality into their programs.The first release of Security API in JDK 1.1 introduced the "Java Cryptography Architecture" (JCA), a framework for accessing and developing cryptographic functionality for the Java platform. In JDK 1.1, the JCA included APIs for digital signatures and message digests.Æ’îˆ}õ}4 6€%€ä€‚‚‚çê×ƀ‰€‚ÿIn subsequent releases, the Java 2 SDK significantly extended the Java Cryptography Architecture, as described in this document. It also upgraded the certificate management infrastructure to support X.509 v3 certificates, and introduced a new Java Security Architecture for fine-grain, highly configurable, flexible, and extensible access control.The Java Cryptography Architecture encompasses the parts of the Java 2 SDK Security API related to cryptography, as well as a set of conventions and specifications provided in this document. It includes a "provider" architecture that allows for multiple and interoperable cryptography implementations.a-/‹}bÁ}4 6€[€ä€‚‚‚çÜ«—Y€‰€‚ÿThe Java Cryptography Extension (JCE) extends the JCA API to include APIs for encryption, key exchange, and Message Authentication Code (MAC). Together, the JCE and the cryptography aspects of the SDK provide a complete, platform-independent cryptography API. JCE was previously an optional package (extension) to the Java 2 SDK, Standard Edition, versions 1.2.x and 1.3.x. JCE has now been integrated into the Java 2 SDK, v 1.4.This document is both a high-level desõ}bÁ}J}cription and a specification of the Java Cryptography Architecture API and its default provider, as shipped in the Java 2 SDK. A separate document describing the JCE API is provided with the JCE release. See the "Java Security Architecture Specification" for information about the Java Security Architecture aspects of the Security API.'õ}‰Á}$ €€ä€‚ÿ(bÁ}±Á}% €€ɀ€‚ÿ,‰Á}ÝÁ}) "€€0ɀ”€ ‚ÿ$±Á}Ã}‡ ܀;€ɀ€‚€€ÌLEF("http://java.sun.com/j2se/1.4/docs/guide/security/CryptoSpec.html",`',1)€‰€‚€‚ÿNote: The most recent version of this JCA specification can be found online at: http://java.sun.com/j2se/1.4/docs/guide/security/CryptoSpec.html.,ÝÁ}-Ã}) "€€0ɀ”€ ‚ÿ.Ã}[Ã}) "€ €ɀ€‚€‚ÿ=-Ã}˜Ã}' €,€€ €‚‚ÿDesign PrincipleswR[Ã}Ä}% €€€ä€‚‚ÿThe Java Cryptography Architecture (JCA) was designed around these principles:–e˜Ã}¥Ä}1 2€Ê€ɀ€€‚‚€€‚‚ÿ· implementation independence and interoperability· algorithm independence and extensibilityîÄ}žÆ}% €Ý€ä€‚ÿImplementation independence and algorithm independence are complementary; you can use cryptographic services, such as digital signatures and message digests, without worrying about the implementation details or even the algorithms that form the basis for these concepts. When complete algorithm-independence is not possible, the JCA provides standardized, algorithm-specific APIs. When implementation-independence is not desirable, the JCA lets developers indicate a specific implementation.Òb¥Ä}ŠË}p ®€Å€ä€‚€(€çÔÍ,€€‰€癑˜i€‰€ç^S·ó€‰€珜h"€‰€‚‚çê×ƀ‰€€€‚ÿAlgorithm independence is achieved by defining types of cryptographic "engines" (services), and defining classes that provide the functionality of these cryptographic engines. These classes are called engine classes, and examples are the MessageDigest, Signature, KeyFactory, and KeyPairGenerator classes.Implementation independence is achieved using a "provider"-based architecture. The term Cryptographic Service Provider (used interchangeably with "provider" in this document) refers to a package or set of packages that implement one or more cryptographic services, such as digital signature algorithms, message digest algorithms, and key conversion services. A program may simply request a particular type of object (such as a Signature object) implementing a particular service (such as the DSA signature algorithm) and get an implementation from one of the installed providers. If desired, a program may instead request an implementation from a specific provider. Providers may be updated transparently to the application, for example when faster or more secure versions are available.þÕžÆ}ˆÍ}) €«€ä€‚‚‚‚‚ÿImplementation interoperability means that various implementations can work with each other, use each other's keys, or verify each other's signatures. This would mean, for example, that for the same algorithms, a key generated by one provider would be usable by another, and a signature generated by one provider would be verifiable by another.Algorithm extensibility means that new algorithms that fit in one of the supported engine classes can be added easily.8ŠË}ÀÍ}' €"€€ €‚‚ÿArchitectureŸmˆÍ}k~2 2€Û€ä€€‚‚€(€‚‚‚ÿCryptographic Service ProvidersThe Java Cryptography Architecture introduced the notion of a Cryptographic Service Provider (used interchangeably with "provider" in this document). This term refers to a package (or a set of packages) that supplies a concrete implementation of a subset of the cryptography aspects of the Security API.For example, in JDK 1.1 a provider could contain an implementation of one or more digital signature algorithms, message digest algorithms, and key generation algorithms. Java 2 SDK addÀÍ}k~J}s five additional types of services: key factories, keystore creation and management, algorithm parameter management, algorithm parameter generation, and certificate factories. It also enables a provider to supply a random number generation (RNG) algorithm. Previously, RNGs were not provider-based; a particular algorithm was hard-coded in the JDK.ƒCÀÍ}î~@ N€‡€ä€‚€€‚‚€€€€€€‚ÿAs previously noted, a program may simply request a particular type of object (such as a Signature object) for a particular service (such as the DSA signature algorithm) and get an implementation from one of the installed providers. Alternatively, the program can request the objects from a specific provider. (Each provider has a name used to refer to it.)Sun's version of the Java runtime environment comes standard with a default provider, named SUN. Other Java runtime environments may not necessarily supply the SUN provider. The SUN provider package includes:'k~~$ €€ä€‚ÿfî~{~Q p€+€ɀ€€‚‚€€‚‚€€‚‚€€‚‚€€‚‚€€‚ÿ· An implementation of the Digital Signature Algorithm (DSA), described in NIST FIPS 186.· An implementation of the MD5 (RFC 1321) and SHA-1 (NIST FIPS 180-1) message digest algorithms.· A DSA key pair generator for generating a pair of public and private keys suitable for the DSA algorithm.· A DSA algorithm parameter generator.· A DSA algorithm parameter manager.· A DSA key factory providing bi-directional conversions between (opaque) DSA private and public key objects and their underlying key material.å9~` ~¬ &s€ɀ€‚€€‚‚€€Ì EF("http://www.ietf.org/",`',1)€‰€‚‚€€Ì;EF("http://www.ietf.org/rfc/rfc2587.txt?number=2587",`',1)€‰€‚ÿ· An implementation of the proprietary "SHA1PRNG" pseudo-random number generation algorithm, following the recommendations in the IEEE P1363 standard (Appendix G.7).· A certificate path builder and validator for PKIX, as defined in the Internet X.509 Public Key Infrastructure Certificate and CRL Profile (available as a draft from Internet Engineering Task Force at the time of this writing.).· A certificate store implementation for retrieving certificates and CRLs from Collection and LDAP directories, using the PKIX LDAP V2 Schema (RFC 2587).è¬{~H ~< F€Y€ɀ€‚€€‚‚€€€€‚‚ÿ· A certificate factory for X.509 certificates and Certificate Revocation Lists (CRLs).· A keystore implementation for the proprietary keystore type named JKS.s.` ~» ~E X€]€ä€ç ïl€‰€çÿØån€‰€‚‚€(€‚ÿEach SDK installation has one or more provider packages installed. New providers may be added statically or dynamically (see the Provider and Security classes). The Java Cryptography Architecture offers a set of APIs that allow users to query which providers are installed and what services they support.Clients may configure their runtime with different providers, and specify a preference order for each of them. The preference order is the order in which providers are searched for requested services when no specific provider is requested./íH ~ê~B R€Û€ä€‚€€‚‚‚‚€€€€€€‚ÿKey ManagementA database called a "keystore" can be used to manage a repository of keys and certificates. A keystore is available to applications that need it for authentication or signing purposes.Applications can access a keystore via an implementation of the KeyStore class, which is in the java.security package. A default KeyStore implementation is provided by Sun Microsystems. It implements the keystore as a file, using a proprietary keystore type (format) named "JKS".&å» ~@~A P€Ë€ä€‚€€€€‚‚ç_jm–€‰€‚‚ÿApplications can choose different types of keystore implementations from different providers, using the getInstance factory method supplied in the KeyStore class.See the Key Management section for moreê~@~J} information.4 ê~P@~' €€€ €‚‚ÿConcepts}@~ÍD~a €9€ä€‚‚€€‚‚€(€‚‚€€€€€€€€€€€€€€‚ÿThis section covers the major concepts introduced in the API.Engine Classes and AlgorithmsAn engine class defines a cryptographic service in an abstract fashion (without a concrete implementation).A cryptographic service is always associated with a particular algorithm or type, and it either provides cryptographic operations (like those for digital signatures or message digests), generates or supplies the cryptographic material (keys or parameters) required for cryptographic operations, or generates data objects (keystores or certificates) that encapsulate cryptographic keys (which can be used in a cryptographic operation) in a secure fashion. For example, two of the engine classes are the Signature and KeyFactory classes. The Signature class provides access to the functionality of a digital signature algorithm. A DSA KeyFactory supplies a DSA private or public key (from its encoding or transparent specification) in a format usable by the initSign or initVerify methods, respectively, of a DSA Signature object.`9P@~-F~' €s€ä€‚‚‚ÿThe Java Cryptography Architecture encompasses the classes of the Java 2 SDK Security package related to cryptography, including the engine classes. Users of the API request and use instances of the engine classes to carry out corresponding operations. The following engine classes are defined in Java 2 SDK:HÅÍD~uH~ƒ Ԁ‹€ɀ€€çÔÍ,€€‰€‚‚€€癑˜i€‰€‚‚€€珜h"€‰€‚‚€€ç^S·ó€‰€çȚh"€‰€€(€‚ÿ· MessageDigest: used to calculate the message digest (hash) of specified data.· Signature: used to sign data and verify digital signatures.· KeyPairGenerator: used to generate a pair of public and private keys suitable for a specified algorithm.· KeyFactory: used to convert opaque cryptographic keys of type Key into key specifications (transparent representations of the underlying key material), and vice versa.n-F~ãJ~g œ€€ɀ€‚€€碀wO€‰€‚‚€€ç©â€‰€€(€‚‚€€çò4ݝ€‰€‚ÿ· CertificateFactory: used to create public key certificates and Certificate Revocation Lists (CRLs).· KeyStore: used to create and manage a keystore.A keystore is a database of keys. Private keys in a keystore have a certificate chain associated with them, which authenticates the corresponding public key. A keystore also contains certificates from trusted entities.· AlgorithmParameters: used to manage the parameters for a particular algorithm, including parameter encoding and decoding. »uH~ìK~N j€w€ɀ€‚€€çÊÀŒ €‰€‚‚€€çê|€‰€‚‚ÿ· AlgorithmParameterGenerator: used to generate a set of parameters suitable for a specified algorithm.· SecureRandom: used to generate random or pseudo-random numbers.tOãJ~`L~% €ž€ä€‚‚ÿIn the 1.4 release of the Java 2 SDK, the following new engines were added:šöìK~úM~€ í€ɀ€€ïâù“YJdk14doc.3.hlp€‰€‚‚€€ïA”YJdk14doc.3.hlp€‰€‚‚€€ïF”YJdk14doc.3.hlp€‰€€€€€‚‚€‚ÿ· CertPathBuilder: used to build certificate chains (also known as certification paths).· CertPathValidator: used to validate certificate chains.· CertStore: used to retrieve Certificates and CRLs from a repository.,`L~&N~) "€€0ɀ”€ ‚ÿ؛úM~þN~= H€7€ɀ€‚€€€(€€(€‚€‚ÿNote: A generator creates objects with brand-new contents, whereas a factory creates objects from existing material (for example, an encoding).,&N~*O~) "€€0ɀ”€ ‚ÿ.þN~XO~) "€ €ɀ€‚€‚ÿç¶*O~K‚~1 0€m€ä€€€€€‚ÿAn engine class provides the interface to the functionality of a specific type of cryptographic service (independent oXO~K‚~J}f a particular cryptographic algorithm). It defines Application Programming Interface (API) methods that allow applications to access the specific type of cryptographic service it provides. The actual implementations (from one or more providers) are those for specific algorithms. The Signature engine class, for example, provides access to the functionality of a digital signature algorithm. The actual implementation supplied in a SignatureSpi subclass would be that for a specific kind of signature algorithm, such as SHA-1 with DSA, SHA-1 with RSA, or MD5 with RSA.üÎXO~G…~. *€€ä€‚‚‚€€‚ÿThe application interfaces supplied by an engine class are implemented in terms of a Service Provider Interface (SPI). That is, for each engine class, there is a corresponding abstract SPI class, which defines the SPI methods that cryptographic service providers must implement.An instance of an engine class, the API object, encapsulates (as a private field) an instance of the corresponding SPI class, the SPI object. All API methods of an API object are declared final and their implementations invoke the corresponding SPI methods of the encapsulated SPI object. An instance of an engine class (and of its corresponding SPI class) is created by a call to the getInstance factory method of the engine class.ö®K‚~=ˆ~H ^€]€ä€‚€€€€€€‚‚‚‚€€€€‚ÿThe name of each SPI class is the same as that of the corresponding engine class, followed by Spi. For example, the SPI class corresponding to the Signature engine class is the SignatureSpi class.Each SPI class is abstract. To supply the implementation of a particular type of service, for a specific algorithm, a provider must subclass the corresponding SPI class and provide implementations for all the abstract methods.Another example of an engine class is the MessageDigest class, which provides access to a message digest algorithm. Its implementations, in MessageDigestSpi subclasses, may be those of various message digest algorithms such as SHA-1, MD5, or MD2.IãG…~†‹~f š€Ç€ä€‚€€ç¬ë  €€€‚‚€€‚‚çê×ƀ‰€€(€ç{0MS€‰€‚ÿAs a final example, the KeyFactory engine class supports the conversion from opaque keys to transparent key specifications, and vice versa. (See the Key Specification Interfaces and Classes section.) The KeyFactorySpi subclass supplies an actual implementation for a specific type of keys, for example, DSA public and private keys.Implementations and ProvidersImplementations for various cryptographic services are provided by JCA Cryptographic Service Providers. Cryptographic service providers are essentially packages that supply one or more cryptographic service implementations. The Engine Classes and Algorithms section includes a list of implemenations supplied by SUN, the Java 2 SDK's default provider.Ùk=ˆ~kÀ~n ª€×€ä€‚‚‚€€‚‚€(€‚‚€€€€€€€€€€€€ç ïl€€€‰€‚ÿOther providers may define their own implementations of these services or of other services, such as one of the RSA-based signature algorithms or the MD2 message digest algorithm.Factory Methods to Obtain Implementation InstancesFor each engine class in the API, a particular implementation is requested and instantiated by calling a factory method on the engine class. A factory method is a static method that returns an instance of a class.The basic mechanism for obtaining an appropriate Signature object, for example, is as follows: A user requests such an object by calling the getInstance method in the Signature class, specifying the name of a signature algorithm (such as "SHA1withDSA"), and, optionally, the name of the provider or the Provider class. The getInstance method finds an implementation that satisfies the supplied algorithm and provider parameters. If no provider is specified, getInstance searches the registered providers, in preference order, for one with an implementation of the specif†‹~kÀ~J}ied algorithm. See The Provider Class for more information about registering providers.'†‹~’À~$ €€ä€‚ÿG kÀ~ÙÀ~' €@€€%€‚‚ÿCore Classes and Interfacesj’À~hÁ~% €Ô€ä€‚‚ÿThis section discusses the core classes and interfaces provided in the Java Cryptography Architecture::1ÙÀ~¢Ã~  àc€ɀ€€ç ïl€‰€çÿØån€‰€‚‚€€çÔÍ,€€‰€癑˜i€‰€珜h"€‰€ç^S·ó€‰€çò4ݝ€‰€çÊÀŒ €‰€碀wO€‰€ç©â€‰€çê|€‰€î 1²EJdk14doc.hlp€‰€î 1²EJdk14doc.hlp€‰€î 1²EJdk14doc.hlp€‰€‚ÿ· the Provider and Security classes· the MessageDigest, Signature, KeyPairGenerator, KeyFactory, AlgorithmParameters, AlgorithmParameterGenerator, CertificateFactory, KeyStore, SecureRandom, CertPathBuilder, CertPathValidator, and CertStore.(hÁ~ÊÃ~% €€ɀ€‚ÿ¶1¢Ã~€Æ~… ؀c€ä€‚‚€€çȚh"€‰€‚‚€€ç¬òZ怉€ç¬ë  €‚‚€€€€€€€€€€çÜzzK€‰€‚ÿengine classes· the Key interfaces and classes· the Algorithm Parameter Specification Interfaces and Classes and the Key Specification Interfaces and ClassesThis section shows the signatures of the main methods in each class and interface. Examples for some of these classes (MessageDigest, Signature, KeyPairGenerator, SecureRandom, KeyFactory, and key specification classes) are supplied in the corresponding Examples sections. The complete reference documentation for the relevant Security API packages can be found in:'ÊÃ~§Æ~$ €€ä€‚ÿf¯€Æ~ È~· <_€ɀ€€ïQ”YJdk14doc.3.hlp€‰€‚€€ïµ”YJdk14doc.3.hlp€‰€‚€€ïÓ”YJdk14doc.3.hlp€‰€‚€€ï””YJdk14doc.3.hlp€‰€‚‚ÿ· java.security package summary· java.security.spec package summary· java.security.interfaces package summary· java.security.cert package summaryF§Æ~SÈ~- *€2€€ €2€ €‚‚ÿThe Provider ClassÛ€ È~.Ë~7 <€I€ä€€€€(€€€‚ÿThe term "Cryptographic Service Provider" (used interchangeably with "provider" in this document) refers to a package or set of packages that supply a concrete implementation of a subset of the Java 2 SDK Security API cryptography features. The Provider class is the interface to such a package or set of packages. It has methods for accessing the provider name, version number, and other information. Please note that in addition to registering implementations of cryptographic services, the Provider class can also be used to register implementations of other security services that might get defined as part of the Java 2 SDK Security API or one of its extensions.ŽNSÈ~ŒÍ~@ N€€ä€‚€€€€‚‚ç n¬:€‰€‚ÿTo supply implementations of cryptographic services, an entity (e.g., a development group) writes the implementation code and creates a subclass of the Provider class. The constructor of the Provider subclass sets the values of various properties; the Java 2 SDK Security API uses these values to look up the services that the provider implements. In other words, the subclass specifies the names of the classes implementing the services.There are several types of services that can be implemented by provider packages; for more information, see Engine Classes and Algorithms.b:.Ë~*( €u€ä€‚‚‚‚ÿThe different implementations may have different characteristics. Some may be software-based, while others may be hardware-based. Some may be platform-independent, while others may be platform-specific. Some provider source code may be available for review and evaluation, while some may not. The Java Cryptography Architecture (JCA) lets both end-users and developers decide what their needs are.In this section we explain how end-users install the cryptography implementations that fit their needs, and how developers request the implŒÍ~*J}ementations that fit theirs.'ŒÍ~Q$ €€ä€‚ÿ(*y% €€ɀ€‚ÿ,Q¥) "€€0ɀ”€ ‚ÿϒyt= H€%€ɀ€‚€€ç+€—Y€‰€‚€‚ÿNote: For information about implementing a provider, see the guide How To Implement a Provider for the Java Cryptography Architecture.,¥ ) "€€0ɀ”€ ‚ÿ.tÎ) "€ €ɀ€‚€‚ÿd< 2( €x€ä€€‚‚ÿHow Provider Implementations Are Requested and SuppliedjΜd –€ €ɀ€ç n¬:€‰€€€€€‚‚€€çwsȀ‰€€(€€€€€‚ÿFor each engine class in the API, a particular implementation is requested and instantiated by calling a getInstance method on the engine class, specifying the name of the desired algorithm and, optionally, the name of the provider (or the Provider class) whose implementation is desired.If no provider is specified, getInstance searches the registered providers for an implementation of the requested cryptographic service associated with the named algorithm. In any given Java Virtual Machine (JVM), providers are installed in a given preference order, the order in which the provider list is searched if a specific provider is not requested. For example, suppose there are two providers installed in a JVM, PROVIDER_1 and PROVIDER_2. Assume that:(2Ä% €€ɀ€‚ÿGœ @ N€€-€€€‚€‚‚€€€‚€‚‚ÿ· PROVIDER_1 implements SHA1withDSA, SHA-1, MD5, DES, and DES3.PROVIDER_1 has preference order 1 (the highest priority).· PROVIDER_2 implements SHA1withDSA, MD5withRSA, MD2withRSA, MD2, MD5, RC4, RC5, DES, and RSA.PROVIDER_2 has preference order 2.L&ÄW& €L€ɀ€‚‚ÿNow let's look at three scenarios:w1 Î F Z€c€-€€€€€‚€€€€‚€€‚ÿ1. If we are looking for an MD5 implementation. Both providers supply such an implementation. The PROVIDER_1 implementation is returned since PROVIDER_1 has the highest priority and is searched first.2. If we are looking for an MD5withRSA signature algorithm, PROVIDER_1 is first searched for it. No implementation is found, so PROVIDER_2 is searched. Since an implementation is found, it is returned.3. Suppose we are looking for a SHA1withRSA signature algorithm. Since no installed provider implements it, a NoSuchAlgorithmException is thrown.(Wö % €€-€‚ÿj*Î ` @ N€U€ɀ€€€€€€€‚‚€€‚ÿThe getInstance methods that include a provider argument are for developers who want to specify which provider they want an algorithm from. A federal agency, for example, will want to use a provider implementation that has received federal certification. Let's assume that the SHA1withDSA implementation from PROVIDER_1 has not received such certification, while the DSA implementation of PROVIDER_2 has received it.A federal agency program would then have the following call, specifying PROVIDER_2 since it has the certified implementation:(ö ˆ % €€ɀ€‚ÿqH` ù ) "€€-€€‚ÿSignature dsa = Signature.getInstance("SHA1withDSA", "PROVIDER_2");›Tˆ ”G \€©€ɀ€€€€€‚‚€€çÿØån€‰€‚‚ÿIn this case, if PROVIDER_2 was not installed, a NoSuchProviderException would be thrown, even if another installed provider implements the algorithm requested.A program also has the option of getting a list of all the installed providers (using the getProviders method in the Security class) and choosing one from the list.Aù Õ( €2€ä€€‚‚ÿInstalling Providers ٔß1 0€³€ɀ€‚‚€€‚‚‚‚ÿThere are two parts to installing a provider: installing the provider package classes, and configuring the provider.Installing the Provider ClassesThere are two possible ways to install the provider classes:?øÕ*AG \€ñ€-ß*AJ}€‚‚ïª:„Jdk14doc.4.hlp€‰€‚‚ÿ1. Place a zip or JAR file containing the classes anywhere in your classpath.2. Supply your provider JAR file as an "installed" or "bundled" extension. For more information on how to deploy an extension, see How is an extension deployed?.ö¬ß CJ b€Y€ɀ€€‚‚€€€€€€€€€€‚‚ÿConfiguring the ProviderThe next step is to add the provider to your list of approved providers. This step can be done statically by editing the java.security file in the lib/security directory of the SDK; therefore, if the SDK is installed in a directory called j2sdk1.2, the file would be j2sdk1.2/lib/security/java.security. One of the types of properties you can set in java.security has the following form:]+*A}C2 4€V€-€€/€€/€‚ÿsecurity.provider.n=masterClassNameŽz C1F: B€õ€ɀ€€(€‚‚€/€€€‚ÿThis declares a provider, and specifies its preference order n. The preference order is the order in which providers are searched for requested algorithms (when no specific provider is requested). The order is 1-based: 1 is the most preferred, followed by 2, and so on.masterClassName must specify the provider's master class. The provider's documentation will specify its master class. This class is always a subclass of the Provider class. The subclass constructor sets the values of various properties that are required for the Java Cryptography API to look up the algorithms or other facilities the provider implements.Õ}C@G: B€«€ɀ€‚€€€€€€‚‚ÿSuppose that the master class is COM.acme.provider.Acme, and that you would like to configure Acme as your third preferred provider. To do so, you would add the following line to the java.security file:X/1F˜G) "€^€-€€‚ÿsecurity.provider.3=COM.acme.provider.Acme>ù@GÖHE X€ó€ɀ€€€€€€€çÿØån€‰€‚‚ÿProviders may also be registered dynamically. To do so, call either the addProvider or insertProviderAt method in the Security class. This type of registration is not persistent and can only be done by "trusted" programs. See Security.G˜GI+ &€8€ä€7€€‚‚ÿProvider Class Methods%òÖHBJ3 4€å€ɀ€€€€€‚‚ÿEach Providerclass instance has a (currently case-sensitive) name, a version number, and a string description of the provider and its services. You can query the Provider instance for this information by calling the following methods:zOIŒJ+ &€ž€-€€‚ÿpublic String getName()public double getVersion()public String getInfo()FBJK- *€2€€ €2€ €‚‚ÿThe Security Classh6ŒJjL2 2€m€ä€€€€€‚‚ÿThe Security class manages installed providers and security-wide properties. It only contains static methods and is never instantiated. The methods for adding or removing providers, and for setting Security properties, can only be executed by a trusted program. Currently, a "trusted program" is eitherОK:M2 2€=€ɀ€€‚‚€€‚‚ÿ· a local application not running under a security manager, or· an applet or application with permission to execute the specified method (see below).x9jL²O? L€s€ä€‚‚çž«—Y€‰€çÜ«—Y€‰€‚ÿThe determination that code is considered trusted to perform an attempted action (such as adding a provider) requires that the applet is granted permission for that particular action.For example, in the Policy reference implementation, the policy configuration file(s) for a SDK installation specify what permissions (which types of system resource accesses) are allowed by code from specified code sources. (See below and the "Default Policy Implementation and Policy File Syntax" and"Java Security Architecture Specification" files for more information.)¿…:M}‚: B€ €ä€‚ç_jm–€‰€‚‚€€‚ÿCode being execute²O}‚J}d is always considered to come from a particular "code source". The code source includes not only the location (URL) where the applet originated from, but also a reference to the public key(s) corresponding to the private key(s) used to sign the code. Public keys in a code source are referenced by (symbolic) alias names from the user's keystore .In a policy configuration file, a code source is represented by two components: a code base (URL), and an alias name (preceded by signedBy), where the alias name identifies the keystore entry containing the public key that must be used to verify the code's signature.Û²²OXƒ) €e€ä€‚‚‚‚‚ÿEach "grant" statement in such a file grants a specified code source a set of permissions, specifying which actions are allowed.Here is a sample policy configuration file:C}‚›„. *€+€ɀ€€‚ÿgrant codeBase "file:/home/sysadmin/", signedBy "sysadmin" { permission java.security.SecurityPermission "insertProvider.*"; permission java.security.SecurityPermission "removeProvider.*"; permission java.security.SecurityPermission "putProviderProperty.*";};%æXƒÀ†? L€Í€ä€€(€€€€€‚‚€€‚ÿThis configuration file specifies that only code loaded from a signed JAR file from beneath the /home/sysadmin/ directory on the local file system can add or remove providers or set provider properties. (Note that the signature of the JAR file can be verified using the public key referenced by the alias name sysadmin in the user's keystore.)Either component of the code source (or both) may be missing. Here's an example of a configuration file where codeBase is missing:'›„ç†$ €€ä€‚ÿØ«À†¿‡- (€W€ɀ€€‚ÿgrant signedBy "sysadmin" { permission java.security.SecurityPermission "insertProvider.*"; permission java.security.SecurityPermission "removeProvider.*";};í¿ç†¬ˆ. *€€ä€€€‚‚‚‚ÿIf this policy is in effect, code that comes in a JAR File signed by sysadmin can add/remove providers--regardless of where the JAR File originated.Here's an example without a signer:ä·¿‡‰- (€o€ɀ€€‚ÿgrant codeBase "file:/home/sysadmin/" { permission java.security.SecurityPermission "insertProvider.*"; permission java.security.SecurityPermission "removeProvider.*";};+ñ¬ˆ»Š: B€ã€ä€€€‚‚€€€€‚‚ÿIn this case, code that comes from anywhere within the /home/sysadmin/ directory on the local filesystem can add/remove providers. The code does not need to be signed.An example where neither codeBase nor signedBy is included is:됉‹- (€/€ɀ€€‚ÿgrant { permission java.security.SecurityPermission "insertProvider.*"; permission java.security.SecurityPermission "removeProvider.*";};ð»ŠoŒ. *€…€ä€‚‚€€‚‚ÿHere, with both code source components missing, any code (regardless of where it originates, or whether or not it is signed, or who signed it) can add/remove providers.Managing Providers岋T3 4€e€ɀ€€€€€‚‚ÿThe following tables summarize the methods in the Security class you can use to query which Providers are installed, as well as to install or remove providers at runtime.soŒǍX#€€6d €€€‚ÿ€€ÿ&€€€€‚ÿÿÿQuering ProvidersTdŽ#΀<dÂ^€€ÿ€€€‚ÿ€€ÿ"€ €€€‚ÿ"€€€€‚ÿÿÿMethodDescriptionoéǍӏ†#ڀÓdÂ^€€ÿ€€€‚ÿ€€ÿ"€ €€€‚ÿ.€R€€€€€‚ÿÿÿstatic Provider[] getProviders()Returns an array containing all the installed providers (technically, the Provider subclass for each package provider). The order of the Providers in the array is their preference order.-šdŽ Á“#ô€5dÂ^€Ó ÁJ}€ÿ€€€‚ÿ€€ÿ$€ €€€‚ÿF€t€€€€€€€€€‚ÿÿÿstatic Provider getProvider(String providerName)Returns the Provider named providerName. It returns null if the Provider is not found.(ӏ4Á% €€ɀ€‚ÿr ÁŠÁX#€€4d €€€‚ÿ€€ÿ&€€€€‚ÿÿÿAdding Providers4ÁCÂ#΀<dÂ^€€ÿ€€€‚ÿ€€ÿ"€ €€€‚ÿ"€€€€‚ÿÿÿMethodDescriptionŠ ŠÁéÜ#dÂ^€€ÿ€€€‚ÿ€€ÿ*€ €€€‚ÿR€l€€€€€€€€€€€‚ÿÿÿstatic int addProvider(Provider provider)Adds a Provider to the end of the list of installed Providers. It returns the preference position in which the Provider was added, or -1 if the Provider was not added because it was already installed.ˆìCÂqÆœ#ÙdÂ^€€ÿ€€€‚ÿ€€ÿ$€ €€€‚ÿX€Œ€€€€€€€€€€€‚ÿÿÿstatic int insertProviderAt(Provider provider, int position)Adds a new Provider at a specified position. If the given provider is installed at the requested position, the provider formerly at that position and all providers with a position greater than position are shifted up one position (towards the end of the list). This method returns the preference position in which the Provider was added, or -1 if the Provider was not added because it was already installed.(éÙÆ% €€ɀ€‚ÿtqÆ ÇX#€€8d €€€‚ÿ€€ÿ&€€€€‚ÿÿÿRemoving ProvidersŸ ™Æ¬Ç#΀@dÂ^€€ÿ€€€‚ÿ€€ÿ"€ €€€‚ÿ"€ €€€‚ÿÿÿ Method Descriptionæf Ç’É€#΀ÍdÂ^€€ÿ€€€‚ÿ€€ÿ"€ €€€‚ÿ"€`€€€‚ÿÿÿstatic void removeProvider(String name)Removes the Provider with the specified name. It returns silently if the provider is not installed. When the specified provider is removed, all providers located at a position greater than where the specified provider was are shifted down one position (towards the head of the list of installed providers).(¬ÇºÉ% €€ɀ€‚ÿ(’Éâ