Кіріспе

EAR (Enterprise Application aRchive) – Jakarta EE бір немесе бірнеше модульді бір архивке біріктіруге арналған файл форматы, бұл әртүрлі модульдердің қолданба серверіне бір уақытта үйлесімді түрде орнатылуын қамтамасыз етеді. Оған қоса, модульдерді орнату тәсілін сипаттайтын орналасу дескрипторлары деп аталатын XML файлдары да кіреді. EAR файлдарын жасау үшін Ant, Maven немесе Gradle қолданылуы мүмкін.

Файл құрылымы

EAR файлы – бұл ear кеңейтіміне ие стандартты JAR файлы (демек, Zip файлы), қосымшаның модульдерін көрсететін бір немесе бірнеше жазбалары бар, сондай-ақ бір немесе бірнеше жөндеу сипаттамаларын (deployment descriptor) қамтитын META-INF деп аталатын метадеректер каталогы.

Сыныптық оқшаулау

Көптеген қолданба серверлері Java classloaders-тің оқшауланған ағашы ретінде орналастырылған EAR файлынан сыныптарды жүктейді, бұл қосымшаны басқа қосымшалардан оқшаулайды, бірақ орналастырылған модульдер арасында сыныптарды бөліседі. Мысалы, орналастырылған WAR файлы EAR файлының құрамындағы JAR файлында анықталған сыныптардың инстанцияларын құра алады, бірақ басқа EAR файлдарындағы JAR файлдарындағы сыныптарды құра алмайды. Бұл мінез-құлықтың негізгі себептерінің бірі - статикалық синглетонды (мысалы, Log4J) қолданатын қосымшаларды толық ажыратуға мүмкіндік беру, әйтпесе бұл бөлек қосымшалар арасындағы конфигурацияны шатастыруы мүмкін. Бұл сонымен қатар әртүрлі қосымшалар мен кітапханалардың әртүрлі нұсқаларын қатар орналастыруға мүмкіндік береді. JBoss қолданба серверлерінің 5-ші нұсқасына дейін орналастырылған компоненттер оқшауланбаған. Бір EAR файлында орналастырылған веб-қосымша басқа EAR және WAR файлдарындағы сыныптарға қол жеткізе алатын. Бұл біршама даулы саясат. Unified Classloader дизайны жұмыс істеп жатқан қосымшалар арасындағы байланыс шығындарын азайтады, өйткені сынып деректері сілтеме немесе қарапайым көшірме арқылы бөлісе алады. Бұл сондай-ақ әзірлеушілерге кластық жүктеушілердің ағашы тудыра алатын проблемаларды түсіну қажеттілігін жояды. Дегенмен, ол тәуелді кітапханалардың әртүрлі нұсқаларын жеке қосымшаларда орналастыруға мүмкіндік бермейді. JBoss 4.0.2 иерархиялық кластық жүктеушіге ауысты, бірақ 4.0.3 нұсқасында кері үйлесімділік себептерімен біріктірілген кластық жүктеушіге қайта оралды. Бұл мінез-құлықты өзгерту үшін конфигурациялық параметрлер бар. JBoss 5.x, 6.x және 7.x енді Unified Classloading қолданбайды.