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

Reply via email to