Fixes #23148
Fixes #23147

Server was not finding WSDL when contained within a WAR in an EAR

Signed-off-by: smillidge <steve.millidge@payara.fish>
diff --git a/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/BundleDescriptor.java b/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/BundleDescriptor.java
index 8dd5802..c75361b 100644
--- a/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/BundleDescriptor.java
+++ b/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/BundleDescriptor.java
@@ -643,7 +643,9 @@
         return DEPLOYMENT_DESCRIPTOR_DIR;
     }
 
-
+    public String getRawModuleID() {
+        return moduleID;
+    }
     /**
      * @return the wsdl directory location inside the archive file
      */
diff --git a/appserver/webservices/jsr109-impl/src/main/java/org/glassfish/webservices/WsUtil.java b/appserver/webservices/jsr109-impl/src/main/java/org/glassfish/webservices/WsUtil.java
index 05ee71b..1656b96 100644
--- a/appserver/webservices/jsr109-impl/src/main/java/org/glassfish/webservices/WsUtil.java
+++ b/appserver/webservices/jsr109-impl/src/main/java/org/glassfish/webservices/WsUtil.java
@@ -544,9 +544,21 @@
                                     WebServiceContractImpl wscImpl = WebServiceContractImpl.getInstance();
                                     ServerEnvironment se = wscImpl.getServerEnvironment();
 
+                                    // First look in the root of the deployment
                                     File appFile = new File(se.getApplicationRepositoryPath(), serviceRef.getBundleDescriptor().getApplication().getAppName());
                                     if (appFile.exists()) {
-                                        retVal = new File(appFile, serviceRef.getWsdlFileUri()).toURL();
+                                        File wsdlFile = new File(appFile, serviceRef.getWsdlFileUri());
+                                        retVal = wsdlFile.toURI().toURL();
+                                        if (!wsdlFile.exists()) {
+                                            // try the module path for example when we are in an EAR file
+                                            wsdlFile = new File(serviceRef.getBundleDescriptor().getRawModuleID(), serviceRef.getWsdlFileUri());
+                                            if (!wsdlFile.exists()) {
+                                                // finally try to load via classloader
+                                                retVal = Thread.currentThread().getContextClassLoader().getResource(serviceRef.getWsdlFileUri());
+                                            } else {
+                                                retVal = wsdlFile.toURI().toURL();
+                                            }
+                                        }
                                     } else {
                                         // Fix for 6853656 and 6868695
                                         // In case of appclients the wsdl will be in the classpath
@@ -556,7 +568,7 @@
                                         retVal = Thread.currentThread().getContextClassLoader().getResource(serviceRef.getWsdlFileUri());
                                     }
                                 } else {
-                                    retVal = new File(serviceRef.getWsdlFileUri()).toURL();
+                                    retVal = new File(serviceRef.getWsdlFileUri()).toURI().toURL();
                                 }
                             }
                         }