233 lines
7.4 KiB
TeX
233 lines
7.4 KiB
TeX
\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. |