From 4ad1f88623aa502d0b1188774b80df166c5d6f33 Mon Sep 17 00:00:00 2001
From: 0qln <0qln@proton.me>
Date: Thu, 7 May 2026 07:36:05 +0200
Subject: [PATCH] [wip] praktikum2
---
.../org/example/demo/praktikum2/Client.java | 38 +++++++++++++++++++
flake.nix | 1 +
server/pom.xml | 20 +++++++++-
.../org/example/demo/praktikum2/Adresse.java | 31 +++++++++++++++
.../demo/praktikum2/AdresseService.java | 18 +++++++++
.../demo/praktikum2/AdresseServiceRemote.java | 8 ++++
.../org/example/demo/praktikum2/Firma.java | 27 +++++++++++++
.../example/demo/praktikum2/FirmaService.java | 18 +++++++++
.../demo/praktikum2/FirmaServiceRemote.java | 11 ++++++
.../org/example/demo/praktikum2/Person.java | 30 +++++++++++++++
.../demo/praktikum2/PersonService.java | 18 +++++++++
.../demo/praktikum2/PersonServiceRemote.java | 8 ++++
12 files changed, 227 insertions(+), 1 deletion(-)
create mode 100644 client/src/main/java/org/example/demo/praktikum2/Client.java
create mode 100644 server/src/main/java/org/example/demo/praktikum2/Adresse.java
create mode 100644 server/src/main/java/org/example/demo/praktikum2/AdresseService.java
create mode 100644 server/src/main/java/org/example/demo/praktikum2/AdresseServiceRemote.java
create mode 100644 server/src/main/java/org/example/demo/praktikum2/Firma.java
create mode 100644 server/src/main/java/org/example/demo/praktikum2/FirmaService.java
create mode 100644 server/src/main/java/org/example/demo/praktikum2/FirmaServiceRemote.java
create mode 100644 server/src/main/java/org/example/demo/praktikum2/Person.java
create mode 100644 server/src/main/java/org/example/demo/praktikum2/PersonService.java
create mode 100644 server/src/main/java/org/example/demo/praktikum2/PersonServiceRemote.java
diff --git a/client/src/main/java/org/example/demo/praktikum2/Client.java b/client/src/main/java/org/example/demo/praktikum2/Client.java
new file mode 100644
index 0000000..ec1e45d
--- /dev/null
+++ b/client/src/main/java/org/example/demo/praktikum2/Client.java
@@ -0,0 +1,38 @@
+package org.example.demo.praktikum2;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+public class Client {
+
+ public static void main(String[] args) {
+ try {
+
+ Properties props = new Properties();
+ props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");
+ props.setProperty(Context.PROVIDER_URL, "http-remoting://localhost:8080");
+
+ InitialContext ctx = new InitialContext(props);
+ AdresseServiceRemote adresseService = (AdresseServiceRemote) ctx.lookup( "ejb:/ejb-server-1.0-SNAPSHOT/AdresseService!org.example.demo.praktikum2.AdresseServiceRemote");
+ PersonServiceRemote personService = (PersonServiceRemote) ctx.lookup("ejb:/ejb-server-1.0-SNAPSHOT/PersonService!org.example.demo.praktikum2.PersonServiceRemote");
+
+ var adresse = Adresse.builder().strasse("strasse").plz("plz").ort("ort").build();
+ int adresseId = adresseService.speichereAdresse(adresse);
+ System.out.println("Adresse gespeichert mit ID: " + adresseId);
+ System.out.println("Adresse nach dem Speichern: " + adresse);
+
+ var person = Person.builder().name("max").adresse(List.of(adresse)).build();
+ int personId = personService.speicherePerson(person);
+ System.out.println("Person gespeichert mit ID: " + personId);
+ System.out.println("Person nach dem Speichern: " + person);
+
+ } catch (NamingException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/flake.nix b/flake.nix
index 28259e1..f75b1e7 100644
--- a/flake.nix
+++ b/flake.nix
@@ -100,6 +100,7 @@
mermaid-cli
openjdk
maven
+ lombok
]
++ latexPackages;
diff --git a/server/pom.xml b/server/pom.xml
index 02df3a5..8569d5c 100755
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -10,16 +10,34 @@
ejb-server
ejb
-
jakarta.platform
jakarta.jakartaee-api
10.0.0
provided
+
+ org.projectlombok
+ lombok
+ 1.18.46
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.13.0
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.46
+
+
+
+
org.apache.maven.plugins
maven-ejb-plugin
diff --git a/server/src/main/java/org/example/demo/praktikum2/Adresse.java b/server/src/main/java/org/example/demo/praktikum2/Adresse.java
new file mode 100644
index 0000000..10ad320
--- /dev/null
+++ b/server/src/main/java/org/example/demo/praktikum2/Adresse.java
@@ -0,0 +1,31 @@
+package org.example.demo.praktikum2;
+
+import java.io.Serializable;
+
+import jakarta.persistence.*;
+import lombok.*;
+
+@Entity
+@ToString
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class Adresse implements Serializable {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+
+ @SuppressWarnings("unused")
+ private String strasse;
+
+ @SuppressWarnings("unused")
+ private String plz;
+
+ @SuppressWarnings("unused")
+ private String ort;
+
+ @ManyToOne
+ private Person person;
+}
diff --git a/server/src/main/java/org/example/demo/praktikum2/AdresseService.java b/server/src/main/java/org/example/demo/praktikum2/AdresseService.java
new file mode 100644
index 0000000..badc4f9
--- /dev/null
+++ b/server/src/main/java/org/example/demo/praktikum2/AdresseService.java
@@ -0,0 +1,18 @@
+package org.example.demo.praktikum2;
+
+import jakarta.ejb.Stateless;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+
+@Stateless
+public class AdresseService implements AdresseServiceRemote {
+
+ @PersistenceContext
+ private EntityManager em;
+
+ @Override
+ public int speichereAdresse(Adresse m) {
+ em.persist(m);
+ return m.getId();
+ }
+}
diff --git a/server/src/main/java/org/example/demo/praktikum2/AdresseServiceRemote.java b/server/src/main/java/org/example/demo/praktikum2/AdresseServiceRemote.java
new file mode 100644
index 0000000..e87245a
--- /dev/null
+++ b/server/src/main/java/org/example/demo/praktikum2/AdresseServiceRemote.java
@@ -0,0 +1,8 @@
+package org.example.demo.praktikum2;
+
+import jakarta.ejb.Remote;
+
+@Remote
+public interface AdresseServiceRemote {
+ int speichereAdresse(Adresse m);
+}
diff --git a/server/src/main/java/org/example/demo/praktikum2/Firma.java b/server/src/main/java/org/example/demo/praktikum2/Firma.java
new file mode 100644
index 0000000..6560270
--- /dev/null
+++ b/server/src/main/java/org/example/demo/praktikum2/Firma.java
@@ -0,0 +1,27 @@
+package org.example.demo.praktikum2;
+
+import java.io.Serializable;
+import java.util.List;
+
+import jakarta.persistence.*;
+import lombok.*;
+
+@Entity
+@ToString
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class Firma implements Serializable {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+
+ @SuppressWarnings("unused")
+ private String name;
+
+ @Singular("adresse")
+ @OneToMany(mappedBy="firma")
+ private List person;
+}
diff --git a/server/src/main/java/org/example/demo/praktikum2/FirmaService.java b/server/src/main/java/org/example/demo/praktikum2/FirmaService.java
new file mode 100644
index 0000000..79c3cdf
--- /dev/null
+++ b/server/src/main/java/org/example/demo/praktikum2/FirmaService.java
@@ -0,0 +1,18 @@
+package org.example.demo.praktikum2;
+
+import jakarta.ejb.Stateless;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+
+@Stateless
+public class FirmaService implements FirmaServiceRemote {
+
+ @PersistenceContext
+ private EntityManager em;
+
+ @Override
+ public int speichereFirma(Firma m) {
+ em.persist(m);
+ return m.getId();
+ }
+}
diff --git a/server/src/main/java/org/example/demo/praktikum2/FirmaServiceRemote.java b/server/src/main/java/org/example/demo/praktikum2/FirmaServiceRemote.java
new file mode 100644
index 0000000..1dc151a
--- /dev/null
+++ b/server/src/main/java/org/example/demo/praktikum2/FirmaServiceRemote.java
@@ -0,0 +1,11 @@
+package org.example.demo.praktikum2;
+
+import java.util.List;
+
+import jakarta.ejb.Remote;
+
+@Remote
+public interface FirmaServiceRemote {
+ int speichereFirma(Firma m);
+ // List listFirmen();
+}
diff --git a/server/src/main/java/org/example/demo/praktikum2/Person.java b/server/src/main/java/org/example/demo/praktikum2/Person.java
new file mode 100644
index 0000000..17ec24e
--- /dev/null
+++ b/server/src/main/java/org/example/demo/praktikum2/Person.java
@@ -0,0 +1,30 @@
+package org.example.demo.praktikum2;
+
+import java.io.Serializable;
+import java.util.List;
+
+import jakarta.persistence.*;
+import lombok.*;
+
+@Entity
+@ToString
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class Person implements Serializable {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+
+ @SuppressWarnings("unused")
+ private String name;
+
+ @ManyToOne
+ private Firma firma;
+
+ @Singular("adresse")
+ @OneToMany(mappedBy="person")
+ private List adresse;
+}
diff --git a/server/src/main/java/org/example/demo/praktikum2/PersonService.java b/server/src/main/java/org/example/demo/praktikum2/PersonService.java
new file mode 100644
index 0000000..414748d
--- /dev/null
+++ b/server/src/main/java/org/example/demo/praktikum2/PersonService.java
@@ -0,0 +1,18 @@
+package org.example.demo.praktikum2;
+
+import jakarta.ejb.Stateless;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+
+@Stateless
+public class PersonService implements PersonServiceRemote {
+
+ @PersistenceContext
+ private EntityManager em;
+
+ @Override
+ public int speicherePerson(Person m) {
+ em.persist(m);
+ return m.getId();
+ }
+}
diff --git a/server/src/main/java/org/example/demo/praktikum2/PersonServiceRemote.java b/server/src/main/java/org/example/demo/praktikum2/PersonServiceRemote.java
new file mode 100644
index 0000000..204041e
--- /dev/null
+++ b/server/src/main/java/org/example/demo/praktikum2/PersonServiceRemote.java
@@ -0,0 +1,8 @@
+package org.example.demo.praktikum2;
+
+import jakarta.ejb.Remote;
+
+@Remote
+public interface PersonServiceRemote {
+ int speicherePerson(Person m);
+}