001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.camel.spi; 018 019 import javax.management.JMException; 020 import javax.management.MBeanServer; 021 import javax.management.ObjectName; 022 023 import org.apache.camel.Service; 024 025 /** 026 * Camel JMX service agent 027 */ 028 public interface ManagementAgent extends Service { 029 030 /** 031 * Registers object with management infrastructure with a specific name. Object must be annotated or 032 * implement standard MBean interface. 033 * 034 * @param obj the object to register 035 * @param name the name 036 * @throws JMException is thrown if the registration failed 037 */ 038 void register(Object obj, ObjectName name) throws JMException; 039 040 /** 041 * Registers object with management infrastructure with a specific name. Object must be annotated or 042 * implement standard MBean interface. 043 * 044 * @param obj the object to register 045 * @param name the name 046 * @param forceRegistration if set to <tt>true</tt>, then object will be registered despite 047 * existing object is already registered with the name. 048 * @throws JMException is thrown if the registration failed 049 */ 050 void register(Object obj, ObjectName name, boolean forceRegistration) throws JMException; 051 052 /** 053 * Unregisters object based upon registered name 054 * 055 * @param name the name 056 * @throws JMException is thrown if the unregistration failed 057 */ 058 void unregister(ObjectName name) throws JMException; 059 060 /** 061 * Is the given object registered 062 * 063 * @param name the name 064 * @return <tt>true</tt> if registered 065 */ 066 boolean isRegistered(ObjectName name); 067 068 /** 069 * Get the MBeanServer which hosts managed objects. 070 * <p/> 071 * <b>Notice:</b> If the JMXEnabled configuration is not set to <tt>true</tt>, 072 * this method will return <tt>null</tt>. 073 * 074 * @return the MBeanServer 075 */ 076 MBeanServer getMBeanServer(); 077 078 /** 079 * Sets a custom mbean server to use 080 * 081 * @param mbeanServer the custom mbean server 082 */ 083 void setMBeanServer(MBeanServer mbeanServer); 084 085 /** 086 * Get domain name for Camel MBeans. 087 * <p/> 088 * <b>Notice:</b> That this can be different that the default domain name of the MBean Server. 089 * 090 * @return domain name 091 */ 092 String getMBeanObjectDomainName(); 093 094 /** 095 * Sets the port used by {@link java.rmi.registry.LocateRegistry}. 096 * 097 * @param port the port 098 */ 099 void setRegistryPort(Integer port); 100 101 /** 102 * Gets the port used by {@link java.rmi.registry.LocateRegistry}. 103 * 104 * @return the port 105 */ 106 Integer getRegistryPort(); 107 108 /** 109 * Sets the port clients must use to connect 110 * 111 * @param port the port 112 */ 113 void setConnectorPort(Integer port); 114 115 /** 116 * Gets the port clients must use to connect 117 * 118 * @return the port 119 */ 120 Integer getConnectorPort(); 121 122 /** 123 * Sets the default domain on the MBean server 124 * 125 * @param domain the domain 126 */ 127 void setMBeanServerDefaultDomain(String domain); 128 129 /** 130 * Gets the default domain on the MBean server 131 * 132 * @return the domain 133 */ 134 String getMBeanServerDefaultDomain(); 135 136 /** 137 * Sets the object domain name 138 * 139 * @param domainName the object domain name 140 */ 141 void setMBeanObjectDomainName(String domainName); 142 143 /** 144 * Sets the service url 145 * 146 * @param url the service url 147 */ 148 void setServiceUrlPath(String url); 149 150 /** 151 * Gets the service url 152 * 153 * @return the url 154 */ 155 String getServiceUrlPath(); 156 157 /** 158 * Whether connector should be created, allowing clients to connect remotely 159 * 160 * @param createConnector <tt>true</tt> to create connector 161 */ 162 void setCreateConnector(Boolean createConnector); 163 164 /** 165 * Whether connector is created, allowing clients to connect remotely 166 * 167 * @return <tt>true</tt> if connector is created 168 */ 169 Boolean getCreateConnector(); 170 171 /** 172 * Whether to use the platform MBean Server. 173 * 174 * @param usePlatformMBeanServer <tt>true</tt> to use platform MBean server 175 */ 176 void setUsePlatformMBeanServer(Boolean usePlatformMBeanServer); 177 178 /** 179 * Whether to use the platform MBean Server. 180 * 181 * @return <tt>true</tt> if platform MBean server is to be used 182 */ 183 Boolean getUsePlatformMBeanServer(); 184 185 /** 186 * Whether to only register processors which has a custom id assigned. 187 * <p/> 188 * This allows you to filter unwanted processors. 189 * 190 * @return <tt>true</tt> if only processors with custom id is registered 191 */ 192 Boolean getOnlyRegisterProcessorWithCustomId(); 193 194 /** 195 * Whether to only register processors which has a custom id assigned. 196 * <p/> 197 * This allows you to filter unwanted processors. 198 * 199 * @param onlyRegisterProcessorWithCustomId <tt>true</tt> to only register if custom id has been assigned 200 */ 201 void setOnlyRegisterProcessorWithCustomId(Boolean onlyRegisterProcessorWithCustomId); 202 203 /** 204 * Whether to always register mbeans. 205 * <p/> 206 * This option is default <tt>false</tt>. 207 * <p/> 208 * <b>Important:</b> If this option is enabled then any service is registered as mbean. When using 209 * dynamic EIP patterns using unique endpoint urls, you may create excessive mbeans in the registry. 210 * This could lead to degraded performance as memory consumption will rise due the rising number 211 * of mbeans. 212 * 213 * @return <tt>true</tt> if always registering 214 */ 215 Boolean getRegisterAlways(); 216 217 /** 218 * Whether to always register mbeans. 219 * <p/> 220 * This option is default <tt>false</tt>. 221 * <p/> 222 * <b>Important:</b> If this option is enabled then any service is registered as mbean. When using 223 * dynamic EIP patterns using unique endpoint urls, you may create excessive mbeans in the registry. 224 * This could lead to degraded performance as memory consumption will rise due the rising number 225 * of mbeans. 226 * 227 * @param registerAlways <tt>true</tt> to always register 228 */ 229 void setRegisterAlways(Boolean registerAlways); 230 231 /** 232 * Whether to register mbeans when starting a new route 233 * <p/> 234 * This option is default <tt>true</tt>. 235 * 236 * @return <tt>true</tt> to register when starting a new route 237 */ 238 Boolean getRegisterNewRoutes(); 239 240 /** 241 * Whether to register mbeans when starting a new route 242 * <p/> 243 * This option is default <tt>true</tt>. 244 * 245 * @param registerNewRoutes <tt>true</tt> to register when starting a new route 246 */ 247 void setRegisterNewRoutes(Boolean registerNewRoutes); 248 249 /** 250 * Whether to remove detected sensitive information (such as passwords) from MBean names and attributes. 251 * <p/> 252 * This option is default <tt>false</tt>. 253 */ 254 Boolean getMask(); 255 256 /** 257 * Whether to remove detected sensitive information (such as passwords) from MBean names and attributes. 258 * <p/> 259 * This option is default <tt>false</tt>. 260 */ 261 void setMask(Boolean sanitize); 262 263 /** 264 * Gets whether host name is included in MBean names. 265 * 266 * @return <tt>true</tt> if included 267 */ 268 Boolean getIncludeHostName(); 269 270 /** 271 * Sets whether to include host name in the {@link ManagementNamingStrategy}. 272 * <p/> 273 * By default this is turned off from Camel 2.13 onwards, but this option 274 * can be set to <tt>true</tt> to include the hostname as Camel 2.12 or 275 * older releases does. 276 * 277 * @param includeHostName <tt>true</tt> to include host name in the MBean names. 278 */ 279 void setIncludeHostName(Boolean includeHostName); 280 281 }