Class: JMX::MBeanServer

Inherits:
Object
  • Object
show all
Defined in:
lib/jmx/server.rb

Overview

The MBeanServer represents a connection to an MBean server rather than an actual MBean server. Depending upon how this object is constructed you can either talk to the PlatformMBeanServer or any “remote” MBean server. – Represents both MBeanServer and MBeanServerConnection ++

Constant Summary collapse

@@classes =
{}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(location = nil, username = nil, password = nil) ⇒ MBeanServer

when creatinga new MBeanServer you can optionally specify a location, username, and password if specify these values (or at least the location) the MBeanServer instance will connect to an existing (and remote ) MBean server and register the mbeans there. otherwise the server will connect to to the local Platform MBean Server.



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/jmx/server.rb', line 22

def initialize(location=nil, username=nil, password=nil)
  if (location)
    env = username ? 
      {"jmx.remote.credentials" => [username, password].to_java(:string)} :
      nil
    url = JMXServiceURL.new location
    @server = JMXConnectorFactory.connect(url, env).getMBeanServerConnection
  else
    @server = java.lang.management.ManagementFactory.getPlatformMBeanServer
    #@server = MBeanServerFactory.createMBeanServer
  end
end

Instance Attribute Details

#serverObject

Returns the value of attribute server.



15
16
17
# File 'lib/jmx/server.rb', line 15

def server
  @server
end

Class Method Details

.find(agent_id = nil) ⇒ Object



85
86
87
# File 'lib/jmx/server.rb', line 85

def self.find(agent_id=nil)
  MBeanServerFactory.findMBeanServer(agent_id)
end

Instance Method Details

#[](object_name) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/jmx/server.rb', line 35

def [](object_name)
  name = make_object_name object_name

  unless @server.isRegistered(name)
    raise NoSuchBeanError.new("No name: #{object_name}") 
  end

  #### TODO: Why?
  @server.getObjectInstance name
  MBeanProxy.generate(@server, name)
end

#[]=(class_name, object_name) ⇒ Object



47
48
49
50
51
52
53
# File 'lib/jmx/server.rb', line 47

def []=(class_name, object_name)
  name = make_object_name object_name

  @server.createMBean class_name, name, nil, nil

  MBeanProxy.generate(@server, name)
end

#default_domainObject



55
56
57
# File 'lib/jmx/server.rb', line 55

def default_domain
  @server.getDefaultDomain
end

#domainsObject



59
60
61
# File 'lib/jmx/server.rb', line 59

def domains
  @server.domains
end

#mbean_countObject



63
64
65
# File 'lib/jmx/server.rb', line 63

def mbean_count
  @server.getMBeanCount
end

#query_names(name = nil, query = nil) ⇒ Object



67
68
69
70
71
# File 'lib/jmx/server.rb', line 67

def query_names(name=nil, query=nil)
  object_name = name.nil? ? nil : make_object_name(name)

  @server.query_names(object_name, query)
end

#register_mbean(object, object_name) ⇒ Object



79
80
81
82
83
# File 'lib/jmx/server.rb', line 79

def register_mbean(object, object_name)
  name = make_object_name object_name
  @server.registerMBean(object, name)
  MBeanProxy.generate(@server, name)
end

#unregister_mbean(object_name) ⇒ Object



73
74
75
76
77
# File 'lib/jmx/server.rb', line 73

def unregister_mbean(object_name)
  name = make_object_name object_name
  @server.unregisterMBean(name)
  
end