Justin Rassier
Justin Rassier

Reputation: 908

How to make legacy HttpServlet Spring web aware

We have a legacy HttpServlet class that is the backbone of our application. At this point, the app doesn't have any Spring libraries in it. We are looking to introduce Spring, in particular so we can use Spring-Data in conjunction with Hibernate.

I was wondering if there is a way to make this legacy Servlet web-aware so we can have Request and Session scopes injected. In particular, we would like to be able to inject the HttpServletRequest object into some beans.

One of the main reasons we need to do this, is for a weird multi-tenancy solution we have in place. Hibernate can handle Multi-Tenancy using a combination of a AbstractMultiTenantConnectionProvider and a CurrentTenantIdentifierResolver When using Spring-JPA's Repositories, you lose control of the session creation. One way to take care of this is to implement the CurrentTenantIdentifierResolver Since our tenant identifier is partially determined by something that comes in on the request, it is necessary to inject the request into our CurrentTenantIdentifierResolver implementation.

Also, it would be great to get Spring involved for all the other benefits it can provide in a legacy app.

Do you know how we can accomplish this?

Upvotes: 0

Views: 210

Answers (1)

David Siro
David Siro

Reputation: 1906

You can define org.springframework.web.context.ContextLoaderListener within your web.xml, which will load your spring application context.

Then, within your servlet code, you access the context using WebApplicationContextUtils.getWebApplicationContext(servletContext) helper method.

Take a look at the Spring docs here: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#web-integration-common

Upvotes: 2

Related Questions