View Javadoc

1   package org.jcr_blog.service.jmx;
2   
3   import java.lang.management.ManagementFactory;
4   import javax.annotation.PostConstruct;
5   import javax.annotation.PreDestroy;
6   import javax.ejb.Singleton;
7   import javax.ejb.Startup;
8   import javax.inject.Inject;
9   import javax.management.InstanceAlreadyExistsException;
10  import javax.management.MBeanServer;
11  import javax.management.ObjectName;
12  import org.jcr_blog.domain.BlogRepository;
13  import org.jcr_blog.service.JcrBlogException;
14  
15  @Singleton
16  @Startup
17  public class JcrBlogImpl implements JcrBlogMXBean {
18  
19      private MBeanServer platformMBeanServer;
20      private ObjectName objectName = null;
21      @Inject
22      private BlogRepository blogRepository;
23  
24      
25      @PostConstruct
26      public void registerInJMX() {
27          try {
28              objectName = new ObjectName("org.jcr_blog.jcrblog:type=" + this.getClass().getName());
29              platformMBeanServer = ManagementFactory.getPlatformMBeanServer();
30              platformMBeanServer.registerMBean(this, objectName);
31           }catch(InstanceAlreadyExistsException e) {
32               // ignore, bean can be deployed by backend and frontend
33           } 
34          
35          catch (Exception e) {
36              throw new IllegalStateException("Problem during registration of Monitoring into JMX:" + e);
37          }
38      }
39  
40      @PreDestroy
41      public void unregisterFromJMX() {
42          try {
43              platformMBeanServer.unregisterMBean(this.objectName);
44          } catch (Exception e) {
45              throw new IllegalStateException("Problem during unregistration of Monitoring into JMX:" + e);
46          }
47      }
48  
49      @Override
50      public void initBlog(String blog) throws JcrBlogException {
51          this.blogRepository.initBlog(blog);
52      }    
53  
54      @Override
55      public void resetDataStore() throws JcrBlogException {
56          this.blogRepository.removeAll();
57          this.blogRepository.initializeStorageLayout();
58      }
59      
60      
61      
62  }