Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Monitoring spring beans with JavaMelody in Spring-Boot project

I'm trying to monitor a REST application based on the Spring tutorial Building a RESTful Web Service but in the Java Melody documentation page the configuration depends of the web.xml file, but the spring project does not have such file. I tried by using java melody annotations and setting contextConfigLocation in the WebInitializer but when I enter to Java Melody page I can't see Spring section.

I Have my WebInitializar like this:

public class WebInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(Application.class).properties();
}

@Override
public void onStartup(ServletContext servletContext) throws ServletException {
    servletContext.setInitParameter("contextConfigLocation", "classpath:net/bull/javamelody/monitoring-spring.xml");
    super.onStartup(servletContext);
}
}

I have set the contextConfigLocation as the Java Melody documentation said.

And my controller:

@RestController
@MonitoredWithSpring
public class GreetingController {

private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();


@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
    return new Greeting(counter.incrementAndGet(),
                        String.format(template, name));
}
}

Any advice to make it work?

like image 437
gamerkore Avatar asked Jan 08 '15 19:01

gamerkore


2 Answers

There is now a documentation to monitor Spring-boot app with javamelody, including Spring beans: https://github.com/javamelody/javamelody/wiki/SpringBootStarter

like image 193
evernat Avatar answered Nov 07 '22 16:11

evernat


You only need the javamelody dependency jar in the web application, and register two beans in spring application context:

@Bean
public HttpSessionListener javaMelodyListener(){
    return new net.bull.javamelody.SessionListener();
}

@Bean
public Filter javaMelodyFilter(){
    return new net.bull.javamelody.MonitoringFilter();
}
like image 5
Ramón Avatar answered Nov 07 '22 15:11

Ramón