<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!--
    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.
-->

<head>
    <title>Apache Felix - Architecture Handler</title>
    <link rel="icon" href="/res/favicon.ico">

    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="The most powerful component model for OSGi">


    <link href="/ipojo/web/bootstrap/css/bootstrap-cerulean.css" rel="stylesheet">
    <link href="/ipojo/web/bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
    <link href="/ipojo/web/bootstrap/css/font-awesome.min.css" rel="stylesheet">
    <link href="/ipojo/web/style.css" rel="stylesheet">

    <!-- Overide alert's colors -->
    <link href="/ipojo/web/bootstrap/css/alert.css" rel="stylesheet">

    <link rel="stylesheet" href="/ipojo/web/github.css" type="text/css" media="all">


    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script src="/ipojo/web/bootstrap/js/bootstrap.min.js"></script>

</head>

<body data-spy="scroll" data-target=".subnav">
    <div class="navbar navbar-fixed-top navbar-inverse">
        <div class="navbar-inner">
            <div class="container">
               <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
                 <span class="icon-bar"></span>
                 <span class="icon-bar"></span>
                 <span class="icon-bar"></span>
                </a>
                <a class="brand" href="/documentation/subprojects/apache-felix-ipojo.html">Apache Felix iPOJO</a>

                 <div class="nav-collapse" id="main-menu">
                    <ul class="nav" id="main-menu-left">
                        <li><a href="/documentation/subprojects/apache-felix-ipojo/ipojo-news.html">News</a></li>
                        <li><a href="http://felix.apache.org/downloads.cgi">Downloads</a></li>

                        <li class="dropdown">
                            <a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials <b class="caret"></b></a>
                            <ul class="dropdown-menu" id="tutorials-menu">
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-why-choose-ipojo.html">Why choose iPOJO</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-successstories.html">Success stories</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-feature-overview.html">Features</a></li>
                                <li class="divider"></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-in-10-minutes.html">iPOJO in 10 minutes</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/how-to-use-ipojo-annotations.html">Using Annotations</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-hello-word-maven-based-tutorial.html">Maven tutorial</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-advanced-tutorial.html">Advanced tutorial</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/apache-felix-ipojo-dosgi.html">Using Distributed OSGi</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-composition-tutorial.html">Application Composition</a></li>
                            </ul>
                        </li>

                        <li class="dropdown">
                            <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation <b class="caret"></b></a>
                            <ul class="dropdown-menu" id="user-guide-menu">
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/service-requirement-handler.html">Requiring a service</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/providing-osgi-services.html">Providing a service</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/lifecycle-callback-handler.html">Lifecycle management</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/configuration-handler.html">Configuration</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/architecture-handler.html">Introspection</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/controller-lifecycle-handler.html">Impacting the lifecycle</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/injecting-bundle-context.html">Accessing the Bundle Context</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/apache-felix-ipojo-instances.html">Creating instances</a></li>
                                <li class="divider"></li>
                                <li class="dropdown-submenu">
                                    <a tabindex="-1" href="#">External <em>handlers</em></a>
                                    <ul class="dropdown-menu">
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/event-admin-handlers.html">Asynchronous communication</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/ipojo-jmx-handler.html">JMX management</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/extender-pattern-handler.html">Extender pattern</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/white-board-pattern-handler.html">Whiteboard pattern</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/temporal-service-dependency.html">Temporal dependencies</a></li>
                                    </ul>
                                </li>
                                <li class="dropdown-submenu">
                                   <a tabindex="-1" href="#">Configuration Admin &amp; Factories</a>
                                    <ul class="dropdown-menu">
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/combining-ipojo-and-configuration-admin.html">iPOJO and config admin</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/ipojo-factory-service.html">Using the iPOJO Factory service</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/how-to-use-ipojo-factories.html">Factories and Instances</a></li>
                                    </ul>
                                </li>
                                <li class="divider"></li>
                                <li class="dropdown-submenu">
                                    <a tabindex="-1" href="#">Advanced topics</a>
                                    <ul class="dropdown-menu">
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/instance-vs-service-controller.html">Instance vs. Service Controllers</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/service-binding-interceptors.html">Service Binding Interceptors</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/using-xml-schemas.html">XML Schemas</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/apache-felix-ipojo-api.html">Using the iPOJO API</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/constructing-pojo-objects-with-factory-methods.html">Constructing service objects with factory methods</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-ipojo-introspection-api.html">Using the introspection API</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-testing-components.html">Testing components</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-stereotypes.html">Using @Stereotypes</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-eclipse-integration.html">Eclipse Integration</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/ipojo-extender-configuration.html">Configuring iPOJO's Extender</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-faq.html">FAQ</a></li>
                                        <li class="divider"></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/how-to-write-your-own-handler.html">Handler development</a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/how-to-use-ipojo-manipulation-metadata.html">Manipulation Metadata </a></li>
                                        <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/dive-into-the-ipojo-manipulation-depths.html">Dive into the iPOJO Manipulation depths</a></li>
                                        <li><a href="http://felix.apache.org/ipojo/api/1.12.1">Javadoc</a></li>
                                    </ul>
                                </li>
                            </ul>
                        </li>

                        <li class="dropdown" id="tools-menu">
                            <a class="dropdown-toggle" data-toggle="dropdown" href="#">Tools <b class="caret"></b></a>
                            <ul class="dropdown-menu" id="swatch-menu">
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-ant-task.html">Ant Task</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-maven-plug-in.html">Maven Plugin</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-arch-command.html">Architecture commands</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/apache-felix-ipojo-online-manipulator.html">Online Manipulator</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-webconsole-plugin.html">Webconsole plugin</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-karaf-feature.html">Apache Karaf Features</a></li>
                            </ul>
                        </li>

                        <li class="dropdown" id="community-menu">
                            <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community <b class="caret"></b></a>
                            <ul class="dropdown-menu" id="swatch-menu">
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/ipojo-support.html">Support</a></li>
                                <li><a href="http://www.apache.org/">ASF</a></li>
                                <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                                <li><a href="http://www.apache.org/foundation/thanks.html">Sponsors</a></li>
                            </ul>
                        </li>

                        <li class="dropdown" id="misc-menu">
                            <a class="dropdown-toggle" data-toggle="dropdown" href="#">Misc <b class="caret"></b></a>
                            <ul class="dropdown-menu" id="swatch-menu">
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-supportedvms.html">Supported JVMs</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-supportedosgi.html">Supported OSGi Implementations</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/articles-and-presentations.html">Article & Presentations</a></li>
                                <li><a href="/documentation/subprojects/apache-felix-ipojo/developing-camel-mediators-with-ipojo.html">Developping Camel mediators with iPOJO</a></li>
                            </ul>
                        </li>
                    </ul>
                    <ul class="nav pull-right" id="main-menu-right">
                        <li><a rel="tooltip" target="_blank" href="http://felix.apache.org">Apache Felix <i class="icon-share-alt"></i></a></li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

    <div class="container">
        <div class="content">
            <style type="text/css">
/* The following code is added by mdx_elementid.py
   It was originally lifted from http://subversion.apache.org/style/site.css */
/*
 * Hide class="elementid-permalink", except when an enclosing heading
 * has the :hover property.
 */
.headerlink, .elementid-permalink {
  visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<h1 id="introspection-and-architecture">Introspection and Architecture<a class="headerlink" href="#introspection-and-architecture" title="Permanent link">&para;</a></h1>
<p><em>The architecture feature allows obtaining an architectural / component view of your systems. It exposes a snapshot of the present instances &amp; factories, the state of these instances... Moreover; iPOJO defines an 'arch' command displaying this architecture in Felix. You need to install <a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-arch-command.html">the arch command</a>.</em></p>
<div class="toc">
<ul>
<li><a href="#introspection-and-architecture">Introspection and Architecture</a><ul>
<li><a href="#reflection-on-component-instances">Reflection on component instances</a></li>
<li><a href="#metadata">Metadata</a></li>
<li><a href="#the-arch-command">The "arch" command</a></li>
<li><a href="#technical-information">Technical information</a></li>
</ul>
</li>
</ul>
</div>
<h2 id="reflection-on-component-instances">Reflection on component instances<a class="headerlink" href="#reflection-on-component-instances" title="Permanent link">&para;</a></h2>
<p>The architecture feature does "reflection" on the iPOJO containers. It gathers information about the component (state, class name ...), requirement (state, multiple, optional ...), provided services (state, properties) ... Each handler can participate to the architecture. This information allows you to know why an instance does not start, or why the component does not publish / provide a service.</p>
<h2 id="metadata">Metadata<a class="headerlink" href="#metadata" title="Permanent link">&para;</a></h2>
<p>The architecture (i.e. instance introspection) is activated by default. To disable it, you need to add an attribute <code>architecture="false"</code> to the component element:</p>
<div class="codehilite"><pre><span class="nt">&lt;component</span> <span class="na">classname=</span><span class="s">&quot;org.apache.felix.ipojo.hello.impl.HelloServiceImpl&quot;</span> <span class="na">architecture=</span><span class="s">&quot;false&quot;</span><span class="nt">&gt;</span>
</pre></div>


<p>By default, the architecture feature is enabled.</p>
<h2 id="the-arch-command">The "arch" command<a class="headerlink" href="#the-arch-command" title="Permanent link">&para;</a></h2>
<p>The Gogo commands are the following:</p>
<ul>
<li><code>ipojo:instances</code> (or just <code>instances</code>) lists the instances and state</li>
<li><code>ipojo:instance $instance_name</code> (or just <code>instance $instance_name</code>) displays the complete information about the specified $instance_name</li>
<li><code>ipojo:factories</code> (or just <code>factories</code>) lists the available public factories</li>
<li><code>ipojo:factory $factory_name</code> (or just <code>factory $factory_name</code>) displays complete information about the factory $factory_name</li>
<li><code>ipojo:handlers</code> (or just <code>handlers</code> lists available handlers</li>
</ul>
<p>For example:</p>
<div class="codehilite"><pre><span class="nv">$ </span>instances
Instance ArchCommand -&gt; valid
Instance spell.english.EnglishDictionary-0 -&gt; valid
Instance spell.checker.SpellCheck-0 -&gt; valid
Instance spell.gui.SpellCheckerGui-0 -&gt; valid

<span class="nv">$ </span>instance spell.checker.SpellCheck-0                                    
instance component.type<span class="o">=</span><span class="s2">&quot;spell.checker.SpellCheck&quot;</span> <span class="nv">state</span><span class="o">=</span><span class="s2">&quot;valid&quot;</span> <span class="nv">bundle</span><span class="o">=</span><span class="s2">&quot;8&quot;</span> <span class="nv">name</span><span class="o">=</span><span class="s2">&quot;spell.checker.SpellCheck-0&quot;</span>
    handler <span class="nv">state</span><span class="o">=</span><span class="s2">&quot;valid&quot;</span> <span class="nv">name</span><span class="o">=</span><span class="s2">&quot;org.apache.felix.ipojo.handlers.dependency.DependencyHandler&quot;</span>
        requires <span class="nv">optional</span><span class="o">=</span><span class="s2">&quot;false&quot;</span> <span class="nv">aggregate</span><span class="o">=</span><span class="s2">&quot;false&quot;</span> <span class="nv">state</span><span class="o">=</span><span class="s2">&quot;resolved&quot;</span> binding-policy<span class="o">=</span><span class="s2">&quot;dynamic&quot;</span> <span class="nv">specification</span><span class="o">=</span><span class="s2">&quot;spell.services.DictionaryService&quot;</span>
    handler <span class="nv">state</span><span class="o">=</span><span class="s2">&quot;valid&quot;</span> <span class="nv">name</span><span class="o">=</span><span class="s2">&quot;org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler&quot;</span>
        provides service.id<span class="o">=</span><span class="s2">&quot;36&quot;</span> <span class="nv">state</span><span class="o">=</span><span class="s2">&quot;registered&quot;</span> <span class="nv">specifications</span><span class="o">=</span><span class="s2">&quot;[spell.services.SpellChecker]&quot;</span>
            property <span class="nv">value</span><span class="o">=</span><span class="s2">&quot;spell.checker.SpellCheck&quot;</span> <span class="nv">name</span><span class="o">=</span><span class="s2">&quot;factory.name&quot;</span>
            property <span class="nv">value</span><span class="o">=</span><span class="s2">&quot;spell.checker.SpellCheck-0&quot;</span> <span class="nv">name</span><span class="o">=</span><span class="s2">&quot;instance.name&quot;</span>
    handler <span class="nv">state</span><span class="o">=</span><span class="s2">&quot;valid&quot;</span> <span class="nv">name</span><span class="o">=</span><span class="s2">&quot;org.apache.felix.ipojo.handlers.architecture.ArchitectureHandler&quot;</span>
</pre></div>


<p>More info on the <code>arch</code> command are available <a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-arch-command.html">here</a>.</p>
<h2 id="technical-information">Technical information<a class="headerlink" href="#technical-information" title="Permanent link">&para;</a></h2>
<p>In fact, when a component enables the architecture introspection, its container exposes an <code>Architecture</code> service. Any architecture requester can obtain information about the instance. For example, the arch command requests all the architecture services and prints the information.</p>
        </div>
    </div>

    <hr/>

    <div class="container">
        <footer id="footer">
            <div class="row">
                <div class="trademarkFooter span7">
                Apache Felix, Felix, Apache, the Apache feather logo, and the Apache Felix project
                logo are trademarks of The Apache Software Foundation. All other marks mentioned
                may be trademarks or registered trademarks of their respective owners.
                </div>
                <div class="timestamp span3 offset2">
                Rev. 1700393 by cziegeler on Tue, 1 Sep 2015 06:04:06 +0000
                </div>
            </div>
        </footer>
    </div>
</body>

<script type="text/javascript">
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>

<script type="text/javascript">
    try{
        var pageTracker = _gat._getTracker("UA-1518442-4");
        pageTracker._trackPageview();
    } catch(err) {}
</script>

</html>
