JAT - Java Technologie

Podklady a informace k předmětu Java Technologie. Předmět se zaměřuje na rozšíření znalostí a dovedností studentů v oblasti platformy JavaSE a JavaEE.

V průběhu semestru se mohou tyto informace měnit.

Na každém cvičení se vypracovává bodovaný příklad a studenti musejí nasbírat alespoň polovinu těchto bodů ze cvičení aby mohli získat zápočet.

Ukázkový projekt

Pročištěná verze ukázkového projektu přizpůsobená letošním verzím SW.

CompanyExample2015.zip

Přednášky

 JAT přednášky (JAT přednášky PDF)

  • Úvodní informace k předmětu, Něco o Javě, komponenty, model Event-Listener, JavaBean
  • Java GUI a Event Listener model
  • XML a zpracování XML v jazyce Java (SAX, DOM, JAXB)
  • JNDI (LDAP)
  • HTTP, JavaEE - Architektura, Servelty
  • Servlety, Filtry
  • JSF
  • CDI
  • JPA
  • PrimeFaces
  • Odevzdání projektu
  • Zápočtová písemka

Podmínky pro udělení klasifikovaného zápočtu

  • Odevzdání projetu v termínu.
  • Absolvování závěrečného testu.
  • Nasbírání minimálního počtu bodů na cvičení.
  • Projekt bude hodnocen maximálně 60, minimálně je nutno získat 30.
  • Závěrečný test bude hodnocen maximálně 40 minimálně je nutno získat 20.
  • Celkový součet bodů za cvičení, projekt a závěrečný test musí být minimálně 51 bodů.

Zadání semestrálního projektu

Studenti denního studia budou projekty odevzdávat nejpozději na cvičeních týden před zápočtovým týdnem a bude nahrán do systému Edison.

Studenti Kombinovaného studia budou projekty odevzdávat elektronicky přes systém edison nejpozději do konce roku (kombinovaní). Poté je nutné individuálně domluvit osobní předvedení projektu.

Webový informační systém splňující následující podmínky:

  • Web vrstva s využitím JSF
  • Přístup k DB pomocí JPA
  • Session bean mohou být ve web containeru JavaEE serveru
  • Databázové tabulky budou představova mapování minimálně 4 tříd. Mezi entitními třídamy bude existovat minimálně jedna vazba 1-N a bude existovat dětičnost, která bude namapována do DB tabulek.
  • Systém bude obsahovat veřejnou a neveřejnou část (dostupnou po přihlášení do systému)
  • Systém použije css styly pro ohezčení aplikace
  • GUI aplikace bude obsahovat komponenty jako ComboBox (SelectOne nebo SelectMany)
  • konvertory pro konverzi objektů (javax.faces.convert.Converter)
  • Vazby mezi objekty budou v GUI nastavovány pomocí komponent a objektů ne přes zadání ID objektu do textového pole.

Závěrečný test

Závěrečný test pro studenty denního studia bude probíhat na cvičeních v zápočtovém týdnu. Bude se jednat o test v programování na počítači, kdy studenti budou řešit krátké programátorské úlohy. Každý student má pouze jeden pokus na složení tohoto testu.

Kombinovaní studenti nebudou psát závěrečný test.

Nastavení TomEE pro lepší logování

Zkopírovat a případně upravit logging.properties z [tomee-home]/conf/ do Eclipsu nastavení serveru.

Do spouštěcí/debugovací konvigurace v Eclipse přidat argumenty uvedené níže:.

 

Hibernate Bytecode Enhancement pomocí maven pluginu

<build>
...
<plugins>
...
<plugin>
<!--
https://mvnrepository.com/artifact/org.hibernate.orm.tooling/hibernate-enhance-maven-plugin -->
<groupId>org.hibernate.orm.tooling</groupId>
<artifactId>hibernate-enhance-maven-plugin</artifactId>
<version>6.2.6.Final</version>
<executions>
<execution>
<configuration>
<enableDirtyTracking>true</enableDirtyTracking>
<enableLazyInitialization>true</enableLazyInitialization>
</configuration>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file="${workspace_loc}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf/logging.properties"

server.xml

<Resource auth="Container" description="jat2017" 
driverClassName="org.apache.derby.jdbc.ClientDriver"
name="datasources/jat2017" password="app" username="app"
type="javax.sql.DataSource"
url="jdbc:derby://localhost/jat2017cv10v2;create=true"/>

context.xml

	<ResourceLink name="datasources/jat2017" 
global="datasources/jat2017"
type="javax.sql.DataSource" />

Načtení hesla pomocí JOptionPane

	public static String getPassword(String login) {
JPasswordField passwordField = new JPasswordField();
passwordField.setEchoChar('*');
Object[] obj = { "Please enter the password for login " + login + ":\n\n", passwordField };
Object stringArray[] = { "OK", "Cancel" };
if (JOptionPane.showOptionDialog(null, obj, "Need password", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null, stringArray, obj) == JOptionPane.YES_OPTION) {
return new String(passwordField.getPassword());
}
return "";
}

SQL pro Vytvoření tabulky (Derby DB)

CREATE TABLE students(
id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
name VARCHAR(25), points DECIMAL(10,2),
PRIMARY KEY(id))

JPA properties

<properties>
<property
name="javax.persistence.schema-generation.database.action"
value="create" />
<property name="hibernate.enable_lazy_load_no_trans"
value="true" />
</properties>