Ja by som to riesil nasledovne: 1) premenovanie implementacie povodnych DAO tried pre pristup do lokalnej databazy 2) extrakcia metod (pull-up) do DAO interface-u pri zachovani povodneho pomenovania DAO tried 3) implementacia DAO tried na pristup cez RMI/REST/Hessian ... na ine servre a samozrejme aj serverovu cast pre dany typ komunikacie. Mozete sa inspirovat clankom http://daniel.gredler.net/2008/01/07/java-remoting-protocol-benchmarks/
Neviem, ako ziskavate instancie DAO objektov, ale ak: A) DAO mate spravovane cez spring, potom vsetky potrebne kombinacie pouzitia treba riesit viacerymi konfiguraciami spring bean-ov. Potom nie potrebne menit zvysok aplikacie (lebo DAO je interface s povodnym menom a ten teraz odkazovany v business / service vrstve). Horsie to bude z build-ovanim aplikacie alebo z deploymentom (buildovat vsetko a konfiguracne urcit, ktory sping beans sa ma pouzit). B) DAO mate spravovane manualne, tak to bude potrebne upravit v business/service vrstve asi nasledovne: 4) Vytvorit DAOHelper, ktory by podla potreby (on demand) / konfiguracie / service API / .. zpristupnil (cez spring / factory / ..) prislusne DAO objekty 5) zmenit ziskavanie instancie DAO v business / servisnej vrstve ... nieco ako MyDAO myDao = DAOHelper.getDAO(MyDAO.class) alebo = DAOHelper.getDAO(MyDAO.class, "serverA") Pozn.: Tu by som zvazoval radsej to prerobit na sposob A), ale to nemusi byt priechodne (ak napr. potrebujete robit naraz z objektami rovnakej triedy z roznych zdrojov / DB / .. on demand z dopredu stanovenymi serverami). Ohladne tej vykonosti, by som zvazoval zavedenie distribuovanej/cluster-ovej cache (napr. Terracotta + ehcache). Aj ked, ako si tak uvedomujem, tak to nemusi mat pozitivny vykonnostny efekt pre persistente objekty z druhej DB, lebo je takmer jedno ci sa kumunikuje cez RMI / REST / ... alebo cez komunikacne kanaly terracotta-y (hlavne pri vysokom zatazeni). Stano salmonel salmonel wrote: > Dobrý deň, > > mám web aplikáciu v jave, je napísaná v Spring web flow, používa Hibernate > pre perzistenciu objektov. K hibernate pristupujem vždy cez DAO. > > Momentálne aplikácia beží v tomcate. Potrebujem pridať medzi databázu a > tomcat vrstvu, v ktorej by boli všetky dao objekty. Na servroch nám totiž > beží niekoľko inštancií našej aplikácie(máme niekoľko klientov), tieto > inštacie majú každá vlastnú databázu. Niekedy však potrebuje jedna inštacie > liezť aj do databáze druhej inštancie. Preto chcem centralizovať prístup k > databázam. > > Podstatné je, že potrebujem pridať vrstvu, v ktorej by boli len DAO objekty. > Podľa toho, čo som pochopil mám na výber medzi EJB statless beanami bežiacimi > v JBOSSe(prípadne inom aplikačnom servri), alebo si spraviť vlastnú > aplikáciu, ktorá by obsahovala dao objekty a fungovala ako RMI server. Tomcat > by bol RMI klient a vždy kontaktoval server. O pooling databázových pripojení > by sa postaral hiberante. > > Aplikácia už je naprogramovaná, iné výhody EJB asi nevyužijem. Ide mi najmä o > vysoký výkon a budúcu škálovatelnosť(s ktorou by nemal byť problém, ide o > stateless objekty, takže môžem nasekať koľko chcem RMI servrov, ktoré nemusia > medzi sebou komunikovať). > > Ďakujem
