Diploma Thesis Santiago Gómez Sáez - IAAS
Diploma Thesis Santiago Gómez Sáez - IAAS
Diploma Thesis Santiago Gómez Sáez - IAAS
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