\part{Allgemeines \& Config} \section{Logging} \subsubsection{Vorteile Logging mittels Framework (z.B.: log4j)} \begin{itemize} \item Nutzt ein einheitliches Format / Konventionen \item logging kann optional an und ausgeschalten werden \item durch verschiedene Log-level können Logs gefiltert erstellt werden \item Layout für Ausgabe kann zentral definiert/geändert werden \end{itemize} \section{Annotationen} \begin{itemize} \item @MappedSuperclass \begin{itemize} \item ist im Hybernate Framework \item eine Klasse durch die gemeinsame Felder definiert werden. \item definiert eine abstrakte Superklasse \end{itemize} \item @Produces \begin{itemize} \item kommt während deployment, markiert Factory Method damit man nicht direkt auf die Klasse zugreifen muss \end{itemize} \item @Typed \begin{itemize} \item zeigt die Vererbung Wieso bei uns allein stehend? \end{itemize} \item @Named \begin{itemize} \item Zeigt bei Mehrdeutigkeit das richtige Objekt mit dem Namen \end{itemize} \item @Resource \begin{itemize} \item fast wie Dependency Injection \end{itemize} \item @Stateless \begin{itemize} \item speichert den Client Status nicht \end{itemize} \item @Entity \begin{itemize} \item Data Access Layer \end{itemize} \item @Table \begin{itemize} \item Tabellenname im SQL \end{itemize} \item @Column \begin{itemize} \item SQL-Spalten nullable=false \end{itemize} \item @OneToMany \item @JoinColums \begin{itemize} \item welche Spalten zusammen gehören FK \end{itemize} \item @OneToMany \begin{itemize} \item auf anderen Seite \end{itemize} \item @ApplicationScoped \begin{itemize} \item lebt die ganze Applikation lang, wird einmal gemacht. \end{itemize} \item @PersistenceContext \begin{itemize} \item persistance.xml auslesen für Treiber und andere JPA Geschichten + Data Source. Entity Manager \end{itemize} \item @Id \begin{itemize} \item das ist die id \end{itemize} \item @GeneratedValue \begin{itemize} \item Wert kommt aus der DB \end{itemize} \item @Local \begin{itemize} \item Klasse für lokale Aufrufe. \end{itemize} \item @Remote \begin{itemize} \item interprozessaufrufe. RMI \end{itemize} \item @ApplicationException \begin{itemize} \item Rollback wenn so eine Exception kommt, Nachricht zum Client. \end{itemize} \end{itemize} \section{Konfigurationsdateien} \subsection{standalone-psoe.xml} \subsection{persistance.xml} \begin{figure}[!htp] \centering \includegraphics[width=0.7\textwidth]{pics/ConfigFiles.png} \end{figure} \subsection{web.xml} \begin{itemize} \item konfiguriert den Java Webserver (Wildfly - JBOSS) \item befindet sich im Ordner \textbf{src/main/webapp/WEB-INF/web.xml} \end{itemize} \begin{minted}[linenos,breaklines=true]{xml} ... Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet *.xhtml administrators ADMIN portal administrators PORTALADMIN standard user USER admin area /admin/* ADMIN community area /community/* USER PORTALADMIN ADMIN user administration area /userAdministration/* USER PORTALADMIN ADMIN user functionalities /user.xhtml /userlist.xhtml /notImplemented.xhtml USER PORTALADMIN ADMIN other functionalities /notImplemented.xhtml USER PORTALADMIN ADMIN FORM pse /login.xhtml /login.xhtml \end{minted} \subsection{pom.xml} \begin{itemize} \item Resource plugin – klar für Ressourcen \item Wildfly – server \begin{multicols}{2} \begin{enumerate} \item Compile \item Surefire (unitTests) \item Packaging - war file erstellen \item Wildfly - fressen und deployen \item Failsafe IT-test \item MVN site \item Gui test \end{enumerate} \end{multicols} \item Primeafce = jsf Framework \item Jacoco = test Coverage \item Slf4j = logger \item Jaxb – xml \item Cdi = context dependancy injection \end{itemize} \section{Frageart Prüfung} Welche Fehler können bei Exception-Handling vorkommen in unserem Projekt?? – wie funktioniert es grundsätzlich in unserem Code DocumentDAO – DocumentService – DocumentController – so sollte Exception-Handling implementiert warden DAO wirft Exception – im ServiceLayer wird dies gefangen und der Stack-Trace wird im weggeloggt und eine benutzerfreundliche Fehlermeldung wird ausgegeben (Destructive Wrapping). Alle Patterns, die vorkommen – praktische Beispiele aus dem Code Was sind JavaBeans? Wie funktioniert das Konzept? Wie wird es genau implementiert? NamedBean, TypedBean etc.