Repository: karaf Updated Branches: refs/heads/master 1a4f293fb -> bd8093cb5
[KARAF-3147] Remove the KarafMBeanServerBuilder and refactore the guard interception Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/bd8093cb Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/bd8093cb Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/bd8093cb Branch: refs/heads/master Commit: bd8093cb572ff6dd1060e63f7dbfe0af50e76b4b Parents: 1a4f293 Author: Jean-Baptiste Onofré <[email protected]> Authored: Sun May 10 08:07:04 2015 +0200 Committer: Jean-Baptiste Onofré <[email protected]> Committed: Sun May 10 08:07:04 2015 +0200 ---------------------------------------------------------------------- .../filtered-resources/resources/bin/instance | 4 +- .../resources/bin/instance.bat | 3 +- .../main/filtered-resources/resources/bin/karaf | 2 +- .../filtered-resources/resources/bin/karaf.bat | 2 +- .../resources/etc/config.properties | 4 +- .../standard/src/main/feature/feature.xml | 3 - .../core/internal/InstanceServiceImpl.java | 3 - .../apache/karaf/itests/JMXSecurityTest.java | 1 - .../apache/karaf/itests/KarafTestSupport.java | 2 +- management/boot/NOTICE | 71 ------- management/boot/pom.xml | 64 ------ .../boot/KarafMBeanServerBuilder.java | 86 -------- .../src/main/resources/OSGI-INF/bundle.info | 35 --- .../boot/KarafMBeanServerBuilderTest.java | 179 ---------------- management/pom.xml | 1 - management/server/pom.xml | 5 - .../management/ConnectorServerFactory.java | 16 +- .../karaf/management/KarafMBeanServerGuard.java | 9 - .../karaf/management/internal/Activator.java | 3 +- .../internal/JMXSecurityMBeanImpl.java | 13 +- .../internal/MBeanInvocationHandler.java | 66 ++++++ .../internal/JMXSecurityMBeanImplTestCase.java | 212 ++++++++----------- .../src/main/asciidoc/users-guide/wrapper.adoc | 16 +- manual/src/main/webapp/users-guide/wrapper.conf | 16 +- pom.xml | 5 - .../wrapper/internal/unix/karaf-wrapper.conf | 9 +- .../wrapper/internal/windows/karaf-wrapper.conf | 9 +- .../internal/windows64/karaf-wrapper.conf | 9 +- 28 files changed, 212 insertions(+), 636 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/assemblies/features/base/src/main/filtered-resources/resources/bin/instance ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/instance b/assemblies/features/base/src/main/filtered-resources/resources/bin/instance index abb36eb..1084042 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/instance +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/instance @@ -281,8 +281,6 @@ setupDefaults() { CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/ops4j/pax/logging/pax-logging-api/${pax.logging.version}/pax-logging-api-${pax.logging.version}.jar" CLASSPATH="$CLASSPATH:$KARAF_HOME/system/jline/jline/${jline.version}/jline-${jline.version}.jar" - CLASSPATH="$CLASSPATH:$KARAF_HOME/lib/karaf-jmx-boot.jar" - DEFAULT_JAVA_DEBUG_PORT="5005" if [ "x$JAVA_DEBUG_PORT" = "x" ]; then JAVA_DEBUG_PORT="$DEFAULT_JAVA_DEBUG_PORT" @@ -342,7 +340,7 @@ run() { CLASSPATH=`cygpath --path --windows "$CLASSPATH"` fi - exec "$JAVA" $JAVA_OPTS -Dkaraf.instances="${KARAF_HOME}/instances" -Dkaraf.home="$KARAF_HOME" -Dkaraf.base="$KARAF_BASE" -Dkaraf.etc="$KARAF_ETC" -Djava.io.tmpdir="$KARAF_DATA/tmp" -Djava.util.logging.config.file="$KARAF_BASE/etc/java.util.logging.properties" -Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder $KARAF_OPTS $OPTS -classpath "$CLASSPATH" org.apache.karaf.instance.main.Execute "$@" + exec "$JAVA" $JAVA_OPTS -Dkaraf.instances="${KARAF_HOME}/instances" -Dkaraf.home="$KARAF_HOME" -Dkaraf.base="$KARAF_BASE" -Dkaraf.etc="$KARAF_ETC" -Djava.io.tmpdir="$KARAF_DATA/tmp" -Djava.util.logging.config.file="$KARAF_BASE/etc/java.util.logging.properties" $KARAF_OPTS $OPTS -classpath "$CLASSPATH" org.apache.karaf.instance.main.Execute "$@" } main() { http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/assemblies/features/base/src/main/filtered-resources/resources/bin/instance.bat ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/instance.bat b/assemblies/features/base/src/main/filtered-resources/resources/bin/instance.bat index ba25165..dcaa10f 100644 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/instance.bat +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/instance.bat @@ -143,13 +143,12 @@ set CLASSPATH=%KARAF_HOME%\system\org\apache\karaf\instance\org.apache.karaf.ins set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\apache\karaf\shell\org.apache.karaf.shell.core\${project.version}\org.apache.karaf.shell.core-${project.version}.jar set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\ops4j\pax\logging\pax-logging-api\${pax.logging.version}\pax-logging-api-${pax.logging.version}.jar set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\jline\jline\${jline.version}\jline-${jline.version}.jar -set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\lib\karaf-jmx-boot.jar :EXECUTE if "%SHIFT%" == "true" SET ARGS=%2 %3 %4 %5 %6 %7 %8 if not "%SHIFT%" == "true" SET ARGS=%1 %2 %3 %4 %5 %6 %7 %8 rem Execute the Java Virtual Machine - "%JAVA%" %JAVA_OPTS% %OPTS% -classpath "%CLASSPATH%" -Dkaraf.instances="%KARAF_HOME%\instances" -Dkaraf.home="%KARAF_HOME%" -Dkaraf.base="%KARAF_BASE%" -Dkaraf.etc="%KARAF_ETC%" -Djava.io.tmpdir="%KARAF_DATA%\tmp" -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" -Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder %KARAF_OPTS% org.apache.karaf.instance.main.Execute %ARGS% + "%JAVA%" %JAVA_OPTS% %OPTS% -classpath "%CLASSPATH%" -Dkaraf.instances="%KARAF_HOME%\instances" -Dkaraf.home="%KARAF_HOME%" -Dkaraf.base="%KARAF_BASE%" -Dkaraf.etc="%KARAF_ETC%" -Djava.io.tmpdir="%KARAF_DATA%\tmp" -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" %KARAF_OPTS% org.apache.karaf.instance.main.Execute %ARGS% rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf index 30fd878..3318101 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf @@ -415,7 +415,7 @@ run() { fi cd "$KARAF_BASE" - exec "$JAVA" $JAVA_OPTS -Djava.endorsed.dirs="${JAVA_ENDORSED_DIRS}" -Djava.ext.dirs="${JAVA_EXT_DIRS}" -Dkaraf.instances="${KARAF_HOME}/instances" -Dkaraf.home="$KARAF_HOME" -Dkaraf.base="$KARAF_BASE" -Dkaraf.data="$KARAF_DATA" -Dkaraf.etc="$KARAF_ETC" -Djava.io.tmpdir="$KARAF_DATA/tmp" -Djava.util.logging.config.file="$KARAF_BASE/etc/java.util.logging.properties" -Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder $KARAF_OPTS $OPTS -classpath "$CLASSPATH" $MAIN "$@" + exec "$JAVA" $JAVA_OPTS -Djava.endorsed.dirs="${JAVA_ENDORSED_DIRS}" -Djava.ext.dirs="${JAVA_EXT_DIRS}" -Dkaraf.instances="${KARAF_HOME}/instances" -Dkaraf.home="$KARAF_HOME" -Dkaraf.base="$KARAF_BASE" -Dkaraf.data="$KARAF_DATA" -Dkaraf.etc="$KARAF_ETC" -Djava.io.tmpdir="$KARAF_DATA/tmp" -Djava.util.logging.config.file="$KARAF_BASE/etc/java.util.logging.properties" $KARAF_OPTS $OPTS -classpath "$CLASSPATH" $MAIN "$@" } main() { http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat index 1e21cf3..3645594 100644 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat @@ -327,7 +327,7 @@ if "%KARAF_PROFILER%" == "" goto :RUN SET ARGS=%1 %2 %3 %4 %5 %6 %7 %8 rem Execute the Java Virtual Machine cd "%KARAF_BASE%" - "%JAVA%" %JAVA_OPTS% %OPTS% -classpath "%CLASSPATH%" -Djava.endorsed.dirs="%JAVA_HOME%\jre\lib\endorsed;%JAVA_HOME%\lib\endorsed;%KARAF_HOME%\lib\endorsed" -Djava.ext.dirs="%JAVA_HOME%\jre\lib\ext;%JAVA_HOME%\lib\ext;%KARAF_HOME%\lib\ext" -Dkaraf.instances="%KARAF_HOME%\instances" -Dkaraf.home="%KARAF_HOME%" -Dkaraf.base="%KARAF_BASE%" -Dkaraf.etc="%KARAF_ETC%" -Djava.io.tmpdir="%KARAF_DATA%\tmp" -Dkaraf.data="%KARAF_DATA%" -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" -Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder %KARAF_OPTS% %MAIN% %ARGS% + "%JAVA%" %JAVA_OPTS% %OPTS% -classpath "%CLASSPATH%" -Djava.endorsed.dirs="%JAVA_HOME%\jre\lib\endorsed;%JAVA_HOME%\lib\endorsed;%KARAF_HOME%\lib\endorsed" -Djava.ext.dirs="%JAVA_HOME%\jre\lib\ext;%JAVA_HOME%\lib\ext;%KARAF_HOME%\lib\ext" -Dkaraf.instances="%KARAF_HOME%\instances" -Dkaraf.home="%KARAF_HOME%" -Dkaraf.base="%KARAF_BASE%" -Dkaraf.etc="%KARAF_ETC%" -Djava.io.tmpdir="%KARAF_DATA%\tmp" -Dkaraf.data="%KARAF_DATA%" -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" %KARAF_OPTS% %MAIN% %ARGS% rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/assemblies/features/base/src/main/filtered-resources/resources/etc/config.properties ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/etc/config.properties b/assemblies/features/base/src/main/filtered-resources/resources/etc/config.properties index ff712b0..aebf6b7 100644 --- a/assemblies/features/base/src/main/filtered-resources/resources/etc/config.properties +++ b/assemblies/features/base/src/main/filtered-resources/resources/etc/config.properties @@ -119,13 +119,13 @@ org.osgi.framework.bootdelegation=sun.*,com.sun.*,javax.transaction,javax.transa # in order to use Karaf with jvisualvm, the org.osgi.framework.bootdelegation property has to contain the org.netbeans.lib.profiler.server package # and, so, it should look like: # -# org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,org.apache.karaf.jaas.boot.principal,org.apache.karaf.management.boot,sun.*,com.sun.*,javax.transaction,javax.transaction.*,javax.xml.crypto,javax.xml.crypto.*,org.apache.xerces.jaxp.datatype,org.apache.xerces.stax,org.apache.xerces.parsers,org.apache.xerces.jaxp,org.apache.xerces.jaxp.validation,org.apache.xerces.dom,org.netbeans.lib.profiler.server +# org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,org.apache.karaf.jaas.boot.principal,sun.*,com.sun.*,javax.transaction,javax.transaction.*,javax.xml.crypto,javax.xml.crypto.*,org.apache.xerces.jaxp.datatype,org.apache.xerces.stax,org.apache.xerces.parsers,org.apache.xerces.jaxp,org.apache.xerces.jaxp.validation,org.apache.xerces.dom,org.netbeans.lib.profiler.server # # YourKit support # in order to use Karaf with YourKit, the org.osgi.framework.bootdelegation property has to contain the com.yourkit.* packages # and, so, it should look like: # -# org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,org.apache.karaf.jaas.boot.principal,org.apache.karaf.management.boot,sun.*,com.sun.*,javax.transaction,javax.transaction.*,javax.xml.crypto,javax.xml.crypto.*,org.apache.xerces.jaxp.datatype,org.apache.xerces.stax,org.apache.xerces.parsers,org.apache.xerces.jaxp,org.apache.xerces.jaxp.validation,org.apache.xerces.dom,com.yourkit.* +# org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,org.apache.karaf.jaas.boot.principal,sun.*,com.sun.*,javax.transaction,javax.transaction.*,javax.xml.crypto,javax.xml.crypto.*,org.apache.xerces.jaxp.datatype,org.apache.xerces.stax,org.apache.xerces.parsers,org.apache.xerces.jaxp,org.apache.xerces.jaxp.validation,org.apache.xerces.dom,com.yourkit.* # # http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/assemblies/features/standard/src/main/feature/feature.xml ---------------------------------------------------------------------- diff --git a/assemblies/features/standard/src/main/feature/feature.xml b/assemblies/features/standard/src/main/feature/feature.xml index c9b6e6d..7c66305 100644 --- a/assemblies/features/standard/src/main/feature/feature.xml +++ b/assemblies/features/standard/src/main/feature/feature.xml @@ -488,9 +488,6 @@ <bundle start-level="30">mvn:org.apache.aries.jmx/org.apache.aries.jmx.blueprint.api/${aries.jmx.blueprint.api.version}</bundle> <bundle start-level="30">mvn:org.apache.aries.jmx/org.apache.aries.jmx.blueprint.core/${aries.jmx.blueprint.core.version}</bundle> </conditional> - <library export="true" delegate="true" type="boot"> - mvn:org.apache.karaf.management/org.apache.karaf.management.boot/${project.version} - </library> </feature> <feature name="scheduler" description="Provide a scheduler service in Karaf to fire events" version="${project.version}"> http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java ---------------------------------------------------------------------- diff --git a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java index 6831c55..e23f4e8 100644 --- a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java +++ b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java @@ -486,14 +486,12 @@ public class InstanceServiceImpl implements InstanceService { + "\" " + opts + " " + karafOpts + " -Djava.util.logging.config.file=\"" + new File(location, "etc/java.util.logging.properties").getCanonicalPath() + "\"" - + " -Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder" + " -Djava.endorsed.dirs=\"" + new File(new File(new File(System.getProperty("java.home"), "jre"), "lib"), "endorsed") + System.getProperty("path.separator") + new File(new File(System.getProperty("java.home"), "lib"), "endorsed") + System.getProperty("path.separator") + new File(libDir, "endorsed").getCanonicalPath() + "\"" + " -Djava.ext.dirs=\"" + new File(new File(new File(System.getProperty("java.home"), "jre"), "lib"), "ext") + System.getProperty("path.separator") + new File(new File(System.getProperty("java.home"), "lib"), "ext") + System.getProperty("path.separator") + new File(libDir, "ext").getCanonicalPath() + "\"" + " -Dkaraf.home=\"" + System.getProperty("karaf.home") + "\"" + " -Dkaraf.base=\"" + new File(location).getCanonicalPath() + "\"" + " -Dkaraf.data=\"" + new File(new File(location).getCanonicalPath(), "data") + "\"" + " -Dkaraf.etc=\"" + new File(new File(location).getCanonicalPath(), "etc") + "\"" - + " -Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder" + " -Dkaraf.startLocalConsole=false" + " -Dkaraf.startRemoteShell=true" + " -classpath \"" + classpath.toString() + "\"" @@ -576,7 +574,6 @@ public class InstanceServiceImpl implements InstanceService { + " -Dkaraf.data=\"" + new File(new File(location).getCanonicalPath(), "data") + "\"" + " -Dkaraf.etc=\"" + new File(new File(location).getCanonicalPath(), "etc") + "\"" + " -Dkaraf.instances=\"" + System.getProperty("karaf.instances") + "\"" - + " -Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder" + " -classpath \"" + classpath.toString() + "\"" + " " + Execute.class.getName() + " restart --java-opts \"" + javaOpts + "\" " + name; http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/itests/src/test/java/org/apache/karaf/itests/JMXSecurityTest.java ---------------------------------------------------------------------- diff --git a/itests/src/test/java/org/apache/karaf/itests/JMXSecurityTest.java b/itests/src/test/java/org/apache/karaf/itests/JMXSecurityTest.java index 009c650..9825592 100644 --- a/itests/src/test/java/org/apache/karaf/itests/JMXSecurityTest.java +++ b/itests/src/test/java/org/apache/karaf/itests/JMXSecurityTest.java @@ -69,7 +69,6 @@ public class JMXSecurityTest extends KarafTestSupport { // Add some extra options used by this test... options.addAll(Arrays.asList( - new VMOption("-Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder"), editConfigurationFilePut("etc/jmx.acl.org.apache.karaf.service.cfg", "getServices()", "admin"), editConfigurationFilePut("etc/jmx.acl.org.apache.karaf.service.cfg", "getServices(boolean)", "viewer"), editConfigurationFilePut("etc/jmx.acl.org.apache.karaf.service.cfg", "getServices(long)", "manager"), http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java ---------------------------------------------------------------------- diff --git a/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java b/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java index ffea63d..4db1af7 100644 --- a/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java +++ b/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java @@ -129,7 +129,7 @@ public class KarafTestSupport { // KarafDistributionOption.debugConfiguration("8889", true), karafDistributionConfiguration().frameworkUrl(karafUrl).name("Apache Karaf").unpackDirectory(new File("target/exam")), // enable JMX RBAC security, thanks to the KarafMBeanServerBuilder - configureSecurity().enableKarafMBeanServerBuilder(), + configureSecurity().disableKarafMBeanServerBuilder(), keepRuntimeFolder(), logLevel(LogLevel.INFO), replaceConfigurationFile("etc/org.ops4j.pax.logging.cfg", getConfigFile("/etc/org.ops4j.pax.logging.cfg")), http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/management/boot/NOTICE ---------------------------------------------------------------------- diff --git a/management/boot/NOTICE b/management/boot/NOTICE deleted file mode 100644 index b70f1f9..0000000 --- a/management/boot/NOTICE +++ /dev/null @@ -1,71 +0,0 @@ -Apache Karaf -Copyright 2010-2014 The Apache Software Foundation - - -I. Included Software - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). -Licensed under the Apache License 2.0. - -This product uses software developed at -The OSGi Alliance (http://www.osgi.org/). -Copyright (c) OSGi Alliance (2000, 2010). -Licensed under the Apache License 2.0. - -This product includes software developed at -OW2 (http://www.ow2.org/). -Licensed under the BSD License. - -This product includes software developed at -OPS4J (http://www.ops4j.org/). -Licensed under the Apache License 2.0. - -This product includes software developed at -Eclipse Foundation (http://www.eclipse.org/). -Licensed under the EPL. - -This product includes software written by -Antony Lesuisse. -Licensed under Public Domain. - - -II. Used Software - -This product uses software developed at -FUSE Source (http://www.fusesource.org/). -Licensed under the Apache License 2.0. - -This product uses software developed at -AOP Alliance (http://aopalliance.sourceforge.net/). -Licensed under the Public Domain. - -This product uses software developed at -Tanuki Software (http://www.tanukisoftware.com/). -Licensed under the Apache License 2.0. - -This product uses software developed at -Jasypt (http://jasypt.sourceforge.net/). -Licensed under the Apache License 2.0. - -This product uses software developed at -JLine (http://jline.sourceforge.net). -Licensed under the BSD License. - -This product uses software developed at -SLF4J (http://www.slf4j.org/). -Licensed under the MIT License. - -This product uses software developed at -SpringSource (http://www.springsource.org/). -Licensed under the Apache License 2.0. - -This product includes software from http://www.json.org. -Copyright (c) 2002 JSON.org - - -III. License Summary -- Apache License 2.0 -- BSD License -- EPL License -- MIT License http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/management/boot/pom.xml ---------------------------------------------------------------------- diff --git a/management/boot/pom.xml b/management/boot/pom.xml deleted file mode 100644 index 5e3ef43..0000000 --- a/management/boot/pom.xml +++ /dev/null @@ -1,64 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - - <!-- - - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You 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 - - http://www.apache.org/licenses/LICENSE-2.0 - - 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. - --> - - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.apache.karaf.management</groupId> - <artifactId>management</artifactId> - <version>4.0.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>org.apache.karaf.management.boot</artifactId> - <packaging>bundle</packaging> - <name>Apache Karaf :: Management :: Boot</name> - <description>Provides the JMX classes loaded at boot of the process.</description> - - <properties> - <appendedResourcesDirectory>${basedir}/../../etc/appended-resources</appendedResourcesDirectory> - </properties> - - <build> - <resources> - <resource> - <directory>${project.basedir}/src/main/resources</directory> - <includes> - <include>**/*</include> - </includes> - </resource> - <resource> - <directory>${project.basedir}/src/main/resources</directory> - <filtering>true</filtering> - <includes> - <include>**/*.info</include> - </includes> - </resource> - </resources> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - </plugin> - </plugins> - </build> - -</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/management/boot/src/main/java/org/apache/karaf/management/boot/KarafMBeanServerBuilder.java ---------------------------------------------------------------------- diff --git a/management/boot/src/main/java/org/apache/karaf/management/boot/KarafMBeanServerBuilder.java b/management/boot/src/main/java/org/apache/karaf/management/boot/KarafMBeanServerBuilder.java deleted file mode 100644 index 9c5e014..0000000 --- a/management/boot/src/main/java/org/apache/karaf/management/boot/KarafMBeanServerBuilder.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - */ -package org.apache.karaf.management.boot; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import javax.management.MBeanServer; -import javax.management.MBeanServerBuilder; -import javax.management.MBeanServerDelegate; - -public class KarafMBeanServerBuilder extends MBeanServerBuilder { - - private static volatile InvocationHandler guard; - - public static InvocationHandler getGuard() { - return guard; - } - - public static void setGuard(InvocationHandler guardHandler) { - guard = guardHandler; - } - - @Override - public MBeanServer newMBeanServer(String defaultDomain, MBeanServer outer, MBeanServerDelegate delegate) { - InvocationHandler handler = new MBeanInvocationHandler(super.newMBeanServer(defaultDomain, outer, delegate)); - return (MBeanServer) Proxy.newProxyInstance(getClass().getClassLoader(), new Class[]{ MBeanServer.class }, handler); - } - - private static final class MBeanInvocationHandler implements InvocationHandler { - - private final MBeanServer wrapped; - private final List<String> guarded = Collections.unmodifiableList(Arrays.asList("invoke", "getAttribute", "getAttributes", "setAttribute", "setAttributes")); - - MBeanInvocationHandler(MBeanServer mbeanServer) { - wrapped = mbeanServer; - } - - public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - if (guarded.contains(method.getName())) { - if (KarafMBeanServerBuilder.guard == null) { - throw new IllegalStateException("KarafMBeanServerBuilder not initialized"); - } - guard.invoke(proxy, method, args); - } - if (method.getName().equals("equals") - && method.getParameterTypes().length == 1 - && method.getParameterTypes()[0] == Object.class) { - Object target = args[0]; - if (target != null && Proxy.isProxyClass(target.getClass())) { - InvocationHandler handler = Proxy.getInvocationHandler(target); - if (handler instanceof MBeanInvocationHandler) { - args[0] = ((MBeanInvocationHandler) handler).wrapped; - } - } - } else if (method.getName().equals("finalize") && method.getParameterTypes().length == 0) { - // special case finalize, don't route through to delegate because that will get its own call - return null; - } - try { - return method.invoke(wrapped, args); - } catch (InvocationTargetException ite) { - throw ite.getCause(); - } - } - } -} http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/management/boot/src/main/resources/OSGI-INF/bundle.info ---------------------------------------------------------------------- diff --git a/management/boot/src/main/resources/OSGI-INF/bundle.info b/management/boot/src/main/resources/OSGI-INF/bundle.info deleted file mode 100644 index cd40f08..0000000 --- a/management/boot/src/main/resources/OSGI-INF/bundle.info +++ /dev/null @@ -1,35 +0,0 @@ -# -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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 -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# 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. -# -# -h1. SYNOPSIS - ${project.name} - - ${project.description} - - Maven URL: - \u001B[33mmvn:${project.groupId}/${project.artifactId}/${project.version}\u001B[0m - -h1. DESCRIPTION - This bundle provides JMX classes loaded during Karaf boot process. - - In particular it provides the KarafMBeanServerBuilder. - - The KarafMBeanServerBuilder builds a special MBeanServer that allows role-based authorization - for JMX access. - This class must be loadable from at startup by the JVM so this module is added to classpath, the - the boot delegation class path and made available via the system bundle. http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/management/boot/src/test/java/org/apache/karaf/management/boot/KarafMBeanServerBuilderTest.java ---------------------------------------------------------------------- diff --git a/management/boot/src/test/java/org/apache/karaf/management/boot/KarafMBeanServerBuilderTest.java b/management/boot/src/test/java/org/apache/karaf/management/boot/KarafMBeanServerBuilderTest.java deleted file mode 100644 index b6274e6..0000000 --- a/management/boot/src/test/java/org/apache/karaf/management/boot/KarafMBeanServerBuilderTest.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - */ -package org.apache.karaf.management.boot; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; - -import javax.management.AttributeList; -import javax.management.InstanceNotFoundException; -import javax.management.MBeanServer; -import javax.management.NotCompliantMBeanException; -import javax.management.ObjectName; - -import junit.framework.TestCase; - -import org.easymock.EasyMock; - - -public class KarafMBeanServerBuilderTest extends TestCase { - - public void testMBeanServerBuilderBlocking() throws Exception { - MBeanServer mbs = EasyMock.createMock(MBeanServer.class); - EasyMock.replay(mbs); - - KarafMBeanServerBuilder mbsb = new KarafMBeanServerBuilder(); - MBeanServer kmbs = mbsb.newMBeanServer("test", mbs, null); - - final List<Object> handlerArgs = new ArrayList<Object>(); - InvocationHandler guard = new InvocationHandler() { - @Override - public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - handlerArgs.add(proxy); - handlerArgs.add(method); - handlerArgs.add(args); - - throw new SecurityException("Access Denied"); - } - }; - - KarafMBeanServerBuilder.setGuard(guard); - - assertEquals("Precondition", 0, handlerArgs.size()); - - ObjectName on = ObjectName.getInstance("foo.bar:type=TestObject"); - - try { - // obtain a JMX attribute - kmbs.getAttribute(on, "myAttr"); - fail("Should have access denied"); - } catch (SecurityException se) { - // good - assertEquals(3, handlerArgs.size()); - assertSame(kmbs, handlerArgs.get(0)); - assertEquals("getAttribute", ((Method) handlerArgs.get(1)).getName()); - Object[] args = (Object[]) handlerArgs.get(2); - assertEquals(2, args.length); - assertSame(on, args[0]); - assertEquals("myAttr", args[1]); - } - - try { - // obtain a number of JMX attributes - kmbs.getAttributes(on, new String[]{"foo", "bar"}); - fail("Should have access denied"); - } catch (SecurityException se) { - // good - } - - try { - // set a JMX attribute - kmbs.getAttributes(on, new String[]{ "goo", "far" }); - fail("Should have access denied"); - } catch (SecurityException se) { - // good - } - - try { - // set a number of JMX attributes - kmbs.setAttributes(on, new AttributeList()); - fail("Should have access denied"); - } catch (SecurityException se) { - // good - } - - try { - // mimic a JMX method invocation - kmbs.setAttributes(on, new AttributeList()); - fail("Should have access denied"); - } catch (SecurityException se) { - // good - } - - // try some MBeanServer operations that are not guarded - assertTrue(kmbs.getDomains().length > 0); - assertTrue(kmbs.getMBeanCount() > 0); - assertTrue(kmbs.getDefaultDomain().length() > 0); - } - - public void testMBeanServerBuilderNonBlocking() throws Exception { - MBeanServer mbs = EasyMock.createMock(MBeanServer.class); - EasyMock.replay(mbs); - - KarafMBeanServerBuilder mbsb = new KarafMBeanServerBuilder(); - MBeanServer kmbs = mbsb.newMBeanServer("test", mbs, null); - - final List<Object> handlerArgs = new ArrayList<Object>(); - InvocationHandler guard = new InvocationHandler() { - @Override - public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - handlerArgs.add(proxy); - handlerArgs.add(method); - handlerArgs.add(args); - return null; - } - }; - - KarafMBeanServerBuilder.setGuard(guard); - - assertEquals("Precondition", 0, handlerArgs.size()); - - ObjectName on = ObjectName.getInstance("foo.bar:type=TestObject"); - - try { - kmbs.getAttribute(on, "myAttr"); - } catch (Exception e) { - Throwable th = getInnermostException(e); - assertTrue("Expected exception as the object in question is not registered with the MBeanServer", th instanceof InstanceNotFoundException); - // good - assertEquals(3, handlerArgs.size()); - assertSame(kmbs, handlerArgs.get(0)); - assertEquals("getAttribute", ((Method) handlerArgs.get(1)).getName()); - Object[] args = (Object[]) handlerArgs.get(2); - assertEquals(2, args.length); - assertSame(on, args[0]); - assertEquals("myAttr", args[1]); - } - } - - public void testMBeanServerThrowsException() throws Exception { - MBeanServer mbs = EasyMock.createMock(MBeanServer.class); - EasyMock.replay(mbs); - - KarafMBeanServerBuilder mbsb = new KarafMBeanServerBuilder(); - MBeanServer kmbs = mbsb.newMBeanServer("test", mbs, null); - - try { - kmbs.registerMBean("Foo", ObjectName.getInstance("foo.bar:type=TestObject")); - } catch (NotCompliantMBeanException ncme) { - // good - return; - } - fail("Should have thrown a NotCompliantMBeanException"); - } - - private Throwable getInnermostException(Throwable th) { - if (th.getCause() != null) { - return getInnermostException(th.getCause()); - } else { - return th; - } - } - -} http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/management/pom.xml ---------------------------------------------------------------------- diff --git a/management/pom.xml b/management/pom.xml index 941eaab..3f1d34e 100644 --- a/management/pom.xml +++ b/management/pom.xml @@ -34,7 +34,6 @@ <name>Apache Karaf :: Management</name> <modules> - <module>boot</module> <module>server</module> </modules> http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/management/server/pom.xml ---------------------------------------------------------------------- diff --git a/management/server/pom.xml b/management/server/pom.xml index 02778d3..09b926d 100644 --- a/management/server/pom.xml +++ b/management/server/pom.xml @@ -60,11 +60,6 @@ <scope>provided</scope> </dependency> <dependency> - <groupId>org.apache.karaf.management</groupId> - <artifactId>org.apache.karaf.management.boot</artifactId> - <scope>provided</scope> - </dependency> - <dependency> <groupId>org.apache.karaf.service</groupId> <artifactId>org.apache.karaf.service.guard</artifactId> <scope>provided</scope> http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/management/server/src/main/java/org/apache/karaf/management/ConnectorServerFactory.java ---------------------------------------------------------------------- diff --git a/management/server/src/main/java/org/apache/karaf/management/ConnectorServerFactory.java b/management/server/src/main/java/org/apache/karaf/management/ConnectorServerFactory.java index 2897d67..0e746b5 100644 --- a/management/server/src/main/java/org/apache/karaf/management/ConnectorServerFactory.java +++ b/management/server/src/main/java/org/apache/karaf/management/ConnectorServerFactory.java @@ -17,8 +17,10 @@ package org.apache.karaf.management; import org.apache.karaf.jaas.config.KeystoreManager; +import org.apache.karaf.management.internal.MBeanInvocationHandler; import java.io.IOException; +import java.lang.reflect.Proxy; import java.net.BindException; import java.net.InetAddress; import java.net.ServerSocket; @@ -45,6 +47,7 @@ public class ConnectorServerFactory { private enum AuthenticatorType {NONE, PASSWORD, CERTIFICATE}; private MBeanServer server; + private KarafMBeanServerGuard guard; private String serviceUrl; private String rmiServerHost; private Map environment; @@ -71,6 +74,14 @@ public class ConnectorServerFactory { this.server = server; } + public KarafMBeanServerGuard getGuard() { + return guard; + } + + public void setGuard(KarafMBeanServerGuard guard) { + this.guard = guard; + } + public String getServiceUrl() { return serviceUrl; } @@ -231,7 +242,10 @@ public class ConnectorServerFactory { this.environment.remove( "jmx.remote.authenticator" ); } - this.connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, this.environment, this.server); + MBeanInvocationHandler handler = new MBeanInvocationHandler(server, guard); + MBeanServer guardedServer = (MBeanServer) Proxy.newProxyInstance(server.getClass().getClassLoader(), new Class[]{ MBeanServer.class }, handler); + this.connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, this.environment, guardedServer); + if (this.objectName != null) { this.server.registerMBean(this.connectorServer, this.objectName); } http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/management/server/src/main/java/org/apache/karaf/management/KarafMBeanServerGuard.java ---------------------------------------------------------------------- diff --git a/management/server/src/main/java/org/apache/karaf/management/KarafMBeanServerGuard.java b/management/server/src/main/java/org/apache/karaf/management/KarafMBeanServerGuard.java index 9776346..b2ce7f1 100644 --- a/management/server/src/main/java/org/apache/karaf/management/KarafMBeanServerGuard.java +++ b/management/server/src/main/java/org/apache/karaf/management/KarafMBeanServerGuard.java @@ -16,7 +16,6 @@ */ package org.apache.karaf.management; -import org.apache.karaf.management.boot.KarafMBeanServerBuilder; import org.apache.karaf.service.guard.tools.ACLConfigurationParser; import org.apache.karaf.util.jaas.JaasHelper; import org.osgi.framework.InvalidSyntaxException; @@ -24,13 +23,9 @@ import org.osgi.service.cm.Configuration; import org.osgi.service.cm.ConfigurationAdmin; import javax.management.*; -import javax.security.auth.Subject; import java.io.IOException; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; -import java.security.AccessControlContext; -import java.security.AccessController; -import java.security.Principal; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; @@ -60,10 +55,6 @@ public class KarafMBeanServerGuard implements InvocationHandler { this.configAdmin = configAdmin; } - public void init() { - KarafMBeanServerBuilder.setGuard(this); - } - public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (method.getParameterTypes().length == 0) return null; http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/management/server/src/main/java/org/apache/karaf/management/internal/Activator.java ---------------------------------------------------------------------- diff --git a/management/server/src/main/java/org/apache/karaf/management/internal/Activator.java b/management/server/src/main/java/org/apache/karaf/management/internal/Activator.java index bf9ea9e..ae6db00 100644 --- a/management/server/src/main/java/org/apache/karaf/management/internal/Activator.java +++ b/management/server/src/main/java/org/apache/karaf/management/internal/Activator.java @@ -91,7 +91,6 @@ public class Activator extends BaseActivator implements ManagedService { KarafMBeanServerGuard guard = new KarafMBeanServerGuard(); guard.setConfigAdmin(configurationAdmin); - guard.init(); rmiRegistryFactory = new RmiRegistryFactory(); rmiRegistryFactory.setCreate(true); @@ -113,6 +112,7 @@ public class Activator extends BaseActivator implements ManagedService { connectorServerFactory = new ConnectorServerFactory(); connectorServerFactory.setServer(mbeanServer); connectorServerFactory.setServiceUrl(serviceUrl); + connectorServerFactory.setGuard(guard); connectorServerFactory.setRmiServerHost(rmiServerHost); connectorServerFactory.setDaemon(daemon); connectorServerFactory.setThreaded(threaded); @@ -137,6 +137,7 @@ public class Activator extends BaseActivator implements ManagedService { JMXSecurityMBeanImpl securityMBean = new JMXSecurityMBeanImpl(); securityMBean.setMBeanServer(mbeanServer); + securityMBean.setGuard(guard); registerMBean(securityMBean, "type=security,area=jmx"); register(MBeanServer.class, mbeanServer); http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/management/server/src/main/java/org/apache/karaf/management/internal/JMXSecurityMBeanImpl.java ---------------------------------------------------------------------- diff --git a/management/server/src/main/java/org/apache/karaf/management/internal/JMXSecurityMBeanImpl.java b/management/server/src/main/java/org/apache/karaf/management/internal/JMXSecurityMBeanImpl.java index a62a055..031fbdf 100644 --- a/management/server/src/main/java/org/apache/karaf/management/internal/JMXSecurityMBeanImpl.java +++ b/management/server/src/main/java/org/apache/karaf/management/internal/JMXSecurityMBeanImpl.java @@ -18,7 +18,6 @@ package org.apache.karaf.management.internal; import org.apache.karaf.management.JMXSecurityMBean; import org.apache.karaf.management.KarafMBeanServerGuard; -import org.apache.karaf.management.boot.KarafMBeanServerBuilder; import javax.management.MBeanServer; import javax.management.NotCompliantMBeanException; @@ -35,13 +34,13 @@ import java.util.Map; public class JMXSecurityMBeanImpl extends StandardMBean implements JMXSecurityMBean { private MBeanServer mbeanServer; + private KarafMBeanServerGuard guard; public JMXSecurityMBeanImpl() throws NotCompliantMBeanException { super(JMXSecurityMBean.class); } public boolean canInvoke(String objectName) throws Exception { - KarafMBeanServerGuard guard = (KarafMBeanServerGuard) KarafMBeanServerBuilder.getGuard(); if (guard == null) return true; @@ -49,7 +48,6 @@ public class JMXSecurityMBeanImpl extends StandardMBean implements JMXSecurityMB } public boolean canInvoke(String objectName, String methodName) throws Exception { - KarafMBeanServerGuard guard = (KarafMBeanServerGuard) KarafMBeanServerBuilder.getGuard(); if (guard == null) return true; @@ -59,7 +57,6 @@ public class JMXSecurityMBeanImpl extends StandardMBean implements JMXSecurityMB public boolean canInvoke(String objectName, String methodName, String[] argumentTypes) throws Exception { ObjectName on = new ObjectName(objectName); - KarafMBeanServerGuard guard = (KarafMBeanServerGuard) KarafMBeanServerBuilder.getGuard(); if (guard == null) return true; @@ -118,4 +115,12 @@ public class JMXSecurityMBeanImpl extends StandardMBean implements JMXSecurityMB this.mbeanServer = mbeanServer; } + public KarafMBeanServerGuard getGuard() { + return guard; + } + + public void setGuard(KarafMBeanServerGuard guard) { + this.guard = guard; + } + } http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/management/server/src/main/java/org/apache/karaf/management/internal/MBeanInvocationHandler.java ---------------------------------------------------------------------- diff --git a/management/server/src/main/java/org/apache/karaf/management/internal/MBeanInvocationHandler.java b/management/server/src/main/java/org/apache/karaf/management/internal/MBeanInvocationHandler.java new file mode 100644 index 0000000..29680d5 --- /dev/null +++ b/management/server/src/main/java/org/apache/karaf/management/internal/MBeanInvocationHandler.java @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + */ +package org.apache.karaf.management.internal; + +import javax.management.MBeanServer; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class MBeanInvocationHandler implements InvocationHandler { + + private final MBeanServer wrapped; + + private final InvocationHandler guard; + + private final List<String> guarded = Collections.unmodifiableList(Arrays.asList("invoke", "getAttribute", "getAttributes", "setAttribute", "setAttributes")); + + public MBeanInvocationHandler(MBeanServer mBeanServer, InvocationHandler guard) { + wrapped = mBeanServer; + this.guard = guard; + } + + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + if (guarded.contains(method.getName())) { + guard.invoke(proxy, method, args); + } + + if (method.getName().equals("equals") && method.getParameterTypes().length == 1 && method.getParameterTypes()[0] == Object.class) { + Object target = args[0]; + if (target != null && Proxy.isProxyClass(target.getClass())) { + InvocationHandler handler = Proxy.getInvocationHandler(target); + if (handler instanceof MBeanInvocationHandler) { + args[0] = ((MBeanInvocationHandler) handler).wrapped; + } + } + } else if (method.getName().equals("finalize") && method.getParameterTypes().length == 0) { + // special case finalize, don't route through to delegate because that will get its own call + return null; + } + + try { + return method.invoke(wrapped, args); + } catch (InvocationTargetException e) { + throw e.getCause(); + } + } + +} http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/management/server/src/test/java/org/apache/karaf/management/internal/JMXSecurityMBeanImplTestCase.java ---------------------------------------------------------------------- diff --git a/management/server/src/test/java/org/apache/karaf/management/internal/JMXSecurityMBeanImplTestCase.java b/management/server/src/test/java/org/apache/karaf/management/internal/JMXSecurityMBeanImplTestCase.java index f86e31c..cea0092 100644 --- a/management/server/src/test/java/org/apache/karaf/management/internal/JMXSecurityMBeanImplTestCase.java +++ b/management/server/src/test/java/org/apache/karaf/management/internal/JMXSecurityMBeanImplTestCase.java @@ -18,7 +18,6 @@ package org.apache.karaf.management.internal; import junit.framework.TestCase; import org.apache.karaf.management.KarafMBeanServerGuard; -import org.apache.karaf.management.boot.KarafMBeanServerBuilder; import org.easymock.EasyMock; import javax.management.MBeanServer; @@ -26,7 +25,6 @@ import javax.management.ObjectName; import javax.management.openmbean.CompositeData; import javax.management.openmbean.TabularData; import java.io.IOException; -import java.lang.reflect.InvocationHandler; import java.util.*; public class JMXSecurityMBeanImplTestCase extends TestCase { @@ -41,47 +39,36 @@ public class JMXSecurityMBeanImplTestCase extends TestCase { } public void testCanInvokeMBean() throws Exception { - InvocationHandler prevGuard = KarafMBeanServerBuilder.getGuard(); - try { - MBeanServer mbs = EasyMock.createMock(MBeanServer.class); - EasyMock.replay(mbs); + MBeanServer mbs = EasyMock.createMock(MBeanServer.class); + EasyMock.replay(mbs); - String objectName = "foo.bar.testing:type=SomeMBean"; - KarafMBeanServerGuard testGuard = EasyMock.createMock(KarafMBeanServerGuard.class); - EasyMock.expect(testGuard.canInvoke(mbs, new ObjectName(objectName))).andReturn(true); - EasyMock.replay(testGuard); - KarafMBeanServerBuilder.setGuard(testGuard); + String objectName = "foo.bar.testing:type=SomeMBean"; + KarafMBeanServerGuard testGuard = EasyMock.createMock(KarafMBeanServerGuard.class); + EasyMock.expect(testGuard.canInvoke(mbs, new ObjectName(objectName))).andReturn(true); + EasyMock.replay(testGuard); - JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); - mb.setMBeanServer(mbs); - assertTrue(mb.canInvoke(objectName)); - } finally { - KarafMBeanServerBuilder.setGuard(prevGuard); - } + JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); + mb.setMBeanServer(mbs); + mb.setGuard(testGuard); + assertTrue(mb.canInvoke(objectName)); } public void testCanInvokeMBean2() throws Exception { - InvocationHandler prevGuard = KarafMBeanServerBuilder.getGuard(); - try { - MBeanServer mbs = EasyMock.createMock(MBeanServer.class); - EasyMock.replay(mbs); + MBeanServer mbs = EasyMock.createMock(MBeanServer.class); + EasyMock.replay(mbs); - String objectName = "foo.bar.testing:type=SomeMBean"; - KarafMBeanServerGuard testGuard = EasyMock.createMock(KarafMBeanServerGuard.class); - EasyMock.expect(testGuard.canInvoke(mbs, new ObjectName(objectName))).andReturn(false); - EasyMock.replay(testGuard); - KarafMBeanServerBuilder.setGuard(testGuard); + String objectName = "foo.bar.testing:type=SomeMBean"; + KarafMBeanServerGuard testGuard = EasyMock.createMock(KarafMBeanServerGuard.class); + EasyMock.expect(testGuard.canInvoke(mbs, new ObjectName(objectName))).andReturn(false); + EasyMock.replay(testGuard); - JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); - mb.setMBeanServer(mbs); - assertFalse(mb.canInvoke(objectName)); - } finally { - KarafMBeanServerBuilder.setGuard(prevGuard); - } + JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); + mb.setMBeanServer(mbs); + mb.setGuard(testGuard); + assertFalse(mb.canInvoke(objectName)); } public void testCanInvokeMBeanThrowsException() throws Exception { - InvocationHandler prevGuard = KarafMBeanServerBuilder.getGuard(); try { MBeanServer mbs = EasyMock.createMock(MBeanServer.class); EasyMock.replay(mbs); @@ -90,58 +77,45 @@ public class JMXSecurityMBeanImplTestCase extends TestCase { KarafMBeanServerGuard testGuard = EasyMock.createMock(KarafMBeanServerGuard.class); EasyMock.expect(testGuard.canInvoke(mbs, new ObjectName(objectName))).andThrow(new IOException()); EasyMock.replay(testGuard); - KarafMBeanServerBuilder.setGuard(testGuard); JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); mb.setMBeanServer(mbs); + mb.setGuard(testGuard); mb.canInvoke(objectName); fail("Should have thrown an exception"); } catch (IOException ioe) { // good! - } finally { - KarafMBeanServerBuilder.setGuard(prevGuard); } } public void testCanInvokeMBeanNoGuard() throws Exception { - InvocationHandler prevGuard = KarafMBeanServerBuilder.getGuard(); - try { - JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); - assertTrue(mb.canInvoke("foo.bar.testing:type=SomeMBean")); - } finally { - KarafMBeanServerBuilder.setGuard(prevGuard); - } + JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); + assertTrue(mb.canInvoke("foo.bar.testing:type=SomeMBean")); } public void testCanInvokeMethod() throws Exception { - InvocationHandler prevGuard = KarafMBeanServerBuilder.getGuard(); - try { - MBeanServer mbs = EasyMock.createMock(MBeanServer.class); - EasyMock.replay(mbs); + MBeanServer mbs = EasyMock.createMock(MBeanServer.class); + EasyMock.replay(mbs); - String objectName = "foo.bar.testing:type=SomeMBean"; - KarafMBeanServerGuard testGuard = EasyMock.createMock(KarafMBeanServerGuard.class); - String[] la = new String[]{"long"}; - String[] sa = new String[]{"java.lang.String"}; - String[] sa2 = new String[]{"java.lang.String", "java.lang.String"}; - EasyMock.expect(testGuard.canInvoke(mbs, new ObjectName(objectName), "testMethod", la)).andReturn(true); - EasyMock.expect(testGuard.canInvoke(mbs, new ObjectName(objectName), "testMethod", sa)).andReturn(true); - EasyMock.expect(testGuard.canInvoke(mbs, new ObjectName(objectName), "otherMethod", sa2)).andReturn(false); - EasyMock.replay(testGuard); - KarafMBeanServerBuilder.setGuard(testGuard); + String objectName = "foo.bar.testing:type=SomeMBean"; + KarafMBeanServerGuard testGuard = EasyMock.createMock(KarafMBeanServerGuard.class); + String[] la = new String[]{"long"}; + String[] sa = new String[]{"java.lang.String"}; + String[] sa2 = new String[]{"java.lang.String", "java.lang.String"}; + EasyMock.expect(testGuard.canInvoke(mbs, new ObjectName(objectName), "testMethod", la)).andReturn(true); + EasyMock.expect(testGuard.canInvoke(mbs, new ObjectName(objectName), "testMethod", sa)).andReturn(true); + EasyMock.expect(testGuard.canInvoke(mbs, new ObjectName(objectName), "otherMethod", sa2)).andReturn(false); + EasyMock.replay(testGuard); - JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); - mb.setMBeanServer(mbs); - assertTrue(mb.canInvoke(objectName, "testMethod", la)); - assertTrue(mb.canInvoke(objectName, "testMethod", sa)); - assertFalse(mb.canInvoke(objectName, "otherMethod", sa2)); - } finally { - KarafMBeanServerBuilder.setGuard(prevGuard); - } + JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); + mb.setMBeanServer(mbs); + mb.setGuard(testGuard); + assertTrue(mb.canInvoke(objectName, "testMethod", la)); + assertTrue(mb.canInvoke(objectName, "testMethod", sa)); + assertFalse(mb.canInvoke(objectName, "otherMethod", sa2)); } public void testCanInvokeMethodException() throws Exception { - InvocationHandler prevGuard = KarafMBeanServerBuilder.getGuard(); try { MBeanServer mbs = EasyMock.createMock(MBeanServer.class); EasyMock.replay(mbs); @@ -151,81 +125,69 @@ public class JMXSecurityMBeanImplTestCase extends TestCase { String[] ea = new String[]{}; EasyMock.expect(testGuard.canInvoke(mbs, new ObjectName(objectName), "testMethod", ea)).andThrow(new IOException()); EasyMock.replay(testGuard); - KarafMBeanServerBuilder.setGuard(testGuard); JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); mb.setMBeanServer(mbs); + mb.setGuard(testGuard); mb.canInvoke(objectName, "testMethod", ea); fail("Should have thrown an exception"); } catch (IOException ioe) { // good - } finally { - KarafMBeanServerBuilder.setGuard(prevGuard); } } public void testCanInvokeMethodNoGuard() throws Exception { - InvocationHandler prevGuard = KarafMBeanServerBuilder.getGuard(); - try { - JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); - assertTrue(mb.canInvoke("foo.bar.testing:type=SomeMBean", "someMethod", new String[]{})); - } finally { - KarafMBeanServerBuilder.setGuard(prevGuard); - } + JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); + assertTrue(mb.canInvoke("foo.bar.testing:type=SomeMBean", "someMethod", new String[]{})); } public void testCanInvokeBulk() throws Exception { - InvocationHandler prevGuard = KarafMBeanServerBuilder.getGuard(); - try { - MBeanServer mbs = EasyMock.createMock(MBeanServer.class); - EasyMock.replay(mbs); + MBeanServer mbs = EasyMock.createMock(MBeanServer.class); + EasyMock.replay(mbs); - KarafMBeanServerGuard testGuard = EasyMock.createMock(KarafMBeanServerGuard.class); - String objectName = "foo.bar.testing:type=SomeMBean"; - final String[] la = new String[]{"long"}; - final String[] sa = new String[]{"java.lang.String"}; - EasyMock.expect(testGuard.canInvoke(EasyMock.eq(mbs), EasyMock.eq(new ObjectName(objectName)), EasyMock.eq("testMethod"), EasyMock.aryEq(la))).andReturn(true).anyTimes(); - EasyMock.expect(testGuard.canInvoke(EasyMock.eq(mbs), EasyMock.eq(new ObjectName(objectName)), EasyMock.eq("testMethod"), EasyMock.aryEq(sa))).andReturn(false).anyTimes(); - EasyMock.expect(testGuard.canInvoke(EasyMock.eq(mbs), EasyMock.eq(new ObjectName(objectName)), EasyMock.eq("otherMethod"))).andReturn(true).anyTimes(); - String objectName2 = "foo.bar.testing:type=SomeOtherMBean"; - EasyMock.expect(testGuard.canInvoke(EasyMock.eq(mbs), EasyMock.eq(new ObjectName(objectName2)))).andReturn(true).anyTimes(); - String objectName3 = "foo.bar.foo.testing:type=SomeOtherMBean"; - EasyMock.expect(testGuard.canInvoke(EasyMock.eq(mbs), EasyMock.eq(new ObjectName(objectName3)))).andReturn(false).anyTimes(); - EasyMock.replay(testGuard); - KarafMBeanServerBuilder.setGuard(testGuard); + KarafMBeanServerGuard testGuard = EasyMock.createMock(KarafMBeanServerGuard.class); + String objectName = "foo.bar.testing:type=SomeMBean"; + final String[] la = new String[]{"long"}; + final String[] sa = new String[]{"java.lang.String"}; + EasyMock.expect(testGuard.canInvoke(EasyMock.eq(mbs), EasyMock.eq(new ObjectName(objectName)), EasyMock.eq("testMethod"), EasyMock.aryEq(la))).andReturn(true).anyTimes(); + EasyMock.expect(testGuard.canInvoke(EasyMock.eq(mbs), EasyMock.eq(new ObjectName(objectName)), EasyMock.eq("testMethod"), EasyMock.aryEq(sa))).andReturn(false).anyTimes(); + EasyMock.expect(testGuard.canInvoke(EasyMock.eq(mbs), EasyMock.eq(new ObjectName(objectName)), EasyMock.eq("otherMethod"))).andReturn(true).anyTimes(); + String objectName2 = "foo.bar.testing:type=SomeOtherMBean"; + EasyMock.expect(testGuard.canInvoke(EasyMock.eq(mbs), EasyMock.eq(new ObjectName(objectName2)))).andReturn(true).anyTimes(); + String objectName3 = "foo.bar.foo.testing:type=SomeOtherMBean"; + EasyMock.expect(testGuard.canInvoke(EasyMock.eq(mbs), EasyMock.eq(new ObjectName(objectName3)))).andReturn(false).anyTimes(); + EasyMock.replay(testGuard); - JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); - mb.setMBeanServer(mbs); - Map<String, List<String>> query = new HashMap<String, List<String>>(); - query.put(objectName, Arrays.asList("otherMethod", "testMethod(long)", "testMethod(java.lang.String)")); - query.put(objectName2, Collections.<String>emptyList()); - query.put(objectName3, Collections.<String>emptyList()); - TabularData result = mb.canInvoke(query); - assertEquals(5, result.size()); - - CompositeData cd = result.get(new Object[]{objectName, "testMethod(long)"}); - assertEquals(objectName, cd.get("ObjectName")); - assertEquals("testMethod(long)", cd.get("Method")); - assertEquals(true, cd.get("CanInvoke")); - CompositeData cd2 = result.get(new Object[]{objectName, "testMethod(java.lang.String)"}); - assertEquals(objectName, cd2.get("ObjectName")); - assertEquals("testMethod(java.lang.String)", cd2.get("Method")); - assertEquals(false, cd2.get("CanInvoke")); - CompositeData cd3 = result.get(new Object[]{objectName, "otherMethod"}); - assertEquals(objectName, cd3.get("ObjectName")); - assertEquals("otherMethod", cd3.get("Method")); - assertEquals(true, cd3.get("CanInvoke")); - CompositeData cd4 = result.get(new Object[]{objectName2, ""}); - assertEquals(objectName2, cd4.get("ObjectName")); - assertEquals("", cd4.get("Method")); - assertEquals(true, cd4.get("CanInvoke")); - CompositeData cd5 = result.get(new Object[]{objectName3, ""}); - assertEquals(objectName3, cd5.get("ObjectName")); - assertEquals("", cd5.get("Method")); - assertEquals(false, cd5.get("CanInvoke")); - } finally { - KarafMBeanServerBuilder.setGuard(prevGuard); - } + JMXSecurityMBeanImpl mb = new JMXSecurityMBeanImpl(); + mb.setMBeanServer(mbs); + mb.setGuard(testGuard); + Map<String, List<String>> query = new HashMap<String, List<String>>(); + query.put(objectName, Arrays.asList("otherMethod", "testMethod(long)", "testMethod(java.lang.String)")); + query.put(objectName2, Collections.<String>emptyList()); + query.put(objectName3, Collections.<String>emptyList()); + TabularData result = mb.canInvoke(query); + assertEquals(5, result.size()); + + CompositeData cd = result.get(new Object[]{objectName, "testMethod(long)"}); + assertEquals(objectName, cd.get("ObjectName")); + assertEquals("testMethod(long)", cd.get("Method")); + assertEquals(true, cd.get("CanInvoke")); + CompositeData cd2 = result.get(new Object[]{objectName, "testMethod(java.lang.String)"}); + assertEquals(objectName, cd2.get("ObjectName")); + assertEquals("testMethod(java.lang.String)", cd2.get("Method")); + assertEquals(false, cd2.get("CanInvoke")); + CompositeData cd3 = result.get(new Object[]{objectName, "otherMethod"}); + assertEquals(objectName, cd3.get("ObjectName")); + assertEquals("otherMethod", cd3.get("Method")); + assertEquals(true, cd3.get("CanInvoke")); + CompositeData cd4 = result.get(new Object[]{objectName2, ""}); + assertEquals(objectName2, cd4.get("ObjectName")); + assertEquals("", cd4.get("Method")); + assertEquals(true, cd4.get("CanInvoke")); + CompositeData cd5 = result.get(new Object[]{objectName3, ""}); + assertEquals(objectName3, cd5.get("ObjectName")); + assertEquals("", cd5.get("Method")); + assertEquals(false, cd5.get("CanInvoke")); } } http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/manual/src/main/asciidoc/users-guide/wrapper.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/users-guide/wrapper.adoc b/manual/src/main/asciidoc/users-guide/wrapper.adoc index d3ea788..ca629aa 100644 --- a/manual/src/main/asciidoc/users-guide/wrapper.adoc +++ b/manual/src/main/asciidoc/users-guide/wrapper.adoc @@ -284,10 +284,9 @@ wrapper.java.command=%JAVA_HOME%/bin/java wrapper.java.mainclass=org.apache.karaf.wrapper.internal.Main wrapper.java.classpath.1=%KARAF_HOME%/lib/karaf-wrapper.jar wrapper.java.classpath.2=%KARAF_HOME%/lib/karaf.jar -wrapper.java.classpath.3=%KARAF_HOME%/lib/karaf-jmx-boot.jar -wrapper.java.classpath.4=%KARAF_HOME%/lib/karaf-jaas-boot.jar -wrapper.java.classpath.5=%KARAF_HOME%/lib/karaf-wrapper-main.jar -wrapper.java.classpath.6=%KARAF_HOME%/lib/karaf-org.osgi.core.jar +wrapper.java.classpath.3=%KARAF_HOME%/lib/karaf-jaas-boot.jar +wrapper.java.classpath.4=%KARAF_HOME%/lib/karaf-wrapper-main.jar +wrapper.java.classpath.5=%KARAF_HOME%/lib/karaf-org.osgi.core.jar wrapper.java.library.path.1=%KARAF_HOME%/lib/ # Application Parameters. Add parameters as needed starting from 1 @@ -300,11 +299,10 @@ wrapper.java.additional.2=-Dkaraf.base=%KARAF_BASE% wrapper.java.additional.3=-Dkaraf.data=%KARAF_DATA% wrapper.java.additional.4=-Dkaraf.etc=%KARAF_ETC% wrapper.java.additional.5=-Dcom.sun.management.jmxremote -wrapper.java.additional.6=-Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder -wrapper.java.additional.7=-Dkaraf.startLocalConsole=false -wrapper.java.additional.8=-Dkaraf.startRemoteShell=true -wrapper.java.additional.9=-Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed:%JAVA_HOME%/lib/endorsed:%KARAF_HOME%/lib/endorsed -wrapper.java.additional.10=-Djava.ext.dirs=%JAVA_HOME%/jre/lib/ext:%JAVA_HOME%/lib/ext:%KARAF_HOME%/lib/ext +wrapper.java.additional.6=-Dkaraf.startLocalConsole=false +wrapper.java.additional.7=-Dkaraf.startRemoteShell=true +wrapper.java.additional.8=-Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed:%JAVA_HOME%/lib/endorsed:%KARAF_HOME%/lib/endorsed +wrapper.java.additional.9=-Djava.ext.dirs=%JAVA_HOME%/jre/lib/ext:%JAVA_HOME%/lib/ext:%KARAF_HOME%/lib/ext # Uncomment to enable jmx #wrapper.java.additional.n=-Dcom.sun.management.jmxremote.port=1616 http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/manual/src/main/webapp/users-guide/wrapper.conf ---------------------------------------------------------------------- diff --git a/manual/src/main/webapp/users-guide/wrapper.conf b/manual/src/main/webapp/users-guide/wrapper.conf index 7378527..b9fb8e2 100644 --- a/manual/src/main/webapp/users-guide/wrapper.conf +++ b/manual/src/main/webapp/users-guide/wrapper.conf @@ -270,10 +270,9 @@ wrapper.java.command=%JAVA_HOME%/bin/java wrapper.java.mainclass=org.apache.karaf.wrapper.internal.Main wrapper.java.classpath.1=%KARAF_HOME%/lib/karaf-wrapper.jar wrapper.java.classpath.2=%KARAF_HOME%/lib/karaf.jar -wrapper.java.classpath.3=%KARAF_HOME%/lib/karaf-jmx-boot.jar -wrapper.java.classpath.4=%KARAF_HOME%/lib/karaf-jaas-boot.jar -wrapper.java.classpath.5=%KARAF_HOME%/lib/karaf-wrapper-main.jar -wrapper.java.classpath.6=%KARAF_HOME%/lib/karaf-org.osgi.core.jar +wrapper.java.classpath.3=%KARAF_HOME%/lib/karaf-jaas-boot.jar +wrapper.java.classpath.4=%KARAF_HOME%/lib/karaf-wrapper-main.jar +wrapper.java.classpath.5=%KARAF_HOME%/lib/karaf-org.osgi.core.jar wrapper.java.library.path.1=%KARAF_HOME%/lib/ # Application Parameters. Add parameters as needed starting from 1 @@ -286,11 +285,10 @@ wrapper.java.additional.2=-Dkaraf.base=%KARAF_BASE% wrapper.java.additional.3=-Dkaraf.data=%KARAF_DATA% wrapper.java.additional.4=-Dkaraf.etc=%KARAF_ETC% wrapper.java.additional.5=-Dcom.sun.management.jmxremote -wrapper.java.additional.6=-Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder -wrapper.java.additional.7=-Dkaraf.startLocalConsole=false -wrapper.java.additional.8=-Dkaraf.startRemoteShell=true -wrapper.java.additional.9=-Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed:%JAVA_HOME%/lib/endorsed:%KARAF_HOME%/lib/endorsed -wrapper.java.additional.10=-Djava.ext.dirs=%JAVA_HOME%/jre/lib/ext:%JAVA_HOME%/lib/ext:%KARAF_HOME%/lib/ext +wrapper.java.additional.6=-Dkaraf.startLocalConsole=false +wrapper.java.additional.7=-Dkaraf.startRemoteShell=true +wrapper.java.additional.8=-Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed:%JAVA_HOME%/lib/endorsed:%KARAF_HOME%/lib/endorsed +wrapper.java.additional.9=-Djava.ext.dirs=%JAVA_HOME%/jre/lib/ext:%JAVA_HOME%/lib/ext:%KARAF_HOME%/lib/ext # Uncomment to enable jmx #wrapper.java.additional.n=-Dcom.sun.management.jmxremote.port=1616 http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 45d94b9..a8b0220 100644 --- a/pom.xml +++ b/pom.xml @@ -540,11 +540,6 @@ <dependency> <groupId>org.apache.karaf.management</groupId> - <artifactId>org.apache.karaf.management.boot</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.apache.karaf.management</groupId> <artifactId>org.apache.karaf.management.server</artifactId> <version>${project.version}</version> </dependency> http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/unix/karaf-wrapper.conf ---------------------------------------------------------------------- diff --git a/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/unix/karaf-wrapper.conf b/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/unix/karaf-wrapper.conf index 460e543..6da4ac8 100644 --- a/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/unix/karaf-wrapper.conf +++ b/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/unix/karaf-wrapper.conf @@ -42,11 +42,10 @@ wrapper.java.additional.2=-Dkaraf.base=%KARAF_BASE% wrapper.java.additional.3=-Dkaraf.data=%KARAF_DATA% wrapper.java.additional.4=-Dkaraf.etc=%KARAF_ETC% wrapper.java.additional.5=-Dcom.sun.management.jmxremote -wrapper.java.additional.6=-Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder -wrapper.java.additional.7=-Dkaraf.startLocalConsole=false -wrapper.java.additional.8=-Dkaraf.startRemoteShell=true -wrapper.java.additional.9=-Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed:%JAVA_HOME%/lib/endorsed:%KARAF_HOME%/lib/endorsed -wrapper.java.additional.10=-Djava.ext.dirs=%JAVA_HOME%/jre/lib/ext:%JAVA_HOME%/lib/ext:%KARAF_HOME%/lib/ext +wrapper.java.additional.6=-Dkaraf.startLocalConsole=false +wrapper.java.additional.7=-Dkaraf.startRemoteShell=true +wrapper.java.additional.8=-Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed:%JAVA_HOME%/lib/endorsed:%KARAF_HOME%/lib/endorsed +wrapper.java.additional.9=-Djava.ext.dirs=%JAVA_HOME%/jre/lib/ext:%JAVA_HOME%/lib/ext:%KARAF_HOME%/lib/ext # Uncomment to enable jmx #wrapper.java.additional.n=-Dcom.sun.management.jmxremote.port=1616 http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows/karaf-wrapper.conf ---------------------------------------------------------------------- diff --git a/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows/karaf-wrapper.conf b/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows/karaf-wrapper.conf index e7581d9..acff6ac 100644 --- a/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows/karaf-wrapper.conf +++ b/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows/karaf-wrapper.conf @@ -42,11 +42,10 @@ wrapper.java.additional.2=-Dkaraf.base="%KARAF_BASE%" wrapper.java.additional.3=-Dkaraf.data="%KARAF_DATA%" wrapper.java.additional.4=-Dkaraf.etc="%KARAF_ETC%" wrapper.java.additional.5=-Dcom.sun.management.jmxremote -wrapper.java.additional.6=-Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder -wrapper.java.additional.7=-Dkaraf.startLocalConsole=false -wrapper.java.additional.8=-Dkaraf.startRemoteShell=true -wrapper.java.additional.9=-Djava.endorsed.dirs="%JAVA_HOME%/jre/lib/endorsed;%JAVA_HOME%/lib/endorsed;%KARAF_HOME%/lib/endorsed" -wrapper.java.additional.10=-Djava.ext.dirs="%JAVA_HOME%/jre/lib/ext;%JAVA_HOME%/lib/ext;%KARAF_HOME%/lib/ext" +wrapper.java.additional.6=-Dkaraf.startLocalConsole=false +wrapper.java.additional.7=-Dkaraf.startRemoteShell=true +wrapper.java.additional.8=-Djava.endorsed.dirs="%JAVA_HOME%/jre/lib/endorsed;%JAVA_HOME%/lib/endorsed;%KARAF_HOME%/lib/endorsed" +wrapper.java.additional.9=-Djava.ext.dirs="%JAVA_HOME%/jre/lib/ext;%JAVA_HOME%/lib/ext;%KARAF_HOME%/lib/ext" # Uncomment to enable jmx #wrapper.java.additional.n=-Dcom.sun.management.jmxremote.port=1616 http://git-wip-us.apache.org/repos/asf/karaf/blob/bd8093cb/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows64/karaf-wrapper.conf ---------------------------------------------------------------------- diff --git a/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows64/karaf-wrapper.conf b/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows64/karaf-wrapper.conf index e7581d9..acff6ac 100644 --- a/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows64/karaf-wrapper.conf +++ b/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/windows64/karaf-wrapper.conf @@ -42,11 +42,10 @@ wrapper.java.additional.2=-Dkaraf.base="%KARAF_BASE%" wrapper.java.additional.3=-Dkaraf.data="%KARAF_DATA%" wrapper.java.additional.4=-Dkaraf.etc="%KARAF_ETC%" wrapper.java.additional.5=-Dcom.sun.management.jmxremote -wrapper.java.additional.6=-Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder -wrapper.java.additional.7=-Dkaraf.startLocalConsole=false -wrapper.java.additional.8=-Dkaraf.startRemoteShell=true -wrapper.java.additional.9=-Djava.endorsed.dirs="%JAVA_HOME%/jre/lib/endorsed;%JAVA_HOME%/lib/endorsed;%KARAF_HOME%/lib/endorsed" -wrapper.java.additional.10=-Djava.ext.dirs="%JAVA_HOME%/jre/lib/ext;%JAVA_HOME%/lib/ext;%KARAF_HOME%/lib/ext" +wrapper.java.additional.6=-Dkaraf.startLocalConsole=false +wrapper.java.additional.7=-Dkaraf.startRemoteShell=true +wrapper.java.additional.8=-Djava.endorsed.dirs="%JAVA_HOME%/jre/lib/endorsed;%JAVA_HOME%/lib/endorsed;%KARAF_HOME%/lib/endorsed" +wrapper.java.additional.9=-Djava.ext.dirs="%JAVA_HOME%/jre/lib/ext;%JAVA_HOME%/lib/ext;%KARAF_HOME%/lib/ext" # Uncomment to enable jmx #wrapper.java.additional.n=-Dcom.sun.management.jmxremote.port=1616
