Open for Big Data: when Mule meets the elephant

Reading Time: 9 minutes

Picture an architecture where production data gets painstakingly replicated to a very expensive secondary database, where, eventually, yesterday’s information gets analyzed. What’s the name for this “pattern”? If you answered “Traditional Business Intelligence (BI)”, you’ve won a rubber Mule and a warm handshake at the next Mule Summit!

As the volume of data to analyze kept increasing and the need to react in real-time became more pressing, new approaches to BI came to life: the so-called Big Data problem was recognized and a range of tools to deal with it started to emerge.

Apache Hadoop is one of these tools. It’s “an open-source software framework that supports data-intensive distributed applications. It supports the running of applications on large clusters of commodity hardware. Hadoop was derived from Google’s MapReduce and Google File System (GFS) papers” (Wikipedia). So how do you feed real-time data into Hadoop? There are different ways but one consists in writing directly to its primary data store named HDFS (aka Hadoop Distributed File System). Thanks to its Java client, this is very easily done in simple scenarios. If you start throwing concurrent writes and the need to organize data in specific directory hierarchies, its a good time to bring Mule into the equation.

In this post we will look at how Mule’s HDFS Connector can help you write time series data in HDFS, ready to be map-reduced to your heart’s content.

Continue reading

Mule ESB with the Oracle Database and IBM WebSphere MQ – Use case 2 of 3

Reading Time: 23 minutes

In Part 1 of this three part blog, we created a simple message flow in Mule Studio exposed as a basic HTTP service that retrieves employee data from an Oracle HR database and returns it in JSON format. JSON is a standard format that is very popular among web and mobile applications. Let’s now take a look at how to easily turn this into a SOAP web service, which is a standard in use in a lot of internal SOA and on-premise integration projects. We will do this without any coding. We will first generate a SOAP web service using a top-down approach with an existing WSDL and then graphically map the database table structure to the expected message format of the SOAP web service (Note: Setup steps are at the end of each part for the necessary software. Part 1 of this blog needs to be completed.)

Part 2: Service enabling the Oracle HR database with SOAP and XML.

Now let’s turn the HTTP/JSON service we created in Part 1 into a SOAP web service by using a top-down approach of generating services from an existing WSDL. Download the files HRData.xsd and HRDataService.wsdl and place them in the root folder of your hrdataservice project.

Back in the message flow, add a SOAP component right after the HTTP End Point.

Double-click the SOAP Component and click Generate from WSDL. Specify the WSDL File HRDataService.wsdl and a package name of com.mulesoft.hrdemo. This will generate the Java classes required for your web service implementation.

On the Service Class, browse for the Interface called HRDataService (com.mulesoft.hrdemo.HRDataService).

Double click the Get Employee Data database component and in the Queries tab, edit the Query. Replace #[message.inboundProperties[’empid’]] with #[message.payload.employeeID]. We will now get the employee ID parameter from the SOAP message instead of the HTTP URL.

Next, let’s do a transformation using the Data Mapper. Drag the Data Mapper component to the end of the flow and call it Employee_DB_to_SOAP.

For the Input, specify a Map type and choose User Defined.

Enter the following fields to match the Employee database table structure.

For the output, select POJO and locate the class HRDataResponse. This class was generated from the WSDL.

Map the source and target elements as follows:

Save your project. The Mule ESB runtime will dynamically pick up the changes and redeploy, which you should see from the Console output.

Start a browser and enter the URL: http://localhost:8081/hrdataservice?wsdl to see the WSDL document.

Start SOAP UI and create a new project called HRDataService with the WSDL URL: http://localhost:8081/hrdataservice?wsdl

On the SOAP Request, enter an Employee ID of 100 and click the icon to execute the web service.

You should see the employee data for Employee 100 (Steven King) in the SOAP response.

Summary

As you can see, it is very easy to create services with Mule Studio – whether plain HTTP Services with JSON or SOAP-based Web Services. It is very easy as well to transform data to and from heterogeneous data formats like that of a database table structure and XML. In this example, we were able to accomplish these without writing any code by utilizing the SOAP component for top-down web service generation and the Data Mapper for transformations. For more on Mule, check out: http://www.mulesoft.com/.

Setup Steps

Part 1

SOAP UI

In Part 1 of this three part blog, we created a simple message flow in Mule Studio exposed as a basic HTTP service that retrieves employee data from an Oracle HR database and returns it in JSON format. JSON is a standard format that is very popular among web and mobile applications. Let’s now take a look at how to easily turn this into a SOAP web service, which is a standard in use in a lot of internal SOA and on-premise integration projects. We will do this without any coding. We will first generate a SOAP web service using a top-down approach with an existing WSDL and then graphically map the database table structure to the expected message format of the SOAP web service (Note: Setup steps are at the end of each part for the necessary software. Part 1 of this blog needs to be completed.)

Part 2: Service enabling the Oracle HR database with SOAP and XML.

Now let’s turn the HTTP/JSON service we created in Part 1 into a SOAP web service by using a top-down approach of generating services from an existing WSDL. Download the files HRData.xsd and HRDataService.wsdl and place them in the root folder of your hrdataservice project.

Back in the message flow, add a SOAP component right after the HTTP End Point.

Double-click the SOAP Component and click Generate from WSDL. Specify the WSDL File HRDataService.wsdl and a package name of com.mulesoft.hrdemo. This will generate the Java classes required for your web service implementation.

On the Service Class, browse for the Interface called HRDataService (com.mulesoft.hrdemo.HRDataService).

Double click the Get Employee Data database component and in the Queries tab, edit the Query. Replace #[message.inboundProperties[’empid’]] with #[message.payload.employeeID]. We will now get the employee ID parameter from the SOAP message instead of the HTTP URL.

Next, let’s do a transformation using the Data Mapper. Drag the Data Mapper component to the end of the flow and call it Employee_DB_to_SOAP.

For the Input, specify a Map type and choose User Defined.

Enter the following fields to match the Employee database table structure.

For the output, select POJO and locate the class HRDataResponse. This class was generated from the WSDL.

Map the source and target elements as follows:

Save your project. The Mule ESB runtime will dynamically pick up the changes and redeploy, which you should see from the Console output.

Start a browser and enter the URL: http://localhost:8081/hrdataservice?wsdl to see the WSDL document.

Start SOAP UI and create a new project called HRDataService with the WSDL URL: http://localhost:8081/hrdataservice?wsdl

On the SOAP Request, enter an Employee ID of 100 and click the icon to execute the web service.

You should see the employee data for Employee 100 (Steven King) in the SOAP response.

Summary

As you can see, it is very easy to create services with Mule Studio – whether plain HTTP Services with JSON or SOAP-based Web Services. It is very easy as well to transform data to and from heterogeneous data formats like that of a database table structure and XML. In this example, we were able to accomplish these without writing any code by utilizing the SOAP component for top-down web service generation and the Data Mapper for transformations. For more on Mule, check out: http://www.mulesoft.com/.

Setup Steps

Part 1

SOAP UI

In Part 1 of this three part blog, we created a simple message flow in Mule Studio exposed as a basic HTTP service that retrieves employee data from an Oracle HR database and returns it in JSON format. JSON is a standard format that is very popular among web and mobile applications. Let’s now take a look at how to easily turn this into a SOAP web service, which is a standard in use in a lot of internal SOA and on-premise integration projects. We will do this without any coding. We will first generate a SOAP web service using a top-down approach with an existing WSDL and then graphically map the database table structure to the expected message format of the SOAP web service (Note: Setup steps are at the end of each part for the necessary software. Part 1 of this blog needs to be completed.)

Part 2: Service enabling the Oracle HR database with SOAP and XML.

Now let’s turn the HTTP/JSON service we created in Part 1 into a SOAP web service by using a top-down approach of generating services from an existing WSDL. Download the files HRData.xsd and HRDataService.wsdl and place them in the root folder of your hrdataservice project.

Back in the message flow, add a SOAP component right after the HTTP End Point.

Double-click the SOAP Component and click Generate from WSDL. Specify the WSDL File HRDataService.wsdl and a package name of com.mulesoft.hrdemo. This will generate the Java classes required for your web service implementation.

On the Service Class, browse for the Interface called HRDataService (com.mulesoft.hrdemo.HRDataService).

Double click the Get Employee Data database component and in the Queries tab, edit the Query. Replace #[message.inboundProperties[’empid’]] with #[message.payload.employeeID]. We will now get the employee ID parameter from the SOAP message instead of the HTTP URL.

Next, let’s do a transformation using the Data Mapper. Drag the Data Mapper component to the end of the flow and call it Employee_DB_to_SOAP.

For the Input, specify a Map type and choose User Defined.

Enter the following fields to match the Employee database table structure.

For the output, select POJO and locate the class HRDataResponse. This class was generated from the WSDL.

Map the source and target elements as follows:

Save your project. The Mule ESB runtime will dynamically pick up the changes and redeploy, which you should see from the Console output.

Start a browser and enter the URL: http://localhost:8081/hrdataservice?wsdl to see the WSDL document.

Start SOAP UI and create a new project called HRDataService with the WSDL URL: http://localhost:8081/hrdataservice?wsdl

On the SOAP Request, enter an Employee ID of 100 and click the icon to execute the web service.

You should see the employee data for Employee 100 (Steven King) in the SOAP response.

Summary

As you can see, it is very easy to create services with Mule Studio – whether plain HTTP Services with JSON or SOAP-based Web Services. It is very easy as well to transform data to and from heterogeneous data formats like that of a database table structure and XML. In this example, we were able to accomplish these without writing any code by utilizing the SOAP component for top-down web service generation and the Data Mapper for transformations. For more on Mule, check out: http://www.mulesoft.com/.

Setup Steps

Part 1

SOAP UI

In Part 1 of this three part blog, we created a simple message flow in Mule Studio exposed as a basic HTTP service that retrieves employee data from an Oracle HR database and returns it in JSON format. JSON is a standard format that is very popular among web and mobile applications. Let’s now take a look at how to easily turn this into a SOAP web service, which is a standard in use in a lot of internal SOA and on-premise integration projects. We will do this without any coding. We will first generate a SOAP web service using a top-down approach with an existing WSDL and then graphically map the database table structure to the expected message format of the SOAP web service (Note: Setup steps are at the end of each part for the necessary software. Part 1 of this blog needs to be completed.)

Part 2: Service enabling the Oracle HR database with SOAP and XML.

Now let’s turn the HTTP/JSON service we created in Part 1 into a SOAP web service by using a top-down approach of generating services from an existing WSDL. Download the files HRData.xsd and HRDataService.wsdl and place them in the root folder of your hrdataservice project.

Back in the message flow, add a SOAP component right after the HTTP End Point.

Double-click the SOAP Component and click Generate from WSDL. Specify the WSDL File HRDataService.wsdl and a package name of com.mulesoft.hrdemo. This will generate the Java classes required for your web service implementation.

On the Service Class, browse for the Interface called HRDataService (com.mulesoft.hrdemo.HRDataService).

Double click the Get Employee Data database component and in the Queries tab, edit the Query. Replace #[message.inboundProperties[’empid’]] with #[message.payload.employeeID]. We will now get the employee ID parameter from the SOAP message instead of the HTTP URL.

Next, let’s do a transformation using the Data Mapper. Drag the Data Mapper component to the end of the flow and call it Employee_DB_to_SOAP.

For the Input, specify a Map type and choose User Defined.

Enter the following fields to match the Employee database table structure.

For the output, select POJO and locate the class HRDataResponse. This class was generated from the WSDL.

Map the source and target elements as follows:

Save your project. The Mule ESB runtime will dynamically pick up the changes and redeploy, which you should see from the Console output.

Start a browser and enter the URL: http://localhost:8081/hrdataservice?wsdl to see the WSDL document.

Start SOAP UI and create a new project called HRDataService with the WSDL URL: http://localhost:8081/hrdataservice?wsdl

On the SOAP Request, enter an Employee ID of 100 and click the icon to execute the web service.

You should see the employee data for Employee 100 (Steven King) in the SOAP response.

Summary

As you can see, it is very easy to create services with Mule Studio – whether plain HTTP Services with JSON or SOAP-based Web Services. It is very easy as well to transform data to and from heterogeneous data formats like that of a database table structure and XML. In this example, we were able to accomplish these without writing any code by utilizing the SOAP component for top-down web service generation and the Data Mapper for transformations. For more on Mule, check out: http://www.mulesoft.com/.

Setup Steps

Part 1

SOAP UI

Change the Studio Category of your DevKit Component

Reading Time: 3 minutes

Anyone that has used DevKit to write a Mule extension and then wanted to add it to Studio, may have notice that the extension will appear under the Cloud Connectors category in the palette. This is not a problem when the extension is actually a Cloud Connector, but is sort of a problem when it was something else (for example a component like the LDAP connector). This is not an issue anymore since DevKit 3.3.2, as you can now use the @Category annotation at class definition level (Connector or Module) to select under which category you want your extension to be listed in:

It is important to mention that:

  • You can only add the connector to one of the existing Studio categories (this means you cannot define your own category)
  • The values for name and description attributes of @Category need to have specific values (please don’t be creative), as shown in the following list:
    • Endpoints: org.mule.tooling.category.endpoints
    • Scopes: org.mule.tooling.category.scopes
    • Components: org.mule.tooling.category.core
    • Transformers: org.mule.tooling.category.transformers
    • Filters: org.mule.tooling.category.filters
    • Flow Control: org.mule.tooling.category.flowControl
    • Error Handling: org.mule.tooling.ui.modules.core.exceptions
    • Cloud Connectors (DEFAULT): org.mule.tooling.category.cloudconnector
    • Miscellaneous: org.mule.tooling.ui.modules.core.miscellaneous
    • Security: org.mule.tooling.category.security

Too ‘meh’ to build the category annotation yourself? Just copy/paste from the following gist:

Hope this tip helps you place your Mule extensions under the right Studio category.

Announcing CloudHub availability in Europe

Reading Time: 2 minutes

I’m thrilled to announce the availability of CloudHub in Europe. With this announcement, we’re extending the industry-leading CloudHub platform to address the needs of our European customers with dedicated computing resources located in the European Union.

European companies are adopting the cloud faster than ever — Salesforce recently announced that Europe was their fastest growing region last year. However, one of the primary obstacles to using cloud services in the EU is complying with the EU data protection directive which regulates the processing of personal data. With the availability of CloudHub in Europe, it’s now significantly easier for European organizations to comply with these regulations by ensuring data never leaves the EU.

Another challenge which European companies are facing is the latency of data travelling back and forth between the US and the EU. With CloudHub resources located in Europe, companies are able to access data more quickly and publish APIs under a new eu.cloudhub.io domain.

Please contact your MuleSoft representative to have the European region enabled for your CloudHub account today.

MuleSoft named best place to work in 2013

Reading Time: 8 minutes

MuleSoft has been named one of the “Best Places to Work” by the SF Business Times. The Times’ rankings are based on anonymous, voluntary surveys which rank their employer in areas such as teamwork, retention, co-workers, manager effectiveness, trust in senior leadership, benefits and overall job satisfaction.

So what is it about MuleSoft that makes it such a great place to innovate and work? I joined MuleSoft about 6 months ago as VP of Engineering, so I have been able to look at things from a newcomer’s perspective.

As I reflect on what I’ve seen over the past few months, it’s become clear that although the company has been growing by leaps and bounds over the past year, we’ve focused on maintaining the culture and company DNA that makes us unique and special. Here are a few examples…

Hire Great People
We have a huge challenge ahead of us – to disrupt a $500 billion industry – and it’s going to take some of the smartest and highly motivated people in the world to do it. It starts with every person who comes in the door. We constantly look for people that are curious, creative, deep problem solvers and results oriented. It’s great to be in a company where everyone around you raises the bar.

Open 
Transparency is key for any company that wants their employees make great decisions and feel like they are key to the success. Revenue, metrics and goals are shared with the whole company, all the time. Weekly all-hands meetings allow employees to ask any questions on their minds and get direct and honest answers. We maintain an open workspace without any offices – our CEO sits at a desk next to our engineers and marketing team, making it a very open and casual environment. The final aspect of openness is on a personal level – employees at MuleSoft are direct with each other and speak honestly and openly, there is no politics – all of this leads to an environment of trust.

Feel Empowered
All our employees feel empowered to make decision and take initiative. Growing at the pace we do we come across new and unique challenges every day. Everyone feels empowered to personally remove obstacles and get things done.

Be Creative
We look for creative people, who enjoy a challenge and coming up with unique solutions to really hard problems. From engineering to marketing to sales I see people constantly coming up with new ideas and novel ways of solving problems I haven’t seen before. Creativity and innovation seems to happen on every level across the company.

Engineering culture
We were founded as an open source company and we value technology innovation, team collaboration and building great software products. Our developers get to work on some of the most challenging and complex problems including creating products that power integration at some of the biggest companies in the world and building next generation cloud platforms.

We hold meetups and hackathons many times a year where our engineers brainstorm new ideas, use bleeding edge technologies and work together to improve our products and take them in new and unique directions. In our hackathon last month we had over 18 projects and ideas that our team worked on over a 24 hour period, many of which will end up in our product suite or being adopted by engineering. The ideas ranged from a raspberry-pi enabled robotic car running Mule to a version of our Cloud ESB supporting HA using Redis on AWS to a speech-to-text translation engine to route calls to the correct support team.

Our engineers also get a lot of opportunity to travel and meet customers at company events and receive feedback first hand from the customers using our products.

Enjoy the ride
We believe it’s possible to be ambitious, hard working and game change an industry while also having a fun time doing it. Whether it’s all-company white water rafting trips, weekly happy hours, cooking each other waffles for breakfast or creating fun videos that make us laugh every time we see them over a beer.

There are over 150,000 developers using our platform and over 3,500 companies worldwide. Not many companies of our size have those statistics and scale behind them. Yet we feel like we’re only getting started. It’s great to be doing this in a company that has now been voted one of the best places to work, again.

If you think this may be the best place to wok for you, we are hiring.