[[WhyismyprocessornotshowingupinJConsole-WhyismyprocessornotshowingupinJConsole]]
= Why is my processor not showing up in JConsole?

Not every processor is managed, and thus not all are visible in
JConsole.

A processor must implement the `org.apache.camel.Service` to be managed.
Most EIP processors do this.
For example, the minor ones such as `setHeader` do not and thus are not
visible in JConsole.

From *Camel 2.6* onwards your custom `Processor` should use the Spring
JMX annotations (for *Camel 2.9* onwards see the tip box below). Just
add `@ManagedResource` to the class, and the other annotations for the
attributes and operations. Then Camel will automatically use those when
the processor is being registered in JMX.

\{snippet:id=e1|lang=java|title=Custom
processor|url=camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedCustomProcessorTest.java}

The same applies when using beans in your routes.

[source,java]
----
include::{examplesdir}/core/camel-management/src/test/java/org/apache/camel/management/ManagedCustomProcessorTest.java[tags=e1]
----

Camel 2.9 onwards provides Camel's own JMX annotations

Notice that from Camel 2.9 onwards its encouraged to use the
`@ManagedResource`, `@ManagedAttribute` and `@ManagedOperation` from the
`org.apache.camel.api.management` package. This allows your custom code
to not depend on Spring JARs anymore.
