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 \item ermöglicht Objektorientierte Ansicht des Speichers
\end{itemize} \end{itemize}
\subsection{Service Layer Pattern (auch Session Fassade)} \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} \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 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 \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} \end{itemize}
\begin{minted}[xleftmargin=\parindent,linenos,breaklines=true]{java} \begin{minted}[xleftmargin=\parindent,linenos,breaklines=true]{java}
@Local(DocumentService.class) @Local(DocumentService.class)
@Remote(DocumentServiceRemote.class) @Remote(DocumentServiceRemote.class)
@Stateless @Stateless
@ -344,7 +343,120 @@ public static DocumentDTO toDTO(Document document){};
\subsubsection{Beschreibe ein konkretes Anwendungsbeispiel} \subsubsection{Beschreibe ein konkretes Anwendungsbeispiel}
\begin{itemize} \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 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} \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} \subsubsection{Nenne die Konsequenzen der Anwendung}
\begin{itemize} \begin{itemize}
\item es muss nur EIN (Front) Controller konfiguriert werden \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 Grundidee sind loose gekoppelte Objekte
\item Objekte werden mittels externem Assembler verknüpft \item Objekte werden mittels externem Assembler verknüpft
\item Abhängigkeiten bestehen nur auf Interfaces \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} \end{itemize}
\subsubsection{Beschreibe ein konkretes Anwendungsbeispiel}
\begin{itemize} \begin{itemize}
\item Im Spring Context: Dependency Injection mit XML-Datei \item Im Spring Context: Dependency Injection mit XML-Datei
\item alle Beans sind dort gelistet und werden verknüpft \item alle Beans sind dort gelistet und werden verknüpft
\item Context wird geladen damit alles verknüpft ist \item Context wird geladen damit alles verknüpft ist
\item erspart Factories \item erspart Factories
\item man unterscheidet Constructor und Setter Injection
\end{itemize} \end{itemize}
\subsubsection{Nenne die Konsequenzen der Anwendung} \subsubsection{Nenne die Konsequenzen der Anwendung}
\begin{itemize} \begin{itemize}
@ -411,29 +541,6 @@ public static DocumentDTO toDTO(Document document){};
\item Nachteil Annotation: nicht so flexibel wie XML \item Nachteil Annotation: nicht so flexibel wie XML
\end{itemize} \end{itemize}
\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} \subsection{Data Transfer Object (DTO) Pattern}
\subsubsection{Erkläre die Funktion (Skizze - ein Grund für DTO)} \subsubsection{Erkläre die Funktion (Skizze - ein Grund für DTO)}
\begin{figure}[!htp] \begin{figure}[!htp]
@ -601,12 +708,18 @@ Jaxb xml
Cdi = context dependancy injection Cdi = context dependancy injection
\subsection{Reihenfolge - Wildfly - Abfolge - einzelne Schritte} \subsection{Reihenfolge - Wildfly - Abfolge - einzelne Schritte}
Reihenfolge: Reihenfolge:
1. Compile \begin{multicols}{2}
2. Surefire (unitTests) \begin{enumerate}
3. Deploy (warplugin) \item Compile
4. Failsafe IT-test \item Surefire (unitTests)
5. MVN site \item Packaging - war file erstellen
6. Gui test \item Wildfly - fressen und deployen
\item Failsafe IT-test
\item MVN site
\item Gui test
\end{enumerate}
\end{multicols}
\subsection{Frageart Prüfung} \subsection{Frageart Prüfung}
Welche Fehler können bei Exception-Handling vorkommen in unserem Projekt?? wie funktioniert es grundsätzlich in unserem Code Welche Fehler können bei Exception-Handling vorkommen in unserem Projekt?? wie funktioniert es grundsätzlich in unserem Code