blob: f903b6a2f7a888c1f26259e3f2f6572c7e5a3802 [file] [log] [blame]
= School Timetabling (Java, ActiveMQ, Quarkus, Maven)
The quickstart consists of two modules:
* Client runs the UI and sends requests to the Solver Server via ActiveMQ.
* Solver Server optimizes the requests sent via an ActiveMQ queue and sends results back to ActiveMQ broker.
== Run the application with live coding
. Build the project:
+
[source, shell]
----
$ mvn clean install
----
+
. Install https://docs.docker.com/get-docker/[docker] and https://docs.docker.com/compose/install/[docker-compose].
. Start the ActiveMQ broker, the Solver Server, and Client application with the `run.sh` script, which starts all 3 processes:
+
[source, shell]
----
$ ./run.sh
----
+
. Visit http://localhost:8080 in your browser.
. Click on the *Solve* button.
Then try _live coding_:
. Make some changes in the source code.
. Refresh your browser (F5).
Notice that those changes are immediately in effect.
== Package and run the application
When you're done iterating in `quarkus:dev` mode, run the application as a conventional jar file.
Before running any application, start the ActiveMQ broker:
[source, shell]
----
$ docker-compose up
----
=== Package and run the Solver Server application
. Compile it with Maven:
+
[source, shell]
----
$ cd solver
$ mvn package -DskipTests
----
+
. Run it:
+
[source, shell]
----
$ java -jar ./target/*-runner.jar -Dquarkus.http.port=8081
----
[NOTE]
Use the custom port to avoid conflict with the Client application.
=== Package and run the Client application
. Compile it with Maven:
+
[source, shell]
----
$ cd client
$ mvn package -DskipTests
----
+
. Run it:
+
[source, shell]
----
$ java -jar ./target/*-runner.jar
----
+
. Visit http://localhost:8080 in your browser.
== Run a native executable
First, https://quarkus.io/guides/building-native-image#configuring-graalvm[install GraalVM and gu install the native-image tool]
=== Compile and run the Solver Server application natively
. Compile the Solver Server application natively:
+
[source, shell]
----
$ cd solver
$ mvn package -Dnative -DskipTests -Dquarkus.profile=native
----
+
. Run the native executable:
+
[source, shell]
----
$ ./target/*-runner
----
=== Compile and run the Client application natively
. Compile the Client application natively:
+
[source, shell]
----
$ cd client
$ mvn package -Dnative -DskipTests
----
. Run the native executable:
+
[source, shell]
----
$ ./target/*-runner
----
. Visit http://localhost:8080 in your browser.
== More information
Visit https://www.optaplanner.org/[www.optaplanner.org].