%!PS-Adobe-3.0 %%BoundingBox: (atend) %%Pages: (atend) %%PageOrder: (atend) %%DocumentFonts: (atend) %%Creator: Frame 5.0 %%DocumentData: Clean7Bit %%EndComments %%BeginProlog % % Frame ps_prolog 5.0, for use with Frame 5.0 products % This ps_prolog file is Copyright (c) 1986-1995 Frame Technology % Corporation. All rights reserved. This ps_prolog file may be % freely copied and distributed in conjunction with documents created % using FrameMaker, FrameMaker/SGML and FrameViewer as long as this % copyright notice is preserved. % % FrameMaker users specify the proper paper size for each print job in the % "Print" dialog's "Printer Paper Size" "Width" and "Height~ fields. If the % printer that the PS file is sent to does not support the requested paper % size, or if there is no paper tray of the proper size currently installed, % then the job will not be printed. The following flag, if set to true, will % cause the job to print on the default paper in such cases. /FMAllowPaperSizeMismatch false def % % Frame products normally print colors as their true color on a color printer % or as shades of gray, based on luminance, on a black-and white printer. The % following flag, if set to true, forces all non-white colors to print as pure % black. This has no effect on bitmap images. /FMPrintAllColorsAsBlack false def % % Frame products can either set their own line screens or use a printer's % default settings. Three flags below control this separately for no % separations, spot separations and process separations. If a flag % is true, then the default printer settings will not be changed. If it is % false, Frame products will use their own settings from a table based on % the printer's resolution. /FMUseDefaultNoSeparationScreen true def /FMUseDefaultSpotSeparationScreen true def /FMUseDefaultProcessSeparationScreen false def % % For any given PostScript printer resolution, Frame products have two sets of % screen angles and frequencies for printing process separations, which are % recomended by Adobe. The following variable chooses the higher frequencies % when set to true or the lower frequencies when set to false. This is only % effective if the appropriate FMUseDefault...SeparationScreen flag is false. /FMUseHighFrequencyScreens true def % % The following is a set of predefined optimal frequencies and angles for various % common dpi settings. This is taken from "Advances in Color Separation Using % PostScript Software Technology," from Adobe Systems (3/13/89 P.N. LPS 0043) % and corrolated with information which is in various PPD (4.0) files. % % The "dpiranges" figure is the minimum dots per inch device resolution which % can support this setting. The "low" and "high" values are controlled by the % setting of the FMUseHighFrequencyScreens flag above. The "TDot" flags control % the use of the "Yellow Triple Dot" feature whereby the frequency id divided by % three, but the dot function is "trippled" giving a block of 3x3 dots per cell. % % PatFreq is a compromise pattern frequency for ps Level 2 printers which is close % to the ideal WYSIWYG pattern frequency of 9 repetitions/inch but does not beat % (too badly) against the screen frequencies of any separations for that DPI. /dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def /CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def /YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def /KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def /CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def /MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def /YLowTDot [ true true false true true false false false ] def /CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def /YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def /KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def /CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def /MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def /YHighTDot [ false false true false false true true false ] def /PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def % % PostScript Level 2 printers contain an "Accurate Screens" feature which can % improve process separation rendering at the expense of compute time. This % flag is ignored by PostScript Level 1 printers. /FMUseAcccurateScreens true def % % The following PostScript procedure defines the spot function that Frame % products will use for process separations. You may un-comment-out one of % the alternative functions below, or use your own. % % Dot function /FMSpotFunction {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub } {dup mul exch dup mul add 1 exch sub }ifelse } def % % Line function % /FMSpotFunction { pop } def % % Elipse function % /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add % sqrt 1 exch sub } def % % /FMversion (5.0) def /fMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def /FMPColor fMLevel1 { false /colorimage where {pop pop true} if } { true } ifelse def /FrameDict 400 dict def systemdict /errordict known not {/errordict 10 dict def errordict /rangecheck {stop} put} if % The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalk FrameDict /tmprangecheck errordict /rangecheck get put errordict /rangecheck {FrameDict /bug true put} put FrameDict /bug false put mark % Some PS machines read past the CR, so keep the following 3 lines together! currentfile 5 string readline 00 0000000000 cleartomark errordict /rangecheck FrameDict /tmprangecheck get put FrameDict /bug get { /readline { /gstring exch def /gfile exch def /gindex 0 def { gfile read pop dup 10 eq {exit} if dup 13 eq {exit} if gstring exch gindex exch put /gindex gindex 1 add def } loop pop gstring 0 gindex getinterval true } bind def } if /FMshowpage /showpage load def /FMquit /quit load def /FMFAILURE { dup = flush FMshowpage /Helvetica findfont 12 scalefont setfont 72 200 moveto show 72 220 moveto show FMshowpage FMquit } def /FMVERSION { FMversion ne { (Frame product version does not match ps_prolog! Check installation;) (also check ~/fminit and ./fminit for old versions) FMFAILURE } if } def /FMBADEPSF { (Adobe's PostScript Language Reference Manual, 2nd Edition, section H.2.4) (says your EPS file is not valid, as it calls X ) dup dup (X) search pop exch pop exch pop length 5 -1 roll putinterval FMFAILURE } def /fmConcatProcs { /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx }def FrameDict begin [ /ALDsave /FMdicttop /FMoptop /FMpointsize /FMsaveobject /b /bitmapsave /blut /bpside /bs /bstring /bwidth /c /cf /cs /cynu /depth /edown /fh /fillvals /fw /fx /fy /g /gfile /gindex /grnt /gryt /gstring /height /hh /i /im /indx /is /k /kk /landscape /lb /len /llx /lly /m /magu /manualfeed /n /offbits /onbits /organgle /orgbangle /orgbfreq /orgbproc /orgbxfer /orgfreq /orggangle /orggfreq /orggproc /orggxfer /orgmatrix /orgproc /orgrangle /orgrfreq /orgrproc /orgrxfer /orgxfer /pagesave /paperheight /papersizedict /paperwidth /pos /pwid /r /rad /redt /sl /str /tran /u /urx /ury /val /width /width /ws /ww /x /x1 /x2 /xindex /xpoint /xscale /xx /y /y1 /y2 /yelu /yindex /ypoint /yscale /yy ] { 0 def } forall /FmBD {bind def} bind def systemdict /pdfmark known { /fMAcrobat true def /FmPD /pdfmark load def /FmPT /show load def currentdistillerparams /CoreDistVersion get 2000 ge { /FmPD2 /pdfmark load def /FmPA { mark exch /Dest exch 5 3 roll /View [ /XYZ null 6 -2 roll FmDC exch pop null] /DEST FmPD }FmBD } { /FmPD2 /cleartomark load def /FmPA {pop pop pop}FmBD } ifelse } { /fMAcrobat false def /FmPD /cleartomark load def /FmPD2 /cleartomark load def /FmPT /pop load def /FmPA {pop pop pop}FmBD } ifelse /FmDC { transform fMDefaultMatrix itransform cvi exch cvi exch }FmBD /FmBx { dup 3 index lt {3 1 roll exch} if 1 index 4 index lt {4 -1 roll 3 1 roll exch 4 1 roll} if }FmBD /FMnone 0 def /FMcyan 1 def /FMmagenta 2 def /FMyellow 3 def /FMblack 4 def /FMcustom 5 def /fMNegative false def /FrameSepIs FMnone def /FrameSepBlack 0 def /FrameSepYellow 0 def /FrameSepMagenta 0 def /FrameSepCyan 0 def /FrameSepRed 1 def /FrameSepGreen 1 def /FrameSepBlue 1 def /FrameCurGray 1 def /FrameCurPat null def /FrameCurColors [ 0 0 0 1 0 0 0 ] def /FrameColorEpsilon .001 def /eqepsilon { sub dup 0 lt {neg} if FrameColorEpsilon le } bind def /FrameCmpColorsCMYK { 2 copy 0 get exch 0 get eqepsilon { 2 copy 1 get exch 1 get eqepsilon { 2 copy 2 get exch 2 get eqepsilon { 3 get exch 3 get eqepsilon } {pop pop false} ifelse }{pop pop false} ifelse } {pop pop false} ifelse } bind def /FrameCmpColorsRGB { 2 copy 4 get exch 0 get eqepsilon { 2 copy 5 get exch 1 get eqepsilon { 6 get exch 2 get eqepsilon }{pop pop false} ifelse } {pop pop false} ifelse } bind def /RGBtoCMYK { 1 exch sub 3 1 roll 1 exch sub 3 1 roll 1 exch sub 3 1 roll 3 copy 2 copy le { pop } { exch pop } ifelse 2 copy le { pop } { exch pop } ifelse dup dup dup 6 1 roll 4 1 roll 7 1 roll sub 6 1 roll sub 5 1 roll sub 4 1 roll } bind def /CMYKtoRGB { dup dup 4 -1 roll add 5 1 roll 3 -1 roll add 4 1 roll add 1 exch sub dup 0 lt {pop 0} if 3 1 roll 1 exch sub dup 0 lt {pop 0} if exch 1 exch sub dup 0 lt {pop 0} if exch } bind def /FrameSepInit { 1.0 RealSetgray } bind def /FrameSetSepColor { /FrameSepBlue exch def /FrameSepGreen exch def /FrameSepRed exch def /FrameSepBlack exch def /FrameSepYellow exch def /FrameSepMagenta exch def /FrameSepCyan exch def /FrameSepIs FMcustom def setCurrentScreen } bind def /FrameSetCyan { /FrameSepBlue 1.0 def /FrameSepGreen 1.0 def /FrameSepRed 0.0 def /FrameSepBlack 0.0 def /FrameSepYellow 0.0 def /FrameSepMagenta 0.0 def /FrameSepCyan 1.0 def /FrameSepIs FMcyan def setCurrentScreen } bind def /FrameSetMagenta { /FrameSepBlue 1.0 def /FrameSepGreen 0.0 def /FrameSepRed 1.0 def /FrameSepBlack 0.0 def /FrameSepYellow 0.0 def /FrameSepMagenta 1.0 def /FrameSepCyan 0.0 def /FrameSepIs FMmagenta def setCurrentScreen } bind def /FrameSetYellow { /FrameSepBlue 0.0 def /FrameSepGreen 1.0 def /FrameSepRed 1.0 def /FrameSepBlack 0.0 def /FrameSepYellow 1.0 def /FrameSepMagenta 0.0 def /FrameSepCyan 0.0 def /FrameSepIs FMyellow def setCurrentScreen } bind def /FrameSetBlack { /FrameSepBlue 0.0 def /FrameSepGreen 0.0 def /FrameSepRed 0.0 def /FrameSepBlack 1.0 def /FrameSepYellow 0.0 def /FrameSepMagenta 0.0 def /FrameSepCyan 0.0 def /FrameSepIs FMblack def setCurrentScreen } bind def /FrameNoSep { /FrameSepIs FMnone def setCurrentScreen } bind def /FrameSetSepColors { FrameDict begin [ exch 1 add 1 roll ] /FrameSepColors exch def end } bind def /FrameColorInSepListCMYK { FrameSepColors { exch dup 3 -1 roll FrameCmpColorsCMYK { pop true exit } if } forall dup true ne {pop false} if } bind def /FrameColorInSepListRGB { FrameSepColors { exch dup 3 -1 roll FrameCmpColorsRGB { pop true exit } if } forall dup true ne {pop false} if } bind def /RealSetgray /setgray load def /RealSetrgbcolor /setrgbcolor load def /RealSethsbcolor /sethsbcolor load def end /setgray { FrameDict begin FrameSepIs FMnone eq { RealSetgray } { FrameSepIs FMblack eq { RealSetgray } { FrameSepIs FMcustom eq FrameSepRed 0 eq and FrameSepGreen 0 eq and FrameSepBlue 0 eq and { RealSetgray } { 1 RealSetgray pop } ifelse } ifelse } ifelse end } bind def /setrgbcolor { FrameDict begin FrameSepIs FMnone eq { RealSetrgbcolor } { 3 copy [ 4 1 roll ] FrameColorInSepListRGB { FrameSepBlue eq exch FrameSepGreen eq and exch FrameSepRed eq and { 0 } { 1 } ifelse } { FMPColor { RealSetrgbcolor currentcmykcolor } { RGBtoCMYK } ifelse FrameSepIs FMblack eq {1.0 exch sub 4 1 roll pop pop pop} { FrameSepIs FMyellow eq {pop 1.0 exch sub 3 1 roll pop pop} { FrameSepIs FMmagenta eq {pop pop 1.0 exch sub exch pop } { FrameSepIs FMcyan eq {pop pop pop 1.0 exch sub } {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse } ifelse RealSetgray } ifelse end } bind def /sethsbcolor { FrameDict begin FrameSepIs FMnone eq { RealSethsbcolor } { RealSethsbcolor currentrgbcolor setrgbcolor } ifelse end } bind def FrameDict begin /setcmykcolor where { pop /RealSetcmykcolor /setcmykcolor load def } { /RealSetcmykcolor { 4 1 roll 3 { 3 index add 0 max 1 min 1 exch sub 3 1 roll} repeat RealSetrgbcolor pop } bind def } ifelse userdict /setcmykcolor { FrameDict begin FrameSepIs FMnone eq { RealSetcmykcolor } { 4 copy [ 5 1 roll ] FrameColorInSepListCMYK { FrameSepBlack eq exch FrameSepYellow eq and exch FrameSepMagenta eq and exch FrameSepCyan eq and { 0 } { 1 } ifelse } { FrameSepIs FMblack eq {1.0 exch sub 4 1 roll pop pop pop} { FrameSepIs FMyellow eq {pop 1.0 exch sub 3 1 roll pop pop} { FrameSepIs FMmagenta eq {pop pop 1.0 exch sub exch pop } { FrameSepIs FMcyan eq {pop pop pop 1.0 exch sub } {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse } ifelse RealSetgray } ifelse end } bind put fMLevel1 { /patScreenDict 7 dict dup begin <0f1e3c78f0e1c387> [ 45 { pop } {exch pop} .5 2 sqrt] FmBD <0f87c3e1f0783c1e> [ 135 { pop } {exch pop} .5 2 sqrt] FmBD [ 0 { pop } dup .5 2 ] FmBD [ 90 { pop } dup .5 2 ] FmBD <8142241818244281> [ 45 { 2 copy lt {exch} if pop} dup .75 2 sqrt] FmBD <03060c183060c081> [ 45 { pop } {exch pop} .875 2 sqrt] FmBD <8040201008040201> [ 135 { pop } {exch pop} .875 2 sqrt] FmBD end def } { /patProcDict 5 dict dup begin <0f1e3c78f0e1c387> { 3 setlinewidth -1 -1 moveto 9 9 lineto stroke 4 -4 moveto 12 4 lineto stroke -4 4 moveto 4 12 lineto stroke} bind def <0f87c3e1f0783c1e> { 3 setlinewidth -1 9 moveto 9 -1 lineto stroke -4 4 moveto 4 -4 lineto stroke 4 12 moveto 12 4 lineto stroke} bind def <8142241818244281> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke -1 -1 moveto 9 9 lineto stroke } bind def <03060c183060c081> { 1 setlinewidth -1 -1 moveto 9 9 lineto stroke 4 -4 moveto 12 4 lineto stroke -4 4 moveto 4 12 lineto stroke} bind def <8040201008040201> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke -4 4 moveto 4 -4 lineto stroke 4 12 moveto 12 4 lineto stroke} bind def end def /patDict 15 dict dup begin /PatternType 1 def /PaintType 2 def /TilingType 3 def /BBox [ 0 0 8 8 ] def /XStep 8 def /YStep 8 def /PaintProc { begin patProcDict bstring known { patProcDict bstring get exec } { 8 8 true [1 0 0 -1 0 8] bstring imagemask } ifelse end } bind def end def } ifelse /combineColor { FrameSepIs FMnone eq { graymode fMLevel1 or not { [/Pattern [/DeviceCMYK]] setcolorspace FrameCurColors 0 4 getinterval aload pop FrameCurPat setcolor } { FrameCurColors 3 get 1.0 ge { FrameCurGray RealSetgray } { fMAcrobat not FMPColor graymode and and { 0 1 3 { FrameCurColors exch get 1 FrameCurGray sub mul } for RealSetcmykcolor } { 4 1 6 { FrameCurColors exch get graymode { 1 exch sub 1 FrameCurGray sub mul 1 exch sub } { 1.0 lt {FrameCurGray} {1} ifelse } ifelse } for RealSetrgbcolor } ifelse } ifelse } ifelse } { FrameCurColors 0 4 getinterval aload FrameColorInSepListCMYK { FrameSepBlack eq exch FrameSepYellow eq and exch FrameSepMagenta eq and exch FrameSepCyan eq and FrameSepIs FMcustom eq and { FrameCurGray } { 1 } ifelse } { FrameSepIs FMblack eq {FrameCurGray 1.0 exch sub mul 1.0 exch sub 4 1 roll pop pop pop} { FrameSepIs FMyellow eq {pop FrameCurGray 1.0 exch sub mul 1.0 exch sub 3 1 roll pop pop} { FrameSepIs FMmagenta eq {pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub exch pop } { FrameSepIs FMcyan eq {pop pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub } {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse } ifelse graymode fMLevel1 or not { [/Pattern [/DeviceGray]] setcolorspace FrameCurPat setcolor } { graymode not fMLevel1 and { dup 1 lt {pop FrameCurGray} if } if RealSetgray } ifelse } ifelse } bind def /savematrix { orgmatrix currentmatrix pop } bind def /restorematrix { orgmatrix setmatrix } bind def /fMDefaultMatrix matrix defaultmatrix def /fMatrix2 matrix def /dpi 72 0 fMDefaultMatrix dtransform dup mul exch dup mul add sqrt def /freq dpi dup 72 div round dup 0 eq {pop 1} if 8 mul div def /sangle 1 0 fMDefaultMatrix dtransform exch atan def sangle fMatrix2 rotate fMDefaultMatrix fMatrix2 concatmatrix dup 0 get /sflipx exch def 3 get /sflipy exch def /screenIndex { 0 1 dpiranges length 1 sub { dup dpiranges exch get 1 sub dpi le {exit} {pop} ifelse } for } bind def /getCyanScreen { FMUseHighFrequencyScreens { CHighAngles CMHighFreqs} {CLowAngles CMLowFreqs} ifelse screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load } bind def /getMagentaScreen { FMUseHighFrequencyScreens { MHighAngles CMHighFreqs } {MLowAngles CMLowFreqs} ifelse screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load } bind def /getYellowScreen { FMUseHighFrequencyScreens { YHighTDot YHighFreqs} { YLowTDot YLowFreqs } ifelse screenIndex dup 3 1 roll get 3 1 roll get { 3 div {2 { 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch} repeat FMSpotFunction } } {/FMSpotFunction load } ifelse 0.0 exch } bind def /getBlackScreen { FMUseHighFrequencyScreens { KHighFreqs } { KLowFreqs } ifelse screenIndex get 45.0 /FMSpotFunction load } bind def /getSpotScreen { getBlackScreen } bind def /getCompositeScreen { getBlackScreen } bind def /FMSetScreen fMLevel1 { /setscreen load }{ { 8 dict begin /HalftoneType 1 def /SpotFunction exch def /Angle exch def /Frequency exch def /AccurateScreens FMUseAcccurateScreens def currentdict end sethalftone } bind } ifelse def /setDefaultScreen { FMPColor { orgrxfer cvx orggxfer cvx orgbxfer cvx orgxfer cvx setcolortransfer } { orgxfer cvx settransfer } ifelse orgfreq organgle orgproc cvx setscreen } bind def /setCurrentScreen { FrameSepIs FMnone eq { FMUseDefaultNoSeparationScreen { setDefaultScreen } { getCompositeScreen FMSetScreen } ifelse } { FrameSepIs FMcustom eq { FMUseDefaultSpotSeparationScreen { setDefaultScreen } { getSpotScreen FMSetScreen } ifelse } { FMUseDefaultProcessSeparationScreen { setDefaultScreen } { FrameSepIs FMcyan eq { getCyanScreen FMSetScreen } { FrameSepIs FMmagenta eq { getMagentaScreen FMSetScreen } { FrameSepIs FMyellow eq { getYellowScreen FMSetScreen } { getBlackScreen FMSetScreen } ifelse } ifelse } ifelse } ifelse } ifelse } ifelse } bind def end /FMDOCUMENT { array /FMfonts exch def /#copies exch def FrameDict begin 0 ne /manualfeed exch def /paperheight exch def /paperwidth exch def 0 ne /fMNegative exch def 0 ne /edown exch def /yscale exch def /xscale exch def fMLevel1 { manualfeed {setmanualfeed} if /FMdicttop countdictstack 1 add def /FMoptop count def setpapername manualfeed {true} {papersize} ifelse {manualpapersize} {false} ifelse {desperatepapersize} {false} ifelse {papersizefailure} if count -1 FMoptop {pop pop} for countdictstack -1 FMdicttop {pop end} for } {2 dict dup /PageSize [paperwidth paperheight] put manualfeed {dup /ManualFeed manualfeed put} if {setpagedevice} stopped {papersizefailure} if } ifelse FMPColor { currentcolorscreen cvlit /orgproc exch def /organgle exch def /orgfreq exch def cvlit /orgbproc exch def /orgbangle exch def /orgbfreq exch def cvlit /orggproc exch def /orggangle exch def /orggfreq exch def cvlit /orgrproc exch def /orgrangle exch def /orgrfreq exch def currentcolortransfer fMNegative { 1 1 4 { pop { 1 exch sub } fmConcatProcs 4 1 roll } for 4 copy setcolortransfer } if cvlit /orgxfer exch def cvlit /orgbxfer exch def cvlit /orggxfer exch def cvlit /orgrxfer exch def } { currentscreen cvlit /orgproc exch def /organgle exch def /orgfreq exch def currenttransfer fMNegative { { 1 exch sub } fmConcatProcs dup settransfer } if cvlit /orgxfer exch def } ifelse end } def /FMBEGINPAGE { FrameDict begin /pagesave save def 3.86 setmiterlimit /landscape exch 0 ne def landscape { 90 rotate 0 exch dup /pwid exch def neg translate pop }{ pop /pwid exch def } ifelse edown { [-1 0 0 1 pwid 0] concat } if 0 0 moveto paperwidth 0 lineto paperwidth paperheight lineto 0 paperheight lineto 0 0 lineto 1 setgray fill xscale yscale scale /orgmatrix matrix def gsave } def /FMENDPAGE { grestore pagesave restore end showpage } def /FMFONTDEFINE { FrameDict begin findfont ReEncode 1 index exch definefont FMfonts 3 1 roll put end } def /FMFILLS { FrameDict begin dup array /fillvals exch def dict /patCache exch def end } def /FMFILL { FrameDict begin fillvals 3 1 roll put end } def /FMNORMALIZEGRAPHICS { newpath 1 setlinewidth 0 setlinecap 0 0 0 sethsbcolor 0 setgray } bind def /FMBEGINEPSF { end /FMEPSF save def /showpage {} def % See Adobe's "PostScript Language Reference Manual, 2nd Edition", page 714. % "...the following operators MUST NOT be used in an EPS file:" (emphasis ours) /banddevice {(banddevice) FMBADEPSF} def /clear {(clear) FMBADEPSF} def /cleardictstack {(cleardictstack) FMBADEPSF} def /copypage {(copypage) FMBADEPSF} def /erasepage {(erasepage) FMBADEPSF} def /exitserver {(exitserver) FMBADEPSF} def /framedevice {(framedevice) FMBADEPSF} def /grestoreall {(grestoreall) FMBADEPSF} def /initclip {(initclip) FMBADEPSF} def /initgraphics {(initgraphics) FMBADEPSF} def /quit {(quit) FMBADEPSF} def /renderbands {(renderbands) FMBADEPSF} def /setglobal {(setglobal) FMBADEPSF} def /setpagedevice {(setpagedevice) FMBADEPSF} def /setshared {(setshared) FMBADEPSF} def /startjob {(startjob) FMBADEPSF} def /lettertray {(lettertray) FMBADEPSF} def /letter {(letter) FMBADEPSF} def /lettersmall {(lettersmall) FMBADEPSF} def /11x17tray {(11x17tray) FMBADEPSF} def /11x17 {(11x17) FMBADEPSF} def /ledgertray {(ledgertray) FMBADEPSF} def /ledger {(ledger) FMBADEPSF} def /legaltray {(legaltray) FMBADEPSF} def /legal {(legal) FMBADEPSF} def /statementtray {(statementtray) FMBADEPSF} def /statement {(statement) FMBADEPSF} def /executivetray {(executivetray) FMBADEPSF} def /executive {(executive) FMBADEPSF} def /a3tray {(a3tray) FMBADEPSF} def /a3 {(a3) FMBADEPSF} def /a4tray {(a4tray) FMBADEPSF} def /a4 {(a4) FMBADEPSF} def /a4small {(a4small) FMBADEPSF} def /b4tray {(b4tray) FMBADEPSF} def /b4 {(b4) FMBADEPSF} def /b5tray {(b5tray) FMBADEPSF} def /b5 {(b5) FMBADEPSF} def FMNORMALIZEGRAPHICS [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall fx fw 2 div add fy fh 2 div add translate rotate fw 2 div neg fh 2 div neg translate fw urx llx sub div fh ury lly sub div scale llx neg lly neg translate /FMdicttop countdictstack 1 add def /FMoptop count def } bind def /FMENDEPSF { count -1 FMoptop {pop pop} for countdictstack -1 FMdicttop {pop end} for FMEPSF restore FrameDict begin } bind def FrameDict begin /setmanualfeed { %%BeginFeature *ManualFeed True statusdict /manualfeed true put %%EndFeature } bind def /max {2 copy lt {exch} if pop} bind def /min {2 copy gt {exch} if pop} bind def /inch {72 mul} def /pagedimen { paperheight sub abs 16 lt exch paperwidth sub abs 16 lt and {/papername exch def} {pop} ifelse } bind def /setpapername { /papersizedict 14 dict def papersizedict begin /papername /unknown def /Letter 8.5 inch 11.0 inch pagedimen /LetterSmall 7.68 inch 10.16 inch pagedimen /Tabloid 11.0 inch 17.0 inch pagedimen /Ledger 17.0 inch 11.0 inch pagedimen /Legal 8.5 inch 14.0 inch pagedimen /Statement 5.5 inch 8.5 inch pagedimen /Executive 7.5 inch 10.0 inch pagedimen /A3 11.69 inch 16.5 inch pagedimen /A4 8.26 inch 11.69 inch pagedimen /A4Small 7.47 inch 10.85 inch pagedimen /B4 10.125 inch 14.33 inch pagedimen /B5 7.16 inch 10.125 inch pagedimen end } bind def /papersize { papersizedict begin /Letter {lettertray letter} def /LetterSmall {lettertray lettersmall} def /Tabloid {11x17tray 11x17} def /Ledger {ledgertray ledger} def /Legal {legaltray legal} def /Statement {statementtray statement} def /Executive {executivetray executive} def /A3 {a3tray a3} def /A4 {a4tray a4} def /A4Small {a4tray a4small} def /B4 {b4tray b4} def /B5 {b5tray b5} def /unknown {unknown} def papersizedict dup papername known {papername} {/unknown} ifelse get end statusdict begin stopped end } bind def /manualpapersize { papersizedict begin /Letter {letter} def /LetterSmall {lettersmall} def /Tabloid {11x17} def /Ledger {ledger} def /Legal {legal} def /Statement {statement} def /Executive {executive} def /A3 {a3} def /A4 {a4} def /A4Small {a4small} def /B4 {b4} def /B5 {b5} def /unknown {unknown} def papersizedict dup papername known {papername} {/unknown} ifelse get end stopped } bind def /desperatepapersize { statusdict /setpageparams known { paperwidth paperheight 0 1 statusdict begin {setpageparams} stopped end } {true} ifelse } bind def /papersizefailure { FMAllowPaperSizeMismatch not { (The requested paper size is not available in any currently-installed tray) (Edit the PS file to "FMAllowPaperSizeMismatch true" to use default tray) FMFAILURE } if } def /DiacriticEncoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis /dagger /.notdef /cent /sterling /section /bullet /paragraph /germandbls /registered /copyright /trademark /acute /dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef /yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown /exclamdown /logicalnot /.notdef /florin /.notdef /.notdef /guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde /Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand /Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron ] def /ReEncode { dup length dict begin { 1 index /FID ne {def} {pop pop} ifelse } forall 0 eq {/Encoding DiacriticEncoding def} if currentdict end } bind def FMPColor { /BEGINBITMAPCOLOR { BITMAPCOLOR} def /BEGINBITMAPCOLORc { BITMAPCOLORc} def /BEGINBITMAPTRUECOLOR { BITMAPTRUECOLOR } def /BEGINBITMAPTRUECOLORc { BITMAPTRUECOLORc } def /BEGINBITMAPCMYK { BITMAPCMYK } def /BEGINBITMAPCMYKc { BITMAPCMYKc } def } { /BEGINBITMAPCOLOR { BITMAPGRAY} def /BEGINBITMAPCOLORc { BITMAPGRAYc} def /BEGINBITMAPTRUECOLOR { BITMAPTRUEGRAY } def /BEGINBITMAPTRUECOLORc { BITMAPTRUEGRAYc } def /BEGINBITMAPCMYK { BITMAPCMYKGRAY } def /BEGINBITMAPCMYKc { BITMAPCMYKGRAYc } def } ifelse /K { FMPrintAllColorsAsBlack { dup 1 eq 2 index 1 eq and 3 index 1 eq and not {7 {pop} repeat 0 0 0 1 0 0 0} if } if FrameCurColors astore pop combineColor } bind def /graymode true def fMLevel1 { /fmGetFlip { fMatrix2 exch get mul 0 lt { -1 } { 1 } ifelse } FmBD } if /setPatternMode { fMLevel1 { 2 index patScreenDict exch known { pop pop patScreenDict exch get aload pop freq mul 5 2 roll fMatrix2 currentmatrix 1 get 0 ne { 3 -1 roll 90 add 3 1 roll sflipx 1 fmGetFlip sflipy 2 fmGetFlip neg mul } { sflipx 0 fmGetFlip sflipy 3 fmGetFlip mul } ifelse 0 lt {exch pop} {pop} ifelse fMNegative { {neg} fmConcatProcs } if bind systemdict /setscreen get exec /FrameCurGray exch def } { /bwidth exch def /bpside exch def /bstring exch def /onbits 0 def /offbits 0 def freq sangle landscape {90 add} if {/ypoint exch def /xpoint exch def /xindex xpoint 1 add 2 div bpside mul cvi def /yindex ypoint 1 add 2 div bpside mul cvi def bstring yindex bwidth mul xindex 8 idiv add get 1 7 xindex 8 mod sub bitshift and 0 ne fMNegative {not} if {/onbits onbits 1 add def 1} {/offbits offbits 1 add def 0} ifelse } setscreen offbits offbits onbits add div fMNegative {1.0 exch sub} if /FrameCurGray exch def } ifelse } { pop pop dup patCache exch known { patCache exch get } { dup patDict /bstring 3 -1 roll put patDict 9 PatFreq screenIndex get div dup matrix scale makepattern dup patCache 4 -1 roll 3 -1 roll put } ifelse /FrameCurGray 0 def /FrameCurPat exch def } ifelse /graymode false def combineColor } bind def /setGrayScaleMode { graymode not { /graymode true def fMLevel1 { setCurrentScreen } if } if /FrameCurGray exch def combineColor } bind def /normalize { transform round exch round exch itransform } bind def /dnormalize { dtransform round exch round exch idtransform } bind def /lnormalize { 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop } bind def /H { lnormalize setlinewidth } bind def /Z { setlinecap } bind def /PFill { graymode fMLevel1 or not { gsave 1 setgray eofill grestore } if } bind def /PStroke { graymode fMLevel1 or not { gsave 1 setgray stroke grestore } if stroke } bind def /X { fillvals exch get dup type /stringtype eq {8 1 setPatternMode} {setGrayScaleMode} ifelse } bind def /V { PFill gsave eofill grestore } bind def /Vclip { clip } bind def /Vstrk { currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /N { PStroke } bind def /Nclip { strokepath clip newpath } bind def /Nstrk { currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /M {newpath moveto} bind def /E {lineto} bind def /D {curveto} bind def /O {closepath} bind def /L { /n exch def newpath normalize moveto 2 1 n {pop normalize lineto} for } bind def /Y { L closepath } bind def /R { /y2 exch def /x2 exch def /y1 exch def /x1 exch def x1 y1 x2 y1 x2 y2 x1 y2 4 Y } bind def /rarc {rad arcto } bind def /RR { /rad exch def normalize /y2 exch def /x2 exch def normalize /y1 exch def /x1 exch def mark newpath { x1 y1 rad add moveto x1 y2 x2 y2 rarc x2 y2 x2 y1 rarc x2 y1 x1 y1 rarc x1 y1 x1 y2 rarc closepath } stopped {x1 y1 x2 y2 R} if cleartomark } bind def /RRR { /rad exch def normalize /y4 exch def /x4 exch def normalize /y3 exch def /x3 exch def normalize /y2 exch def /x2 exch def normalize /y1 exch def /x1 exch def newpath normalize moveto mark { x2 y2 x3 y3 rarc x3 y3 x4 y4 rarc x4 y4 x1 y1 rarc x1 y1 x2 y2 rarc closepath } stopped {x1 y1 x2 y2 x3 y3 x4 y4 newpath moveto lineto lineto lineto closepath} if cleartomark } bind def /C { grestore gsave R clip setCurrentScreen } bind def /CP { grestore gsave Y clip setCurrentScreen } bind def /F { FMfonts exch get FMpointsize scalefont setfont } bind def /Q { /FMpointsize exch def F } bind def /T { moveto show } bind def /RF { rotate 0 ne {-1 1 scale} if } bind def /TF { gsave moveto RF show grestore } bind def /P { moveto 0 32 3 2 roll widthshow } bind def /PF { gsave moveto RF 0 32 3 2 roll widthshow grestore } bind def /S { moveto 0 exch ashow } bind def /SF { gsave moveto RF 0 exch ashow grestore } bind def /B { moveto 0 32 4 2 roll 0 exch awidthshow } bind def /BF { gsave moveto RF 0 32 4 2 roll 0 exch awidthshow grestore } bind def /G { gsave newpath normalize translate 0.0 0.0 moveto dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath PFill fill grestore } bind def /Gstrk { savematrix newpath 2 index 2 div add exch 3 index 2 div sub exch normalize 2 index 2 div sub exch 3 index 2 div add exch translate scale 0.0 0.0 1.0 5 3 roll arc restorematrix currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /Gclip { newpath savematrix normalize translate 0.0 0.0 moveto dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath clip newpath restorematrix } bind def /GG { gsave newpath normalize translate 0.0 0.0 moveto rotate dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath PFill fill grestore } bind def /GGclip { savematrix newpath normalize translate 0.0 0.0 moveto rotate dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath clip newpath restorematrix } bind def /GGstrk { savematrix newpath normalize translate 0.0 0.0 moveto rotate dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath restorematrix currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /A { gsave savematrix newpath 2 index 2 div add exch 3 index 2 div sub exch normalize 2 index 2 div sub exch 3 index 2 div add exch translate scale 0.0 0.0 1.0 5 3 roll arc restorematrix PStroke grestore } bind def /Aclip { newpath savematrix normalize translate 0.0 0.0 moveto dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath strokepath clip newpath restorematrix } bind def /Astrk { Gstrk } bind def /AA { gsave savematrix newpath 3 index 2 div add exch 4 index 2 div sub exch normalize 3 index 2 div sub exch 4 index 2 div add exch translate rotate scale 0.0 0.0 1.0 5 3 roll arc restorematrix PStroke grestore } bind def /AAclip { savematrix newpath normalize translate 0.0 0.0 moveto rotate dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath strokepath clip newpath restorematrix } bind def /AAstrk { GGstrk } bind def /BEGINPRINTCODE { /FMdicttop countdictstack 1 add def /FMoptop count 7 sub def /FMsaveobject save def userdict begin /showpage {} def FMNORMALIZEGRAPHICS 3 index neg 3 index neg translate } bind def /ENDPRINTCODE { count -1 FMoptop {pop pop} for countdictstack -1 FMdicttop {pop end} for FMsaveobject restore } bind def /gn { 0 { 46 mul cf read pop 32 sub dup 46 lt {exit} if 46 sub add } loop add } bind def /cfs { /str sl string def 0 1 sl 1 sub {str exch val put} for str def } bind def /ic [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} ] def /ms { /sl exch def /val 255 def /ws cfs /im cfs /val 0 def /bs cfs /cs cfs } bind def 400 ms /ip { is 0 cf cs readline pop { ic exch get exec add } forall pop } bind def /rip { bis ris copy pop is 0 cf cs readline pop { ic exch get exec add } forall pop pop ris gis copy pop dup is exch cf cs readline pop { ic exch get exec add } forall pop pop gis bis copy pop dup add is exch cf cs readline pop { ic exch get exec add } forall pop } bind def /rip4 { kis cis copy pop is 0 cf cs readline pop { ic exch get exec add } forall pop pop cis mis copy pop dup is exch cf cs readline pop { ic exch get exec add } forall pop pop mis yis copy pop dup dup add is exch cf cs readline pop { ic exch get exec add } forall pop pop yis kis copy pop 3 mul is exch cf cs readline pop { ic exch get exec add } forall pop } bind def /wh { /len exch def /pos exch def ws 0 len getinterval im pos len getinterval copy pop pos len } bind def /bl { /len exch def /pos exch def bs 0 len getinterval im pos len getinterval copy pop pos len } bind def /s1 1 string def /fl { /len exch def /pos exch def /val cf s1 readhexstring pop 0 get def pos 1 pos len add 1 sub {im exch val put} for pos len } bind def /hx { 3 copy getinterval cf exch readhexstring pop pop } bind def /wbytes { dup dup 8 gt { pop 8 idiv mul } { 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } ifelse } bind def /BEGINBITMAPBWc { 1 {} COMMONBITMAPc } bind def /BEGINBITMAPGRAYc { 8 {} COMMONBITMAPc } bind def /BEGINBITMAP2BITc { 2 {} COMMONBITMAPc } bind def /COMMONBITMAPc { /cvtProc exch def /depth exch def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def cvtProc /is im 0 lb getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height depth [width 0 0 height neg 0 height] {ip} image bitmapsave restore grestore } bind def /BEGINBITMAPBW { 1 {} COMMONBITMAP } bind def /BEGINBITMAPGRAY { 8 {} COMMONBITMAP } bind def /BEGINBITMAP2BIT { 2 {} COMMONBITMAP } bind def /COMMONBITMAP { /cvtProc exch def /depth exch def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def cvtProc /is width depth wbytes string def /cf currentfile def width height depth [width 0 0 height neg 0 height] {cf is readhexstring pop} image bitmapsave restore grestore } bind def /ngrayt 256 array def /nredt 256 array def /nbluet 256 array def /ngreent 256 array def fMLevel1 { /colorsetup { currentcolortransfer /gryt exch def /blut exch def /grnt exch def /redt exch def 0 1 255 { /indx exch def /cynu 1 red indx get 255 div sub def /magu 1 green indx get 255 div sub def /yelu 1 blue indx get 255 div sub def /kk cynu magu min yelu min def /u kk currentundercolorremoval exec def % /u 0 def nredt indx 1 0 cynu u sub max sub redt exec put ngreent indx 1 0 magu u sub max sub grnt exec put nbluet indx 1 0 yelu u sub max sub blut exec put ngrayt indx 1 kk currentblackgeneration exec sub gryt exec put } for {255 mul cvi nredt exch get} {255 mul cvi ngreent exch get} {255 mul cvi nbluet exch get} {255 mul cvi ngrayt exch get} setcolortransfer {pop 0} setundercolorremoval {} setblackgeneration } bind def } { /colorSetup2 { [ /Indexed /DeviceRGB 255 {dup red exch get 255 div exch dup green exch get 255 div exch blue exch get 255 div} ] setcolorspace } bind def } ifelse /fakecolorsetup { /tran 256 string def 0 1 255 {/indx exch def tran indx red indx get 77 mul green indx get 151 mul blue indx get 28 mul add add 256 idiv put} for currenttransfer {255 mul cvi tran exch get 255.0 div} exch fmConcatProcs settransfer } bind def /BITMAPCOLOR { /depth 8 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def fMLevel1 { colorsetup /is width depth wbytes string def /cf currentfile def width height depth [width 0 0 height neg 0 height] {cf is readhexstring pop} {is} {is} true 3 colorimage } { colorSetup2 /is width depth wbytes string def /cf currentfile def 7 dict dup begin /ImageType 1 def /Width width def /Height height def /ImageMatrix [width 0 0 height neg 0 height] def /DataSource {cf is readhexstring pop} bind def /BitsPerComponent depth def /Decode [0 255] def end image } ifelse bitmapsave restore grestore } bind def /BITMAPCOLORc { /depth 8 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def fMLevel1 { colorsetup /is im 0 lb getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height depth [width 0 0 height neg 0 height] {ip} {is} {is} true 3 colorimage } { colorSetup2 /is im 0 lb getinterval def ws 0 lb getinterval is copy pop /cf currentfile def 7 dict dup begin /ImageType 1 def /Width width def /Height height def /ImageMatrix [width 0 0 height neg 0 height] def /DataSource {ip} bind def /BitsPerComponent depth def /Decode [0 255] def end image } ifelse bitmapsave restore grestore } bind def /BITMAPTRUECOLORc { /depth 24 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def /is im 0 lb getinterval def /ris im 0 width getinterval def /gis im width width getinterval def /bis im width 2 mul width getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip pop ris} {gis} {bis} true 3 colorimage bitmapsave restore grestore } bind def /BITMAPCMYKc { /depth 32 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def /is im 0 lb getinterval def /cis im 0 width getinterval def /mis im width width getinterval def /yis im width 2 mul width getinterval def /kis im width 3 mul width getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip4 pop cis} {mis} {yis} {kis} true 4 colorimage bitmapsave restore grestore } bind def /BITMAPTRUECOLOR { gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def /is width string def /gis width string def /bis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop } { cf gis readhexstring pop } { cf bis readhexstring pop } true 3 colorimage bitmapsave restore grestore } bind def /BITMAPCMYK { gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def /is width string def /mis width string def /yis width string def /kis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop } { cf mis readhexstring pop } { cf yis readhexstring pop } { cf kis readhexstring pop } true 4 colorimage bitmapsave restore grestore } bind def /BITMAPTRUEGRAYc { /depth 24 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def /is im 0 lb getinterval def /ris im 0 width getinterval def /gis im width width getinterval def /bis im width 2 mul width getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip pop ris gis bis width gray} image bitmapsave restore grestore } bind def /BITMAPCMYKGRAYc { /depth 32 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def /is im 0 lb getinterval def /cis im 0 width getinterval def /mis im width width getinterval def /yis im width 2 mul width getinterval def /kis im width 3 mul width getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip pop cis mis yis kis width cgray} image bitmapsave restore grestore } bind def /cgray { /ww exch def /k exch def /y exch def /m exch def /c exch def 0 1 ww 1 sub { /i exch def c i get m i get y i get k i get CMYKtoRGB .144 mul 3 1 roll .587 mul 3 1 roll .299 mul add add c i 3 -1 roll floor cvi put } for c } bind def /gray { /ww exch def /b exch def /g exch def /r exch def 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul b i get .114 mul add add r i 3 -1 roll floor cvi put } for r } bind def /BITMAPTRUEGRAY { gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def /is width string def /gis width string def /bis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop cf gis readhexstring pop cf bis readhexstring pop width gray} image bitmapsave restore grestore } bind def /BITMAPCMYKGRAY { gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def /is width string def /yis width string def /mis width string def /kis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop cf mis readhexstring pop cf yis readhexstring pop cf kis readhexstring pop width cgray} image bitmapsave restore grestore } bind def /BITMAPGRAY { 8 {fakecolorsetup} COMMONBITMAP } bind def /BITMAPGRAYc { 8 {fakecolorsetup} COMMONBITMAPc } bind def /ENDBITMAP { } bind def end /ALDmatrix matrix def ALDmatrix currentmatrix pop /StartALD { /ALDsave save def savematrix ALDmatrix setmatrix } bind def /InALD { restorematrix } bind def /DoneALD { ALDsave restore } bind def /I { setdash } bind def /J { [] 0 setdash } bind def %%EndProlog %%BeginSetup (5.0) FMVERSION 1 1 0 0 612 792 0 1 19 FMDOCUMENT 0 0 /Times-Roman FMFONTDEFINE 1 0 /Times-Bold FMFONTDEFINE 2 1 /Symbol FMFONTDEFINE 3 0 /Times-Italic FMFONTDEFINE 4 0 /Times-BoldItalic FMFONTDEFINE 5 0 /Courier FMFONTDEFINE 6 0 /Helvetica-Bold FMFONTDEFINE 32 FMFILLS 0 0 FMFILL 1 0.1 FMFILL 2 0.3 FMFILL 3 0.5 FMFILL 4 0.7 FMFILL 5 0.9 FMFILL 6 0.97 FMFILL 7 1 FMFILL 8 <0f1e3c78f0e1c387> FMFILL 9 <0f87c3e1f0783c1e> FMFILL 10 FMFILL 11 FMFILL 12 <8142241818244281> FMFILL 13 <03060c183060c081> FMFILL 14 <8040201008040201> FMFILL 16 1 FMFILL 17 0.9 FMFILL 18 0.7 FMFILL 19 0.5 FMFILL 20 0.3 FMFILL 21 0.1 FMFILL 22 0.03 FMFILL 23 0 FMFILL 24 FMFILL 25 FMFILL 26 <3333333333333333> FMFILL 27 <0000ffff0000ffff> FMFILL 28 <7ebddbe7e7dbbd7e> FMFILL 29 FMFILL 30 <7fbfdfeff7fbfdfe> FMFILL %%EndSetup %%Page: "1" 1 %%BeginPaperSize: Letter %%EndPaperSize 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K J 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X 0 0 0 1 0 0 0 K V 0 12 Q 0 X (This is a draft specification of the standard mapping of Enterprise JavaBeans to CORBA.) 108 512 T 1 F (Sun Microsystems Inc. Proprietary and Confidential document) 171.5 452 T 1 15 Q (Please send technical comments on this specification to:) 108 390 T (ejb-spec-comments@sun.com) 154 364 T (Please send product and business questions to:) 108 318 T (ejb-marketing@sun.com) 154 292 T 0 12 Q (Copyright) 108 242 T 2 F (\343) 159.67 242 T 0 F (1997 by Sun Microsystems Inc.) 172.15 242 T (901 San Antonio Road, Palo Alto, CA 94303.) 108 222 T (All rights reserved.) 108 182 T 54 72 558 720 C 54 540 558 720 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 540 558 720 R 7 X 0 0 0 1 0 0 0 K V 153 612 377.98 639 R V 3 24 Q 0 X (Sun Microsystems) 153 623 T 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K 153 549 558 603 R 7 X V 0 X (Enterprise JavaBeans) 153 580.6 T 3 19.2 Q (TM) 364.3 590.2 T 3 24 Q ( to CORBA) 390.96 580.6 T (Mapping) 153 554.6 T 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K 54 657 558 666 R 3 X V 0.5 H 0 Z N 54 666 558 666 2 L V 1 H 2 Z 0 X N 54 675 162 711 R 7 X V 0 X 0 54 675 -54 -675 108 36 BEGINPRINTCODE %! % SUN logo % get width and height from Frame. /dlh exch def /dlw exch def % adjust dlw and translate to make it fit in a Frame rect. .015 dlw mul dup translate /dlw dlw .97 mul def % size of quadrant in logo /qsize 24 def % size of space in slot of U. This is adjusted at small scales /spsize 1 def % since qsize is not adjusted we precompute this /qs2 qsize 2 div def /qs4 qsize 4 div def /sunwd qsize 3.9 mul def /amin { abs exch abs 2 copy lt {pop} {exch pop} ifelse } bind def /amax { abs exch abs 2 copy gt {pop} {exch pop} ifelse } bind def /u { newpath uwd2 neg uht2 moveto 0 uwd2 uht2 sub uwd2 180 0 arc uwd2 uht2 lineto spd2 uht2 lineto 0 uwd2 uht2 sub spd2 0 180 arcn spd2 neg uht2 lineto closepath fill } bind def /quarter { gsave qs4 qs2 translate u qs2 0 translate 180 rotate u grestore } bind def /logo { % adjust space size so that space is maintain at small res. spsize dup dtransform amin 2.5 amax dup idtransform amax /spsize exch def spsize qsize ge { /spsize 0 def } if % compute sizes for U /lw qs2 spsize 2 mul sub 2 div def /spd2 spsize 2 div def /uht2 qsize spsize sub 2 div def /uwd2 lw spd2 add def % draw the quadrants gsave 45 rotate quarter 90 rotate quarter 90 rotate quarter 90 rotate quarter grestore } def /sun { sunwd 272 div dup scale -216.275 -533.334 translate 1 setlinecap 1 setlinejoin 2 setlinewidth % lowleft=216.275,533.334 upright=488.274,635 newpath 270.75 604.375 moveto 266.25 606.25 269.026 615.174 263.5 616.875 curveto 257 618.875 247.488 619.847 244 612.375 curveto 241.375 606.75 244.545 599.441 251.375 596.75 curveto 262.648 592.309 278.206 592.094 283.875 580.125 curveto 286.125 575.375 286.066 566.289 284.625 560.125 curveto 281.5 546.75 265.533 536.608 250.875 535.5 curveto 240.713 534.732 228.457 533.334 219.875 539.875 curveto 221.902 548.102 219 557.25 221.25 565.5 curveto 221.506 566.436 228.205 566.119 229.25 565 curveto 232.75 561.25 231.396 554.125 237.375 550.75 curveto 243.684 547.188 250.147 545.921 256.125 550.875 curveto 260.5 554.5 262.107 564.823 255.625 568.25 curveto 244.572 574.095 232 572 222.375 583.5 curveto 216.275 590.789 217.186 602.558 219.75 611.25 curveto 222 618.875 233.369 629.37 244.625 630.25 curveto 252.625 630.875 273.891 631.686 279.125 624.125 curveto 280.25 622.5 279.625 609.125 277.375 605.125 curveto 276.638 603.813 271.695 603.981 270.75 604.375 curveto closepath fill newpath 395.411 610.875 moveto 395.18 617.191 384.484 612.444 381 616.625 curveto 379.581 618.328 380.496 624.597 382.25 625 curveto 394.505 627.81 398.848 626.858 417.938 632.312 curveto 421.875 633.437 421.5 621.367 421.5 620.25 curveto 421.5 619.062 423.631 619.088 424.625 619.625 curveto 437.125 626.375 447.875 635 462.875 631.125 curveto 471.29 628.951 477.672 621.298 478 612.75 curveto 478.75 593.25 475.539 576.927 477.25 557.25 curveto 477.375 549.5 486.333 552.552 486.875 549.625 curveto 487.347 547.08 488.274 539.692 485.875 539.946 curveto 462.875 542.375 456.875 537.375 451.518 540.375 curveto 449.793 541.34 451.335 549.006 451.518 552.75 curveto 452.518 573.25 453.375 583.75 449.853 604.809 curveto 447.937 616.262 431.5 613.875 423.125 608 curveto 423.125 590 423.107 573.5 423.14 556.025 curveto 423.152 550.156 432.25 552.25 434.75 548.625 curveto 436.547 546.019 435.5 538.375 430.625 539.375 curveto 416.656 542.24 403.875 540.25 389.625 539.375 curveto 387.017 539.214 386.705 544.768 387.25 547.375 curveto 388.189 551.861 395.7 549.335 395.75 553.625 curveto 396 574.728 396.161 590.375 395.411 610.875 curveto closepath fill newpath 295.625 610 moveto 295.087 616.297 285.699 610.944 282.215 615.125 curveto 280.796 616.828 281.711 623.097 283.465 623.5 curveto 295.72 626.31 297.323 624.806 318.125 630.75 curveto 321.625 631.75 321.018 625.242 321.018 624.125 curveto 321.018 600.247 320.099 571.274 323.125 563.75 curveto 327.75 552.25 349.875 557.329 349.875 565.75 curveto 349.875 581.75 350.286 593.875 349.661 610.625 curveto 349.426 616.941 338.734 611.569 335.25 615.75 curveto 333.831 617.453 334.746 623.722 336.5 624.125 curveto 348.755 626.935 354.054 624.947 372.75 631.625 curveto 376.25 632.875 376.125 627.617 376.125 626.5 curveto 376.125 599.75 375.712 581.996 376.125 556.375 curveto 376.25 548.625 385.208 551.677 385.75 548.75 curveto 386.222 546.205 387.159 539.375 384.75 539.5 curveto 367.875 540.375 355.33 536.675 351.25 539.5 curveto 349.625 540.625 351.61 548.144 351.25 551.875 curveto 351.178 552.621 350.377 553.739 349.5 553.25 curveto 340.541 548.24 336.647 537.684 325.375 536.5 curveto 313.54 535.256 300.362 540.698 297.375 552.875 curveto 294.125 566.125 296.875 595.375 295.625 610 curveto closepath fill } def /logotype { gsave % origin of logotype is lower left edge qsize 1.29 mul dup translate logo grestore gsave qsize 2.98 mul qsize .54 mul translate sun grestore gsave qsize 3.01 mul 0 moveto /Helvetica findfont qsize .6 mul round scalefont setfont qsize 3.9 mul (microsystems) stringwidth pop sub 12 div 0 (microsystems) ashow grestore } def dlw qsize 6.879 mul div dup scale logotype showpage ENDPRINTCODE 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K 153 612 558 612 2 L 7 X V 0.5 H 0 X N 54 549 558 549 2 L 7 X V 1 H 0 X N 54 72 558 720 C 0 0 612 792 C 54 72 558 162 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 162 R 7 X 0 0 0 1 0 0 0 K V 312 108 558 144 R V 3 12 Q 0 X (Rohit Garg) 503.66 136 T (December 9, 1997 3:03 pm) 427.03 114 T 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K 54 117 201 135 R 7 X V 0 X (Version 0.8) 54 127 T 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K 54 153 558 153 2 L 7 X V 1 H 2 Z 0 X N 54 99 558 99 2 L 7 X V 0 X N 0 0 612 792 C 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K 54 63 558 68 R 7 X 0 0 0 1 0 0 0 K V 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "1" 1 %%Page: "2" 2 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (2) 303.5 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q 0.44 (RESTRICTED RIGHTS: Use, duplication or disclosure by the government is subject) 126 652 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.58 (to the restrictions as set forth in subparagraph \050c\051 \0501\051 \050ii\051 of the Rights in Technical Data) 126 638 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (and Computer Software Clause as DFARS 252.227-7013 and FAR 52.227-19.) 126 624 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.56 (Sun, Sun Microsystems, the Sun logo, Java, and all Java-based trademarks and logos) 126 544 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.16 (are trademarks or registered trademarks of Sun Microsystems, Inc. in the Unites States) 126 530 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (and other countries.) 126 516 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.64 (THIS PUBLICATION IS PROVIDED \322AS IS\323 WITHOUT WARRANTY OF ANY) 126 456 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.56 (KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,) 126 442 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.88 (THE IMPLIED WARRANTIES OF MECHANTABILITY, FITNESS FOR A PAR-) 126 428 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (TICULAR USE, OR NON-INFRINGEMENT.) 126 414 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.14 (THIS PUBLICATION COULD INCLUDE TECHNICAL INACCURACIES OR TY-) 126 394 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1.43 (POGRAPHICAL ERRORS. CHANGES ARE PERIODICALLY ADDED TO THE) 126 380 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 2.43 (INFORMATION HEREIN; THESE CHANGES WILL BE INCORPORATED IN) 126 366 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1.34 (NEW EDITIONS OF THE PUBLICATION. SUN MICROSYSTEMS, INC., MAY) 126 352 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.75 (MAKE NEW IMPROVEMENTS AND/OR CHANGES IN THE PRODUCT\050S\051 AND/) 126 338 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (OR THE PROGRAM\050S\051 DESCRIBED IN THIS PUBLICATION AT ANY TIME.) 126 324 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "2" 2 %%Page: "3" 3 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (3) 303.5 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 24 Q (Contents) 260 704 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q -3.5 (1) 145 643.67 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Introduction) 172 643.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (4) 495 643.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -3.5 (2) 145 614.67 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Goals) 172 614.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (5) 495 614.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -3.5 (3) 145 585.67 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Mapping of Distribution) 172 585.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (7) 495 585.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -3.5 (4) 145 556.67 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Mapping of Naming) 172 556.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (9) 495 556.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -3.5 (5) 145 527.67 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Mapping of Transactions) 172 527.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (10) 488 527.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -3.5 (6) 145 498.67 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Mapping of Security) 172 498.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (13) 488 498.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -1.75 (Appendix A:) 126 469.67 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (References) 202.62 469.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (14) 488 469.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -1.75 (Appendix B:) 126 440.67 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Enterprise JavaBeans IDL) 201.85 440.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (15) 488 440.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -1.75 (Appendix C:) 126 411.67 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Example Application) 202.62 411.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (18) 488 411.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "3" 3 %%Page: "4" 4 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (4) 303.5 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 18 Q (1) 99 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Introduction) 126 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q 0.65 (Enterprise JavaBeans \050EJB\051 [1] is a component architecture for development and de-) 126 680 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.66 (ployment of object-oriented distributed enterprise-level Java applications. Applications) 126 666 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.68 (written using Enterprise JavaBeans are scalable, transactional, and multi-user secure.) 126 652 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.15 (These applications can be written once, and then deployed on any EJB-enabled server) 126 638 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (platform.) 126 624 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.23 (We expect that many EJB servers will be based on the CORBA/IIOP [2] industry stan-) 126 604 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.22 (dard. To ensure interoperability among the CORBA-based implementations from mul-) 126 590 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.11 (tiple-vendors, we have defined a standard mapping of EJB to CORBA. This document) 126 576 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (corresponds to the EJB specification version 0.80.) 126 562 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.24 (We thank the reviewers for their time and effort in helping us to improve the specifica-) 126 542 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (tion.) 126 528 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (1.1) 72 500.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Target Audience) 93 500.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q -0.55 (The target audience for this specification are the vendors of transaction processing plat-) 126 480 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.39 (forms, vendors of enterprise application tools, and other vendors who want to use the) 126 466 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CORBA/IIOP standard to provide support for Enterprise JavaBeans in their products.) 126 452 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (1.2) 72 424.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Mapping Overview) 93 424.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q (The EJB to CORBA mapping is divided into four areas:) 126 404 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\245) 133 384 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F 3.23 (Mapping of Distribution) 144 384 P 0 F 3.23 (- defines the relationship between an Enterprise) 274.03 384 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1.98 (JavaBean and a CORBA object, and the mapping of the Java RMI remote) 144 370 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (interfaces defined in the EJB specification to OMG IDL.) 144 356 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\245) 133 336 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F 3.34 (Mapping of Naming) 144 336 P 0 F 3.34 (- specifies how COS Naming is used to locate the) 253.68 336 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Container objects) 144 322 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\245) 133 302 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F 0.09 (Mapping of Transactions) 144 302 P 0 F 0.09 ( - defines the mapping of the EJB transaction support) 265.53 302 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (to the OMG Object Transaction Service v1.1 [6]) 144 288 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\245) 133 268 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F 0.95 (Mapping of Security) 144 268 P 0 F 0.95 ( - defines the mapping of the security features in EJB to) 243.9 268 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CORBA security) 144 254 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (1.3) 72 226.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Acknowledgments) 93 226.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q -0.03 (Vlada Matena, Graham Hamilton, Anil Vijendran, and Sanjeev Krishnan have provid-) 126 206 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ed invaluable input to this specification.) 126 192 T 0 0 0 1 0 0 0 K 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "4" 4 %%Page: "5" 5 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (5) 303.5 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 18 Q (2) 99 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Goals) 126 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q -0.38 (The primary goal of this specification is to define \322on-the-wire\323 interoperability so that) 126 680 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.34 (multiple CORBA based implementations of the EJB specification can interoperate on) 126 666 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (the network.) 126 652 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.27 (The specification makes it possible to provide the following EJB/CORBA interopera-) 126 632 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (bility:) 126 618 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\245) 133 598 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 2.34 (A CORBA client \050written in any CORBA supported language\051 can access) 144 598 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Enterprise JavaBeans deployed in a CORBA based transaction server) 144 584 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\245) 133 564 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (A program can mix calls to CORBA and EJB objects in a transaction.) 144 564 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\245) 133 544 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 2.88 (A transaction can span multiple EJB objects that are located on multiple) 144 544 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CORBA-based EJB servers, provided by different vendors.) 144 530 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (2.1) 72 201.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Types of CORBA Clients) 93 201.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q (There are two types of CORBA clients to an EJB Server:) 126 181 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\245) 133 161 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 F 0.93 (EJB/CORBA Client) 144 161 P 0 F 0.93 ( - A Java client that uses the EJB APIs. The client uses) 247.93 161 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.12 (JNDI to locate objects, Java RMI over IIOP to invoke remote methods, and the) 144 147 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F -0.27 (java.jts.CurrentTransaction) 144 133 P 0 F -0.27 ( interface to demarcate transaction boundaries. The) 278.02 133 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.13 (use of CORBA IDL is implicit \050i.e. the programmer writes only Java code and) 144 119 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (the corresponding CORBA IDL is generated automatically by tools\051.) 144 105 T 0 0 0 1 0 0 0 K 72 72 540 720 C 144 239 540 501.01 C 0 0 0 1 0 0 0 K 162.9 324.51 252.9 369.51 R 3 X 0 0 0 1 0 0 0 K V 162.9 369.51 216.9 414.51 R V 153.9 315.51 243.9 360.51 R 7 X V 0.5 H 2 Z 0 X N 153.9 360.51 207.9 405.51 R 7 X V 0 X N 0 12 Q (CORBA) 171.9 336.11 T (EJB) 171.9 378.51 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 416.9 323.51 506.9 368.51 R 3 X V 416.9 368.51 470.9 413.51 R V 407.9 314.51 497.9 359.51 R 7 X V 0 X N 407.9 359.51 461.9 404.51 R 7 X V 0 X N (CORBA) 425.9 335.11 T (EJB) 425.9 377.51 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 195.9 303.22 192.92 303.22 195.9 313.6 198.88 303.22 4 Y 0 Z N 195.9 303.22 192.92 303.22 195.9 313.6 198.88 303.22 4 Y V 195.9 302.97 195.9 278.51 2 L 2 Z N 195.9 278.51 429 278.51 2 L N 428.9 303.22 425.92 303.22 428.9 313.6 431.88 303.22 4 Y 0 Z N 428.9 303.22 425.92 303.22 428.9 313.6 431.88 303.22 4 Y V 428.9 278.51 428.9 302.97 2 L 2 Z N (vendor 1) 161.9 460.51 T (vendor 2) 285.9 462.31 T (\050client\051) 164.9 436.51 T 287.9 325.51 377.9 370.51 R 3 X V 287.9 370.51 341.9 415.51 R V 278.9 316.51 368.9 361.51 R 7 X V 0 X N 278.9 361.51 332.9 406.51 R 7 X V 0 X N (CORBA) 296.9 337.11 T (EJB) 296.9 379.51 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 320.9 304.22 317.92 304.22 320.9 314.6 323.88 304.22 4 Y 0 Z N 320.9 304.22 317.92 304.22 320.9 314.6 323.88 304.22 4 Y V 320.9 279.51 320.9 303.97 2 L 2 Z N (vendor 3) 431 461 T (\050server 1\051) 282 438 T (\050server 2\051) 431 439 T 0 0 0 1 0 0 0 K 72 72 540 720 C 0 0 612 792 C 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "5" 5 %%Page: "6" 6 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (6) 303.5 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q (\245) 133 712 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 F 0.54 (Plain CORBA Client) 144 712 P 0 F 0.54 ( - A client written in any language that uses a language) 252.42 712 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.41 (specific bindings of the CORBA IDL. Such a client uses COS Naming to locate) 144 698 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3.2 (objects, CORBA IDL to invoke remote methods, and OTS to demarcate) 144 684 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.47 (transactions. The use of CORBA IDL is explicit \050i.e. the programmer creates an) 144 670 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (IDL file and runs an IDL compiler to generate stubs for a given language\051.) 144 656 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.85 (The mapping needs to ensure that both types of clients interoperate with a CORBA-) 126 636 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (based EJB server.) 126 622 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 122 301 540 598 C 0 0 0 1 0 0 0 K 304 425 385 542 R 0.5 H 2 Z 0 X 0 0 0 1 0 0 0 K N 304 479 385 479 2 L N 0 12 Q (Enterprise) 316 515 T (JavaBeans) 316 503 T (EJB) 323 457 T (server) 323 445 T 447 425 528 542 R N 447 479 528 479 2 L N (Enterprise) 459 515 T (JavaBeans) 459 503 T (EJB) 466 457 T (server) 466 445 T 149 509 221 563 R N (Enterprise) 158 545 T (JavaBeans) 158 533 T (client) 158 521 T 149 425 221 479 R N (Java IDL) 158 460 T (client) 158 448 T 149 345 221 399 R N (CORBA) 158 380 T (C++ client) 158 368 T 436.71 450 436.71 452.98 447.09 450 436.71 447.02 4 Y 0 Z N 436.71 450 436.71 452.98 447.09 450 436.71 447.02 4 Y V 385 450 436.46 450 2 L 2 Z N 292.61 434.74 290.96 437.22 301.25 440.5 294.26 432.26 4 Y 0 Z N 292.61 434.74 290.96 437.22 301.25 440.5 294.26 432.26 4 Y V 221 387 292.4 434.6 2 L 2 Z N 290.79 451.25 291.11 454.2 301.1 450.1 290.46 448.29 4 Y 0 Z N 290.79 451.25 291.11 454.2 301.1 450.1 290.46 448.29 4 Y V 221 459 290.54 451.27 2 L 2 Z N 293.09 465.93 294.92 468.28 301.29 459.56 291.27 463.58 4 Y 0 Z N 293.09 465.93 294.92 468.28 301.29 459.56 291.27 463.58 4 Y V 221 522 292.9 466.08 2 L 2 Z N 3 F (vendor 4) 320 405 T (vendor 5) 460 405 T (vendor 3) 161 329.8 T (vendor1) 161 496.8 T (vendor 2) 161 410.8 T 0 F (IIOP) 401 456 T (IIOP) 239 463 T (IIOP) 239 517 T (IIOP) 239 418 T 0 0 0 1 0 0 0 K 0 0 612 792 C 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "6" 6 %%Page: "7" 7 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (7) 303.5 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 18 Q (3) 99 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Mapping of Distribution) 126 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q -0.33 (Even though CORBA does not mandate using IIOP, lately, CORBA and IIOP have be-) 126 680 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1.33 (come synonymous. This document assumes that the EJB/CORBA compliant imple-) 126 666 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (mentations are using IIOP) 126 652 T 0 9.6 Q (1) 251.65 656.8 T 0 12 Q ( as the communication protocol.) 256.45 652 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (3.1) 72 624.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Mapping Java Remote Interfaces to IDL) 93 624.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q -0.21 (Each enterprise bean is associated with a Java remote interface. The mapping of an en-) 126 604 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.95 (terprise bean\325s remote interface to CORBA IDL is specified by the standard Java to) 126 590 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (IDL mapping [12] specification.) 126 576 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F -0.49 ( This mapping is possible because the EJB specification restricts the types used) 144 556 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.69 (by the enterprise bean\325s remote interface to the types supported by the standard) 144 542 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Java to IDL mapping.) 144 528 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 F (3.1.1) 84 505 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Mapping of) 126 505 T 4 F (ejb.java.EJBObjet) 188.68 505 T 1 F ( interface) 278.68 505 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F -0.53 (The IDL interface generated from the bean\325s remote interface must inherit from the) 126 485 P 3 F -0.53 (En-) 522.67 485 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (terpriseJavaBeans::EJBObject) 126 471 T 0 F (IDL interface.) 282.49 471 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 F (3.1.2) 84 448 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Marking of transaction-enabled enterprise bean objects) 126 448 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F 2.31 (An enterprise bean whose transaction attribute is set to) 126 428 P 3 F 2.31 (BEAN_MANAGED) 412.38 428 P 0 F 2.31 (,) 505.7 428 P 3 F 2.31 (SUP-) 514.01 428 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.82 (PORTS) 126 414 P 0 F 0.82 (,) 162 414 P 3 F 0.82 (REQUIRED) 168.82 414 P 0 F 0.82 (,) 228.13 414 P 3 F 0.82 (REQUIRES_NEW) 234.95 414 P 0 F 0.82 (, or) 322.94 414 P 3 F 0.82 (MANDATORY) 343.57 414 P 0 F 0.82 (is said to be) 418.06 414 P 3 F 0.82 (transaction-) 481.33 414 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (enabled) 126 400 T 0 F (.) 163.99 400 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.57 (The CORBA mapping of a transaction-enabled enterprise bean must follow these rules:) 126 380 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\245) 133 360 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.34 (The IDL interface for the enterprise bean\325s remote interface must inherit from) 144 360 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (the) 144 346 T 3 F (CosTransactions::TransactionalObject) 161.66 346 T 0 F (IDL interface) 357.54 346 T 0 9.6 Q (2) 422.51 350.8 T 0 12 Q (.) 427.31 346 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\245) 133 326 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.35 (For an entity enterprise bean, the IDL interface for the enterprise bean\325s factory) 144 326 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 29.12 (and finder interfaces must inherit from the) 144 312 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (CosTransactions::TransactionalObject) 144 298 T 0 F (IDL interface.) 339.88 298 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4.01 (The IDL interface for an enterprise bean whose transaction attribute is set to) 126 278 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F 0.33 (NOT_SUPPORTED) 126 264 P 0 F 0.33 (must not inherit from the) 226.66 264 P 3 F 0.33 (CosTransactions::TransactionalObject) 351.32 264 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (IDL interface.) 126 250 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.3 (See \322Generated IDL\323 on page) 126 230 P -0.3 (19 for an example of mapping the Java Remote interfac-) 271.75 230 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (es in EJB to IDL using the above rules.) 126 216 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (3.2) 72 188.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Client Side Stubs) 93 188.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q 0.56 (The following figure illustrates the runtime objects used in a typical distributed EJB-) 126 168 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (enabled CORBA environment.) 126 154 T 0 0 0 1 0 0 0 K 72 96 540 111 C 0 0 0 1 0 0 0 K 81 109 225 109 2 L 0.5 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (1.) 90 89.33 T (plain insecure IIOP, SECIOP, or IIOP over SSL) 97.5 89.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (2.) 90 77.33 T (This is necessary to ensure the propagation of a transaction context from the client to the enterprise bean.) 97.5 77.33 T 0 0 0 1 0 0 0 K 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "7" 7 %%Page: "8" 8 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (8) 303.5 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 72 72 540 720 R 7 X V 0 12 Q 0 X 0.24 (Depending on the client type, the client stubs are either RMI/IIOP stubs, or plain IDL) 126 394 P (stubs defined by the language-specific CORBA mappings.) 126 380 T -0.12 (An example of the complete IDL for the remote interfaces in the Enterprise JavaBeans) 126 360 P (is listed in \322Enterprise JavaBeans IDL\323 on page) 126 346 T (15.) 358.62 346 T 1 14 Q (3.3) 72 318.67 T ( CORBA Object and Enterprise Bean Relationship) 93 318.67 T 3 12 Q ( As a server-side implementation technique, the CORBA runtime may use a) 144 298 T (servant implementing the enterprise bean\325s CORBA IDL to field a method) 144 284 T (invocation, and delegate the method invocation to the appropriate enterprise) 144 270 T (bean. One way to achieve this is use TIE based skeletons \050as defined in the) 144 256 T (CORBA v2.x\051 that are initialized with the enterprise bean instance. Since the) 144 242 T (architecture of the stubs and skeletons does not relate to on-the-wire) 144 228 T (interoperability, it is not specified in this document.) 144 214 T 0 0 0 1 0 0 0 K 117 410 540 708 C 0 0 0 1 0 0 0 K 126 429 288 690 R 7 X 0 0 0 1 0 0 0 K V 0.5 H 2 Z 0 X N 312.5 429 528 688.81 R 7 X V 0 X N 431.01 493.81 516.36 520.81 13.5 RR N 0 12 Q (enterprise bean) 437.22 503.27 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 420.71 510 420.71 512.98 431.09 510 420.71 507.02 4 Y 0 Z N 420.71 510 420.71 512.98 431.09 510 420.71 507.02 4 Y V 405 510 420.46 510 2 L 2 Z N (container \324s address space \050i.e. JVM\051) 344.5 673.19 T 364.88 438 521.69 663.69 18 RR N 327.42 624.75 431.95 648.75 12 RR 7 X V 0 X N (container object) 341.2 632.87 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 323.95 495.63 409.54 519.63 12 RR 7 X V 0 X N (remote bean) 337.26 503.75 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (remote) 133.25 593 T 177.6 527.91 180.21 529.33 182.57 518.8 174.98 526.48 4 Y 0 Z N 177.6 527.91 180.21 529.33 182.57 518.8 174.98 526.48 4 Y V 153 573 177.48 528.13 2 L 2 Z N (client address space \050i.e. JVM\051) 128.62 673.06 T (client) 134.94 581.87 T 168.99 623.16 166.66 625.01 175.44 631.29 171.32 621.31 4 Y 0 Z N 168.99 623.16 166.66 625.01 175.44 631.29 171.32 621.31 4 Y V 153 603 168.83 622.96 2 L 2 Z N 269 642.12 299.38 642.12 2 L 1.5 H N 294.31 634.12 328.19 634.12 2 L N 298.81 641.56 293.75 634.25 2 L N 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 266.75 511.44 297.13 511.44 2 L N 292.06 503.44 325.94 503.44 2 L N 296.56 510.87 291.5 503.56 2 L N 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 323.95 544.63 409.54 568.63 12 RR 7 X V 0.5 H 0 X N (factory object) 333.59 552.75 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 266.75 560.44 297.13 560.44 2 L 1.5 H N 292.06 552.44 325.94 552.44 2 L N 296.56 559.87 291.5 552.56 2 L N 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 206.21 549.44 269.92 573.44 12 RR 7 X V 0.5 H 0 X N 0 11 Q (factory stub) 211.94 557.56 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 196.23 562.35 197.11 565.19 206.13 559.27 195.34 559.51 4 Y 0 Z N 196.23 562.35 197.11 565.19 206.13 559.27 195.34 559.51 4 Y V 162 573 195.99 562.43 2 L 2 Z N 169.48 632.19 270.52 656.19 12 RR 7 X V 0 X N 0 12 Q ( container stub) 184.67 640.31 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 325.41 459 411 483 12 RR 7 X V 0 X N (finder object) 337.71 467.12 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 186 504 279.71 528 12 RR 7 X V 0 X N 0 11 Q (remote bean stub) 195.28 512.12 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 177 456 270.71 480 12 RR 7 X V 0 X N 167.76 493.81 170.61 494.66 170.74 483.87 164.91 492.95 4 Y 0 Z N 167.76 493.81 170.61 494.66 170.74 483.87 164.91 492.95 4 Y V 144 573 167.69 494.05 2 L 2 Z N 270 473 300.38 473 2 L 1.5 H N 295.31 465 329.19 465 2 L N 299.81 472.44 294.75 465.12 2 L N 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q (IIOP) 288 654.8 T 0 11 Q (finder stub) 198 465 T 326.98 582 477 606 12 RR 7 X V 0.5 H 0 X N 0 12 Q (ContainerMetaData object) 340.4 590.12 T 168.97 591 279 615 12 RR 7 X V 0 X N 279 600 304.76 600 2 L 1.5 H N 300.46 591 329.19 591 2 L N 304.28 599.37 299.99 591.14 2 L N 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (cont MetaData stub) 180 600 T 0 0 0 1 0 0 0 K 0 0 612 792 C 123.98 73 540 190 C 0 0 0 1 0 0 0 K 0 12 Q 0 X 0 0 0 1 0 0 0 K (client) 170.98 173 T (EJB Server) 363.66 172.8 T 289.98 90 486.98 155 R 0.5 H 2 Z N 158.98 92 244.98 155 R N 179.98 110 232.98 135 12.5 RR N 0 11 Q (object) 186.98 126 T (reference) 186.98 115 T 306.7 123 306.7 125.98 317.08 123 306.7 120.02 4 Y 0 Z N 306.7 123 306.7 125.98 317.08 123 306.7 120.02 4 Y V 235.98 123 306.45 123 2 L 2 Z N 313.98 110 360.98 136 13 RR N 417.98 101 470.98 142 18 RR N J 362.98 122 417.98 122 2 L J 362.98 122 366.73 122 2 L N [7.345 6.366] 7.345 I 366.73 122 414.23 122 2 L N J 414.23 122 417.98 122 2 L N J (servant) 320.98 121 T (EJB) 434.98 124 T (instance) 429.98 111 T 0 12 Q (IIOP) 258.98 127 T 0 0 0 1 0 0 0 K 0 0 612 792 C 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "8" 8 %%Page: "9" 9 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (9) 303.5 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 18 Q (4) 99 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Mapping of Naming) 126 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q -0.11 (An EJB Container is published in the COS Namespace by the EJB Server for each En-) 126 680 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.03 (terprise Bean. To obtain a reference to a Container object, an EJB/CORBA client uses) 126 666 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (JNDI API, whereas a plain CORBA client uses the COS Naming API directly.) 126 652 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (4.1) 72 624.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( COS Namespace Layout) 93 624.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q 0.46 (Each bean\325s deployment descriptor contains a property called the) 126 604 P 5 F 1.1 (containerName) 446.4 604 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F 0.86 (that specifies the pathname in the name space at which to bind the enterprise bean\325s) 126 590 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (container object.) 126 576 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.54 (For example, if an ejb-jar contains four enterprise beans with container names:) 126 556 P 3 F 0.54 (bank/) 513.34 556 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.4 (account/checking) 126 542 P 0 F 0.4 (,) 209.98 542 P 3 F 0.4 (bank/account/saving) 216.37 542 P 0 F 0.4 (,) 315.7 542 P 3 F 0.4 (bank/teller/ATM) 322.1 542 P 0 F 0.4 (, and) 401.43 542 P 3 F 0.4 (bank/manager) 428.55 542 P 0 F 0.4 ( then the) 497.88 542 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (COS namespace may look as shown in the following figure:) 126 528 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 122.98 299.46 540 504 C 0 0 0 1 0 0 0 K 0 X 0 0 0 1 0 0 0 K 90 450 4.5 4.5 237.27 399.7 G 0.5 H 2 Z 90 450 4.5 4.5 237.27 399.7 A 90 450 4.5 4.5 201.27 363.7 G 90 450 4.5 4.5 201.27 363.7 A 90 450 4.5 4.5 237.27 363.7 G 90 450 4.5 4.5 237.27 363.7 A 90 450 4.5 4.5 235.48 481.5 G 90 450 4.5 4.5 235.48 481.5 A 268.77 359.2 277.77 368.2 R 7 X V 0 X N 250.77 332.2 259.77 341.2 R 7 X V 0 X N 214.77 332.2 223.77 341.2 R 7 X V 0 X N 178.77 332.2 187.77 341.2 R 7 X V 0 X N 196.77 359.2 187.77 341.2 2 L N 205.77 359.2 214.77 341.2 2 L N 241.77 359.2 250.77 341.2 2 L N 241.77 395.2 268.77 368.2 2 L N 237.24 394.3 237.24 367.3 2 L N 232.77 395.2 205.77 368.2 2 L N J 236.35 473.37 236.35 443.6 2 L J 236.35 473.37 236.35 469.62 2 L N [8.148 7.061] 8.148 I 236.35 469.62 236.35 447.35 2 L N J 236.35 447.35 236.35 443.6 2 L N J 90 450 4.5 4.5 397.32 455.09 G 90 450 4.5 4.5 397.32 455.09 A 394.07 421.04 403.07 430.04 R 7 X V 0 X N 0 12 Q (Namespace) 250.73 481.21 T (Root) 250.73 469.21 T (bank) 242.67 411.36 T (account) 178.2 381.82 T J 90 450 4.5 4.5 236.97 439.93 G 90 450 4.5 4.5 236.97 439.93 A 236.4 435.54 236.4 403.31 2 L N (manager) 263.27 383.61 T (checking) 146.86 348.68 T (Naming Context) 419.08 450.77 T (Container) 420.87 419.42 T (saving) 200.59 346 T (ATM) 257.9 346 T (teller) 229.24 374.65 T 0 0 0 1 0 0 0 K 0 0 612 792 C 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "9" 9 %%Page: "10" 10 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (10) 301 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 18 Q (5) 99 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Mapping of Transactions) 126 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q -0.43 (The following sections describe the mapping of the transaction support in EJB to OMG) 126 680 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Object Transaction Service \050OTS\051 [6].) 126 666 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (5.1) 72 638.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Transaction Propagation) 93 638.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q 0.14 (The rules for the mapping of enterprise bean\325s remote interfaces to CORBA IDL \050See) 126 618 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.58 (Subsection 3.1.2\051 ensure that the IDL interface of the remote interface for a transaction-) 126 604 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.14 (enabled enterprise bean inherits from the) 126 590 P 3 F -0.14 (CosTransactions::TransactionalObject) 324.46 590 P 0 F -0.14 (IDL) 520.01 590 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (interface.) 126 576 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.52 (Inheritence from the) 126 556 P 3 F 0.52 (CosTransactions::TransactionalObject) 228.53 556 P 0 F 0.52 (inheritence ensures that) 425.65 556 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.24 (the ORB and OTS will propagate the client\325s transaction context \050if the client is asso-) 126 542 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ciated with any transaction context\051 to the enterprise bean object.) 126 528 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (5.2) 72 500.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Container support for transactions) 93 500.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q -0.43 (Every client method invocation on an enterprise bean object is interposed by the bean\325s) 126 480 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1.79 (container. The interposition allows the container to perform declarative transaction) 126 466 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (management.) 126 452 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.18 (The following table shows what actions are taken by the EJB server runtime for differ-) 126 432 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ent values of the enterprise bean\325s transaction attribute:) 126 418 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 10 Q (Table 1: Declarative Transaction Attribute Management) 185.04 399.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (T) 174.76 359.33 T (ransaction attrib) 180.51 359.33 T (ute) 245.02 359.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Client\325) 306.85 359.33 T (s transaction) 334.08 359.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (operation on) 450.07 371.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T) 436.49 359.33 T (ransactionCurrent) 442.26 359.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (on the Serv) 448.61 347.33 T (er) 494.02 347.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (NO) 175.11 313.33 T (T_SUPPOR) 189.15 313.33 T (TED) 237.45 313.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (-) 343.93 325.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (-) 473.54 325.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T1) 340.05 305.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (suspend T1) 452.29 305.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (in) 451.25 293.33 T (v) 458.63 293.33 T (ok) 463.43 293.33 T (e bean) 473.33 293.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (resume T1) 453.95 281.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (BEAN_MAN) 174.71 249.33 T (A) 229.91 249.33 T (GED) 236.74 249.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (-) 343.93 261.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (-) 473.54 261.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T1) 340.05 241.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T1) 469.64 241.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (REQ) 190.77 209.33 T (UIRED) 210.68 209.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (-) 343.93 221.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (be) 457.36 221.33 T (gin T2) 466.65 221.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (in) 451.25 209.33 T (v) 458.63 209.33 T (ok) 463.43 209.33 T (e bean) 473.33 209.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (end) 459.4 197.33 T 0 8 Q (a) 473.84 201.33 T 0 10 Q ( T2) 477.39 197.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T1) 340.05 177.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (inherits T1) 453.39 177.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (SUPPOR) 191.57 145.33 T (TS) 228.76 145.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (-) 343.93 157.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (-) 473.54 157.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T1) 340.05 137.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (inherits T1) 453.39 137.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 151.2 385.75 151.2 130.25 2 L V 0.5 H 0 Z N 280.8 386.25 280.8 129.75 2 L V N 410.4 386.25 410.4 129.75 2 L V N 540 385.75 540 130.25 2 L V N 150.95 386 540.25 386 2 L V N 151.45 339.25 539.75 339.25 2 L V N 151.45 336.75 539.75 336.75 2 L V N 280.55 318 540.25 318 2 L V N 150.95 274 540.25 274 2 L V N 280.55 254 540.25 254 2 L V N 150.95 234 540.25 234 2 L V N 280.55 190 540.25 190 2 L V N 150.95 170 540.25 170 2 L V N 280.55 150 540.25 150 2 L V N 150.95 130 540.25 130 2 L V N 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "10" 10 %%Page: "11" 11 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (11) 301 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q 1.23 (The following pseudo-code illustrates how a CORBA-based container should imple-) 126 448 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.52 (ment the required semantics of the enterprise bean\325s transaction attribute \050the pseudo-) 126 434 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (code does not show exception handling\051:) 126 420 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (\245) 133 374 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (NOT_SUPPORTED) 144 374 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 10 Q (clientTransaction = Current.suspend\050\051;) 152 355.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (result = instance.method\050args\051;) 152 343.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Current.resume\050clientTransaction\051;) 152 331.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (return result;) 152 319.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 12 Q (\245) 133 280 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (BEAN_MANAGED) 144 280 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 10 Q (return instance.method\050args\051;) 152 261.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 12 Q (\245) 133 222 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (REQUIRED) 144 222 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 10 Q (if \050Current.getStatus\050\051 == StatusActive\051 {) 152 203.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (return instance.method\050args\051;) 201.6 191.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (} else {) 152 179.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Current.begin\050\051;) 201.6 167.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (result = instance.method\050args\051;) 201.6 155.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Current.commit\050\051;) 201.6 143.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (return result;) 201.6 131.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (}) 152 119.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 154.53 490 543.33 496 C 0 0 612 792 C 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K -0.09 (a.) 172.53 483.33 P -0.09 (end transaction refers to either commit or abort based on the outcome from the method) 179.47 483.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (invocation on the bean.) 172.53 471.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (REQ) 181.05 647.33 T (UIRES_NEW) 200.95 647.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (-) 347.27 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (be) 460.69 659.33 T (gin T2) 469.98 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (in) 454.58 647.33 T (v) 461.96 647.33 T (ok) 466.76 647.33 T (e bean) 476.66 647.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (end T2) 464.51 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T1) 343.38 615.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (suspend T1) 455.62 615.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (be) 460.69 603.33 T (gin T2) 469.98 603.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (in) 454.58 591.33 T (v) 461.96 591.33 T (ok) 466.76 591.33 T (e bean) 476.66 591.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (end T2) 464.51 579.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (resume T1) 457.29 567.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (MAND) 188.01 535.33 T (A) 218.16 535.33 T (T) 224.27 535.33 T (OR) 230.2 535.33 T (Y) 243.44 535.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (-) 347.27 547.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (thro) 466.99 547.33 T (w) 482.85 547.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (TRANSA) 422.4 535.33 T (CTION_REQ) 462 535.33 T (UIR) 517.45 535.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ED) 471.87 523.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T1) 343.38 503.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (inherit T1) 458.67 503.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T) 178.09 693.33 T (ransaction attrib) 183.85 693.33 T (ute) 248.36 693.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Client\325) 310.18 693.33 T (s transaction) 337.41 693.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (operation on) 453.4 705.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T) 439.83 693.33 T (ransactionCurrent) 445.59 693.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (on the Serv) 451.95 681.33 T (er) 497.35 681.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 154.53 719.75 154.53 496.25 2 L V 0.5 H 0 Z N 284.13 720.25 284.13 495.75 2 L V N 413.73 720.25 413.73 495.75 2 L V N 543.33 719.75 543.33 496.25 2 L V N 154.28 720 543.58 720 2 L V N 154.78 673.25 543.08 673.25 2 L V N 154.78 670.75 543.08 670.75 2 L V N 283.88 628 543.58 628 2 L V N 154.28 560 543.58 560 2 L V N 283.88 516 543.58 516 2 L V N 154.28 496 543.58 496 2 L V N 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "11" 11 %%Page: "12" 12 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (12) 301 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 12 Q (\245) 133 712 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (SUPPORTS) 144 712 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 10 Q (return instance.method\050args\051;) 152 693.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 12 Q (\245) 133 654 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (REQUIRES_NEW) 144 654 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 10 Q (clientTransaction = Current.suspend\050\051;) 152 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Current.begin\050\051;) 152 623.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (result = instance.method\050args\051;) 152 611.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Current.commit\050\051;) 152 599.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Current.resume\050clientTransaction\051;) 152 587.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (return result;) 152 575.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 12 Q (\245) 133 536 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (MANDATORY) 144 536 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 10 Q (if \050Current.getStatus\050\051 == StatusActive\051 {) 152 517.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (return instance.method\050args\051;) 201.6 505.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (} else {) 152 493.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (throw TRANSACTION_REQUIRED;) 201.6 481.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (}) 152 469.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (5.3) 72 430.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Client-side Demarcation) 93 430.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q -0.22 (A CORBA client will typically use the OTS Current interface to demarcate transaction) 126 410 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.08 (boundaries. An EJB CORBA-based infrastructure must propagate the client\325s transac-) 126 396 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (tion context to the transaction-enabled enterprise beans.) 126 382 T 0 0 0 1 0 0 0 K 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "12" 12 %%Page: "13" 13 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (13) 301 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 18 Q (6) 99 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Mapping of Security) 126 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q -0.37 (The main security concern in the EJB specification is) 126 680 P 1 F -0.37 (access control) 381.67 680 P 0 F -0.37 (, which requires the) 452.29 680 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.2 (server ORB to determine the client\325s identity. Each bean also has an identity \050specified) 126 666 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.27 (in the bean\325s deployment descriptor,\051 which is used for ACL checking when the bean it-) 126 652 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (self acts as a client to another bean, or when the bean invokes protected resources.) 126 638 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.16 (The client identity is based on the actual security/communication protocols used by the) 126 618 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ORBs:) 126 604 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\245) 133 584 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F 0.72 (plain IIOP -) 144 584 P 0 F 0.72 (The client identity is the) 207.82 584 P 3 F 0.72 (CORBA::Principal) 331.1 584 P 0 F 0.72 (that comes over the) 432.02 584 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.4 (wire as part of the IIOP Request Message. The Principal can be mapped by the) 144 570 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ORB to the underlying operating system userid.) 144 556 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\245) 133 536 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F 1.1 (Common Secure IIOP) 144 536 P 0 F 1.1 ( \050CSI\051[7] - The client identity is defined by the specific) 252.18 536 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 2.41 (mechanism \050GSSKerberos, SPKM, CSI-ECMA\051 used with SECIOP \050Secure) 144 522 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (IIOP.\051) 144 508 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\245) 133 488 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F 2.74 (IIOP over SSL) 144 488 P 0 F 2.74 ( [8] - The client\325s identity is the X.500 distinguished name) 219.46 488 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (obtained using SSL client authentication.) 144 474 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F ( Note that when CSI or IIOP/SSL are used, then the CORBA::principal is) 144 454 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (deprecated. For real secure interoperability the ORB should implement CSI) 144 440 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (specification, or the CORBAsecurity/SSL specification.) 144 426 T 0 0 0 1 0 0 0 K 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "13" 13 %%Page: "14" 14 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (14) 301 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 18 Q (Appendix A: References) 248.52 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q ([1] Enterprise JavaBeans Specification.) 126 680 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.73 ([2] CORBA/IIOP version 2.1 Specification \050) 126 660 P 3 F -0.73 (http://www.omg.org/corba/corbaiiop.htm) 336.98 660 P 0 F -0.73 (\051) 536 660 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ([3] CORBA COS Security Service \050) 126 640 T 3 F (http://www.omg.org/corba/sectrans.htm#sec) 299.65 640 T 0 F (\051) 513.32 640 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ([4] CORBA Interoperability \050http://www.omg.org/docs/interop/96-05-01.ps\051) 126 620 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ([5] Naming Service \050) 126 600 T 3 F (http://www.omg.org/corba/sectrans.htm#nam) 227.64 600 T 0 F (\051) 446.65 600 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ([6] Transaction Service \050) 126 580 T 3 F (http://www.omg.org/corba/sectrans.htm#trans) 245.63 580 T 0 F (\051) 468.65 580 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ([7] Common Secure IIOP \050CSI\051 \050) 126 560 T 3 F (http://www.omg.org/docs/orbos/96-06-20.ps\051) 286.31 560 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F 7 ([8] CORBAsecurity/SSL Interoperability \050) 126 540 P 3 F 7 (http://www.omg.org/docs/orbos/97-02-) 351.98 540 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (04.ps) 144 526 T 0 F (\051) 169.67 526 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ([9] IDL Java Mapping 1.0) 126 506 T (\050) 254.64 506 T 3 F (http://www.omg.org/docs/orbos/97-03-01.ps) 258.64 506 T 0 F (\051) 472.32 506 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ([10] Java to IDL Mapping RFP \050) 126 486 T 3 F (http://www.omg.org/docs/orbos/orbos/97-03-08.ps\051) 283.32 486 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F 0.28 ([11] Java to IDL Mapping, Joint Initial Submission, IBM, Netscape, Oracle, Sun, and) 126 466 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Visigenic \050) 144 452 T 3 F (http://www.omg.org/docs/orbos/97-08-06.ps) 196.99 452 T 0 F (\051) 410.68 452 T 0 0 0 1 0 0 0 K 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "14" 14 %%Page: "15" 15 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (15) 301 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 18 Q (Appendix B: Enterprise JavaBeans IDL) 188.49 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 10 Q (// ejb.idl) 152 681.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (#include \322java.lang.ExceptionValue.idl\323) 152 657.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (module java {) 152 633.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( module ejb {) 152 609.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( // NotDestroyableException exception) 152 585.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( value NotDestroyableExceptionValue:) 152 573.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( ::java::lang::ExceptionValue {};) 152 561.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( exception NotDestroyableException {) 152 549.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( NotDestroyableExceptionValue value;) 152 537.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( };) 152 525.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( // InvalidKeyException exception) 152 501.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( value InvalidKeyExceptionValue:) 152 489.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( ::java::lang::ExceptionValue {};) 152 477.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( exception InvalidKeyException {) 152 465.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( InvalidKeyExceptionValue value;) 152 453.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( };) 152 441.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( // NoObjectWithKeyException exception) 152 417.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( value NoObjectWithKeyExceptionValue:) 152 405.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( ::java::lang::ExceptionValue {};) 152 393.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( exception NoObjectWithKeyException {) 152 381.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( NoObjectWithKeyExceptionValue value;) 152 369.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( };) 152 357.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( // Handle) 152 333.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( value Handle { state {}; };) 152 321.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( // PrimaryKey) 152 297.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( value PrimaryKey { state {}; };) 152 285.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( // Class) 152 261.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( value Class { state {}; };) 152 249.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( // forward references) 152 225.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( interface Container;) 152 213.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( interface ContainerMetaData;) 152 201.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( interface Factory;) 152 189.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( interface Finder;) 152 177.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( // Container) 152 153.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( interface Container {) 152 141.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( void destroy__\050in Handle handle\051) 152 117.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( raises\050NotDestroyableException\051;) 152 105.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( void destroy__PrimaryKey\050in PrimaryKey primaryKey\051) 152 81.33 T 0 0 0 1 0 0 0 K 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "15" 15 %%Page: "16" 16 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (16) 301 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 F ( raises\050NotDestroyableException\051;) 152 713.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( ContainerMetaData getContainerMetaData\050\051;) 152 689.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Factory getFactory\050\051;) 152 665.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Finder getFinder\050\051;) 152 641.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( };) 152 617.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( // ContainerMetaData) 152 593.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( interface ContainerMetaData {) 152 581.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( string getClassName\050\051;) 152 557.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Container getContainer\050\051;) 152 533.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Class getEnterpriseBeanClass\050\051;) 152 509.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Class getPrimaryKeyClass\050\051;) 152 485.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( };) 152 473.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( // EJBObject) 152 449.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( interface EJBObject {) 152 437.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( void destroy\050\051 raises\050NotDestroyableException\051;) 152 413.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( string getClassName\050\051;) 152 389.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Container getContainer\050\051;) 152 365.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Handle getHandle\050\051;) 152 341.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( PrimaryKey getPrimaryKey\050\051;) 152 317.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( boolean isIdentical\050in EJBObject bean\051;) 152 293.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( };) 152 281.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( // Factory) 152 257.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( interface Factory {) 152 245.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( string getClassName\050\051;) 152 221.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Container getContainer\050\051;) 152 197.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( };) 152 185.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( // Finder) 152 161.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( interface Finder {) 152 149.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( EJBObject findByPrimaryKey\050in PrimaryKey primaryKey\051) 152 125.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.44 ( raises \050InvalidKeyException, NoObjectWithKeyExcep-) 152 113.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (tion\051;) 152 101.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( string getClassName\050\051;) 152 77.33 T 0 0 0 1 0 0 0 K 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "16" 16 %%Page: "17" 17 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (17) 301 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 F ( Container getContainer\050\051;) 152 701.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( };) 152 689.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( };) 152 677.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (};) 152 665.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 72 636 540 648 C 0 0 0 1 0 0 0 K 72 647 540 647 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 72 644 540 644 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 6 10 Q 0 X 0 0 0 1 0 0 0 K -0.23 (ISSUE:) 126 628 P 0 12 Q -0.25 (Using the current \050draft proposal\051 Java RMI to IDL Mapping the module scop-) 164.43 628 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.58 (ing is such that the Java stubs and skeletons are generated with the) 126 614 P 5 F -1.4 (java.ejb) 440.67 614 P 0 F -0.58 ( package) 498.27 614 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.33 (prefix. There needs to be a way of overriding this package name. One possible solution) 126 600 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.74 (is to use a compiler directive #pragma javaPackage \050available in the Java IDL compiler\051) 126 586 P 0 0 0 1 0 0 0 K 72 556 540 568 C 0 0 0 1 0 0 0 K 72 567 540 567 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 72 564 540 564 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 0 12 Q 0 X 0 0 0 1 0 0 0 K (to prefix all generated packages.) 126 572 T 0 0 0 1 0 0 0 K 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "17" 17 %%Page: "18" 18 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (18) 301 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 18 Q (Appendix C: Example Application) 209.23 708 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q 0.81 (This sections shows the IDL that is generated from the remote interface of a session) 126 680 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0.2 (bean and the pseudocode for a C++ client that invokes methods on it in the context of) 126 666 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (a client initiated transaction. The bean is marked as) 126 652 T 3 F (transactionEnabled) 375.29 652 T 0 F (=true.) 469.96 652 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (C.1) 72 624.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Bean Remote Interface) 96.11 624.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 10 Q (package trading.interfaces;) 152 605.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (import java.ejb.EJBObject;) 152 581.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (import java.rmi.RemoteException;) 152 569.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (/**) 152 545.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.18 ( * TraderRemote is a remote interface for the Trader server bean.) 152 533.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( */) 152 521.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (public interface TraderRemote extends EJBObject {) 152 509.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( /* Buy shares of specified stock. */) 152 485.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.67 ( public void buy\050String stockSymbol, int shares, double price\051) 152 473.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (throws RemoteException, TooManySharesException;) 179.6 461.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( /* Sell shared of specified stock. */) 152 437.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -1.17 ( public void sell\050String stockSymbol, int shares, double price\051) 152 425.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (throws RemoteException, TooManySharesException;) 179.6 413.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( /* Submit orders. */) 152 389.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( public void submitOrders\050\051;) 152 377.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (}) 152 365.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (C.2) 72 326.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Bean\325s Remote Exceptions) 96.11 326.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 10 Q (package trading.interfaces;) 152 307.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (/**) 152 283.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.2 ( * TooManySharesException is thrown if a client attempts to trade) 152 271.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( * more shares than the Trader server bean permits.) 152 259.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( */) 152 247.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (public class TooManySharesException extends Exception {) 152 235.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( public TooManySharesException\050\051 {) 152 223.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (super\050\051;) 179.6 211.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( }) 152 199.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( public TooManySharesException\050String s\051 {) 152 175.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (super\050s\051;) 179.6 163.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( }) 152 151.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( int getMaxAllowed\050\051;) 152 127.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( private int maxAllowed;) 152 103.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (}) 152 91.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "18" 18 %%Page: "19" 19 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (19) 301 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (C.3) 72 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( Generated IDL) 96.11 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 10 Q (#include \322ejb.idl\323) 152 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (#include \322java.lang.ExceptionValue.idl\323) 152 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (module trading {) 152 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( value TooManySharesExceptionValue:) 152 611.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( ::java::lang::ExceptionValue {) 152 599.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( state {) 152 587.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( private int maxAllowed;) 152 575.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( };) 152 563.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( };) 152 551.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( exception TooManySharesException {) 152 527.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( TooManySharesExceptionValue value;) 152 515.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( };) 152 503.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( interface TraderRemote : ::java::ejb::EJBObject,) 152 479.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CosTransactions::TransactionalObject {) 207.2 467.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( void buy\050in string stockSymbol, in long shares,) 152 443.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( in double price\051) 152 431.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( raises \050TooManySharesException\051;) 152 419.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( void sell\050in string stockSymbol, in long shares,) 152 395.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( in double price\051) 152 383.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( raises \050TooManySharesException\051;) 152 371.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( void submitOrders\050\051;) 152 347.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( };) 152 323.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (};) 152 311.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 12 Q -0.68 (Note in the generated IDL above that the TraderRemote IDL interface inherits from two) 126 286 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (IDL interfaces as required by the interface mapping rules described here.) 126 272 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 1 14 Q (C.4) 72 244.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( C++ CORBA Client Pseudocode) 96.11 244.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 10 Q (...) 152 225.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (// initialize the ORB) 152 201.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CORBA_ORB_ptr orb = CORBA_ORB_init\050argc, argv, NULL\051;) 152 189.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (// get initial reference for the Name Service) 152 165.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CORBA_Object_ptr iobj =) 152 153.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (orb->resolve_initial_reference\050\322NameService\323\051;) 179.6 141.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CosNaming_NamingContext_ptr initial =) 152 129.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CosNaming_NamingContext::_narrow\050iobj\051;) 179.6 117.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (// construct the CosNaming::Name for the Bean Container) 152 93.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CosName container_name\050......\051;) 152 81.33 T 0 0 0 1 0 0 0 K 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "19" 19 %%Page: "20" 20 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] [ 0 1 1 0 1 0 0] 8 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Enterprise JavaBeans to CORBA) 72 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc. Proprietary Information) 350.3 749.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Sun Microsystems Inc.) 72 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (20) 301 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (December 9, 1997) 466.41 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 5 F (// locate the container) 152 701.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CORBA_Object_var cobj = initial->resolve\050container_name\051;) 152 689.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (EnterpriseJavaBeans_Container_ptr container =) 152 677.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (EnterpriseJavaBeans_Container::_narrow\050cobj\051;) 179.6 665.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (// get the trader factory) 152 641.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (trading_TraderFactory_var fobj = trading_TraderFactory::_narrow\050) 152 629.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (container.getFactory\050\051\051;) 179.6 617.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (// create a session bean) 152 593.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (trading_TraderRemote_ptr trader = factory->create\050 ... \051;) 152 581.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.73 (// invoke on the trader bean under a client initiated transaction) 152 557.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (try {) 152 545.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( txn_crt.begin\050\051;) 152 533.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( trader->buy\050\322SUNW\323, 100, 52.00\051;) 152 509.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( trader->sell\050\322ABCC\323, 50, 35.90\051;) 152 497.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( trader->submitOrders\050\051;) 152 485.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( txn_crt.commit\050FALSE\051;) 152 461.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (} catch \050...\051 {) 152 437.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( txn_crt.rollback\050\051;) 152 425.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (}) 152 413.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (...) 152 389.33 T 0 0 0 1 0 0 0 K 1 0 1 0 0 1 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "20" 20 %%Trailer %%BoundingBox: 0 0 612 792 %%PageOrder: Ascend %%Pages: 20 %%DocumentFonts: Times-Roman %%+ Times-Bold %%+ Symbol %%+ Times-Italic %%+ Times-BoldItalic %%+ Courier %%+ Helvetica-Bold %%EOF .