16.01.2014 Views

Diploma Thesis Santiago Gómez Sáez - IAAS

Diploma Thesis Santiago Gómez Sáez - IAAS

Diploma Thesis Santiago Gómez Sáez - IAAS

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6. Implementation<br />

The HTTP endpoint configuration is described in the xbean.xml file of the SU, and its XML<br />

format complies the Spring specification. The XBeanDeployerMT class extends the original<br />

BaseXBeanDeployer class in ServiceMix, which performs the loading of the endpoint properties,<br />

and the creation and configuration of the deployed endpoint. The XBeanDeployerMT created in<br />

Muhler’s work provides the operations which inject tenant information in the endpoint’s URI<br />

during the deployment process [Muh12]. We modify such operations in order to inject tenant<br />

and user information in the endpoint’s URI during the endpoint creation. The HTTP consumer<br />

and provider endpoints are described in the HttpConsumerEndpoint and HttpProviderEndpoint<br />

respectively. The former implements the necessary operations for accepting incoming HTTP<br />

requests to ServiceMix-mt, while the latter implements the operations to communicate with an<br />

external HTTP server. Both endpoints are created on a Jetty server, which provides an interface<br />

for sending HTTP requests, and listening on a specific port for incoming HTTP requests.<br />

Therefore, the endpoints process incoming, and outgoing requests. Request messages are<br />

marshaled and demarshaled into or from the NMF, a message exchange is created, and the<br />

response message is correlated with the initial request.<br />

As described in Chapter 3, the different NoSQL Cloud data store provider products available<br />

nowadays belong to a specific NoSQL family, but the naming the Cloud providers use to<br />

identify the storage structures is different. We address this issue in Chapter 5, but we find<br />

further issues in its communication protocol. Although most of the NoSQL Cloud data store<br />

providers, e.g. Amazon [Amaa], Google Cloud Storage [Gooc], provide a REST interface for<br />

accessing their stores, the HTTP content and header values are not standardized between the<br />

providers. For this reason, they provide their users their Java SDKs for accessing the Cloud<br />

services. Operations on the driver’s API create the JSON over HTTP requests. Furthermore,<br />

MongoDB [10G] does not provide a REST interface, but there are several external projects<br />

which create an Jetty HTTP server, and transform the HTTP requests into parameters of the<br />

Mongo Java SDK. For these reason we are not able to provide a standardized marshaling<br />

interface in the HTTP JBI BC for all the Cloud data store providers, but we concentrate on the<br />

three which we mention before.<br />

1 POST / HTTP/1.1<br />

2 host: dynamodb.us-east-1.amazonaws.com<br />

3 x-amz-date: Mon, 16 Jan 2012 17:49:52 GMT<br />

4 x-amz-target: DynamoDB_20111205.CreateTable<br />

5 Authorization: AWS4-HMAC-SHA256 Credential=AccessKeyID/20120116/us-east-1/dynamodb/<br />

aws4_request,SignedHeaders=host;x-amz-date;x-amz-target,Signature=145<br />

b1567ab3c50d929412f28f52c45dbf1e63ec5c66023d232a539a4afd11fd9<br />

6 content-type: application/x-amz-json-1.0<br />

7 content-length: 23<br />

8 connection: Keep-Alive<br />

9<br />

10<br />

11 {"RequestItems":<br />

12 {"highscores":<br />

13 {"Keys":<br />

14 [{"HashKeyElement":{"S":"Dave"}},<br />

15 {"HashKeyElement":{"S":"John"}},<br />

16 {"HashKeyElement":{"S":"Jane"}}],<br />

70

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!