Task #8086
Story #8061: develop queue-based processing system for the CN
Task #8080: ioslate queue creation logic from processing logic from the queue definition logic
upgrade Spring dependencies
30%
Description
For rabbitMQ spring features, we'd want to upgrade Spring to 4.1.x (likely 4.2.6; currently at 3.1.4), which has minimum requirements of:
Tomcat 7.0.20
jetty 7.5
Jackson 2.x
hibernate 3.6, or even 4.x (recommended) - but this might be replacing Hibernate, so...
Servlet 3.0 (we use 2.5)
Spring Security 3.2 (do we use it?)
are we using Spring XML namespaces? , if so use versionless or -4.1.xsd versions.
(gleaned from https://www.slideshare.net/SpringCentral/4pieter-springone2gx2014ratpack?next_slideshow=1)
Associated revisions
refs #8086: upgrade javax.servlet dependency from 2.5 to 3.0.1, to be in alignment with Tomcat7 (the provider).
refs #8086: upgrade javax.servlet dependency from 2.5 to 3.0.1, to be in alignment with Tomcat7 (the provider).
refs: #8086: updated spring version, refactored logging bean in testApplicationContext due to removed class in the newer spring version.
refs: #8086: updated spring version, refactored logging bean in testApplicationContext due to removed class in the newer spring version.
refs #8086: updating project dependencies. switch to compile under java 1.8
refs #8086: updating project dependencies. switch to compile under java 1.8
History
#1 Updated by Rob Nahf over 7 years ago
updated to Servlet 3.0.1 (consistent with tomcat7)
d1_cn_common already at habernate-entitymanager 3.6.10.Final, so leaving as-is for now.
#2 Updated by Rob Nahf over 7 years ago
Discovered the hard way that the deprecated CommonsLogFactoryBean removed from spring framework 4.1.0, so I needed to remove it from d1_test_resources configuration.
Replaced with concrete implementation org.apache.commons.logging.impl.Jdk14Logger, as per this post:
https://stackoverflow.com/questions/36023406/migrating-to-spring-4-commonslogfactorybean-not-found
#3 Updated by Rob Nahf over 7 years ago
- Status changed from New to In Progress
- % Done changed from 0 to 30
#4 Updated by Rob Nahf over 5 years ago
Newer recommendations are to upgrade to Spring 4.3 to completely decouple classes from DI frameworks. This is accomplished via implicit constructor injection. (Field injection, something the indexer uses extensively, has been discredited, even by Spring.
see https://www.vojtechruzicka.com/field-dependency-injection-considered-harmful/
another talk about dependency management: https://www.slideshare.net/SpringCentral/upgrade-tospring4, see slides 13-17
also details on implicit constructor injection (link also in the vojtechruzicka reference): https://spring.io/blog/2016/03/04/core-container-refinements-in-spring-framework-4-3
#5 Updated by Rob Nahf over 5 years ago
Checking with Metacat team, there is minimal impact on Metacat, because it's only used via importing the DataONE indexing component, but servlet api may need to be upgraded.
The biggest concern is whether there would be churn in the indexing code. (Probably light churn due to changes in how annotations like @Autowired would be simplified out)