diff --git a/CLAUDE.md b/CLAUDE.md
index 6afa070..0c21f30 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -42,12 +42,15 @@ mvn package
```
parent (pom.xml)
-├── integroBridgeService/ ← main service
-└── bridgeService-data/ ← test data & demo classes used by the test suite
+├── integroBridgeService/ ← main service
+├── bridgeService-data/ ← test data & demo classes used by the test suite
+└── bridgeService-test-injection/ ← E2E injection model tests (not deployed to Maven Central)
```
`bridgeService-data` is a dependency of the test scope in `integroBridgeService`. It provides concrete Java classes (under `com.adobe.campaign.tests.bridge.testdata.*`) that the tests call through the REST API.
+`bridgeService-test-injection` verifies the **injection model** — where BridgeService is embedded as a library inside a host JVM rather than run as a standalone server. Its tests (`InjectionModelE2ETests`, `InjectionModelMCPTests`) start the service in-process and exercise both the REST and MCP paths. CI runs this module against JDK 17 and JDK 21 via a matrix job (`injection-compat`). The module has `sonar.skip=true` and `maven.deploy.skip=true` so it is excluded from coverage reporting and Central publishing.
+
## Architecture Overview
### Core Request Flow
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 18ac2af..093646e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -42,6 +42,16 @@ process that must reach lazy consensus (silence is approval) before invitations
are issued. If you feel you are qualified and want to get more deeply involved,
feel free to reach out to existing committers to have a conversation about that.
+### Module Structure
+
+The project has three modules:
+
+| Module | Purpose | Deployed to Central |
+|---|---|---|
+| `integroBridgeService` | Main REST/MCP service | Yes |
+| `bridgeService-data` | Test data and demo classes | No |
+| `bridgeService-test-injection` | E2E tests for the injection model (BridgeService embedded in a host JVM); run against JDK 17 and 21 in CI | No |
+
### Commit Rules
All code pushed onto the repository must pass the following quality gates:
* Passed Unit Tests
diff --git a/README.md b/README.md
index c92ea6e..a4acf7f 100644
--- a/README.md
+++ b/README.md
@@ -114,7 +114,7 @@ The following dependency needs to be added to your pom file:
com.adobe.campaign.tests.bridge.service
integroBridgeService
- 3.11.4
+ 3.11.5
```
@@ -271,7 +271,7 @@ If all is good you should get:
```
All systems up - in production
-Version : 3.11.4
+Version : 3.11.5
Product user version : 7.0
```
@@ -1024,7 +1024,7 @@ Response:
"id": 1,
"result": {
"protocolVersion": "2024-11-05",
- "serverInfo": { "name": "bridgeService", "version": "3.11.4" },
+ "serverInfo": { "name": "bridgeService", "version": "3.11.5" },
"capabilities": { "tools": {} }
}
}
diff --git a/ReleaseNotes.md b/ReleaseNotes.md
index 9ac3f5b..312552b 100644
--- a/ReleaseNotes.md
+++ b/ReleaseNotes.md
@@ -1,4 +1,10 @@
# Bridge Service - RELEASE NOTES
+## 3.11.5
+* **Bug Fix** [#62 Fix fat-JAR crash: replace parameterless LogManager.getLogger() calls](https://github.com/adobe/bridgeService/pull/62) Resolved startup crash in fat-JAR deployments caused by `LogManager.getLogger()` without a class argument.
+* **CI** [#59/#60 Injection compatibility matrix for JDK 17 and 21](https://github.com/adobe/bridgeService/pull/60) Added a CI matrix job that runs injection tests against JDK 17 and JDK 21 host JVMs.
+* **Promotion** [#64 Enrich Maven Central metadata](https://github.com/adobe/bridgeService/pull/63) Added keyword-rich descriptions, organization, inceptionYear, issueManagement, and ciManagement to POMs for better discoverability on Maven Central.
+* **Dependency Updates** Updated log4j2 to 2.26.0; routine GitHub Actions version bumps.
+
## 3.11.4
* **MCP** [#40 Three-level Javadoc quality gate for MCP tool discovery](https://github.com/adobe/bridgeService/pull/52) Tool descriptions are now validated at three levels: method Javadoc, `@param` tags, and `@return` tag. Methods missing any level are excluded from `tools/list` at startup.
* **Docs** [#50 Add demo usage examples to Running a DEMO section](https://github.com/adobe/bridgeService/pull/51) Added concrete curl and payload examples to the demo section of the README.
diff --git a/bridgeService-data/pom.xml b/bridgeService-data/pom.xml
index a35193d..7548f8e 100644
--- a/bridgeService-data/pom.xml
+++ b/bridgeService-data/pom.xml
@@ -53,6 +53,6 @@
com.adobe.campaign.tests.bridge
parent
- 3.11.5-SNAPSHOT
+ 3.11.6-SNAPSHOT
diff --git a/bridgeService-test-injection/pom.xml b/bridgeService-test-injection/pom.xml
index 0c4004d..f52d4bb 100644
--- a/bridgeService-test-injection/pom.xml
+++ b/bridgeService-test-injection/pom.xml
@@ -90,6 +90,6 @@
com.adobe.campaign.tests.bridge
parent
- 3.11.5-SNAPSHOT
+ 3.11.6-SNAPSHOT
diff --git a/docs/MCP.md b/docs/MCP.md
index e6ddf1b..0df4e07 100644
--- a/docs/MCP.md
+++ b/docs/MCP.md
@@ -102,7 +102,7 @@ Expected response:
"id": 1,
"result": {
"protocolVersion": "2024-11-05",
- "serverInfo": { "name": "bridgeService", "version": "3.11.4" },
+ "serverInfo": { "name": "bridgeService", "version": "3.11.5" },
"capabilities": { "tools": {} }
}
}
@@ -553,7 +553,7 @@ Response:
```json
{
- "ibsVersion": "3.11.4",
+ "ibsVersion": "3.11.5",
"deploymentMode": "TEST",
"mcpConfig": {
"packagesConfigured": "com.example.services",
@@ -797,7 +797,7 @@ and start the server from within it.
com.adobe.campaign.tests.bridge.service
integroBridgeService
- 3.11.4
+ 3.11.5
```
diff --git a/integroBridgeService/pom.xml b/integroBridgeService/pom.xml
index 4fbcda6..55531e6 100644
--- a/integroBridgeService/pom.xml
+++ b/integroBridgeService/pom.xml
@@ -189,6 +189,6 @@
com.adobe.campaign.tests.bridge
parent
- 3.11.5-SNAPSHOT
+ 3.11.6-SNAPSHOT
diff --git a/pom.xml b/pom.xml
index 3069e8c..ae31ad8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
4.0.0
com.adobe.campaign.tests.bridge
parent
- 3.11.5-SNAPSHOT
+ 3.11.6-SNAPSHOT
BridgeService exposes any Java library as REST endpoints, enabling cross-language test automation and AI agent tool use (MCP). Call Java methods directly from Cypress, Python, or any HTTP client — no rewriting required.
pom
${project.groupId}:${project.artifactId}