This is an automated email from the ASF dual-hosted git repository.
robertlazarski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/axis-axis2-java-core.git
The following commit(s) were added to refs/heads/master by this push:
new 2a07bb522d AXIS2-6099 add better Wildfly dep verification
2a07bb522d is described below
commit 2a07bb522d8429e7ec0ff2d7aaee51f3830dd504
Author: Robert Lazarski <[email protected]>
AuthorDate: Wed Dec 10 05:47:31 2025 -1000
AXIS2-6099 add better Wildfly dep verification
---
.../moshi/UndertowAxis2BufferIntegration.java | 72 ++++++++++++++++++++++
1 file changed, 72 insertions(+)
diff --git
a/modules/transport-h2/src/main/java/org/apache/axis2/transport/h2/integration/moshi/UndertowAxis2BufferIntegration.java
b/modules/transport-h2/src/main/java/org/apache/axis2/transport/h2/integration/moshi/UndertowAxis2BufferIntegration.java
index 19cb811ca3..04d86db978 100644
---
a/modules/transport-h2/src/main/java/org/apache/axis2/transport/h2/integration/moshi/UndertowAxis2BufferIntegration.java
+++
b/modules/transport-h2/src/main/java/org/apache/axis2/transport/h2/integration/moshi/UndertowAxis2BufferIntegration.java
@@ -125,6 +125,26 @@ public class UndertowAxis2BufferIntegration {
}
}
+ // If no direct XNIO Worker found, try to extract from
WebSocketDeploymentInfo
+ if (worker == null) {
+ log.info("WildFly HTTP/2 Integration: Attempting to extract
XNIO Worker from WebSocketDeploymentInfo...");
+ Object wsInfo =
servletContext.getAttribute("io.undertow.websockets.jsr.WebSocketDeploymentInfo");
+ if (wsInfo != null) {
+ try {
+ // Use reflection to access
WebSocketDeploymentInfo.getWorker()
+ java.lang.reflect.Method getWorkerMethod =
wsInfo.getClass().getMethod("getWorker");
+ Object extractedWorker =
getWorkerMethod.invoke(wsInfo);
+ if (extractedWorker instanceof XnioWorker) {
+ worker = (XnioWorker) extractedWorker;
+ discovery.append("Extracted XnioWorker from
WebSocketDeploymentInfo, ");
+ log.info(" *** XNIO Worker EXTRACTED from
WebSocketDeploymentInfo: " + extractedWorker.getClass().getName());
+ }
+ } catch (Exception e) {
+ log.info(" Failed to extract XNIO Worker from
WebSocketDeploymentInfo: " + e.getMessage());
+ }
+ }
+ }
+
// Search for Buffer Pool with detailed logging
log.info("WildFly HTTP/2 Integration: Searching for Buffer Pool in
servlet context...");
for (String name : poolNames) {
@@ -146,6 +166,58 @@ public class UndertowAxis2BufferIntegration {
}
}
+ // If no direct Buffer Pool found, try to extract from XNIO Worker
+ if (pool == null && worker != null) {
+ log.info("WildFly HTTP/2 Integration: Attempting to extract
Buffer Pool from XNIO Worker...");
+ try {
+ // Use reflection to access XnioWorker.getBufferPool()
+ java.lang.reflect.Method getBufferPoolMethod =
worker.getClass().getMethod("getBufferPool");
+ Object extractedPool = getBufferPoolMethod.invoke(worker);
+ if (extractedPool instanceof Pool) {
+ @SuppressWarnings("unchecked")
+ Pool<ByteBuffer> bufferPool = (Pool<ByteBuffer>)
extractedPool;
+ pool = bufferPool;
+ discovery.append("Extracted BufferPool from
XnioWorker, ");
+ log.info(" *** Buffer Pool EXTRACTED from XnioWorker:
" + extractedPool.getClass().getName());
+ }
+ } catch (Exception e) {
+ log.info(" Failed to extract Buffer Pool from XNIO
Worker: " + e.getMessage());
+ }
+ }
+
+ // If still no Buffer Pool found, try to extract from
ServerWebSocketContainer
+ if (pool == null) {
+ log.info("WildFly HTTP/2 Integration: Attempting to extract
Buffer Pool from ServerWebSocketContainer...");
+ Object wsContainer =
servletContext.getAttribute("jakarta.websocket.server.ServerContainer");
+ if (wsContainer != null) {
+ try {
+ // Try to access underlying Undertow components
through ServerWebSocketContainer
+ java.lang.reflect.Method getWorkerMethod =
wsContainer.getClass().getMethod("getXnioWorker");
+ Object containerWorker =
getWorkerMethod.invoke(wsContainer);
+ if (containerWorker instanceof XnioWorker) {
+ XnioWorker xnioWorker = (XnioWorker)
containerWorker;
+ if (worker == null) {
+ worker = xnioWorker;
+ discovery.append("Extracted XnioWorker from
ServerWebSocketContainer, ");
+ log.info(" *** XNIO Worker EXTRACTED from
ServerWebSocketContainer: " + containerWorker.getClass().getName());
+ }
+ // Try to get buffer pool from this worker
+ java.lang.reflect.Method getBufferPoolMethod =
xnioWorker.getClass().getMethod("getBufferPool");
+ Object extractedPool =
getBufferPoolMethod.invoke(xnioWorker);
+ if (extractedPool instanceof Pool) {
+ @SuppressWarnings("unchecked")
+ Pool<ByteBuffer> bufferPool =
(Pool<ByteBuffer>) extractedPool;
+ pool = bufferPool;
+ discovery.append("Extracted BufferPool from
ServerWebSocketContainer XnioWorker, ");
+ log.info(" *** Buffer Pool EXTRACTED from
ServerWebSocketContainer XnioWorker: " + extractedPool.getClass().getName());
+ }
+ }
+ } catch (Exception e) {
+ log.info(" Failed to extract components from
ServerWebSocketContainer: " + e.getMessage());
+ }
+ }
+ }
+
this.xnioWorker = worker;
this.sharedBufferPool = pool;
this.integrationAvailable = (worker != null && pool != null);