
\subsection{Propojení technologií}

V~podkapitole o~session beanech jsme si ukázali klienta EJB aplikace ve formě JSP stránky. Obdobně bychom mohli vytvořit klienta jako webovou službu ve frameworku JAX-WS nebo ve frameworku Struts. RESTful webová služba by se zde příliš nehodila, jelikož v~enterprise aplikacích nám většinou jde o~vedlejší efekt --- objednávku, rezervaci --- nikoliv o~návratovou hodnotu. Cyklus vkladu peněz do Piggy Bank by pak probíhal následovně. 

Klient pošle HTTP požadavek na uložení částky na své konto. Požadavek je zachycen JSP kontejnerem, ten vybere JSP stránku a~přeloží ji na servlet. Kód servletu interpretuje a~narazí na volání metody \texttt{deposit} session beanu \texttt{BankDeskBean}. Režii přebírá EJB kontejner, který session bean najde, vytvoří jeho instanci a~zavolá na něm zmíněnou metodu. V~jejím těle se pracuje s~entity beany a~také se zašle zpráva o~uložení peněz, se kterou dále pracuje message--driven bean \texttt{LoggerBean}. Jakmile je práce hotová (na message--driven beany se nečeká, zpracování zpráv je asynchronní), tj. metoda \texttt{deposit} končí, vrací se režie JSP kontejneru. Ten vytiskne HTML stránku oznamující úspěšné uložení částky na účet a~vrátí ji v~HTTP odpovědi uživateli. Celý cyklus ukazuje obrázek \ref{EJB Cycle Figure}

\begin{figure}[ht]
  \centerline{\includegraphics[height=70mm]{images/ejb_cycle.png}}
  \caption{Cyklus požadavku a~odpovědi v~kombinaci JSP a~EJB.}
  \label{EJB Cycle Figure}
\end{figure}




\subsection{Závěr}

EJB představují velmi mocný nástroj pro vytváření enterprise aplikací. Mají na aplikaci poněkud odlišný pohled než běžné objektově orientované programování, jelikož většinu referencí na objekty na rozdíl od nás spravuje aplikační server. V~kombinaci se spolehlivým a~profesionálním serverem jako je JBoss se dá vytvořit vysoce spolehlivá aplikace. Jako nevýhodu EJB lze uvést velmi vysoké nároky na režii --- aplikace menšího i~středního charakteru běží výrazně pomaleji, než při obyčejné realizaci pomocí JDBC a~dynamických webových stránek. U~velkých aplikací se nároky na režii srovnávají. Další nevýhodou, i~když pouze pro začínajícího programátora, je velká komplikovanost, kdy i~k~vytvoření jednoduché aplikace jako je Piggy Bank je potřeba vynaložit velké úsilí zvláště co týče konfigurace serveru. EJB aplikace se také obtížně ladí a~i~jejich nasazení na server trvá velmi dlouho. Tuto technologii lze doporučit pro velmi velké projekty, jako jsou bankovní aplikace, kde je navíc kritická potřeba stability, možnosti rozšíření a~udržování.

Použitá literature:\\
\cite{Enterprise JavaBeans 3.0} \emph{Enterprise JavaBeans 3.0}\\
\cite{EJB 3 in Action} \emph{EJB 3 in Action}\\
