some changes while tonis lesson
This commit is contained in:
parent
07dc0d0ff4
commit
0623f832a5
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue