/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* or packager/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* A small mbean that will act as a proxy for mod_jk2.
*
* For efficiency, it'll get bulk results and cache them - you
* can force an update by calling the refreshAttributes and refreshMetadata
* operations on this mbean.
*
* TODO: eventually support https
* TODO: support for metadata ( mbean-descriptors ) for description and type conversions
* TODO: filter out trivial components ( mutexes, etc )
*
* @author Costin Manolache
*/
{
public ModJkMX()
{
}
/* -------------------- Public methods -------------------- */
return webServerHost;
}
this.webServerHost = webServerHost;
}
public int getWebServerPort() {
return webServerPort;
}
this.webServerPort = webServerPort;
}
public long getUpdateInterval() {
return updateInterval;
}
this.updateInterval = updateInterval;
}
return user;
}
}
return pass;
}
}
return statusPath;
}
this.statusPath = statusPath;
}
public void destroy() {
try {
// We should keep track of loaded beans and call stop.
// Modeler should do it...
if(ooname instanceof ObjectName) {
}
}
}
}
} catch( Throwable t ) {
}
}
try {
//if( log.isDebugEnabled() )
} catch( Throwable t ) {
}
}
init();
}
/** Refresh the proxies, if updateInterval passed
*
*/
public void refresh() {
return;
}
}
public void refreshAttributes() {
try {
int cnt=0;
// connect to apache, get a list of mbeans
while(true) {
// for each mbean, create a proxy
}
}
if( idx < 0 ) continue;
" val=" + val);
} else {
cnt++;
}
}
}
}
/** connect to apache, get a list of mbeans
*/
try {
return is;
} catch (IOException e) {
+ " " + e.toString());
return null;
}
}
public void refreshMetadata() {
try {
int cnt=0;
int newCnt=0;
while(true) {
// end of section
cnt++;
// New component
newCnt++;
}
}
}
// end of data
// for each mbean, create a proxy
}
}
}
}
}
}
}
}
/** Use the same metadata, except that we replace the attribute
*/
}
throws Exception
{
id="default";
}
ai.setWriteable(false);
// Register metadata
ai=new AttributeInfo();
ai.setWriteable(false);
}
continue;
// Register metadata
ai=new AttributeInfo();
ai.setReadable(false);
}
// Register metadata
}
}
}
throws AttributeNotFoundException, MBeanException,
return jkName;
}
}
throws AttributeNotFoundException, MBeanException,
{
try {
// we support only string values
throw new MBeanException(ex);
}
}
throws MBeanException, ReflectionException {
try {
// we support only string values
name );
throw new MBeanException(ex);
}
return null;
}
}
}