PSE_learning/parts/03_config.tex

233 lines
7.4 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\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}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
...
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<!-- Security roles -->
<security-role>
<description>administrators</description>
<role-name>ADMIN</role-name>
</security-role>
<security-role>
<description>portal administrators</description>
<role-name>PORTALADMIN</role-name>
</security-role>
<security-role>
<description>standard user</description>
<role-name>USER</role-name>
</security-role>
<!-- Security constraints -->
<security-constraint>
<web-resource-collection>
<web-resource-name>admin area</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>community area</web-resource-name>
<url-pattern>/community/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>USER</role-name>
<role-name>PORTALADMIN</role-name>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>user administration area</web-resource-name>
<url-pattern>/userAdministration/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>USER</role-name>
<role-name>PORTALADMIN</role-name>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>user functionalities</web-resource-name>
<url-pattern>/user.xhtml</url-pattern>
<url-pattern>/userlist.xhtml</url-pattern>
<url-pattern>/notImplemented.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>USER</role-name>
<role-name>PORTALADMIN</role-name>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>other functionalities</web-resource-name>
<url-pattern>/notImplemented.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>USER</role-name>
<role-name>PORTALADMIN</role-name>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>pse</realm-name>
<form-login-config>
<form-login-page>/login.xhtml</form-login-page>
<form-error-page>/login.xhtml</form-error-page>
<!-- <form-error-page>/loginerror.xhtml</form-error-page> -->
</form-login-config>
</login-config>
</web-app>
\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.