Sie sind auf Seite 1von 7

This DZone Refcard is brought to you by...

brought to you by...

#140
Get More Refcardz! Visit refcardz.com

Mule 3:
CONTENTS INCLUDE:
n
About Mule
n
Mule XML
n
Messages

Simplifying SOA
n
Connectivity
n
Modules
n
Hot Tips and more...
By John D’Emic
• Connector definitions.
ABOUT MULE
• Global configuration elements like endpoints,
transformers and notification listeners.
Mule is the world’s most widely used open-source integration
platform and Enterprise Services Bus (ESB). Mule is designed to • Flows, patterns and services.
support high-performance, multi-protocol transactions between Flows
heterogeneous systems and services. It provides the basis Flows, new to Mule 3, provide a free-form method of
for service-oriented architecture. It is lightweight and can run orchestrating message processing in Mule. A flow consists of a
standalone or embedded directly in your application. message source, typically an inbound-endpoint, followed by a
sequence of message processors.
This Refcard covers the use of Mule 3. If you are a new user, it will
serve as a handy reference when building your integration flows
in Mule. If you are an existing user, especially of Mule 2, it will
help ease your transition into using Mule 3.

MULE XML

The programming model for Mule is XML using namespaces


that provide a DSL authoring environment to orchestrate your
integration applications. The diagram below demonstrates the
structure of a typical Mule configuration.

<?xml version=”1.0” encoding=”UTF-8”?>


<mule xmlns=”http://www.mulesoft.org/schema/mule/core”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:vm=”http://www.mulesoft.org/schema/mule/vm”
xmlns:jms=”http://www.mulesoft/org/schema/mule/jms”
xmlns:file=”http://www.mulesoft.org/schema/mule/file”
xsi:schemaLocation=”
http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/3.1/mule.xsd
http://www.mulesoft.org/schema/mule/vm
http://www.mulesoft.org/schema/mule/vm/3.1/mule-vm.xsd
http://www.mulesoft.org/schema/mule/jms
http://www.mulesoft.org/schema/mule/jms/3.1/mule-jms.xsd
http://www.mulesoft.org/schema/mule/file
http://www.mulesoft.org/schema/mule/file/3.1/mule-file.xsd
“>

<description>Demonstrate Mule Configuration Elements</description>

<jms:connector name=”jmsConnector”
connectionFactory-ref=”connectionFactory”
username=”guest”
password=”guest”/>

<file:connector name=”fileConnector” streaming=”true”/>


Mule 3: Simplifying SOA

<flow name=”Route messages dynamically using a message property”>


<vm:inbound-endpoint path=”input”/>
<vm:outbound-endpoint path=”#[header:INBOUND:destination-queue]”/>
</flow>

<simple-service name=”random-number-service”
address=”http://localhost:8080/rest”
component-class=”com.mulesoft.refcard.
RandomNumberResource”
type=”jax-rs”/>
</mule>

Mule XML consists of the following:

• An opening mule element containing the namespaces


used in the configuration.
• A description of the purpose of the configuration.

DZone, Inc. | www.dzone.com


2 Mule 3: Simplifying SOA

Message Processor Properties


Message Processors are used in flows to route, transform, filter Properties, also called headers, are metadata associated with a
and perform business logic on messages. MessageProcessor is message. Mule, the various transports and you the developer
a single method interface implemented by almost everything can add properties to a message. Examples of message
in a Flow. properties are JMS message headers, HTTP response headers
or Mule-specific headers like MULE_MESSAGE_ID. The following
Exception Strategy
table contains examples of message properties set by Mule.
An exception strategy can be added to the end of the flow to
route errors that occur during the flow’s execution. Property Description
MULE_MESSAGE_ID A GUID assigned to the message.
Hot Optionally end a flow with an outbound router or MULE_CORRELATION_ID A GUID assigned to a group of messages.
Tip endpoint to send to another flow or external service.
MULE_CORRELATION_ The amount of messages expected in the
GROUP_SIZE correlation group.

Sending a JMS Message with a Flow MULE_CORRELATION_ The order of a correlation group.
SEQUENCE
Sending a JMS message is easy with a flow. Here’s how you can
use a flow to read files from a directory and send their payload to MULE_SESSION A property that holds encoded session data.
a JMS queue. Scopes
<flow name=”File to JMS Message”>
Properties are scoped differently depending on when they’re
<file:inbound-endpoint path=”data/files”> set or accessed during message processing. The following table
<byte-array-to-string-transformer/>
</file:inbound-endpoint> contains the available scopes.
<jms:outbound-endpoint queue=”output”/>
</flow>
Scope Description
The file:inbound-endpoint will read files from the given path, inbound Set by message sources, typically an inbound-endpoint.
transforming their contents into Strings. The content is then outbound Any properties in this scope will get attached to an outbound
passed as JMS TextMessages to the “output” queue. or response message. Properties set by the message-
properties-transformer default to the outbound scope.
Using Patterns session Properties in the session scope are available between flows and
Mule Configuration Patterns, extending the Enterprise services without explicit propagation.
Integration Patterns, encapsulate common integration paradigms invocation Used internally by Mule and lasts only for an invocation of a
in a compact configuration format. flow or service.

Creating a RESTful Web Service


A RESTful web service can be quickly created using the simple- CONNECTIVITY
service pattern.

<simple-service name=”random-number-service” Mule connects to over 100 applications, protocols and APIs. Mule
address=”http://localhost:8080/rest”
componentclass=”org.refcard.RandomNumberResource”
endpoints enable connectivity to protocols such as JMS, HTTP
type=”jax-rs”/> and JDBC. Cloud Connectors enable connectivity to applications
and social media like SalesForce and Twitter.
In this case, we are using the simple-service pattern to expose
a JAX-RS resource that returns a random number from an HTTP Endpoints
GET request. Messages can be received with an inbound endpoint and sent
with an outbound endpoint. Inbound and outbound endpoints
Flows and patterns now supersede services, are configured using the XML namespace prefix of the transport.
which were the predominant integration paradigm Connectors
Hot in Mule 2. While services will always be supported,
Tip you should favor flows and patterns for new
A connector is used to configure connection properties for an
endpoint. Most endpoints don’t require a connector. However,
applications. some (like JDBC or JMS) do require connector configuration, as
we’ll see below.
MESSAGES Configuring an SMTP connector
The following example illustrates how an SMTP connector is
Messages encapsulate data entering and leaving Mule. The configured.
content of a message is called its payload. The payload is
<smtp:connector name=”smtpConnector”
typically a Serializable Java class, an InputStream or an array fromAddress=”user@foo.com”
of bytes. bccAddresses=”admins@foo.com”
subject=”A Message from Mule” />
Attachments
A message can have zero or more mime attachments in addition
to the payload. These can be used to associate files, documents
and images with the message.

DZone, Inc. | www.dzone.com


3 Mule 3: Simplifying SOA

The SMTP connector allows you to specify properties that will be


MODULES
shared across SMTP endpoints. In this case, the connector sets
the “from” and “bcc” addresses as well as the subject of the
messages. A connector is referenced by its name, allowing you to Modules extend Mule’s functionality by providing namespace
define multiple connectors for the same transport. support for a certain set of message processors. The following
table contains some of the modules provided by Mule.
Endpoints can be generically referenced using an endpoint URI
as well as having specific XML configuration elements. Module Description

The following table describes some common endpoints supplied JSON JSON support, including marshalling, transformation and
filtering.
by Mule.
CXF SOAP support via Apache CXF.
Endpoint Description Jersey JAX-RS support for publishing RESTful services.
http://[host]:[port]:[path]?[query] Send and receive data over HTTP. Scripting Support for JSR-223 compliant scripting language, like Groovy
ajax://[channel] Pub / Sub to browser apps using or Rhino.
CometD. XML XML support, including XML marshalling, XPath and XSLT support.
file://[path] Read and write files.
The full list of available modules is available in the official Mule
ftp://[user]@[host]:[port]/[path] Read and write files over FTP or SFTP.
documentation. Additional modules are available on MuleForge.
jms://[type]:[destination]?[options] Full support for JMS topics and queues.
smtp://[user]@[host]:[port] Send email over SMTP.
Hot Use MuleForge.org to locate community-written
imap://[user]@[host]:[port]/[folder] Receive email via IMAP. Tip extensions.
jdbc://[sql query] Send and receive data from a SQL
database.
vm://[path] Uses memory-based queues to send
Bridging REST to SOAP
between services and flows. The following demonstrates how the CXF module can be used to
bridge a RESTful service to a SOAP service.
The full list of transports is available in the Mule documentation.
<flow name=”HTTP to SOAP Bridge”>
Use exchange patterns to define how a message is <http:inbound-endpoint host=”localhost” port=”8080”
path=”service”/>
recieved by an endpoint. For endpoints that generate <cxf:jaxws-client
Hot a response(synchronous) use the request-response, clientClass=”com.mulesoft.refcard.FooService”
Tip for asynchronous endpoints use the one-way
wsdlLocation=”classpath:/wsdl/hello_world.wsdl”
operation=”greetMe”/>
</flow>
exchange pattern.
The inbound-endpoint accepts HTTP POST requests to
Cloud Connectors http://localhost:8080/service. The POST data is then sent to the
Cloud connectors enable easy access to SaaS, social media and SOAP service defined by the CXF jaxws-client.
infrastructure services such as Amazon WS and Facebook. Routers
These connectors can be used anywhere in a flow to invoke a Routers implement the Enterprise Integration patterns (EIP) and
remote service. A cloud connector usually has a ‘config’ element determine how messages are directed in a flow.
where service credentials are set and then one or more elements The following table contains commonly used routers.
that invoke service methods. The following demonstrates how the
Twitter cloud connector can be used to post a tweet: Router Description
all Sends the message to each endpoint.
curl –-data “status=go mule!” http://localhost
<twitter:config name=”twitter” format=”JSON” choice Sends the message to the first endpoint that matches.
consumerKey=”${twitter.consumer.key}”
consumerSecret=”${twitter.consumer.secret}” recipient-list Sends the message to all endpoints in the expression
oauthToken=”${twitter.access.token}” evaluated with the given evaluator.
oauthTokenSecret=”${twitter.access.secret}” />
round-robin Each message received by the router is sent to alternating
<flow name=”updateStatusFlow”>
endpoints.
<http:inbound-endpoint host=”localhost” port=”80”/>
<twitter:update-status wire-tap Sends a copy of the message to the supplied endpoint
status=”#[header:INBOUND:status]”/>
</flow>
then passes the original message to the next processor in
the chain.
We can now post a tweet to the inbound-endpoint with curl: first-successful Sends the message to the first endpoint that doesn’t throw
an exception or evaluates the failureExpression to true.
curl –-data “status=go mule!” http://localhost
splitter Will split the current message into parts using an
Polling expression or just split elements of a List.

Mule has a poll tag that allows data from a remote service to be aggregator Will collect related messages and create a message
collection.
received periodically. To get updates from a Twitter timeline:

<flow name=”getStatusFlow”>
Transformers
<poll> Transformers modify the message and pass it to the next
<twitter:public-timeline />
</poll> message in the chain.
</flow>

DZone, Inc. | www.dzone.com


4 Mule 3: Simplifying SOA

The following table contains commonly used transformers. In addition to custom components, Mule provides the following
utility components.
Name Description
message-properties- Adds and removes properties from a message, Component Description
transformer optionally specifying their scope. <log-component> Logs messages.
byte-array-to-string- Many basic type transformers are included. <echo-component> Returns and passes along.
transformer
<test:component> Helps test message flows (in the test namespace).
xml:jaxb-xml-to-object- Transforms JAXB objects explicitly.
transformer
auto-transformer Will automatically find the best transformer for a Hot Try to avoid implementing Callable to keep your
specified type. Tip component code decoupled from Mule’s API.
xml:xslt_transformer Transforms a message using the given stylesheet.
json:object-to-json- Transforms message payloads to and from JSON.
transformer Filters
gzip-compress- Compresses and uncompress message payloads
Filters selectively pass messages to the next processor in
transformer using gzip. the chain.
encrypt-transformer Encrypts and decrypts message payloads. The following table contains commonly used filters.

Name Description
Endpoints often include their own transformers. expression-filter Passes messages using any of the expressions
Hot JMS for instance, allows transformers to convert languages supported by Mule.
Tip message payloads to and from JMS messages regex-filter Decides what messages to pass by applying the
autormatically. supplied regular expression to the message payload.
payload-type-filter Passes messages only of the given type.
Components custom-filter Specifies the class of a custom filter that implements
Components allow business logic to be executed in a flow. Any the org.mule.api.routing.filter.Filter interface.
Java object or script can be used as a component. Components and-filter, or-filter, Logic filters that work with other filters.
are configured by either identifying the class or providing a not-filter

reference to a Spring bean for dependency injection. Using Filters with XPath
The following snippet shows how a class called MyService can be The following example demonstrates how the xpath-filter can
configured as a component using a class and via dependency- be used to only pass certain XML documents. In this case, only
injection via Spring. order XML documents containing a certain ZIP code are allowed
to pass.
<bean class=”com.acmesoft.service.MyService”/>
<flow name=”Filter messages using the XPath filter”>
<flow name=”test”> <vm:inbound-endpoint path=”input”/>
<http:inbound-endpoint host=”foo.com”> <mulexml:xpath-filter pattern=”/order/zipCode”
<component> expectedValue=”11209”/>
<spring-object bean=”myService”/> <vm:outbound-endpoint path=”output”/>
</component> </flow>
</flow>

Mule will use the type of the payload of the message being EXPRESSIONS
processed to determine what method to invoke. It’s often
necessary, however, to explicitly specify the method to invoke. Mule provides a rich expression language to evaluate data at
Entry point resolvers are used for this purpose. The following runtime using the message currently being processed.
table contains a list of available resolvers.
Evaluators
Resolver Description The following are commonly used expression evaluators.
method-entry-point-resolver Resolves the method using the specified
name. Name Description
property-entry-point-resolver Resolves the method using the specified xpath Query the message payload using XPath
message property.
payload Use the message’s payload for evaluation.
custom-entry-point-resolver A Java class that implements
map-payload A Java class that implements org.mule.api.model.
org.mule.api.model.EntryPointResolver
EntryPointResolver or extends org.mule.model.resolvers.
or extends org.mule.model.resolvers.
AbstractEntryPointResolver.
AbstractEntryPointResolver.
regex Perform a regular expression evaluation against a message
The use of entry point resolvers allows you to use POJO’s as payload.
components, decoupling your code from Mule. Sometimes, bean Evaluates the message payload as a JavaBean.
you will want access to the MuleMessage or MuleContext when groovy Use Groovy to evaluate an expression. Mule provides
processing a message. In cases like this, you can implement certain variables, like payload, properties and
the org.mule.api.lifecycle.Callable interface. Callable includes a muleContext, to the script context to aid in evaluation.
single method, onCall, to implement that provides direct access header:[scope] Return the given header for a specific scope, as
to the MuleMessage when the method is invoked. demonstrated below.

DZone, Inc. | www.dzone.com


5 Mule 3: Simplifying SOA

Routing Messages Dynamically @ContainsTransformerMethods


The following illustrates how a message can be dynamically public class LowercaseTransformer {

routed to a JMS queue passed on a message header. @Transformer


public String toLowercase(String string) {
return string.toLowerCase();
<flow>
}
<vm:inbound-endpoint path=”input”/>
}
<jms:outbound-endpoint
queue=”#[header:INBOUND:destination-queue]”/>
</flow> This class can be used a message source in a flow to generate a
timestamp every minute.
This example accepts a message off the given VM queue. The
outbound-endpoint uses the header evaluator to dynamically Implementing a Component with Annotations
route the message to the queue defined by an inbound message Components can also be implemented with annotations. The
property called “destination-queue”. following class demonstrates how the @Schedule annotation can
be used to periodically generate data.
ANNOTATIONS
public class HeartbeatMessageSource {
@Schedule(interval = 60000)
public long pulse() {
Annotation support, introduced in Mule 3, further simplifies Mule return new Date().getTime();
configuration by reducing or eliminating the XML needed to }
}
configure components and transformers.
This class can be used as a message source in a flow to generate
The following table contains a list of commonly used annotations. a timestamp every minute.
Name Type Description
HANDLING ERRORS
@Transformer Method Indicates the method
can be used as a
transformer. Exceptions thrown during message processing are handled by
@ContainsTransformerMethods Class Indicates the annotated exception strategies. The default-exception-strategy, configured
class contains at the end of the flow, allows you to route the exception to
transformation methods. another endpoint for handling.
@Schedule Method Schedules a method for
periodic execution.
Sending Messages to a DLQ
Messages that can’t be delivered, for instance if an exception is
@Lookup Field, Looks up the annotation
Parameter field or parameter for thown during their processing, it can be sent to a Dead Letter
dependency injection Queue (DLQ). The following example will send any errors that
from the Mule registry. occur in the flow to the “dlq” VM queue.
@Payload Parameter Injects the payload into
(component or a method. If the param <flow>
<vm:inbound-endpoint path=”input”/>
transformer) type is different from the
<vm:outbound-endpoint
payload type, Mule will path=”#[header:INBOUND:destination-queue]”/>
attempt to transform it. <default-exception-strategy>
<vm:outbound-endpoint path=”dlq”/>
@InboundHeaders Parameter Injects any inbound </default-exception-strategy>
(component or headers at runtime. Can </flow>
transformer) be filtered by name and
used to inject individual Building upon the previous example, the default-exception-
headers. strategy will route messaging failures (for example, when the
@OutboundHeaders Parameter Injects a Map of destination-queue inbound header is null) to the VM queue
(component or outbound headers that named “dlq”.
transformer) can be used to add
headers to the outgoing
message.
Exceptions routed by the default-exception-
strategy are instances of org.mule.api.message.
@Inbound Attachments Parameter Injects any inbound Hot ExceptionMessage, which gives you access to the
(component or
transformer)
attachments at runtime.
Can be filtered by name.
Tip Exception that was thrown along with the payload of
@Outbound Attachments Parameter Injects a Map of the message.
(component or outbound attachments
transformer) that can be used to
add attachments to the FUNCTIONAL TESTING
message.

You can use the Mule 3 annotation support to quickly implement Functional testing is an important part of testing Mule
transformers and components. applications. Mule provides a helper class, org.mule.tck.
FunctionalTestCase, which you can extend to simplify setting up
Implementing a Transformer with Annotations
a TestCase.
Here’s an example of a transformer that lowercases a message’s
payload.

DZone, Inc. | www.dzone.com


6 Mule 3: Simplifying SOA

Functionally Testing a Flow


public class XPathFilterFunctionalTestCase extends FunctionalTestCase Hot The test-component can be used to simulate remote
{
@Override
Tip services during functional testing.
protected String getConfigResources() {
return “xpath-filter-config.xml”;
}
CONCLUSION
public void testMessageNotFiltered() throws Exception {
String xml = “<order><zipCode>11209</zipCode></order>”;
This Refcard is just a glimpse into what you can do with Mule 3.
MuleClient client = new MuleClient(muleContext); Consult the full documentation on the MuleSoft website. The
client.dispatch(“vm://input”, xml, null);
full code and test cases for the examples used in this Refcard are
assertNotNull(client.request(“vm://output”, 15000). available on GitHub:
getPayloadAsString());
} https://github.com/johndemic/essential-mule-refcard
public void testMessageIsFiltered() throws Exception {
String xml = “<order><zipCode>11210</zipCode></order>”;

MuleClient client = new MuleClient(muleContext);


client.dispatch(“vm://input”, xml, null);

assertNull(client.request(“vm://output”, 5000));
}
}

ABOUT THE AUTHOR RECOMMENDED BOOK


John D’Emic is a software developer and author. Mule in Action covers Mule fundamentals and
He has used Mule extensively since 2006 and is best practices. It is a comprehensive tutorial that
the “despot” of the MongoDB transport. He also starts with a quick ESB overview and then gets
co-authored Mule in Action with David Dossot in Mule to work. It dives into core concepts like
2009. You can read about what he’s up to in his sending, receiving, routing and transforming data.
blog: johndemic.blogspot.com. Next, it gives you a close look at Mule’s standard
components and how to roll out custom ones.
You’ll pick up techniques for testing, performance tuning, BPM
orchestration and even a touch of Groovy scripting.

#82

Browse our collection of over 100 Free Cheat Sheets


Get More Refcardz! Visit refcardz.com

CONTENTS INCLUDE:


About Cloud Computing
Usage Scenarios Getting Started with

Aldon Cloud#64Computing

Underlying Concepts
Cost
by...

Upcoming Refcardz
youTechnologies ®

Data
t toTier
brough Comply.
Platform Management and more... borate.

Chan
ge. Colla By Daniel Rubio

on:
dz. com

grati s
also minimizes the need to make design changes to support
CON
ABOUT CLOUD COMPUTING one time events. TEN TS
INC

s Inte -Patternvall

HTML LUD E:
Basics
Automated growthHTM
ref car

Web applications have always been deployed on servers & scalable


L vs XHT technologies

nuou d AntiBy Paul M. Du



Valid
ation one time events, cloud ML
connected to what is now deemed the ‘cloud’. Having the capability to support

Continuous Delivery
Usef

ContiPatterns an

computing platforms alsoulfacilitate


Open the gradual growth curves
Page Source

Vis it

However, the demands and technology used on such servers faced by web applications.Structure Tools

Core
Key ■

Structur Elem
E: has changed substantially in recent years, especially with al Elem ents
INC LUD gration the entrance of service providers like Amazon, Google and Large scale growth scenarios involvingents
specialized
NTS and mor equipment
rdz !

ous Inte Change

HTML
CO NTE Microsoft. es e... away by
(e.g. load balancers and clusters) are all but abstracted
Continu at Every e chang
About ns to isolat
relying on a cloud computing platform’s technology.
Software i-patter
space

CSS3

n
fca

e Work
Build
riptio
and Ant
Desc
These companies have a Privat
are in long deployed
trol repos
itory
webmana applications
ge HTM
L BAS

Patterns Control lop softw n-con to


ing and making them ICSplatforms support data
re Re


that adapt and scale
Deve
les toto large user
a versio bases, In addition, several cloud computing
ment ize merg
rn
Version e... Patte it all fi minim le HTM
r

Manage s and mor e Work knowledgeable in amany ine to


mainl aspects related tos multip
cloud computing. tier technologies that Lexceed the precedent set by Relational
space Comm and XHT

ref ca

Build tice Privat lop on that utilize HTML


Database Systems (RDBMS): MLReduce,
is usedMap are web service APIs,

Prac Deve code lines a system


Build as thescalethe By An
sitory of work prog foundati
Ge t Mo

Repo
This Refcard active
will introduce are withinto you to cloud riente computing, with an
d units
RATION etc. Some platforms ram support large grapRDBMS deployments.

The src
dy Ha
softw
e ine loping and Java s written in hical on of
INTEG attribute
task-o it all
softwar emphasis onDeve es by
Mainl these
ines providers, so youComm can better understand
also rece JavaScri user interfac web develop and the rris
Vis it

OUS

NoSQL
codel chang desc
ding e code Task Level as the
ww w.dzone.com

NTINU of buil trol what it is a cloudnize


line Policy sourc es as aplatform
computing can offer your ut web output ive data pt. Server-s e in clien ment. the ima alt attribute ribes whe
T CO cess ion con Code Orga it chang e witho likew mec ide lang t-side ge is describe re the ima
ABOU the pro ject’s vers applications. and subm with uniqu
e name
are from
sourc CLOUD COMPUTING ise hanism. fromAND
PLATFORMS web unavaila
was onc use HTML The eme pages and uages like ge file
it
(CI) is Nested s alte
rd z!

a pro evel Comm the build softw um ble. rnate can be


gration ed to Task-L Label ies to
build minim UNDERLYING CONCEPTS
e and XHT rging use HTM PHP tags text that
blem activit the bare standard a very loos Tags found,
ous Inte committ to a pro USAGE SCENARIOS ate all
Autom configurat
ion cies to t
ization, ely-defi
ML as
thei
Ajax
tech L can is disp
Continu ry change cannot be (and freq
nden ymen layed
tion ned lang r visual eng nologies
Re fca

Build al depe need


a solu ineffective
deplo t
Label manu d tool the same for stan but as if
(i.e., ) nmen overlap
eve , Build stalle
t, use target enviro Amazon EC2: Industry standard it has
software and uag
virtualization ine. HTM uen
with terns ns (i.e. problem ated ce pre-in whether dards e with b></ , so <a>< tly are) nest
has bec become
Autom Redu ymen a> is
ory. via pat ticular d deploEAR) in each very little L

Android Application Development


reposit ed anti -patter par s that Pay only cieswhat you consume
tagge or Amazon’s cloud
the curr you cho platform
computing is heavily
ome mor
based on
e
fine. b></
a></
ed insid
solution duce ent stan ose to writ
nden each WAR t
lain the For es more importa e
not lega each othe
and ge (e.g. b> is
be exp text) “fi x” ns are
al Depeapplication deployment
Web until
nden a few years
t librari agonmen
t enviro was similar that will software
industry standard and virtualization app
e HTM technology. nt,
d to to pro Minim packa
dard
Mo re

CI can ticular con all depe all targe


L or XHT arent. Reg the HTM r. Tags
es use Anti-patter they tend es, but can l, but
rity s will
a par etim s. ,
to
Binar most phone services:
y Integ Centr
alizeplans with le that
late fialloted resources, ts with an and XHT simplify all help ML, ardless L VS
XH <a><
ctic temp you TML b></
hes som proces in the end bad pra enting your
in nt nmen
incurred cost whether e a single based on MLaare prov to be underst of
Creatsuchareresources were consumed orthenot.
geme t enviro othe
Virtualization
muchallows physical piece ofr hardware HTML
approac ed with the cial, but, implem
cy Mana nt targe es to actually web cod ide a solid anding
essarily of the has
nden rties
d to Depe prope into differe chang
utilized by multiple operating simplerThis allows
function systems. ing.resourcesfoundati job adm been arou
efi not nec compare
itting
associat to be ben
er
Ge t

late Verifi te builds e comm commo than Fortuna


are n Cloud computing asRun remo
it’s known etoday has changed this.
befor ality on irab nd
They they for
etc. ly, that
elem CPU) tohas
(e.g. bandwidth,nmemory, be mov
allocated exclusively totely expecte
Temp
job has some time
Build
lts whe
ually,
appear effects. rm a
Privat y, contin nt team Every entsinstances. ed to CSS
used
to be, HTML d. Earl
ed resu gration
The various resourcesPerfo consumed by webperio applications
dicall (e.g.
opme pag
individual operating system because Brow
ser man y HTML expand . Whi
adverse unintend Inte Stage
bandwidth,
d Builds
memory, Repo
CPU)
sitory
are tallied
Build
ration on a per-unit r to devel
basis common e (HTML .
had ed le it has
e ous Integ CI serve or web dev ufac very limit far done
produc Continu Refcard
e Build rm an ack from extensio .) All are XHTML
elopers turers add
more
e.com

its
tern. term
Privat
(starting from zero) by Perfo all majorated cloud
feedb computing platforms. on As a user of Amazon’s
n. HTM EC2 essecloud shares platform, you are
ntiallycomputing result ed man ed layout
than
anybody
the pat gration of the e, this as autom as they
occur based proc certain is came supp
” cycl such Build Send builds
assigned esso
an operating L system
files shouin theplai
same elem
way as on allents
hosting The late a lack of stan up with clev y competi
ous Inte tional use and test concepts
soon n text ort.
ration ors as ion with r
Integ entat
ld not in st web dar er wor ng stan
Continu conven “build include oper
docum
be cr standar kar dar
While
the to the to rate devel
efers ion of CI Gene
Cloud Computing

the not
s on
expand

DZone, Inc.
140 Preston Executive Dr.
Suite 100
Cary, NC 27513
DZone communities deliver over 6 million pages each month to 888.678.0399
more than 3.3 million software developers, architects and decision 919.678.0300
makers. DZone offers something for everyone, including news,
Refcardz Feedback Welcome
$7.95

tutorials, cheat sheets, blogs, feature articles, source code and more.
refcardz@dzone.com
“DZone is a developer’s dream,” says PC Magazine.
Sponsorship Opportunities
Copyright © 2011 DZone, Inc. All rights reserved. No part of this publication may be reproduced, stored in a
retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, sales@dzone.com Version 1.0
without prior written permission of the publisher.

Das könnte Ihnen auch gefallen