From 9edd9ebaebcca955abc28c5dd9cbc1acf5dd747d Mon Sep 17 00:00:00 2001 From: 0qln <0qln@proton.me> Date: Fri, 17 Apr 2026 10:39:40 +0200 Subject: [PATCH] praktikum1/aufgabe2 --- .../demo/praktikum1/aufgabe2/Client.java | 26 ++++++++++++++ .../aufgabe2/StatefulCalculator.java | 35 +++++++++++++++++++ .../aufgabe2/StatefulCalculatorRemote.java | 15 ++++++++ 3 files changed, 76 insertions(+) create mode 100644 client/src/main/java/org/example/demo/praktikum1/aufgabe2/Client.java create mode 100644 server/src/main/java/org/example/demo/praktikum1/aufgabe2/StatefulCalculator.java create mode 100644 server/src/main/java/org/example/demo/praktikum1/aufgabe2/StatefulCalculatorRemote.java diff --git a/client/src/main/java/org/example/demo/praktikum1/aufgabe2/Client.java b/client/src/main/java/org/example/demo/praktikum1/aufgabe2/Client.java new file mode 100644 index 0000000..0bdfd49 --- /dev/null +++ b/client/src/main/java/org/example/demo/praktikum1/aufgabe2/Client.java @@ -0,0 +1,26 @@ +package org.example.demo.praktikum1.aufgabe2; +import javax.naming.InitialContext; +import javax.naming.Context; +import java.util.Properties; + +public class Client { + public static void main(String[] args) throws Exception { + 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); + String jndiName = "ejb:/ejb-server-1.0-SNAPSHOT/StatefulCalculator!org.example.demo.praktikum1.aufgabe2.StatefulCalculatorRemote"; + var calc = (StatefulCalculatorRemote) ctx.lookup(jndiName); + + System.out.println("6 + 7 = " + calc.addiere(6, 7)); + System.out.println("6 + 7 + 8 = " + calc.addiere(8)); + System.out.println("6 - 7 = " + calc.subtrahiere(6, 7)); + System.out.println("6 - 7 - 8 = " + calc.subtrahiere(8)); + System.out.println("6 * 7 = " + calc.multipliziere(6, 7)); + System.out.println("6 * 7 * 8 = " + calc.multipliziere(8)); + System.out.println("6 / 7 = " + calc.dividiere(6, 7)); + System.out.println("6 / 7 / 8 = " + calc.dividiere(8)); + } +} diff --git a/server/src/main/java/org/example/demo/praktikum1/aufgabe2/StatefulCalculator.java b/server/src/main/java/org/example/demo/praktikum1/aufgabe2/StatefulCalculator.java new file mode 100644 index 0000000..f4b6994 --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum1/aufgabe2/StatefulCalculator.java @@ -0,0 +1,35 @@ +package org.example.demo.praktikum1.aufgabe2; +import org.example.demo.praktikum1.aufgabe1.Calculator; + +import jakarta.ejb.Stateful; + +@Stateful +public class StatefulCalculator implements StatefulCalculatorRemote { + private double state; + + public double addiere(float zahl1, float zahl2) { + return state = new Calculator().addiere(zahl1, zahl2); + } + public double subtrahiere(float zahl1, float zahl2) { + return state = new Calculator().subtrahiere(zahl1, zahl2); + } + public double multipliziere(float zahl1, float zahl2) { + return state = new Calculator().multipliziere(zahl1, zahl2); + } + public double dividiere(float zahl1, float zahl2) { + return state = new Calculator().dividiere(zahl1, zahl2); + } + + public double addiere(float zahl) { + return state = new Calculator().addiere((float)state, zahl); + } + public double subtrahiere(float zahl) { + return state = new Calculator().subtrahiere((float)state, zahl); + } + public double multipliziere(float zahl) { + return state = new Calculator().multipliziere((float)state, zahl); + } + public double dividiere(float zahl) { + return state = new Calculator().dividiere((float)state, zahl); + } +} diff --git a/server/src/main/java/org/example/demo/praktikum1/aufgabe2/StatefulCalculatorRemote.java b/server/src/main/java/org/example/demo/praktikum1/aufgabe2/StatefulCalculatorRemote.java new file mode 100644 index 0000000..50448c9 --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum1/aufgabe2/StatefulCalculatorRemote.java @@ -0,0 +1,15 @@ +package org.example.demo.praktikum1.aufgabe2; +import jakarta.ejb.Remote; + +@Remote +public interface StatefulCalculatorRemote { + double addiere(float zahl1, float zahl2); + double subtrahiere(float zahl1, float zahl2); + double multipliziere(float zahl1, float zahl2); + double dividiere(float zahl1, float zahl2); + + double addiere(float zahl); + double subtrahiere(float zahl); + double multipliziere(float zahl); + double dividiere(float zahl); +}