blob: 91c75c7271666c9894cc811bdcb8bf83fa6caea6 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Apache Felix Web Console :: Apache Felix</title>
<link rel="canonical" href="https://felix.apache.org/documentation/subprojects/apache-felix-web-console.html">
<meta name="generator" content="Antora 2.3.4">
<link rel="stylesheet" href="../../_/css/site.css">
<link rel="icon" href="../../_/img/favicon.png" type="image/x-icon">
</head>
<body class="article">
<header class="header">
<nav class="navbar">
<div class="navbar-brand">
<a class="navbar-item" href="https://felix.apache.org/index.html">
<span>
<img src="../../_/img/logo.png">
</span>
</a>
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
</div>
<div id="topbar-nav" class="navbar-menu">
<div class="navbar-end">
<a class="navbar-item" href="https://felix.apache.org/index.html">Home</a>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Subprojects</a>
<div class="navbar-dropdown">
<a class="navbar-item" href="apache-felix-dependency-manager.html">Dependency Manager</a>
<a class="navbar-item" href="apache-felix-event-admin.html">Event Admin</a>
<a class="navbar-item" href="apache-felix-file-install.html">File Install</a>
<a class="navbar-item" href="apache-felix-framework.html">Framework</a>
<a class="navbar-item" href="apache-felix-gogo.html">Gogo Shell</a>
<a class="navbar-item" href="apache-felix-healthchecks.html">Health Checks</a>
<a class="navbar-item" href="apache-felix-inventory.html">Inventory</a>
<a class="navbar-item" href="apache-felix-log.html">Log</a>
<a class="navbar-item" href="apache-felix-logback.html">Logback</a>
<a class="navbar-item" href="apache-felix-maven-bundle-plugin.html">Maven bundle plugin</a>
<a class="navbar-item" href="apache-felix-maven-scr-plugin.html">Maven SCR plugin</a>
<a class="navbar-item" href="apache-felix-metatype-service.html">Metatype Service</a>
<a class="navbar-item" href="apache-felix-preferences-service.html">Preferences Service</a>
<a class="navbar-item" href="apache-felix-remote-shell.html">Remote Shell</a>
<a class="navbar-item" href="apache-felix-script-console-plugin.html">Script console plugin</a>
<a class="navbar-item" href="apache-felix-shell.html">Lightweight shell</a>
<a class="navbar-item" href="apache-felix-shell-tui.html">Shell TUI</a>
<a class="navbar-item" href="apache-felix-web-console.html">Web Console</a>
</div>
</div>
<div class="navbar-item">
<span class="control">
<a class="button is-primary" href="../downloads.html">Downloads</a>
</span>
</div>
</div>
</div>
</nav>
</header>
<div class="body">
<div class="nav-container" data-component="documentation" data-version="master">
<aside class="nav">
<div class="panels">
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<h3 class="title"><a href="../index.html">Documentation</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../documentation.html">Documentation</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../downloads.html">Downloads</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../getting-started.html">Getting Started</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../news.html">News</a>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<span class="nav-text">Community</span>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../community/project-info.html">Apache Felix Project Info</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../community/contributing.html">Contributing</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../community/projects-using-felix.html">Projects Using Felix</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<span class="nav-text">Development</span>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../development/coding-standards.html">Coding Standards</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../development/dependencies-file-template.html">DEPENDENCIES file template</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../development/provisional-osgi-api-policy.html">Provisional OSGi API Policy</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../development/release-management-nexus.html">Release Management</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../development/site-how-to.html">Site How To</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../development/using-the-osgi-compliance-tests.html">Using the OSGi Compliance Tests</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../faqs.html">FAQS</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../faqs/apache-felix-bundle-plugin-faq.html">Apache Felix Bundle Plugin Frequently Asked Questions</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../faqs/apache-felix-scr-plugin-faq.html">Apache Felix SCR Plugin Frequently Asked Questions</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../subprojects.html">Subprojects</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="apache-felix-dependency-manager.html">Apache Felix Dependency Manager</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">Guides</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/migrating-from-earlier-versions.html">Apache Felix Dependency Manager - Migrating from earlier versions</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/annotations.html">Dependency Manager - Annotations</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/background.html">Dependency Manager - Background</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/bundles-and-dependencies.html">Dependency Manager - Bundles and Dependencies</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/design-patterns.html">Dependency Manager - Design Patterns</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/development.html">Dependency Manager - Development</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/history.html">Dependency Manager - History</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/javadocs.html">Dependency Manager - JavaDocs</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/migrating-from-other-solutions.html">Dependency Manager - Migrating from other solutions.</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/performance-tuning.html">Dependency Manager - Performance Tuning</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/resources.html">Dependency Manager - Resource adapters</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/whatsnew.html">Dependency Manager - What&#8217;s new in version 4?</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/dm-lambda.html">Dependency Manager Lambda</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/guides/whatsnew-r15.html">What&#8217;s New in R15</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">Reference</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/component-adapter.html">Dependency Manager - Adapter</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/component-aspect.html">Dependency Manager - Aspect</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/component-bundle-adapter.html">Dependency Manager - Bundle Adapter</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/dependency-bundle.html">Dependency Manager - Bundle Dependency</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/components.html">Dependency Manager - Components</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/dependency-configuration.html">Dependency Manager - Configuration Dependency</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/dependencies.html">Dependency Manager - Dependencies</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/external-links.html">Dependency Manager - External Links</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/component-factory-configuration-adapter.html">Dependency Manager - Factory Configuration Adapter Service</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/component-resource-adapter.html">Dependency Manager - Resource Adapter</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/dependency-resource.html">Dependency Manager - Resource Dependency</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/dependency-service.html">Dependency Manager - Service Dependency</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/service-scopes.html">Dependency Manager - Service Scopes</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/component-singleton.html">Dependency Manager - Singleton Component</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/thread-model.html">Dependency Manager - Thread Model</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/reference/dm-annotations.html">Dependency Manager Annotations</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">Tutorials</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/tutorials/working-with-annotations.html">Dependency Manager - Annotations</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/tutorials/getting-started.html">Dependency Manager - Getting Started</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/tutorials/leveraging-the-shell.html">Dependency Manager - Leveraging the shell</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-dependency-manager/tutorials/sample-code.html">Dependency Manager sample projects</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-event-admin.html">Apache Felix Event Admin</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-file-install.html">Apache Felix File Install</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="apache-felix-framework.html">Apache Felix Framework</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-framework/apache-felix-framework-bundle-cache.html">Apache Felix Framework Bundle Cache</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-framework/apache-felix-framework-configuration-properties.html">Apache Felix Framework Configuration Properties</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-framework/apache-felix-framework-faq.html">Apache Felix Framework Frequently Asked Questions</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-framework/apache-felix-framework-launching-and-embedding.html">Apache Felix Framework Launching and Embedding</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-framework/apache-felix-framework-usage-documentation.html">Apache Felix Framework Usage Documentation</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-framework-security.html">Apache Felix Framework Security</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="apache-felix-gogo.html">Apache Felix Gogo</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-gogo/rfc-147-overview.html">RFC 147 Overview</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-healthchecks.html">Apache Felix Health Checks</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-inventory.html">Apache Felix Inventory Printer</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-log.html">Apache Felix Log</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-logback.html">Apache Felix Logback</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-maven-bundle-plugin-bnd.html">Apache Felix Maven Bundle Plugin (BND)</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-metatype-service.html">Apache Felix Metatype Service</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-osgi-bundle-repository.html">Apache Felix OSGi Bundle Repository (OBR)</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-preferences-service.html">Apache Felix Preferences Service</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-remote-shell.html">Apache Felix Remote Shell</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-shell.html">Apache Felix Shell</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="apache-felix-shell-tui.html">Apache Felix Shell TUI</a>
</li>
<li class="nav-item is-current-page" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="apache-felix-web-console.html">Apache Felix Web Console</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-web-console/extending-the-apache-felix-web-console.html">Extending the Apache Felix Web Console</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-web-console/web-console-restful-api.html">Web Console RESTful API</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-web-console/web-console-security-provider.html">Web Console Security Provider</a>
</li>
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<span class="nav-text">Extensions</span>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-web-console/extending-the-apache-felix-web-console/branding-the-web-console.html">Branding the Web Console</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-web-console/extending-the-apache-felix-web-console/providing-resources.html">Providing Resources</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-web-console/extending-the-apache-felix-web-console/providing-web-console-plugins.html">Providing Web Console Plugins</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-web-console/extending-the-apache-felix-web-console/web-console-logging.html">Web Console Logging</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="apache-felix-web-console/extending-the-apache-felix-web-console/web-console-output-templating.html">Web Console Output Templating</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Maven SCR plugin</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-maven-scr-plugin/apache-felix-maven-scr-plugin-use.html">Apache Felix Maven SCR Plugin Use</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-maven-scr-plugin/apache-felix-scr-bndtools-use.html">Apache Felix SCR Annotations BndTools Use</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-maven-scr-plugin/apache-felix-scr-ant-task-use.html">Apache Felix SCR Ant Task Use</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-maven-scr-plugin/extending-scr-annotations.html">Extending SCR Annotations Excerpt: How add new Annotations extending the base Annotations</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-maven-scr-plugin/scr-annotations.html">SCR Annotations Excerpt: Using Java 5 Annotations to describe the component or service.</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="apache-felix-maven-scr-plugin/scr-javadoc-tags.html">SCR JavaDoc Tags Excerpt: Using JavaDoc Tags to describe the component or service.</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../tutorials-examples-and-presentations.html">Tutorials</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../tutorials-examples-and-presentations/apache-felix-application-demonstration.html">Apache Felix Application Demonstration</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../tutorials-examples-and-presentations/apache-felix-osgi-tutorial.html">Apache Felix OSGi Tutorial</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../tutorials-examples-and-presentations/apache-felix-osgi-faq.html">OSGi Frequently Asked Questions</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">OSGI Tutorial</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../tutorials-examples-and-presentations/apache-felix-osgi-tutorial/apache-felix-tutorial-example-1.html">Apache Felix Tutorial Example 1 - Service Event Listener Bundle</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../tutorials-examples-and-presentations/apache-felix-osgi-tutorial/apache-felix-tutorial-example-2.html">Apache Felix Tutorial Example 2</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../tutorials-examples-and-presentations/apache-felix-osgi-tutorial/apache-felix-tutorial-example-2b.html">Apache Felix Tutorial Example 2b</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../tutorials-examples-and-presentations/apache-felix-osgi-tutorial/apache-felix-tutorial-example-3.html">Apache Felix Tutorial Example 3</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../tutorials-examples-and-presentations/apache-felix-osgi-tutorial/apache-felix-tutorial-example-4.html">Apache Felix Tutorial Example 4</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../tutorials-examples-and-presentations/apache-felix-osgi-tutorial/apache-felix-tutorial-example-5.html">Apache Felix Tutorial Example 5</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../tutorials-examples-and-presentations/apache-felix-osgi-tutorial/apache-felix-tutorial-example-6.html">Example 6 - Spell Checker Service Bundle</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../tutorials-examples-and-presentations/apache-felix-osgi-tutorial/apache-felix-tutorial-example-7.html">Example 7 - Spell Checker Client Bundle</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../tutorials-examples-and-presentations/apache-felix-osgi-tutorial/apache-felix-tutorial-example-8.html">Example 8 - Spell Checker Service using Service Binder</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../tutorials-examples-and-presentations/apache-felix-osgi-tutorial/apache-felix-tutorial-example-9.html">Example 9 - Spell Checker Service using Declarative Services</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../license.html">Apache License 2.0</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../site-map.html">Site map</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">Documentation</span>
<span class="version">master</span>
</div>
<ul class="components">
<li class="component is-current">
<span class="title">Documentation</span>
<ul class="versions">
<li class="version is-current is-latest">
<a href="../index.html">master</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main class="article">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="../index.html" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="../index.html">Documentation</a></li>
<li><a href="../subprojects.html">Subprojects</a></li>
<li><a href="apache-felix-web-console.html">Apache Felix Web Console</a></li>
</ul>
</nav>
<div class="edit-this-page"><a href="https://github.com/apache/felix-antora-site/edit/main/modules/ROOT/pages/subprojects/apache-felix-web-console.adoc">Edit this Page</a></div>
</div>
<div class="content">
<article class="doc">
<h1 class="page">Apache Felix Web Console</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>The Apache Felix Web Console is a simple tool to inspect and manage OSGi framework instances using your favourite Web Browser.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_requirements"><a class="anchor" href="#_requirements"></a>Requirements</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The Web Console only has a single required dependency on the framework: A running implementation of the OSGi Http Service Specification.
The reason for this is, that the Web Console is implemented as a servlet (actually just a gateway servlet dispatching to Web Console plugins) which is registered with the Http Service.
If your framework does not yet have a Http Service installed, you might select from a variety of such implementations.
The following is just an incomplete list:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Apache Felix HTTP Service.
This is a very basic implementation of the OSGi Http Service based on Jetty 6.1.7.
The Apache Felix HTTP Service has not been released yet, so you would have to build it yourself.</p>
</li>
<li>
<p></p>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">PAX Web Service.
The PAX Web Service is the basis for a whole range of additions from the <a href="http://www.ops4j.org">OPS4J</a> project.
The PAX Web Service is also based on Jetty 6 and may be dowloaded from the [OPS4J PAX Web</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="http://wiki.ops4j.org/confluence/display/ops4j/Pax+Web" class="bare">http://wiki.ops4j.org/confluence/display/ops4j/Pax+Web</a>] page.</p></td>
</tr>
</tbody>
</table>
</li>
<li>
<p>Equinox HTTP Service implementation.
You can get more information on the Equinox implementation from the <a href="http://www.eclipse.org/equinox/server/">Server-Side Equinox</a> page.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Apart from that Web Console has the following dependencies, which do not need to be satisfied.
In this case the respective functionality is just missing.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>OSGi Log Service&#8201;&#8212;&#8201;The Log Service is used for logging.
If the service is not available the Web Console prints logging to the standard output</p>
</li>
<li>
<p>OSGi Configuration Admin Service and OSGi Metatype Service&#8201;&#8212;&#8201;The Configuration Admin and Metatype services are used to support simple form based configuration administration</p>
</li>
<li>
<p>Apache Felix Declarative Services&#8201;&#8212;&#8201;If your framework uses the Apache Felix Declarative Services implementation, you can use to the Web Console to inspect the declared components available from the various bundles and managed by the Service Component Runtime.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Note, that the Apache Felix Declarative Services implementation is the only Apache Felix dependency contained in the Web Console.
If you do not use the Apache Felix Declarative Services implementation, you just cannot inspect the declared components (because there is no official public API for this).
Otherwise the Web Console perfectly operates without any problems.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_variants"><a class="anchor" href="#_variants"></a>Variants</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The Web Console Bundle is available in two variants: A <em>full</em> variant and a <em>bare</em> variant.
The <em>full</em> variant embeds three Java libraries which are not embedded in the <em>bare</em> variant.
The <em>bare</em> variant expects the packages provided by those libraries to be exported from bundles installed in the framework.</p>
</div>
<div class="paragraph">
<p>The three libraries are :</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Apache Commons IO</p>
</li>
<li>
<p>Apache Commons FileUpload</p>
</li>
<li>
<p>JSON</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Version 2.0.6 is the first release providing a <em>bare</em> variant.
In this release both variants have the same symbolic name but a different file name: <code>org.apache.felix.webconsole-2.0.6.jar</code> for the <em>full</em> variant and <code>org.apache.felix.webconsole-2.0.6-bare.jar</code> for the <em>bare</em> variant.
This is <a href="https://issues.apache.org/jira/browse/FELIX-2086">considered a bug</a> and will be fixed in the next release as follows:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>Full</em> variant symbolic name: <code>org.apache.felix.webconsole</code></p>
</li>
<li>
<p><em>Bare</em> variant symbolic name: <code>org.apache.felix.webconsole.bare</code></p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_installation"><a class="anchor" href="#_installation"></a>Installation</h2>
<div class="sectionbody">
<div class="paragraph">
<p>To install just use your favourite current means of installing new bundles in to the OSGi framework.
For example using the Apache Felix shell console you might do:</p>
</div>
<div class="literalblock">
<div class="content">
<pre>&gt; install http://mirror.switch.ch/mirror/apache/dist/felix/org.apache.felix.webconsole-2.0.6.jar
bundle x
&gt; start x</pre>
</div>
</div>
<div class="paragraph">
<p>where <em>x</em> is the bundle number printed by the Shell Console indicating the Bundle ID of the Web Console bundle.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_configuration"><a class="anchor" href="#_configuration"></a>Configuration</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The configuration of the Web Console consists of two parts: One part is the configuration of the Http Service defining at which host address (host and port number) the servlet container is accessible.
This configuration is technically outside of the scope of the Web Console configuration.
See below for more information and how this is influenced.</p>
</div>
<div class="paragraph">
<p>The second part of the Web Console configuration is the configuration of the console itself.
The Web Console is configured using the OSGi Configuration Admin Service in that the Web Console registered a <code>ManagedService</code> with Service PID <code>org.apache.felix.webconsole.internal.servlet.OsgiManager</code> (of course you may well use the Web Console to edit the configuration of the Web Console itself).</p>
</div>
<div class="paragraph">
<p>The Web Console supports the following settings with their corresponding default values:</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Property</th>
<th class="tableblock halign-left valign-top">Default Value</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>manager.root</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>/system/console</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The root path to the OSGi Management Console.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>default.render</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>bundles</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The name of the default configuration page when invoking the OSGi Management console.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>realm</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OSGi Management Console</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The name of the HTTP Authentication Realm.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>username</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>admin</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The name of the user allowed to access the OSGi Management Console.
To disable authentication clear this value.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>password</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>admin</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The password for the user allowed to access the OSGi Management Console.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>plugins</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">all plugins enabled</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The labels of the plugins enabled and displayed.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>loglevel</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>2</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Log level filter for the <code>AbstractWebConsole</code> log methods.
This is an integer value matching the levels defined by the OSGi Log Service.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>locale</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&#8201;&#8212;&#8201;</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">If set, this locale forces the localization to use this locale instead of the one requested by the web browser.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>http.service.filter</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&#8201;&#8212;&#8201;</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">OSGi filter used to select the Http Service to which the Web Console binds.
The value of this property (if not empty) is combined with the object class selection term to get the actual service selection filter like <code>(&amp;(objectClass=org.osgi.service.http.HttpService)(filter))</code>.
This property must not have leading or ending parentheses.
For example, to bind to the service with service ID 15 set the property to <code>service.id=15</code>.
By default (if this property is not set or set to an empty string) the Web Console binds with any Http Service available.</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>The default values apply if the respective property is missing from the configuration or if no configuration is provided at all.</p>
</div>
<h4 id="_framework_properties" class="discrete">Framework Properties</h4>
<div class="paragraph">
<p>Some of the configuration properties supported through the OSGi Configuration Admin service can also be set globally and statically as framework properties.
Such framework properties will also be considered actual default values for missing properties in Configuration Admin configuration as well as for the Metatype descriptor.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Framework Property</th>
<th class="tableblock halign-left valign-top">Configuration Admin Property</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>felix.webconsole.manager.root</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>manager.root</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>felix.webconsole.realm</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>realm</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>felix.webconsole.username</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>username</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>felix.webconsole.password</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>password</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>felix.webconsole.loglevel</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>loglevel</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>felix.webconsole.locale</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>locale</code></p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>Please note that setting any of these properties as framework property makes them visible to all bundles deployed.
This is particularly to be considered in case of the <code>felix.webconsole.password</code> property (as for authentication, the use of a <a href="apache-felix-web-console/web-console-security-provider.html" class="page">Web Console Security Provider</a> is suggested anyway).</p>
</div>
<h4 id="_configuration_of_the_osgi_http_service" class="discrete">Configuration of the OSGi Http Service</h4>
<div class="paragraph">
<p>As said above, the configuration of the OSGi Http Service used by the Web Console to register itself is outside of the scope of the Web Console.
Lets just say, the OSGi Http Service specification defines a system propety&#8201;&#8212;&#8201;<code>org.osgi.service.http.port</code>&#8201;&#8212;&#8201;which may be set to define the port at which the Http Service should listen for HTTP requests.
The respective Http Service implementation may define additional properties to define the actual interface on which to listen or to define a servlet context path.</p>
</div>
<div class="paragraph">
<p>By default it is probably safe to assume, that having set the <code>org.osgi.service.http.port</code> to a defined value, the Http Service implementation will listen on all interfaces for requests at the set port number and that no servlet context path actually exists.
For example, given the <code>org.osgi.service.http.port</code> property is set to <em>8888</em> the Web Console in the local system can be reached at : <code>http://localhost:8888/system/console</code>, where the <code>/system/console</code> path is configured using the <code>manager.root</code> configuration property (see the Configuration section).</p>
</div>
<div class="paragraph">
<p>If you happen to deploy an OSGi framework instance inside a traditional web application and thus the Http Service implementation is actually a bridge into the existing servlet container (see for example <a href="http://www.eclipse.org/equinox/server/http*in*container.php">Equinox in a Servlet Container</a> or the Apache Sling Launchpad Web application), the host, port and context path are defined by your servlet container and web application deployment.
For example, if the servlet container listens on host <code>sample.org</code> at port <code>8888</code> and the web application with your OSGi container is available in the <code>/osgi</code> context, the Web Console would be accessible at <code>http://sample.org:8888/osgi/system/console</code>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_configuration_manager"><a class="anchor" href="#_configuration_manager"></a>Configuration Manager</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The Configuration Manager is available via <code>http://localhost:8888/system/console/configMgr</code>.
It display all OSGi services which can be configured.</p>
</div>
<div class="sect2">
<h3 id="_configuration_factories"><a class="anchor" href="#_configuration_factories"></a>Configuration factories</h3>
<div class="paragraph">
<p>The Configuration Manager has special support for configuration factories by allowing to add new items via the "plus" buttons or editing or removing existing ones.</p>
</div>
<div class="paragraph">
<p>By default for each confguration factory item a unique ID is displayed, which is quite cryptic.
Example: <code>org.apache.felix.jaas.Configuration.factory.18a6be2a-3173-4120-8f56-77fabff7b7ea</code>.</p>
</div>
<div class="paragraph">
<p>The developer of the service with configuration factory can define a special "name hint" configuration propery which defines a name template which is used to build the configuration factory item name when displayed in the Configuration Manager.
The name of this property is <code>webconsole.configurationFactory.nameHint</code>.
It allows referencing other service property names as placeholders by enclosing in brackets.</p>
</div>
<div class="paragraph">
<p>Example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>webconsole.configurationFactory.nameHint = "{jaas.realmName}, {jaas.classname}"
jaas.realmName = "myRealm"
jaas.classname = "myClass"</pre>
</div>
</div>
<div class="paragraph">
<p>In this case the Configuration Manager displays the name "myRealm, myClass" as display name for the configuration entry which is much more human-readable than the cryptic name.
Please not that the OSGi configuration property <code>webconsole.configurationFactory.nameHint</code> must not be set to "private".
It is never displayed by the Configuration Manager.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_security"><a class="anchor" href="#_security"></a>Security</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The Web Console only has very basic security at the moment supporting only HTTP Basic authentication.
This security is enabled by default and may be disabled by simply clearing the <code>username</code> property.</p>
</div>
<div class="paragraph">
<p>To enhance the security of the Web Console you strongly encouraged to change at least the <code>password</code> for the admin user.</p>
</div>
<div class="paragraph">
<p>As of Web Console 3.1.0 this simple user setup can be extended by providing link:{{ refs.web-console-security-provider.adoc[Web Console Security Provider].
See that page for more information.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_browser_compliance"><a class="anchor" href="#_browser_compliance"></a>Browser Compliance</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The goal of the Web Console is to support as big a range of Web Browsers as possible.
As it stands now, Firefox (versions 2 and 3), Opera and Internet Explorer (versions 6 and 7) seem to be capable of using the Web Console.
Should you encounter any problems with your particular browser, please report an issue for the <em>Web Console</em> in our issue tracking system (<a href="https://issues.apache.org/jira/browse/Felix">JIRA</a>).</p>
</div>
<div class="paragraph">
<p>Beginning with Release 1.2.8 the Web Console is using JQuery to enhance the user experience.
This should also help in keeping browser support on the broadest possible basis.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_extending_the_web_console"><a class="anchor" href="#_extending_the_web_console"></a>Extending the Web Console</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The Web Console can be extended by registering an OSGi service for the interface <code>javax.servlet.Servlet</code> with the service property <code>felix.webconsole.label</code> set to the label (last segment in the URL) of the page.
The respective service is called a Web Console Plugin or a plugin for short.</p>
</div>
<div class="paragraph">
<p>Please for to the <a href="apache-felix-web-console/extending-the-apache-felix-web-console.html" class="page">Extending the Apache Felix Web Console</a> for full documentation on extending the Apache Felix Web Console.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_restful_api"><a class="anchor" href="#_restful_api"></a>RESTful API</h2>
<div class="sectionbody">
<div class="paragraph">
<p>While the Web Console does not have a full featured and documented REST-ful API, most plugins try to follow REST approaches.
For example the Bundles plugin is able to send information on all bundles or a single directly addressed bundle.</p>
</div>
<div class="paragraph">
<p>An attempt is made to document the current state of REST-like APIs at link:{{ refs.web-console-restful-api.adoc[Web Console RESTful API]</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_issues"><a class="anchor" href="#_issues"></a>Issues</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Should you have any questions using the Web Console, please send a note to one of our link:{{ refs.mailinglists.adoc[Mailing Lists].</p>
</div>
<div class="paragraph">
<p>Please report any issues with the Web Console in our issue tracking system (<a href="https://issues.apache.org/jira/browse/Felix">JIRA</a>) and be sure to report for the <em>Web Console</em> component.
See our [Issue Tracking] page for more details.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_screenshots"><a class="anchor" href="#_screenshots"></a>Screenshots</h2>
<div class="sectionbody">
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
This table is equally broken in markdown.
</td>
</tr>
</table>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.667%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">!console-bundles.png</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">thumbnail!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!console-bundles-details.png</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">thumbnail!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!console-components.png</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">thumbnail!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Bundle List</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Bundle Details</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Declarative Services Components (requires Apache Felix SCR)</p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">!console-config.png</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">thumbnail!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!console-status.png</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">thumbnail!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!console-system-info.png</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">thumbnail!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configuration Admin</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">System Status</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">System Information</p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
</tbody>
</table>
</div>
</div>
</article>
<aside class="toc sidebar" data-title="Contents" data-levels="2">
<div class="toc-menu"></div>
</aside>
</div>
</main>
</div>
<footer class="footer">
<p>Content licensed under AL2. UI licensed under MPL-2.0 with extensions licensed under AL2</p>
</footer>
<script src="../../_/js/site.js"></script>
<script async src="../../_/js/vendor/highlight.js"></script>
</body>
</html>