Thanks for the reply. I believe the SpringAppContextAwareObjectSupplier code was broken on this commit. I didn't notice that until recently. I will be updating the spring docs too as that feature is no longer available unfortunately.
commit 9e392c0ae1f0abab3d4956fbf4c0818c9570021e Author: Andreas Veithen <[email protected]> Date: Sat May 6 22:21:10 2017 +0000 AXIS2-3919: Remove the alternate class loading mechanism: - It degrades performance. - There is no test coverage for it. - With r1794157 in place, in most cases, no temporary files will be created and there is no need for a fallback mechanism. On Wed, Mar 10, 2021 at 7:19 AM Kevin Lee <[email protected]> wrote: > I'm not entirely sure if we are running JAX-WS services as I am relatively > new to the codebase (and it is rather legacy, still working on > understanding it). That code snippet is correct. I believe it was set up to > work without a Servlet Context before ( > https://axis.apache.org/axis2/java/core/docs/spring.html), but I had to > switch it to use a ServletContext after making the axis2.xml changes, > meaning that within our services.xml I changed the ServiceObjectSupplier > parameters from SpringAppContextAwareObjectSupplier > to SpringServletContextObjectSupplier. I considered investigating why it > didn't work as originally set up, but unfortunately I am constrained by a > timeline. I did not try your ServletContextInitializer code snippet. > > Best, > Kevin > > On Wed, Mar 10, 2021 at 11:10 AM robertlazarski <[email protected]> > wrote: > >> For JAX-WS I think you may have just used this entry into axis2.xml? >> >> <deployer extension=".aar" directory="services" >> class="org.apache.axis2.deployment.ServiceDeployer"> >> <serviceBuilderExtension name ="jwsbuilderExt" >> class="org.apache.axis2.jaxws.framework.JAXWSServiceBuilderExtension"/> >> <serviceBuilderExtension name ="wsdlbuilderExt" >> class="org.apache.axis2.deployment.WSDLServiceBuilderExtension"/> >> </deployer> >> >> On Wed, Mar 10, 2021 at 7:07 AM robertlazarski <[email protected]> >> wrote: >> >>> I see. I am looking at the docs now and am making some updates. >>> >>> Are you running JAX-WS services? How did you fix it? Did you use a >>> ServletContextInitializer like the code I pasted? >>> >>> I ask because I don't use JAX-WS myself, so I haven't run into the >>> problem. >>> >>> Regards, >>> Robert >>> >>> On Tue, Mar 9, 2021 at 11:44 AM Kevin Lee < >>> [email protected]> wrote: >>> >>>> Hey Robert, >>>> >>>> When I start work on upgrading a dependency between major versions that >>>> are expected to have breaking changes, I look towards the release >>>> documentation for the first major version release, which for 1.7 would be >>>> here <https://axis.apache.org/axis2/java/core/release-notes/1.7.0.html>. >>>> There is a section at the bottom that has several bullet points dedicated >>>> towards notable breaking changes, which I think is great. I propose that >>>> adding the contents of AXIS2-5340 >>>> <https://issues.apache.org/jira/browse/AXIS2-5340> as a bullet point >>>> would be important as that seems to definitely be a notable breaking >>>> change. >>>> >>>> Best, >>>> Kevin >>>> >>>> On Tue, Mar 9, 2021 at 3:29 PM robertlazarski <[email protected]> >>>> wrote: >>>> >>>>> I'm not really sure how the axis2.xml docs could be in regards to this >>>>> issue - do you think you could contribute it? Just paste what you have in >>>>> mind here if that is easier. >>>>> >>>>> On Tue, Mar 9, 2021 at 11:15 AM Kevin Lee < >>>>> [email protected]> wrote: >>>>> >>>>>> Hey Robert, >>>>>> >>>>>> I managed to upgrade successfully after finding that axis2.xml >>>>>> change, as the error messages for what to fix were fairly straightforward >>>>>> afterwards (before, the web service deployment appeared to be failing >>>>>> silently with a generic EPR reference cannot be found error). I think >>>>>> that >>>>>> axis2.xml deployer inclusion just needs to be more prominent in the >>>>>> documentation. >>>>>> >>>>>> Best, >>>>>> Kevin >>>>>> >>>>>> On Tue, Mar 9, 2021 at 2:59 PM robertlazarski < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> I was wondering if there are any spring boot users. I plan on >>>>>>> writing some docs as it is harder than it should be. >>>>>>> >>>>>>> I was able to successfully implement it though. Where are you stuck >>>>>>> exactly? >>>>>>> >>>>>>> Here's the main init code: >>>>>>> >>>>>>> package com.alphatheory.configuration; >>>>>>> >>>>>>> import com.mycompany.ATInit; >>>>>>> import org.apache.logging.log4j.LogManager; >>>>>>> import org.apache.logging.log4j.Logger; >>>>>>> import org.apache.axis2.transport.http.AxisServlet; >>>>>>> import >>>>>>> org.springframework.boot.web.servlet.ServletContextInitializer; >>>>>>> import org.springframework.context.annotation.Configuration; >>>>>>> import >>>>>>> org.springframework.web.context.support.AnnotationConfigWebApplicationContext; >>>>>>> >>>>>>> import org.springframework.core.annotation.Order; >>>>>>> >>>>>>> import org.springframework.beans.factory.annotation.Autowired; >>>>>>> import org.springframework.beans.factory.annotation.Value; >>>>>>> import org.springframework.context.annotation.Bean; >>>>>>> import org.springframework.context.annotation.PropertySource; >>>>>>> import >>>>>>> org.springframework.context.support.PropertySourcesPlaceholderConfigurer; >>>>>>> >>>>>>> import javax.servlet.ServletContext; >>>>>>> import javax.servlet.ServletRegistration; >>>>>>> >>>>>>> import java.util.Set; >>>>>>> >>>>>>> @Configuration >>>>>>> @Order(4) >>>>>>> @PropertySource("classpath:application.properties") >>>>>>> public class ATWebAppInitializer implements >>>>>>> ServletContextInitializer { >>>>>>> >>>>>>> private static final Logger logger = >>>>>>> LogManager.getLogger(ATWebAppInitializer.class); >>>>>>> private static final String SERVICES_MAPPING = "/services/*"; >>>>>>> >>>>>>> @Value("${appInstance}") >>>>>>> private String appInstance; >>>>>>> >>>>>>> @Value("${appInstanceIP}") >>>>>>> private String appInstanceIP; >>>>>>> >>>>>>> @Value("${prodKillSwitchEnabled}") >>>>>>> private String prodKillSwitchEnabled; >>>>>>> >>>>>>> @Override >>>>>>> public void onStartup(ServletContext container) { >>>>>>> String logPrefix = "ATWebAppInitializer , appInstance: " + >>>>>>> appInstance + " , "; >>>>>>> logger.warn(logPrefix + "inside onStartup() ..."); >>>>>>> // Create the 'root' Spring application context >>>>>>> AnnotationConfigWebApplicationContext ctx = new >>>>>>> AnnotationConfigWebApplicationContext(); >>>>>>> >>>>>>> addAxis2Servlet(container, ctx); >>>>>>> addATInitServlet(container, ctx); >>>>>>> logger.warn(logPrefix + "onStartup() completed ..."); >>>>>>> } >>>>>>> >>>>>>> private void addAxis2Servlet(ServletContext container, >>>>>>> AnnotationConfigWebApplicationContext ctx) { >>>>>>> >>>>>>> ServletRegistration.Dynamic dispatcher = >>>>>>> container.addServlet( >>>>>>> "AxisServlet", new AxisServlet()); >>>>>>> dispatcher.setLoadOnStartup(1); >>>>>>> Set<String> mappingConflicts = >>>>>>> dispatcher.addMapping(SERVICES_MAPPING); >>>>>>> if (!mappingConflicts.isEmpty()) { >>>>>>> for (String s : mappingConflicts) { >>>>>>> logger.error("Mapping conflict: " + s); >>>>>>> } >>>>>>> // throw new IllegalStateException("'AxisServlet' could >>>>>>> not be mapped to '" + SERVICES_MAPPING + "'"); >>>>>>> } >>>>>>> } >>>>>>> >>>>>>> private void addATInitServlet(ServletContext container, >>>>>>> AnnotationConfigWebApplicationContext ctx) { >>>>>>> >>>>>>> ServletRegistration.Dynamic dispatcher = >>>>>>> container.addServlet( >>>>>>> "ATInit", new ATInit()); >>>>>>> dispatcher.setLoadOnStartup(1); >>>>>>> dispatcher.setInitParameter("appInstance", appInstance); >>>>>>> >>>>>>> // do not add mapping >>>>>>> } >>>>>>> >>>>>>> } >>>>>>> >>>>>>> On Tue, Mar 9, 2021 at 10:13 AM Kevin Lee < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Hi Axis2 team, >>>>>>>> >>>>>>>> I recently had to upgrade from Axis 1.6.3 to Axis 1.7.8 on the Java >>>>>>>> Spring Boot codebase I work on, and struggled greatly with making the >>>>>>>> upgrade work until I resolved the breaking change from AXIS2-5340 >>>>>>>> <https://issues.apache.org/jira/browse/AXIS2-5340> that involved >>>>>>>> changing our axis2.xml config to properly deploy our web services. >>>>>>>> >>>>>>>> This breaking change is not listed clearly in the 1.7.0 major >>>>>>>> release notes >>>>>>>> <https://axis.apache.org/axis2/java/core/release-notes/1.7.0.html> - >>>>>>>> it is not included alongside the other breaking changes listed up front >>>>>>>> such as the MEP URI form change, and is tucked away in the complete >>>>>>>> list of JIRA issues that were addressed in the release >>>>>>>> <https://axis.apache.org/axis2/java/core/release-notes/1.7.0.html>. >>>>>>>> The only reason why I found out about this change was by downloading >>>>>>>> the >>>>>>>> binaries for 1.6.3 and 1.7.8 and stumbling upon the differences in >>>>>>>> default >>>>>>>> axis2.xml configs. >>>>>>>> >>>>>>>> As mentioned in the issue, this seems like a rather important >>>>>>>> breaking change that will apply to the majority of Axis2 setups and >>>>>>>> seems >>>>>>>> necessary for backward compatibility. I believe it will benefit future >>>>>>>> developers that have to do similar upgrades to make note of this >>>>>>>> breaking >>>>>>>> change and include it in the 1.7.0 major release notes where it can be >>>>>>>> visibly seen. >>>>>>>> >>>>>>>> Best, >>>>>>>> Kevin Lee >>>>>>>> >>>>>>>> >>>>>> >>>>>> -- >>>>>> *Kevin Lee (이지환)* >>>>>> Northwestern University 2020 >>>>>> B.S. in Computer Science >>>>>> www.kevinjihwanlee.com | (773) 647-6146 >>>>>> >>>>> >>>> >>>> -- >>>> *Kevin Lee (이지환)* >>>> Northwestern University 2020 >>>> B.S. in Computer Science >>>> www.kevinjihwanlee.com | (773) 647-6146 >>>> >>> > > -- > *Kevin Lee (이지환)* > Northwestern University 2020 > B.S. in Computer Science > www.kevinjihwanlee.com | (773) 647-6146 >
