{"id":20877462,"url":"https://github.com/t1/jee-demo","last_synced_at":"2026-04-23T15:32:28.122Z","repository":{"id":44843846,"uuid":"282854783","full_name":"t1/jee-demo","owner":"t1","description":"A demo playground for distributed JEE+MP applications","archived":false,"fork":false,"pushed_at":"2023-11-30T06:19:17.000Z","size":764,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-19T09:32:10.586Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/t1.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-07-27T09:42:53.000Z","updated_at":"2022-01-07T04:56:42.000Z","dependencies_parsed_at":"2023-11-30T07:37:00.379Z","dependency_job_id":null,"html_url":"https://github.com/t1/jee-demo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t1%2Fjee-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t1%2Fjee-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t1%2Fjee-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t1%2Fjee-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/t1","download_url":"https://codeload.github.com/t1/jee-demo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243251227,"owners_count":20261174,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-18T06:57:05.606Z","updated_at":"2025-12-25T15:35:16.392Z","avatar_url":"https://github.com/t1.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Demo Project\n\ncontains:\n- frontend: would be a Backend-For-Frontend to gateway frontend requests to the domain backends\n- backend: domain/business logic plus persistence layer\n\n\n## Docker\n\nStart docker-compose:\n\n`docker-compose up --build`\n\nMagic command to start only the backends and db and remove everything after the shutdown (note as of docker-compose 3.8: for starting it would be sufficient to specify only `frontend`, but when stopping, the other images are not stopped):\n\n`docker-compose up --build frontend backend db \u0026\u0026 docker system prune --force \u0026\u0026 docker ps -a`\n\njdbc to postgres db\njdbc:postgresql://127.0.0.1:5432/orders\n\n\n## WildFly Admin Console\n\n`frontend`: http://localhost:9990/console/index.html\n\n`backend`: http://localhost:9991/console/index.html\n\n user admin \n password Admin#007\n\n\n## Test Calls\n\n`frontend`: http://localhost:8080/frontend/orders/1\n\n`backend`: http://localhost:8081/backend/orders/1\n\nThe `frontend` uses MP Rest Client to access the `backend`.\n\nThe `frontend` URL also works in the browser and renders a html page.\n\n\n## Health and Config\n\nSpec:\n  Health: https://download.eclipse.org/microprofile/microprofile-health-2.2/microprofile-health-spec.html\n  Config: https://download.eclipse.org/microprofile/microprofile-config-1.4/microprofile-config-spec.html\n\n\n\nall: http://localhost:9990/health\nready: http://localhost:9990/health/ready\nlive: http://localhost:9990/health/live\n\nHealth checks:\n- `stage` from system property\n- `version` from Maven resource filtering MP Config\n- `db` if the database is currently reachable\n\n\n## Metrics\n\nSpec: https://download.eclipse.org/microprofile/microprofile-metrics-2.3.2/microprofile-metrics-spec-2.3.2.html\n\n\nPrometheus-UI runs on http://localhost:9090/graph\n\nTechnical metrics, e.g. `base_cpu_processCpuLoad` or `application_com_example_frontend_boundary_OrderBoundary_OrderBoundary_one_min_rate_per_second`\n\nA business metric, e.g. `application_com_example_backend_boundary_OrderBoundary_get_order_total` from the backend OrderBoundary.\n\nNote: the `@Timed` annotation should be on the `@Boundary` stereotype, but there's a bug in WildFly 20.0.1, so it's currently directly on the boundaries.\n\n\n## Tracing\n\nSpec: https://download.eclipse.org/microprofile/microprofile-opentracing-1.3.3/microprofile-opentracing-spec-1.3.3.html\n\n\nhttps://medium.com/jaegertracing/jaeger-elasticsearch-and-kibana-7ecb846137b6\n\nJaeger GUI: http://localhost:16686/search\n\nKibana: http://localhost:5601\n\n\n$ docker run --rm -it --name=elasticsearch -e \"ES_JAVA_OPTS=-Xms2g -Xmx2g\" -p 9200:9200 -p 9300:9300 -e \"discovery.type=single-node\" -e \"xpack.security.enabled=false\" docker.elastic.co/elasticsearch/elasticsearch:5.6.10\n\n$ docker run --rm -it --link=elasticsearch --name=kibana -p 5601:5601 docker.elastic.co/kibana/kibana:5.6.10\n\n$ docker run --rm -it --link=elasticsearch --name=jaeger -e SPAN_STORAGE_TYPE=elasticsearch -e ES_SERVER_URLS=http://elasticsearch:9200 -e ES_TAGS_AS_FIELDS_ALL=true -p 16686:16686 jaegertracing/all-in-one:1.7\n\n$ docker run --rm -it --link=jaeger -p 8080-8083:8080-8083 jaegertracing/example-hotrod:1.7 all --jaeger-agent.host-port=jaeger:6831\n\n\n## Fault Tolerance\n\nSpec: https://download.eclipse.org/microprofile/microprofile-fault-tolerance-2.1.1/microprofile-fault-tolerance-spec.html\n\n\nhttp://localhost:8080/frontend/timeout\n\nhttp://localhost:8080/frontend/timeoutRetry\n\nhttp://localhost:8080/frontend/timeoutFallback\n\nhttp://localhost:8080/frontend/circuitBreak\n\nPrometheus: `application_ft_com_example_frontend_boundary_OrderBoundary_breakCircuit_circuitbreaker_callsFailed_total`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ft1%2Fjee-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ft1%2Fjee-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ft1%2Fjee-demo/lists"}