Project

General

Profile

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

Added by Rob Nahf over 4 years ago. Updated over 2 years ago.

Status:
In Progress
Priority:
Normal
Assignee:
Category:
d1_indexer
Target version:
-
Start date:
2017-04-27
Due date:
% Done:

30%

Milestone:
None
Product Version:
*
Story Points:
Sprint:

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

Revision 18814
Added by Rob Nahf over 4 years ago

refs #8086: upgrade javax.servlet dependency from 2.5 to 3.0.1, to be in alignment with Tomcat7 (the provider).

Revision 18814
Added by Rob Nahf over 4 years ago

refs #8086: upgrade javax.servlet dependency from 2.5 to 3.0.1, to be in alignment with Tomcat7 (the provider).

Revision 18841
Added by Rob Nahf over 4 years ago

refs: #8086: updated spring version, refactored logging bean in testApplicationContext due to removed class in the newer spring version.

Revision 18841
Added by Rob Nahf over 4 years ago

refs: #8086: updated spring version, refactored logging bean in testApplicationContext due to removed class in the newer spring version.

Revision 18844
Added by Rob Nahf over 4 years ago

refs #8086: updating project dependencies. switch to compile under java 1.8

Revision 18844
Added by Rob Nahf over 4 years ago

refs #8086: updating project dependencies. switch to compile under java 1.8

History

#1 Updated by Rob Nahf over 4 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 4 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 4 years ago

  • Status changed from New to In Progress
  • % Done changed from 0 to 30

#4 Updated by Rob Nahf over 2 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 2 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)

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 14.8 MB)