some changes while tonis lesson

This commit is contained in:
Daniel Sommer 2019-02-28 22:55:23 +01:00
parent 07dc0d0ff4
commit 0623f832a5
1 changed files with 147 additions and 34 deletions

View File

@ -95,14 +95,13 @@ public static DocumentDTO toDTO(Document document){};
\item ermöglicht Objektorientierte Ansicht des Speichers
\end{itemize}
\subsection{Service Layer Pattern (auch Session Fassade)}
\subsubsection{Erkläre die Funktion + Skizze}
\subsubsection{Erkläre die Funktion + Skizze}\label{subsubsec:service-layer-pattern}
\begin{itemize}
\item Service Layer delegiert auf Business Logik (z.B.: Zeile 82 community.setDocumentlibrary) und zum DAO (z.B.: Zeile 80, 81,82 ...)
\item bei wenig Logik wird zumindest Transaktions (z.B. Zeile 39), Error (z.B. Zeile 42-50) und Validierungshandling (z.B.: Zeile 24-27) im Service erledigt
\end{itemize}
\begin{minted}[xleftmargin=\parindent,linenos,breaklines=true]{java}
@Local(DocumentService.class)
@Remote(DocumentServiceRemote.class)
@Stateless
@ -344,7 +343,120 @@ public static DocumentDTO toDTO(Document document){};
\subsubsection{Beschreibe ein konkretes Anwendungsbeispiel}
\begin{itemize}
\item Java Server Faces (bei Java Server Faces enthält das File zwar keinen Java Code, interagiert aber direkt mit Java Code einer Backing Bean)
\item
\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">
<display-name>Practical Software Engineering 2018</display-name>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>bootstrap</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<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}
\subsubsection{Nenne die Konsequenzen der Anwendung}
\begin{itemize}
\item es muss nur EIN (Front) Controller konfiguriert werden
@ -389,15 +501,33 @@ public static DocumentDTO toDTO(Document document){};
\item Grundidee sind loose gekoppelte Objekte
\item Objekte werden mittels externem Assembler verknüpft
\item Abhängigkeiten bestehen nur auf Interfaces
\item Assembler Objekt erzeugt die Interface-Implementierungen (z.B.: durch Factory)
\item Assembler Objekt (Framework) erzeugt die Interface-Implementierungen (z.B.: durch Factory)
\item Es wird zwischen Constructor Injection und Setter Injection unterschiedlichen
\begin{minted}[linenos,breaklines=true]{java}
// Constructor Injection
puplic class Client
{
private Interface iface;
public Client(Interface iface)
{
this.iface = iface;
}}
// Setter Injection
puplic class Client
{
private Interface iface;
public setIface(Interface iface)
{
this.iface = iface;
}}
\end{minted}
\end{itemize}
\subsubsection{Beschreibe ein konkretes Anwendungsbeispiel}
\begin{itemize}
\item Im Spring Context: Dependency Injection mit XML-Datei
\item alle Beans sind dort gelistet und werden verknüpft
\item Context wird geladen damit alles verknüpft ist
\item erspart Factories
\item man unterscheidet Constructor und Setter Injection
\end{itemize}
\subsubsection{Nenne die Konsequenzen der Anwendung}
\begin{itemize}
@ -411,29 +541,6 @@ public static DocumentDTO toDTO(Document document){};
\item Nachteil Annotation: nicht so flexibel wie XML
\end{itemize}
\end{itemize}
\subsection{Remote Facade}
\subsubsection{Erkläre die Funktion + Skizze}
\begin{figure}[!htp]
\centering
\includegraphics[width=0.5\textwidth]{pics/rem_fass_pat.jpg}
\end{figure}
\begin{itemize}
\item bietet dem Client ein grobes Interface
\item ist Schicht die von grob zu fein-granularem Interface umwandelt
\item steigert so Netzwerkeffizienz
\end{itemize}
\subsubsection{Beschreibe ein konkretes Anwendungsbeispiel}
\begin{itemize}
\item Implementierung in Applikation um überlastetes Netzwerk zu entlasten.
\end{itemize}
\subsubsection{Nenne die Konsequenzen der Anwendung}
\begin{multicols}{2}
\begin{itemize}
\item weniger Remote Calls
\item Entlastung des Netzwerkes
\item steigert Zuverlässigkeit
\end{itemize}
\end{multicols}
\subsection{Data Transfer Object (DTO) Pattern}
\subsubsection{Erkläre die Funktion (Skizze - ein Grund für DTO)}
\begin{figure}[!htp]
@ -601,12 +708,18 @@ Jaxb xml
Cdi = context dependancy injection
\subsection{Reihenfolge - Wildfly - Abfolge - einzelne Schritte}
Reihenfolge:
1. Compile
2. Surefire (unitTests)
3. Deploy (warplugin)
4. Failsafe IT-test
5. MVN site
6. Gui test
\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}
\subsection{Frageart Prüfung}
Welche Fehler können bei Exception-Handling vorkommen in unserem Projekt?? wie funktioniert es grundsätzlich in unserem Code