[[Service-Activator]]
= Service Activator

Camel supports the
https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessagingAdapter.html[Service Activator]
from the xref:enterprise-integration-patterns.adoc[EIP patterns] book.

How can an application design a service to be invoked both via various messaging technologies and via non-messaging techniques?

image::eip/MessagingAdapterSolution.gif[image]

Design a Service Activator that connects the messages on the channel to the service being accessed.

Camel has several endpoint components that support the Service Activator from the EIP patterns.

Components like  xref:components::bean-component.adoc[Bean] and xref:components::bean-component.adoc[CXF]
provide a a way to bind the message exchange to a Java interface/service where the route defines the
endpoints and wires it up to the bean.

In addition you can use the xref:bean-integration.adoc[Bean Integration] to wire messages
to a bean using annotation, or even xref:hiding-middleware.adoc[hide all the middleware]
behind a plain Java interface.

== Sample

Here is a simple example of using a Direct endpoint to create a messaging interface
to a POJO Bean service.

Using Java DSL

[source,java]
----
from("direct:invokeMyService")
  .to("bean:myService");
----

Using the XML DSL

[source,xml]
----
<route>
  <from uri="direct:invokeMyService"/>
  <to uri="bean:myService"/>
</route>
----
