Comment From: chiru007
Hi, I am trying to migrate legacy spring app to boot which is having a some SOAP services written using jaxws annotations. This app is already using jaxws-2.2.8 jar. getting the below error while starting the app. all other REST services are working fine.
This is because servletContext instance created by boot is an implementation of inner private class(org.apache.catalina.core.StandardContext$NoPluggabilityServletContext) and com.sun.xml.ws.assembler.MetroConfigLoader$MetroConfigUrlLoader is trying to access getResource method via reflection
Apr 14, 2020 5:43:22 PM com.sun.xml.ws.transport.http.servlet.WSServletContextListener contextInitialized
INFO: WSSERVLET12: JAX-WS context listener initializing
Apr 14, 2020 5:44:05 PM [com.sun.xml.ws.assembler.MetroConfigLoader] getResource
SEVERE: MASM0013: Unable to invoke getResource() method on servlet context instance
java.lang.IllegalAccessException: Class com.sun.xml.ws.assembler.MetroConfigLoader$MetroConfigUrlLoader can not access a member of class org.apache.catalina.core.StandardContext$NoPluggabilityServletContext with modifiers "public"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:296)
at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:288)
at java.lang.reflect.Method.invoke(Method.java:490)
at com.sun.xml.ws.assembler.MetroConfigLoader$MetroConfigUrlLoader.loadFromServletContext(MetroConfigLoader.java:331)
at com.sun.xml.ws.assembler.MetroConfigLoader$MetroConfigUrlLoader.getResource(MetroConfigLoader.java:295)
at com.sun.xml.ws.assembler.MetroConfigLoader.locateResource(MetroConfigLoader.java:231)
at com.sun.xml.ws.assembler.MetroConfigLoader.locateResource(MetroConfigLoader.java:241)
at com.sun.xml.ws.assembler.MetroConfigLoader.init(MetroConfigLoader.java:153)
at com.sun.xml.ws.assembler.MetroConfigLoader.
any response to this is much appreciated
Comment From: scottfrederick
It's hard to tell what's happening from the information provided. Your app is using Spring Framework and Spring Boot, but there are no Spring classes in the output you've provided. We'll need more information to be able to help.
Please provide a minimal sample project that reproduces the problem, as a zip file attached to this issue or a link to a GitHub repo.
Comment From: chiru007
Thanks for looking into this. Here I am listing full stack trace. I will try to put this in a sample project later
SEVERE: MASM0013: Unable to invoke getResource() method on servlet context instance
java.lang.IllegalAccessException: Class com.sun.xml.ws.assembler.MetroConfigLoader$MetroConfigUrlLoader can not access a member of class org.apache.catalina.core.StandardContext$NoPluggabilityServletContext with modifiers "public"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:296)
at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:288)
at java.lang.reflect.Method.invoke(Method.java:490)
at com.sun.xml.ws.assembler.MetroConfigLoader$MetroConfigUrlLoader.loadFromServletContext(MetroConfigLoader.java:331)
at com.sun.xml.ws.assembler.MetroConfigLoader$MetroConfigUrlLoader.getResource(MetroConfigLoader.java:295)
at com.sun.xml.ws.assembler.MetroConfigLoader.locateResource(MetroConfigLoader.java:231)
at com.sun.xml.ws.assembler.MetroConfigLoader.locateResource(MetroConfigLoader.java:241)
at com.sun.xml.ws.assembler.MetroConfigLoader.init(MetroConfigLoader.java:153)
at com.sun.xml.ws.assembler.MetroConfigLoader.<init>(MetroConfigLoader.java:115)
at com.sun.xml.ws.assembler.TubelineAssemblyController.getTubeCreators(TubelineAssemblyController.java:122)
at com.sun.xml.ws.assembler.MetroTubelineAssembler.createServer(MetroTubelineAssembler.java:173)
at com.sun.xml.ws.server.WSEndpointImpl.<init>(WSEndpointImpl.java:194)
at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:320)
at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:315)
at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:158)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:577)
at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:560)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:303)
at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:179)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:131)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:152)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4683)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5146)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Tomcat.start(Tomcat.java:459)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:107)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:88)
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:438)
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:191)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:180)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:153)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
Comment From: snicoll
Looking at the stacktrace, I am closing this one as a duplicate of https://github.com/eclipse-ee4j/metro-jax-ws/issues/95. If it turns out something needs to be done in Spring Boot we can reopen.