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);

Reply via email to