Accessing ServletContext and ServletRequest in CDI Beans

Today I’ve found one interesting question on StackOverFlow of one user asking to read the web.xml context params from a CDI Bean. Luckily it’s not complicated at all to accomplish this task.

In order to be able to read the web.xml context-params from a CDI Bean all you need to do is injecting the ServletContext into your CDI Bean. This is our starting point:

<context-param>

  <param-name>upload.path</param-name>

  <param-value>/home/jboss/data</param-value>

</context-param>

The Servlet Context can be injected safetly into any CDI bean as follows:

@ApplicationScoped

public class Utils {

	@Inject

	private ServletContext context;

}

Then you can read your context params easily as follows:

context.getInitParameter("upload.path");

Much the same way you can inject the HTTPServletRequest and extract the request’s parameters or access the HTTPSession:

@Inject

private HttpServletRequest httpRequest;

Recommended Articles

Maximize Your CDI Applications with Jakarta EE 11 and beans.xml

Enhance your CDI applications using Jakarta EE 11's beans.xml for improved compatibility and functionality. #CDI #JakartaEE11 #WildFly #Java #Middleware #CloudNative

Using CDI Beans in JBoss - WildFly Modules | Enterprise Java Tutorials

Learn how to use CDI beans and AS resources in JBoss WildFly modules, deploying a demo bean with @ApplicationScoped and javax.annotation.Resource.

Upgrading Java EE 6 to CDI: A Step-by-Step Guide with Eclipse and Maven

Learn how to migrate your Java EE 6 EJB-based application to a CDI-based application using Eclipse and the Maven plugin. Get started with this comprehensive tutorial.

Enhance Your Enterprise Java Applications with Contexts and Dependency Injection (CDI) - JSR 299

JSR 299 CDI simplifies Java EE development, bridging the gap between enterprise and web tiers. Learn how to leverage CDI for transactional support in your applications.