Lightbend Activator

Akka-camel / CXF / Weather web services integration

Activator will be EOL-ed on May 24, 2017.

We’re making it easier and simpler for developers to get started with Lightbend technologies. This unfortunately means that future releases of Play, Akka and Scala will no longer include Activator support, and Lightbend’s Activator server will be decommissioned by the end of 2017. Instead of supporting Activator to create and set up development projects, we'll be supporting standard Giter8 templates for sbt users and Maven archetypes for Maven users. So going forward,

To create new Lightbend projects

Instead of using the Activator command, make sure you have sbt 0.13.13 (or higher), and use the “sbt new” command, providing the name of the template. For example, “$ sbt new akka/hello-akka.g8”. You can find a list of templates here.

Also, as a convenience, the Lightbend Project Starter allows you to quickly create a variety of example projects that you just unzip and run.

To create new templates

If you want to create new templates, you can now do that in Giter8.

To migrate templates from Activator to Giter8

If you created Activator templates in the past, please consider migrating them to Giter8 with this simple process.

Akka-camel / CXF / Weather web services integration

June 6, 2014
scala akka cxf weather ws camel scaladays2014

This is an example of how to integrate Weather WS with a powerful ESB such as Camel via its akka module.

How to get "Akka-camel / CXF / Weather web services integration" on your computer

There are several ways to get this template.

Option 1: Choose akka-camel-cxf-weather in the Lightbend Activator UI.

Already have Lightbend Activator (get it here)? Launch the UI then search for akka-camel-cxf-weather in the list of templates.

Option 2: Download the akka-camel-cxf-weather project as a zip archive

If you haven't installed Activator, you can get the code by downloading the template bundle for akka-camel-cxf-weather.

  1. Download the Template Bundle for "Akka-camel / CXF / Weather web services integration"
  2. Extract the downloaded zip file to your system
  3. The bundle includes a small bootstrap script that can start Activator. To start Lightbend Activator's UI:

    In your File Explorer, navigate into the directory that the template was extracted to, right-click on the file named "activator.bat", then select "Open", and if prompted with a warning, click to continue:

    Or from a command line:

     C:\Users\typesafe\akka-camel-cxf-weather> activator ui 
    This will start Lightbend Activator and open this template in your browser.

Option 3: Create a akka-camel-cxf-weather project from the command line

If you have Lightbend Activator, use its command line mode to create a new project from this template. Type activator new PROJECTNAME akka-camel-cxf-weather on the command line.

Option 4: View the template source

The creator of this template maintains it at

Option 5: Preview the tutorial below

We've included the text of this template's tutorial below, but it may work better if you view it inside Activator on your computer. Activator tutorials are often designed to be interactive.

Preview the tutorial


This template encourages to use akka-camel module for supporting EIP(Enterprise Integration Patterns).

In this example It will be shown how to request weather information to CDYNE weather public web service

It mainly has 3 methods:

  • GetCityForecastByZIP: Allows you to get your City Forecast Over the Next 7 Days, which is updated hourly. U.S. Only
  • GetCityWeatherByZIP: Allows you to get your City's Weather, which is updated hourly. U.S. Only
  • GetWeatherInformation: Gets Information for each WeatherID

The way to interact with these services is available at its WSDL document

JAXB annotated classes

Due to the interaction with the web server must be done with XML, and just to avoid writing a lot of boilerplate, we will use the support that JAXB gives us. With CXF wsdl2java tool we are able to generate JAXB annotated Java classes using the WSDL document we talked about before

This can be achieved by executing this:

			wsdl2java -client -d  -p  -autoNameResolution `

Once these classes are generated, we're able to use them as sendable objects to camel endpoint.

Camel producer

Akka allows to integrate very easily with its camel module. In this example we're going to show how to implement an akka actor that receives 'weather objects' (let's call that way to the instances of the earlier generated classes) as requests and it will respond with some other 'weather objects'.

Main parts of this actor are:

  • Camel extension: It should be called only once, to start camel module in our Akka system
  • URI: The endpoint uri where the target web service can be found
  • Receive method: This actor will wait for `WheatherMessage`s, that are mainly composed by a body and some headers. Once a message of this kind is received, it will be decomposed and forwarded to camel endpoint, waiting syncrhonously for the result, that will be sent to some responseMail we've declared before (like a sink).

The code looks like this:

class MyProducerActor(responseMail: ActorRef) extends Actor {
  import helpers._

  val camel = CamelExtension(context.system)

  val uri = "cxf:" +

  def receive = {

    case WeatherMessage(body, headers) =>
      camel.template.requestBodyAndHeaders(uri, body, headers) match {

        case Response(List(awd: ArrayOfWeatherDescription)) => responseMail ! awd

        case Response(List(wr: WeatherReturn)) => responseMail ! wr

        case Response(List(fr: ForecastReturn)) => responseMail ! fr