Skip to main content

EhCache configuration in easy steps

 

1.0 Introduction to Ehcache

Ehcache is the most widely used open-source java based cache, used to boost performance of a web application. It supports integration compatibility with many frameworks. Any Database operation that is redundant can be stored in cache, so that result is stored in the cache after first Database hits.

Later on, further calls will be made to cache, and the result will be retrieved from Cache, instead of Database calls. This in turn, optimizes the Application.

Example: Some configurations data, master data from Database can be stored in cache.

1.1 Configuration Steps

Step 1 
   Put ehcache-xx.jar in the Project lib folder. (Current Latest jar is 3.5.2, as of Aug, 2018)
   Ehcache jars can be downloaded from here.
Step 2
    Place ehcache.xml file in the Project classpath location. (Sample xml)
Step 3
   Create a CacheManager.java file. Inside this class, Define a method with @Cacheable as shown
   below:
 
class  CacheManager{

@Cacheable("cacheData")
public String getCacheData(){
 ...
 ...
 // DAO calls or API calls results are stored.
 ...
 }
 }
Step 4
    Make entry of this method in ehcache.xml file.
    Sample is as shown below:

   


Step 5
 Thats is the end of Ehcache configuration.




Comments

Popular posts from this blog

Add/Modify Header Values in Java HttpServletRequest using Servlet Filters

Add/Modify Header Values in Java HttpServletRequest using Servlet Filters Steps to Modify Request Headers in a Servlet Request. This example will demonstrate how to modify 'Content-Type' header in Java Servlet Filter. In order to achieve this, use a custom wrapper Class, that extends HttpServletRequestWrapper. Thereafter, we need to override certain methods inside this custom Class. getHeader(String name) getHeaders(String name) getHeaderNames() getParameter(final String name) Code snippet for overriding above methods.     @Override     public String getHeader(String name) {     String header = super.getHeader(name); if ("content-type".equalsIgnoreCase(name)){ System.out.println("Adds Header Content-Type as application/json"); return "application/json"; }         return header;     }          @Override     public Enumeration ...

Fixing Keycloak Error : MediaType not set on path , with response status 200

Using a custom endpoint with Media Type set as 'Application/Json'. When this endpoint is accessed, below error is returned. ERROR [org.keycloak.headers.DefaultSecurityHeadersProvider] (default task-16) MediaType not set on path /auth/realms/my-realm/broker/keycloak-oidc/token, with response status 200 06:31:08,489 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (default task-16) Uncaught server error: javax.ws.rs.InternalServerErrorException: HTTP 500 Internal Server Error at org.keycloak.keycloak-services@10.0.2//org.keycloak.headers.DefaultSecurityHeadersProvider.addHeaders(DefaultSecurityHeadersProvider.java:71) at org.keycloak.keycloak-services@10.0.2//org.keycloak.services.filters.KeycloakSecurityHeadersFilter.filter(KeycloakSecurityHeadersFilter.java:36) The fix for this is to bind the blank response to Application/Json as follows: return Response.ok(json, MediaType.APPLICATION_JSON).build(); Do try it out, and let me know if it works. Do drop some comments is an...

Run Spring Boot application in Standalone Tomcat Server

How to run Spring Boot application on Tomcat To deploy a Spring Boot application on existing Tomcat Server, or to bundle it as war file and deploy on Tomcat, following changes are required: Change to war packaging in pom.xml: <packaging>war Application Main class to extend  SpringBootServletInitializer. Override configure method in this class.                protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {                        return application.sources(Application.class);                } Add Tomcat-starter dependency in pom.xml. <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-tomcat</artifactId>     <scope>provided</scope> </dependency...