<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Marco Tello</title>
	<atom:link href="https://marcotello.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://marcotello.com</link>
	<description>SOA, Microservices and DevOps</description>
	<lastBuildDate>Fri, 08 Jul 2016 21:06:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.5.32</generator>
	<item>
		<title>Using XML Namespaces</title>
		<link>https://marcotello.com/xml/using-xml-namespaces/</link>
		<comments>https://marcotello.com/xml/using-xml-namespaces/#comments</comments>
		<pubDate>Thu, 30 Jan 2014 21:00:36 +0000</pubDate>
		<dc:creator><![CDATA[Marco Tello]]></dc:creator>
				<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">https://marcotello.com/?p=534</guid>
		<description><![CDATA[In this post we will review why the namespace is so important in an XML document. Also we&#8217;ll discuss the common names for a namespace. &#160; What is a Namespace? XML namespace is a unique identifier that holds information about the creator of the document, in other words it is like a signature. This identifier could avoid problems when we want to reuse an XML that somebody else wrote. Let’s take a look at the following example: [crayon-68608648d7ed8372939130/] This is<a href="https://marcotello.com/xml/using-xml-namespaces/" class="more_link more_link_dots"> &#8230; </a>]]></description>
				<content:encoded><![CDATA[<p>In this post we will review why the namespace is so important in an XML document. Also we&#8217;ll discuss the common names for a namespace.</p>
<div style="overflow: auto; width: 99%; text-align: center; border: 3px solid #D2D4D5; -moz-border-radius: 15px; border-radius: 15px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; background-color: #ffffff;"><a href="https://marcotello.com/wp-content/uploads/2014/01/xml-logo.png"><img class="aligncenter size-full wp-image-548" src="https://marcotello.com/wp-content/uploads/2014/01/xml-logo.png" alt="xml-logo" width="500" height="300" srcset="https://marcotello.com/wp-content/uploads/2014/01/xml-logo.png 500w, https://marcotello.com/wp-content/uploads/2014/01/xml-logo-300x180.png 300w" sizes="(max-width: 500px) 100vw, 500px" /></a></div>
<p><span id="more-534"></span></p>
<p>&nbsp;</p>
<h3>What is a Namespace?</h3>
<p>XML namespace is a unique identifier that holds information about the creator of the document, in other words it is like a signature. This identifier could avoid problems when we want to reuse an XML that somebody else wrote. Let’s take a look at the following example:</p><pre class="crayon-plain-tag">&lt;roomService&gt;
     &lt;hotelid&gt;SUNSET-3&lt;/hotelid&gt;
     &lt;room&gt;1001&lt;/room&gt;
     &lt;guest&gt;
          &lt;name&gt;Fred&lt;/name&gt;
          &lt;lastName&gt;Davis&lt;/lastName&gt;
     &lt;/guest&gt;
     &lt;order&gt;
          &lt;item&gt;Cheese Burger&lt;/item&gt;
          &lt;id&gt;203&lt;/id&gt;
          &lt;price&gt;10.99&lt;/price&gt;
          &lt;quantity&gt;1&lt;/quantity&gt;
     &lt;/order&gt;
&lt;/roomService&gt;</pre><p>This is an XML of a reservation, very simple, but let’s suppose that we have to merge the reservation XML with the room service XML:</p><pre class="crayon-plain-tag">&lt;roomService&gt;
     &lt;hotelid&gt;SUNSET-3&lt;/hotelid&gt;
     &lt;room&gt;1001&lt;/room&gt;
     &lt;guest&gt;
          &lt;name&gt;Fred&lt;/name&gt;
          &lt;lastName&gt;Davis&lt;/lastName&gt;
     &lt;/guest&gt;
     &lt;order&gt;
          &lt;item&gt;Cheese Burger&lt;/item&gt;
          &lt;id&gt;203&lt;/id&gt;
          &lt;price&gt;10.99&lt;/price&gt;
          &lt;quantity&gt;1&lt;/quantity&gt;
     &lt;/order&gt;
&lt;/roomService&gt;</pre><p>At the beginning it looks fine, but hold on, take a closer look. We have a collision in 6 and 12 lines, both contain the same element with a different content. The same happens with the element in lines 7 and 13, but in this case they have the same content.</p><pre class="crayon-plain-tag">&lt;reservation id="123456789"&gt;
     &lt;arrivingDate&gt;03-09-2012&lt;/arrivingDate&gt;
     &lt;departureDate&gt;03-15-2012&lt;/departureDate&gt;
     &lt;guestName&gt;Fred&lt;/guestName&gt;
     &lt;guestLastName&gt;Davis&lt;/guestLastName&gt;
     &lt;hotelID&gt;03&lt;/hotelID&gt;
     &lt;room&gt;1001&lt;/room&gt;
     &lt;oceanView&gt;true&lt;/oceanView&gt;
     &lt;smokingArea&gt;false&lt;/smokingArea&gt;
&lt;/reservation&gt;
&lt;roomService&gt;
     &lt;hotelID&gt;SUNSET-3&lt;/hotelID&gt;
     &lt;room&gt;1001&lt;/room&gt;
     &lt;guest&gt;
          &lt;name&gt;Fred&lt;/name&gt;
          &lt;lastName&gt;Davis&lt;/lastName&gt;
     &lt;/guest&gt;
     &lt;order&gt;
          &lt;item&gt;Cheese Burger&lt;/item&gt;
          &lt;id&gt;203&lt;/id&gt;
          &lt;price&gt;10.99&lt;/price&gt;
          &lt;quantity&gt;1&lt;/quantity&gt;
     &lt;/order&gt;
&lt;/roomService&gt;</pre><p>&nbsp;</p>
<h3>Avoiding Collisions in Namespaces</h3>
<p>To avoid these collisions we have to identify the XML fragments using a namespace.</p><pre class="crayon-plain-tag">&lt;res:reservation id="123456789" xmlns:res=”https://marcotello.com/hotel/reservation”&gt;
     &lt;res:arrivingdate&gt;03-09-2012&lt;/res:arrivingdate&gt;
     &lt;res:departuredate&gt;03-15-2012&lt;/res:departuredate&gt;
     &lt;res:guestname&gt;Fred&lt;/res:guestname&gt;
     &lt;res:guestlastname&gt;Davis&lt;/res:guestlastname&gt;
     &lt;res:hotelid&gt;03&lt;/res:hotelid&gt;
     &lt;res:room&gt;1001&lt;/res:room&gt;
     &lt;res:oceanview&gt;true&lt;/res:oceanview&gt;
     &lt;res:smokingarea&gt;false&lt;/res:smokingarea&gt;
&lt;/res:reservation&gt;
&lt;room:roomService xmlns:room=”https://marcotello.com/hotel”&gt;
     &lt;room:hotelid&gt;SUNSET-3&lt;/room:hotelid&gt;
     &lt;room:room&gt;1001&lt;/room:room&gt;
     &lt;room:guest&gt;
          &lt;room:name&gt;Fred&lt;/room:name&gt;
          &lt;room:lastName&gt;Davis&lt;/room:lastName&gt;
     &lt;/room:guest&gt;
     &lt;room:order&gt;
          &lt;room:item&gt;Cheese Burger&lt;/room:item&gt;
          &lt;room:id&gt;203&lt;/room:id&gt;
          &lt;room:price&gt;10.99&lt;/room:price&gt;
          &lt;room:quantity&gt;1&lt;/room:quantity&gt;
     &lt;/room:order&gt;
&lt;/room:roomService&gt;</pre><p>As you can see now the elements with conflicts have different names and they are using a prefix. Notice that the prefix is declared in the root node of the XML fragment.</p>
<p>The correct way to name your namespaces is first using the key word xmlns which means that a namespace is declared.</p><pre class="crayon-plain-tag">xmlns:res=”https://marcotello.com/reservation”</pre><p>Then declare a prefix to refer the namespace in the elements</p><pre class="crayon-plain-tag">xmlns:res=”https://marcotello.com/reservation”</pre><p>And at the end declare an URI to identify your XML fragments in a document, an URI means Uniform Resource Identifier and could be any string of characters that are considered unique, for example:</p><pre class="crayon-plain-tag">https://marcotello.com/hotels/reservation
java.lang
UUID:550e8400-e29b-41d4-a716-446655440000</pre><p>These three URI’s are a fully qualified name for a namespace. According to IETF an URI is a case sensitive sequence of characters from a very limited set: the letters of<br />
the basic Latin alphabet, digits, and a few special characters.</p>
<p>&nbsp;</p>
<h3>Best Practices to Name Your Namespaces</h3>
<p>The best practices state that your namespaces should provide information about the owner of the XML, the most frequently used names are:</p>
<ol>
<li>A unique name to identify your XML, this is not so common in the real world but is useful for tests, like <span style="color: #FE7E00;"><em>ORDERS_XML</em></span>.</li>
<li>The name of an organization or product, like <span style="color: #FE7E00;"><em>Sunset-Hotels</em></span>.</li>
<li>The domain name of an organization or company, this is the most widely used name, it’s simple and very descriptive, like <span style="color: #FE7E00;"><em>com.ibm.xml</em></span>, <span style="color: #FE7E00;"><em>http://www.opentravel.org/OTA/2003/05/common</em></span></li>
</ol>
<p>The last kind of URI is usually the best because you can describe a component in a hierarchical order, lets go back to the example <span style="color: #FE7E00;"><em>https://marcotello.com/hotels/reservation</em></span> as you can see here that reservation belongs to hotels and hotels belong to the domain or the organization, and this an easy way to have an order of the elements that you are representing.</p>
<p>The prefix that refers to your namespace in the document could be anything you like, some parsers don’t allow special characters so the best way is just to choose 3 letters like res. The keywords xmlns and xml are not allowed as prefixes.</p>
<p>A prefix is linked to the namespace with the namespace binding <span style="color: #FE7E00;"><em>xmlns:prefix=”URI”</em></span> like in the example <span style="color: #FE7E00;"><em>xmlns:res=”https://marcotello.com/hotel/reservation”</em></span> res is linked to <span style="color: #FE7E00;"><em>https://marcotello.com/hotel/reservation</em></span> namespace and you can use the prefix in your elements to distinguish as part of it.</p><pre class="crayon-plain-tag">03-09-2012</pre><p>Could be read like this:</p><pre class="crayon-plain-tag">{https://marcotello.com/hotel/reservation} arrivingdate</pre><p>I’m going to list all the best practices for the DeveloperWorks article <span class="normal_text_link"><a href="http://www.ibm.com/developerworks/library/x-nmspace2.html">Plan to use XML namespaces</a></span> written by the XML expert David Marston, which in my opinion is the most complete guide of namespaces best practices:</p>
<p><strong>Planning your namespaces</strong></p>
<ul>
<li>Establish logical and consistent prefix names to boost developer productivity.</li>
<li>Use prefixes everywhere or at least use them on all items except those that are the real content being delivered to the end user.</li>
<li>Apply namespaces to your own vocabulary, even when there is just one.</li>
<li>Treat namespaces as a way to separate or isolate terms that may otherwise seem similar.</li>
<li>When designing two vocabularies that have some elements in common, choose one namespace (possibly separate from the original two) to hold the common items.</li>
<li>Use HTTP URLs for your URIs, without fragment identifiers.</li>
<li>Coordinate URI naming under your domain name just as you do for names of machines on your network and your Web URLs.</li>
<li>Change the namespace URI for every substantive change to the vocabulary, including the addition of new elements forming a strict superset of the old vocabulary.</li>
</ul>
<p><strong>Usage inside XML documents</strong></p>
<ul>
<li>If possible, use one prefix for one namespace throughout all XML documents in a system.</li>
<li>Declare namespaces explicitly within each document, reducing assumptions and dependencies.</li>
<li>Make all namespace declarations up in the start tag of the document element if at all possible.</li>
<li>For W3C-defined elements and attributes, use the prefixes that the W3C uses.</li>
<li>Use the <span style="color: #FE7E00;"><em>xml:lang</em></span> attribute to declare that the content of the element is in a particular natural language.</li>
</ul>
<p><strong>Documentation and conversational usage</strong></p>
<ul>
<li>Refer to a &#8220;namespace declaration&#8221; as distinct from an &#8220;attribute&#8221; when discussing entries in a start tag.</li>
<li>Avoid the term &#8220;namespace name&#8221; or only use it in a context where it&#8217;s clear what you mean.</li>
<li>Use the domain names example.com, example.net, or example.org for examples in your documentation.</li>
</ul>
<p>Following some of these best practices to merge our XML documents, we’ll get something like this:</p><pre class="crayon-plain-tag">&lt;res:reservation id="123456789" xmlns:res=”https://marcotello.com/hotel/reservation” 
xmlns:rs=”https://marcotello.com/hotel”&gt;
     &lt;res:arrivingdate&gt;03-09-2012&lt;/res:arrivingdate&gt;
     &lt;res:departuredate&gt;03-15-2012&lt;/res:departuredate&gt;
     &lt;res:guestname&gt;Fred&lt;/res:guestname&gt;
     &lt;res:guestlastname&gt;Davis&lt;/res:guestlastname&gt;
     &lt;res:hotelid&gt;03&lt;/res:hotelid&gt;
     &lt;res:room&gt;1001&lt;/res:room&gt;
     &lt;res:oceanview&gt;true&lt;/res:oceanview&gt;
     &lt;res:smokingarea&gt;false&lt;/res:smokingarea&gt;
     &lt;rs:roomService&gt;
          &lt;rs:hotelid&gt;SUNSET-3&lt;/rs:hotelid&gt;
          &lt;rs:room&gt;1001&lt;/rs:room&gt;
          &lt;rs:guest&gt;
               &lt;rs:name&gt;Fred&lt;/rs:name&gt;
               &lt;rs:lastName&gt;Davis&lt;/rs:lastName&gt;
          &lt;/rs:guest&gt;
          &lt;rs:order&gt;
              &lt;rs:item&gt;Cheese Burger&lt;/rs:item&gt;
              &lt;rs:id&gt;203&lt;/rs:id&gt;
              &lt;rs:price&gt;10.99&lt;/rs:price&gt;
              &lt;rs:quantity&gt;1&lt;/rs:quantity&gt;
          &lt;/rs:order&gt;
     &lt;/rs:roomService&gt;
&lt;/res:reservation&gt;</pre><p>As you can see namespaces are so important in XML documents because they can avoid collisions between elements with the same name, and also make it possible to catalog information across the enterprise, so next time you have to build an XML consider including a namespace in your root node.</p>
<p>&nbsp;</p>
<h3>Resources:</h3>
<ul>
<li><span class="normal_text_link"><a href="http://www.ibm.com/developerworks/library/x-nmspace2.html">http://www.ibm.com/developerworks/library/x-nmspace2.html</a></span></li>
<li><span class="normal_text_link"><a href="http://www.ibm.com/developerworks/xml/library/x-nmspace/index.html">http://www.ibm.com/developerworks/xml/library/x-nmspace/index.html</a></span></li>
<li><span class="normal_text_link"><a href="http://www.w3.org/XML/">http://www.w3.org/XML/</a></span></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://marcotello.com/xml/using-xml-namespaces/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Receive and Send and Email with the Oracle SOA Suite UMS Adapter</title>
		<link>https://marcotello.com/oracle-soa-suite/receive-and-send-and-email-with-the-oracle-soa-suite-ums-adapter/</link>
		<comments>https://marcotello.com/oracle-soa-suite/receive-and-send-and-email-with-the-oracle-soa-suite-ums-adapter/#comments</comments>
		<pubDate>Mon, 30 Dec 2013 05:42:18 +0000</pubDate>
		<dc:creator><![CDATA[Marco Tello]]></dc:creator>
				<category><![CDATA[Oracle SOA Suite]]></category>

		<guid isPermaLink="false">https://marcotello.com/?p=491</guid>
		<description><![CDATA[In this tutorial we will poll a Gmail account, then once an email comes in to the inbox we&#8217;ll add some text with BPEL and then send it through a different Gmail account with the UMS adapter provided by Oracle SOA Suite. Before we can start first you have to configure the UMS to work with Gmail in the SOA Infra, follow the instructions here. These are the steps that we will follow to process an email through the UMS<a href="https://marcotello.com/oracle-soa-suite/receive-and-send-and-email-with-the-oracle-soa-suite-ums-adapter/" class="more_link more_link_dots"> &#8230; </a>]]></description>
				<content:encoded><![CDATA[<p>In this tutorial we will poll a Gmail account, then once an email comes in to the inbox we&#8217;ll add some text with BPEL and then send it through a different Gmail account with the UMS adapter provided by Oracle SOA Suite.</p>
<div style="overflow: auto; width: 99%; text-align: center; border: 3px solid #D2D4D5; -moz-border-radius: 15px; border-radius: 15px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; background-color: #ffffff;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc0.png"><img class="aligncenter size-full wp-image-523" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc0.png" alt="ums-proc0" width="622" height="222" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc0.png 622w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc0-300x107.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc0-600x214.png 600w" sizes="(max-width: 622px) 100vw, 622px" /></a></div>
<p><span id="more-491"></span></p>
<p>Before we can start first you have to configure the UMS to work with Gmail in the SOA Infra, follow the instructions <span class="normal_text_link"><a href="https://marcotello.com/oracle-soa-suite/configuring-oracle-soa-suite-ums-adapter-with-a-gmail-account/">here</a></span>.</p>
<p>These are the steps that we will follow to process an email through the UMS Adapter.</p>
<ol>
<li><span class="normal_text_link"><a href="#create">Create a new Project in JDeveloper.</a></span></li>
<li><span class="normal_text_link"><a href="#configure">Configure the UMS to Send an Email.</a></span></li>
<li><span class="normal_text_link"><a href="#poll">Poll a Gmail Account.</a></span></li>
<li><span class="normal_text_link"><a href="#add">Add text to the message in BPEL.</a></span></li>
</ol>
<p>&nbsp;</p>
<h3>1.- Create a new Project in JDeveloper.</h3>
<p>Open JDeveloper and create a new generic application &#8211; call it SOA_Projects</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc2.png"><img class="aligncenter wp-image-498" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc2.png" alt="ums-proc2" width="499" height="371" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc2.png 649w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc2-300x222.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc2-600x445.png 600w" sizes="(max-width: 499px) 100vw, 499px" /></a></div>
<p>Follow the wizard and call your project UMSTest and don&#8217;t forget to select SOA as the default project technology</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc3.png"><img class="aligncenter wp-image-500" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc3.png" alt="ums-proc3" width="519" height="390" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc3.png 649w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc3-300x225.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc3-600x450.png 600w" sizes="(max-width: 519px) 100vw, 519px" /></a></div>
<p>&nbsp;</p>
<p>At the end select an Empty Composite and you&#8217;re done.</p>
<p>&nbsp;</p>
<h3>2.- Configure the UMS to Send an Email.</h3>
<p>Drag and drop an UMS Adapter to the External References section.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc4.png"><img class="aligncenter size-full wp-image-501" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc4.png" alt="ums-proc4" width="522" height="361" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc4.png 522w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc4-300x207.png 300w" sizes="(max-width: 522px) 100vw, 522px" /></a></div>
<p>Follow the wizard and set the following values:</p>
<table class="table_gray">
<tbody>
<tr>
<th class="first">Wizard Step</th>
<th>Property</th>
<th class="last">Value</th>
</tr>
<tr>
<td class="first">Service Name</td>
<td></td>
<td class="last"></td>
</tr>
<tr>
<td class="first"></td>
<td>Service Name</td>
<td class="last">EmailSender</td>
</tr>
<tr>
<td class="first">UMS Adapter Connection</td>
<td></td>
<td class="last"></td>
</tr>
<tr>
<td class="first"></td>
<td>Connection JNDI Name</td>
<td class="last">Leave the default (eis/ums/UMSAdapterOutbound)</td>
</tr>
<tr>
<td class="first">Operation</td>
<td></td>
<td class="last"></td>
</tr>
<tr>
<td class="first"></td>
<td>Operation type</td>
<td class="last">Outbound Send Notification</td>
</tr>
<tr>
<td class="first"></td>
<td>Operation Name</td>
<td class="last">SendNotification</td>
</tr>
<tr>
<td class="first"></td>
<td>Receive message ID as a reply</td>
<td class="last">unchecked</td>
</tr>
<tr>
<td class="first">Outbound Notification Details</td>
<td></td>
<td class="last"></td>
</tr>
<tr>
<td class="first"></td>
<td>Type of notification</td>
<td class="first">Email</td>
</tr>
<tr>
<td class="first"></td>
<td>Subject</td>
<td class="last">Test Email</td>
</tr>
<tr>
<td class="first"></td>
<td>From</td>
<td class="last">outgoing@email.com</td>
</tr>
<tr>
<td class="first"></td>
<td>To</td>
<td class="last">some@email.com</td>
</tr>
<tr>
<td class="first">Messages</td>
<td></td>
<td class="last"></td>
</tr>
<tr>
<td class="first"></td>
<td>Message is String type</td>
<td class="last">checked</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h3>3.- Poll a Gmail Account.</h3>
<p>Drag and drop an UMS Adapter to the Exposed Services section.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc5.png"><img class="aligncenter size-full wp-image-502" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc5.png" alt="ums-proc5" width="583" height="237" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc5.png 583w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc5-300x121.png 300w" sizes="(max-width: 583px) 100vw, 583px" /></a></div>
<p>Follow the wizard and set the following values:</p>
<table class="table_gray">
<tbody>
<tr>
<th class="first">Wizard Step</th>
<th>Property</th>
<th class="last">Value</th>
</tr>
<tr>
<td class="first">Service Name</td>
<td></td>
<td class="last"></td>
</tr>
<tr>
<td class="first"></td>
<td>Service Name</td>
<td class="last">EmailReceiver</td>
</tr>
<tr>
<td class="first">UMS Adapter Connection</td>
<td></td>
<td class="last"></td>
</tr>
<tr>
<td class="first"></td>
<td>Connection JNDI Name</td>
<td class="last">Leave the default (eis/ums/UMSAdapterInbound)</td>
</tr>
<tr>
<td class="first">Operation</td>
<td></td>
<td class="last"></td>
</tr>
<tr>
<td class="first"></td>
<td>Operation Type</td>
<td class="last">Inbound: Receive Notification</td>
</tr>
<tr>
<td class="first"></td>
<td>Operation Name</td>
<td class="last">ReceiveNotification</td>
</tr>
<tr>
<td class="first">Inbound Operation Details</td>
<td></td>
<td class="last"></td>
</tr>
<tr>
<td class="first"></td>
<td>Operation Mode</td>
<td class="last">Polling</td>
</tr>
<tr>
<td class="first"></td>
<td>Polling Frequency</td>
<td class="last">5</td>
</tr>
<tr>
<td class="first"></td>
<td>Frequency Unit</td>
<td class="last">seconds</td>
</tr>
<tr>
<td class="first"></td>
<td>Inbound Thread Count</td>
<td class="last">1</td>
</tr>
<tr>
<td class="first">Inbound Notification Details</td>
<td></td>
<td class="last"></td>
</tr>
<tr>
<td class="first"></td>
<td>Type of Notification</td>
<td class="last">Email</td>
</tr>
<tr>
<td class="first"></td>
<td>Email Endpoint Configuration</td>
<td class="last">your_email@account</td>
</tr>
<tr>
<td class="first">Messages</td>
<td></td>
<td class="last"></td>
</tr>
<tr>
<td class="first"></td>
<td>Message is String type</td>
<td class="last">checked</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h3>4.- Add text to the message in BPEL.</h3>
<p>Drag and drop a BPEL Process Component to the Components section.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc6.png"><img class="aligncenter wp-image-503" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc6.png" alt="ums-proc6" width="572" height="301" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc6.png 635w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc6-300x157.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc6-600x315.png 600w" sizes="(max-width: 572px) 100vw, 572px" /></a></div>
<p>Fill in the popup with the default Name and Namespace, select Asynchronous BPEL Process and uncheck Expose as a SOAP service, leave the Input and Output with the default variables.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc7.png"><img class="aligncenter size-full wp-image-506" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc7.png" alt="ums-proc7" width="491" height="395" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc7.png 491w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc7-300x241.png 300w" sizes="(max-width: 491px) 100vw, 491px" /></a></div>
<p>&nbsp;</p>
<p>Connect the EmailReceiver Reference to BPELProcess1 Service in a different Service than the default.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc8.png"><img class="aligncenter size-full wp-image-507" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc8.png" alt="ums-proc8" width="599" height="164" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc8.png 599w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc8-300x82.png 300w" sizes="(max-width: 599px) 100vw, 599px" /></a></div>
<p>then connect BPELProcess1 Reference to EmailSender Service.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc9.png"><img class="aligncenter wp-image-508" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc9.png" alt="ums-proc9" width="572" height="102" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc9.png 636w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc9-300x53.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc9-600x106.png 600w" sizes="(max-width: 572px) 100vw, 572px" /></a></div>
<p>Open BPELProcess1 and delete the Request and the Response Partner Links Connections.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc10.png"><img class="aligncenter size-full wp-image-509" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc10.png" alt="ums-proc10" width="559" height="345" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc10.png 559w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc10-300x185.png 300w" sizes="(max-width: 559px) 100vw, 559px" /></a></div>
<p>Then delete the BPELProcess1 Partner Link.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc11.png"><img class="aligncenter size-full wp-image-510" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc11.png" alt="ums-proc11" width="616" height="301" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc11.png 616w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc11-300x146.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc11-600x293.png 600w" sizes="(max-width: 616px) 100vw, 616px" /></a></div>
<p>Connect the receiveInput Activity to EmailReceiver Partner Link and when the Edit Receive Popup appears leave the default values.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc12.png"><img class="aligncenter wp-image-511" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc12.png" alt="ums-proc12" width="575" height="311" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc12.png 639w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc12-300x161.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc12-600x323.png 600w" sizes="(max-width: 575px) 100vw, 575px" /></a></div>
<p>Connect the callbackClient Activity to EmailSender and leave the default values in the Edit Invoke Popup.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc13.png"><img class="aligncenter wp-image-512" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc13.png" alt="ums-proc13" width="580" height="180" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc13.png 644w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc13-300x93.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc13-600x186.png 600w" sizes="(max-width: 580px) 100vw, 580px" /></a></div>
<p>Edit inputVariable and click in the magnifying glass of the Message Type, select Message Types &gt; Partner Links &gt; EmailReceiver &gt; EmailReceiver.wsdl &gt; Message Types &gt; ReceiveNotification_msg in the Type Chooser Popup.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc14.png"><img class="aligncenter size-full wp-image-513" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc14.png" alt="ums-proc14" width="480" height="892" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc14.png 480w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc14-161x300.png 161w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc14-430x800.png 430w" sizes="(max-width: 480px) 100vw, 480px" /></a></div>
<p>And now edit outputVariable and click in the magnifying glass of the Message Type, select Message Types &gt; Partner Links &gt; EmailSender &gt; EmailSender.wsdl &gt; Message Types &gt; SendNotification_msg in the Type Chooser Popup.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc15.png"><img class="aligncenter size-full wp-image-514" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc15.png" alt="ums-proc15" width="487" height="491" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc15.png 487w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc15-150x150.png 150w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc15-297x300.png 297w" sizes="(max-width: 487px) 100vw, 487px" /></a></div>
<p>Add a new variable and call it emailText</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Then drag and drop an Assign Activity and call it payloadAssign.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc16.png"><img class="aligncenter wp-image-515" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc16.png" alt="ums-proc16" width="583" height="171" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc16.png 648w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc16-300x87.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc16-600x175.png 600w" sizes="(max-width: 583px) 100vw, 583px" /></a></div>
<p>&nbsp;</p>
<p>In the Assign Activity Popup right click in the Drag objects here section in the center and select Expression.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc171.png"><img class="aligncenter wp-image-520" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc171.png" alt="ums-proc17" width="575" height="425" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc171.png 639w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc171-300x221.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc171-600x443.png 600w" sizes="(max-width: 575px) 100vw, 575px" /></a></div>
<p>Create an expression like this <em>concat(bpws:getVariableData(&#8216;inputVariable&#8217;,&#8217;body&#8217;,&#8217;/ns3:message/ns3:payload&#8217;), &#8216; Some text added by BPEL&#8217;)</em>  to add some text at the end of the message. Notice that if you want to extract, evaluate or add text n a different position you may want to use a</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc18.png"><img class="aligncenter size-full wp-image-521" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc18.png" alt="ums-proc18" width="608" height="485" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc18.png 608w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc18-300x239.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc18-600x478.png 600w" sizes="(max-width: 608px) 100vw, 608px" /></a></div>
<p>Drag a line from the expression to <span style="color: #FE7E00;"><em>Variables/Process/Variables/outputVariable/body/ns4:message/ns4:payload</em></span>, with this you are assigning the Email&#8217;s body from the original email and the added text to the new email that the UMS Adapter is going to send. Click OK and you are ready to deploy.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-proc19.png"><img class="aligncenter wp-image-522" src="https://marcotello.com/wp-content/uploads/2013/12/ums-proc19.png" alt="ums-proc19" width="582" height="338" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-proc19.png 647w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc19-300x173.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-proc19-600x347.png 600w" sizes="(max-width: 582px) 100vw, 582px" /></a></div>
<p>Deploy your application and send an email to your incoming email account, you will receive the same email in the outgoing account with the added text.<br />
You can find the project in Github <span class="normal_text_link"><a href="https://github.com/marcotello/OracleSOASuite/tree/master/UMSTest" target="_blank">here</a></span>.<br />
Here is the <span class="normal_text_link"><a href="https://marcotello.com/wp-content/uploads/2013/12/UMSTest.zip">jar file</a></span> of the project</p>
<p>If you found this useful please drop me a comment.</p>
]]></content:encoded>
			<wfw:commentRss>https://marcotello.com/oracle-soa-suite/receive-and-send-and-email-with-the-oracle-soa-suite-ums-adapter/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Configuring Oracle SOA Suite UMS Adapter with a gmail account</title>
		<link>https://marcotello.com/oracle-soa-suite/configuring-oracle-soa-suite-ums-adapter-with-a-gmail-account/</link>
		<comments>https://marcotello.com/oracle-soa-suite/configuring-oracle-soa-suite-ums-adapter-with-a-gmail-account/#comments</comments>
		<pubDate>Tue, 10 Dec 2013 04:19:16 +0000</pubDate>
		<dc:creator><![CDATA[Marco Tello]]></dc:creator>
				<category><![CDATA[Oracle SOA Suite]]></category>

		<guid isPermaLink="false">https://marcotello.com/?p=428</guid>
		<description><![CDATA[In this tutorial we will configure the UMS adapter provided by Oracle SOA Suite to work with Gmail. The UMS allows us to send emails, IM, SMS, and voice notifications. It&#8217;s a very powerful tool for users and applications to communicate. &#160; These are the steps that we will follow to configure the UMS Adapter: Get Gmail SSL certificates. Import the certificates into Weblogic&#8217;s default Keystore. Send a test email. Configure Email Driver Important Notes Common Exceptions &#160; 1.- Get Gmail SSL certificates. Before<a href="https://marcotello.com/oracle-soa-suite/configuring-oracle-soa-suite-ums-adapter-with-a-gmail-account/" class="more_link more_link_dots"> &#8230; </a>]]></description>
				<content:encoded><![CDATA[<p>In this tutorial we will configure the UMS adapter provided by Oracle SOA Suite to work with Gmail. The UMS allows us to send emails, IM, SMS, and voice notifications. It&#8217;s a very powerful tool for users and applications to communicate.</p>
<div style="overflow: auto; width: 99%; text-align: center; border: 3px solid #D2D4D5; -moz-border-radius: 15px; border-radius: 15px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; background-color: #ffffff;"><a href="https://marcotello.com/wp-content/uploads/2013/12/UMS_result_200.png"><img class="aligncenter size-full wp-image-474" src="https://marcotello.com/wp-content/uploads/2013/12/UMS_result_200.png" alt="UMS_result_200" width="514" height="180" srcset="https://marcotello.com/wp-content/uploads/2013/12/UMS_result_200.png 514w, https://marcotello.com/wp-content/uploads/2013/12/UMS_result_200-300x105.png 300w" sizes="(max-width: 514px) 100vw, 514px" /></a></div>
<p><span id="more-428"></span></p>
<p>&nbsp;</p>
<p>These are the steps that we will follow to configure the UMS Adapter:</p>
<ol>
<li><span class="normal_text_link"><a href="#get_certificates">Get Gmail SSL certificates.</a></span></li>
<li><span class="normal_text_link"><a href="#import_certificates">Import the certificates into Weblogic&#8217;s default Keystore.</a></span></li>
<li><span class="normal_text_link"><a href="#send_email">Send a test email.</a></span></li>
<li><span class="normal_text_link"><a href="#configure_driver">Configure Email Driver</a></span></li>
<li><span class="normal_text_link"><a href="#notes">Important Notes</a></span></li>
<li><span class="normal_text_link"><a href="#exceptions">Common Exceptions</a></span></li>
</ol>
<p>&nbsp;</p>
<h3>1.- Get Gmail SSL certificates.</h3>
<p>Before configuring anything in the SOA Suite we have to get the Gmail SSL certificate first, to do that we need Open-SSL installed in our system, if you are running Linux you can run the following commands:</p>
<p><strong>UBUNTU</strong></p><pre class="crayon-plain-tag">#sudo apt-get install openssl</pre><p><strong>RHEL/CENTOS</strong></p><pre class="crayon-plain-tag">#yum install openssl</pre><p><strong>WINDOWS</strong></p>
<p>Download the full package from <span class="normal_text_link"><a href="http://slproweb.com/products/Win32OpenSSL.html">OpenSSL for Win32</a></span> and install it.<br />
Once you have Open-SSL installed, store the certificates in your local machine. Run the following command:</p><pre class="crayon-plain-tag">#openssl s_client -connect&nbsp;imap.gmail.com:993</pre><p>That will connect you to gmail imap service and in the trace printed you&#8217;ll find the certificate. Copy all the lines between:</p><pre class="crayon-plain-tag">-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----</pre><p>Paste them in notepad and save everything in a file named gmail-imap.cert</p>
<p>Do the same to get the smtp certificate running the following command.</p><pre class="crayon-plain-tag">#openssl s_client -connect&nbsp;smtp.gmail.com:465</pre><p>Copy all the lines between BEGIN CERTIFICATE and END CERTIFICATE and save it in a file named gmail-smtp.cert</p>
<p>&nbsp;</p>
<h3>2.- Import the certificates into Weblogic&#8217;s default Keystore.</h3>
<p>To import the certificates we will use the default Java tool named Keytool, just run the following commands:</p><pre class="crayon-plain-tag">#keytool -import -alias gmail-imap -keystore [ORACLE_HOME]/wlserver_10.3/server/lib/DemoTrust.jks -file gmail-imap.cert</pre><p>The password for DemoTrust.jsk Keystore is <strong>DemoTrustKeyStorePassPhrase</strong></p>
<p>Also you need to import the Gmail SMTP certificate, run the following command:</p><pre class="crayon-plain-tag">#keytool -import -alias gmail-smtp -keystore [ORACLE_HOME]/wlserver_10.3/server/lib/DemoTrust.jks -file gmail-smtp.cert</pre><p>Note that for development purposes we are using the Weblogic&#8217;s default keystore but in production you might want to use a custom keystore with your own password and passphrase.</p>
<p>And that&#8217;s all, check if the certificates are listed in the keystore.</p><pre class="crayon-plain-tag">#keytool -list -keystore &nbsp;[ORACLE_HOME]/wlserver_10.3/server/lib/DemoTrust.jks</pre><p>You will see gmail-imap and gmail-smtp listed.</p>
<p>&nbsp;</p>
<h3>3.- Send a test email.</h3>
<p>To ensure that the certificates have been imported correctly send a test email, to do that we have to configure the Workflow Notification Properties in the SOA Infra.</p>
<p>Right click on soa-infra then go to SOA Administration &gt; Workflow Notification Properties</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step1.png"><img class="aligncenter wp-image-440" src="https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step1.png" alt="ums-gmail-conf-step1" width="384" height="339" srcset="https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step1.png 498w, https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step1-300x265.png 300w" sizes="(max-width: 384px) 100vw, 384px" /></a></div>
<p>Select  email as the Notification Mode and in the Notification Service section, configure the following email addresses:</p>
<ul>
<li>Email From Address: The email address from which you want to send email notifications.</li>
<li>Email Actionable Address: The email address for actionable incoming messages. This is not required.</li>
<li>Email Reply To Address: The email address to include in the Reply To field of the outgoing email notification header.</li>
</ul>
<p>&nbsp;</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step2.png"><img class="size-full wp-image-445 aligncenter" src="https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step2.png" alt="ums-gmail-conf-step2" width="410" height="222" srcset="https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step2.png 410w, https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step2-300x162.png 300w" sizes="(max-width: 410px) 100vw, 410px" /></a></div>
<p>Click Apply to save the changes and re start SOA server.</p>
<p>Once the server starts again right click on  soa-infra then go to Service Engines &gt; Human Workflow</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step3.png"><img class="aligncenter wp-image-448" src="https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step3.png" alt="ums-gmail-conf-step3" width="426" height="302" srcset="https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step3.png 473w, https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step3-300x213.png 300w" sizes="(max-width: 426px) 100vw, 426px" /></a></div>
<p>Then open the Notification Management Tab</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step4.png"><img class="aligncenter wp-image-449" src="https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step4.png" alt="ums-gmail-conf-step4" width="529" height="134" srcset="https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step4.png 755w, https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step4-300x75.png 300w, https://marcotello.com/wp-content/uploads/2013/11/ums-gmail-conf-step4-600x151.png 600w" sizes="(max-width: 529px) 100vw, 529px" /></a></div>
<p style="text-align: left;">and click on the &#8220;Send Test Notification&#8221; button at your right hand, you will prompt with this popup</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step5.png"><img class="aligncenter wp-image-453" src="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step5.png" alt="ums-gmail-conf-step5" width="365" height="151" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step5.png 521w, https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step5-300x123.png 300w" sizes="(max-width: 365px) 100vw, 365px" /></a></div>
<p style="text-align: left;"> Fill the fields in with the following information:</p>
<ul>
<li><span style="line-height: 13px;">Send to: some_email_to_test@email.com</span></li>
<li>Channel: email</li>
<li>Subject: Test</li>
<li>Content: the email&#8217;s body.</li>
</ul>
<p>Click the Send button and wait to get a SENT notification, if everything goes well you will receive an email from the outgoing email account that you configured before.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step6.png"><img class="aligncenter wp-image-456" src="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step6.png" alt="ums-gmail-conf-step6" width="358" height="137" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step6.png 511w, https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step6-300x115.png 300w" sizes="(max-width: 358px) 100vw, 358px" /></a></div>
<p>&nbsp;</p>
<h3>4.- Configure Email Driver</h3>
<p>This is the most important step in the configuration so pay attention, you can commit many errors by configuring wrong the driver.</p>
<p>Go to User Messaging Service and right click on usermessagingdriver-email then go to Email Driver Properties</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step7.png"><img class="aligncenter size-full wp-image-458" src="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step7.png" alt="ums-gmail-conf-step7" width="340" height="243" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step7.png 340w, https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step7-300x214.png 300w" sizes="(max-width: 340px) 100vw, 340px" /></a></div>
<p>Then go to Email Driver Properties and set up the next configuration:</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step10.png"><img class="aligncenter size-full wp-image-459" src="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step10.png" alt="ums-gmail-conf-step10" width="705" height="201" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step10.png 705w, https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step10-300x85.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step10-600x171.png 600w" sizes="(max-width: 705px) 100vw, 705px" /></a></div>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step11.png"><img class="aligncenter size-full wp-image-460" src="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step11.png" alt="ums-gmail-conf-step11" width="566" height="252" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step11.png 566w, https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step11-300x133.png 300w" sizes="(max-width: 566px) 100vw, 566px" /></a></div>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step14.png"><img class="aligncenter size-full wp-image-461" src="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step14.png" alt="ums-gmail-conf-step14" width="567" height="203" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step14.png 567w, https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step14-300x107.png 300w" sizes="(max-width: 567px) 100vw, 567px" /></a></div>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step15.png"><img class="aligncenter size-full wp-image-462" src="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step15.png" alt="ums-gmail-conf-step15" width="662" height="197" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step15.png 662w, https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step15-300x89.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step15-600x178.png 600w" sizes="(max-width: 662px) 100vw, 662px" /></a></div>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step16_result.png"><img class="aligncenter size-full wp-image-463" src="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step16_result.png" alt="ums-gmail-conf-step16_result" width="665" height="59" srcset="https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step16_result.png 665w, https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step16_result-300x26.png 300w, https://marcotello.com/wp-content/uploads/2013/12/ums-gmail-conf-step16_result-600x53.png 600w" sizes="(max-width: 665px) 100vw, 665px" /></a></div>
<p>Click Apply to save the changes, re start SOA server and that&#8217;s it, now you have the UMS Adapter up and running for use in your SOA projects.</p>
<p>&nbsp;</p>
<h3>5.- Important Notes</h3>
<p>In this section we will review some important notes that you will have to consider.</p>
<p><strong>Where to find the Email Driver Configuration XML File</strong></p>
<p>The driver configuration is very sensitive and a bad configuration could stop SOA Server from starting up, so if you are in that situation you still can make corrections to your configuration, go to <span style="color: #fe7e00;"><em>[Oracle_Home]/Middleware/user_projects/domains/soa_domain/config/fmwconfig/servers/<br />
soa_server1/applications/usermessagingdriver-email/configuration</em></span> and you will find a file named <span style="color: #fe7e00;"><em>driverconfig.xml</em></span> which holds all the drivers properties.</p>
<p><strong>Cleartext Password usage</strong></p>
<p>You might want to use cleartext password for development purposes but for production I strongly recommend to use an indirect password, remember that cleartext password is stored in an XML file and its anyone could read the file.</p>
<p>&nbsp;</p>
<h3>6.- Common Exceptions</h3>
<p>In this section we will cover the common exceptions that you could face.</p>
<p><strong>Could not initialize Email Store</strong></p><pre class="crayon-plain-tag">'
&lt;Nov 20, 2013 2:12:03 PM COT&gt; &lt;Error&gt; &lt;oracle.sdp.messaging.driver.email&gt; &lt;SDP-2
6123&gt; &lt;Could not initialize Email Store for user account@yourdomain.com &gt;
&lt;Nov 20, 2013 2:12:03 PM COT&gt; &lt;Error&gt; &lt;oracle.sdp.messaging.driver.email&gt; &lt;SDP-2
5700&gt; &lt;An unexpected exception was caught.
javax.mail.MessagingException: sun.security.validator.ValidatorException: PKIX p
ath building failed: sun.security.provider.certpath.SunCertPathBuilderException:
 unable to find valid certification path to requested target;
  nested exception is:
        javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorExc
eption: PKIX path building failed: sun.security.provider.certpath.SunCertPathBui
lderException: unable to find valid certification path to requested target
        at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:571)
        at javax.mail.Service.connect(Service.java:288)
        at javax.mail.Service.connect(Service.java:169)
        at oracle.sdpinternal.messaging.driver.email.ImapEmailStore.initStore(Im
apEmailStore.java:183)
'</pre><p>This exception is related to the SMPT or IMAP certificates, you will have to erase them from the keystore and re import again, Gmail changes their certificates almost every year so you will have to import the certificates again.</p>
<p>&nbsp;</p>
<p><strong>Could not connect to SMTP host </strong></p><pre class="crayon-plain-tag">'
&lt;25-nov-2013 23H23 COT&gt; &lt;Error&gt; &lt;oracle.sdp.messaging.driver.email&gt; &lt;SDP-25700&gt;
 &lt;An unexpected exception was caught.
javax.mail.MessagingException: Could not connect to SMTP host: localhost, port:
25;
  nested exception is:
        java.net.ConnectException: Connection refused: connect
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1391)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:41
2)
        at javax.mail.Service.connect(Service.java:288)
        at javax.mail.Service.connect(Service.java:169)
        at javax.mail.Service.connect(Service.java:118)
        at oracle.sdpinternal.messaging.driver.email.EmailDriver.send(EmailDrive
r.java:774)
'</pre><p>When this exception is thrown, it means that the server is not reaching Gmail&#8217;s SMTP, it could be a closed port or a firewall that is blocking communication.</p>
<p>&nbsp;</p>
<p><strong>Invalid credentials</strong></p><pre class="crayon-plain-tag">'
&lt;An unexpected exception was caught.
javax.mail.AuthenticationFailedException: [AUTHENTICATIONFAILED] Invalid credent
ials (Failure)
        at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:566)
        at javax.mail.Service.connect(Service.java:288)
        at javax.mail.Service.connect(Service.java:169)
        at oracle.sdpinternal.messaging.driver.email.ImapEmailStore.initStore(Im
apEmailStore.java:183)
        at oracle.sdpinternal.messaging.driver.email.ImapEmailStore.initStore(Im
apEmailStore.java:132)
        at oracle.sdpinternal.messaging.driver.email.EmailResourceAdapter.create
EmailStore(EmailResourceAdapter.java:1290)
        at oracle.sdpinternal.messaging.driver.email.MailboxPollingWorker.getIni
tializedEmailStore(MailboxPollingWorker.java:104)
        at oracle.sdpinternal.messaging.driver.email.MailboxPollingWorker.run(Ma
ilboxPollingWorker.java:47)'</pre><p>Check the user or password and re start the server.</p>
<p>&nbsp;</p>
<p><strong>IMAP Read timed out</strong></p><pre class="crayon-plain-tag">'
&lt;Nov 20, 2013 4:25:20 PM COT&gt; &lt;Error&gt; &lt;oracle.sdp.messaging.driver.email&gt; &lt;SDP-2
6123&gt; &lt;Could not initialize Email Store for imap-account@yourdomain.com &gt;
&lt;Nov 20, 2013 4:25:20 PM COT&gt; &lt;Error&gt; &lt;oracle.sdp.messaging.driver.email&gt; &lt;SDP-2
5700&gt; &lt;An unexpected exception was caught.
javax.mail.MessagingException: Read timed out;
  nested exception is:
        java.net.SocketTimeoutException: Read timed out
        at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:571)
        at javax.mail.Service.connect(Service.java:288)
        at javax.mail.Service.connect(Service.java:169)
        at oracle.sdpinternal.messaging.driver.email.ImapEmailStore.initStore(Im
apEmailStore.java:183)
'</pre><p>To solve this try to enter the IMAP account credentials again and re start the server.</p>
<p>&nbsp;</p>
<h3>7.- References</h3>
<p><span class="normal_text_link"><a href="http://docs.oracle.com/cd/E28280_01/user.1111/e23486/hcfp_notifications.htm">http://docs.oracle.com/cd/E28280_01/user.1111/e23486/hcfp_notifications.htm</a></span></p>
<p><span class="normal_text_link"><a href="http://docs.oracle.com/cd/E23943_01/core.1111/e12037/managing.htm#WCEDG392">http://docs.oracle.com/cd/E23943_01/core.1111/e12037/managing.htm#WCEDG392</a></span></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://marcotello.com/oracle-soa-suite/configuring-oracle-soa-suite-ums-adapter-with-a-gmail-account/feed/</wfw:commentRss>
		<slash:comments>77</slash:comments>
		</item>
		<item>
		<title>Testopia Installation In CentOS</title>
		<link>https://marcotello.com/bugzilla/testopia-installation-in-centos/</link>
		<comments>https://marcotello.com/bugzilla/testopia-installation-in-centos/#comments</comments>
		<pubDate>Tue, 25 Jun 2013 02:02:31 +0000</pubDate>
		<dc:creator><![CDATA[Marco Tello]]></dc:creator>
				<category><![CDATA[Bugzilla]]></category>

		<guid isPermaLink="false">https://marcotello.com/?p=394</guid>
		<description><![CDATA[Testopia is a test case management extension for Bugzilla. It is designed to be a generic tool for tracking test cases, allowing for testing organizations to integrate bug reporting with their test case run results. In this tutorial we&#8217;ll extend Bugzilla with Testopia extension. &#160; 1.- Prerequisites. Basic Knowledge of Linux Shell Commands. Bugzilla properly installed in your system. You can follow this tutorial to install Bugzilla here. Download the latest version of Testopia here. &#160; 2.- Pre Installation Activities.<a href="https://marcotello.com/bugzilla/testopia-installation-in-centos/" class="more_link more_link_dots"> &#8230; </a>]]></description>
				<content:encoded><![CDATA[<p>Testopia is a test case management extension for Bugzilla. It is designed to be a generic tool for tracking test cases, allowing for testing organizations to integrate bug reporting with their test case run results.</p>
<p>In this tutorial we&#8217;ll extend Bugzilla with Testopia extension.</p>
<div style="overflow:auto; width:99%; text-align:center; border:3px solid #D2D4D5;-moz-border-radius: 15px; border-radius: 15px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; background-color:#FFFFFF;">
<a href="https://marcotello.com/wp-content/uploads/2013/01/testopia.jpg"><img class="aligncenter size-full wp-image-395" title="testopia" src="https://marcotello.com/wp-content/uploads/2013/01/testopia.jpg" alt="" width="202" height="249" /></a>
</div>
<p>&nbsp;</p>
<p><span id="more-394"></span></p>
<h3>1.- Prerequisites.</h3>
<ul>
<li>Basic Knowledge of Linux Shell Commands.</li>
<li>Bugzilla properly installed in your system. You can follow this tutorial to install Bugzilla <span class="normal_text_link"><a href="https://marcotello.com/bugzilla/bugzilla-installation-in-centos/">here</a></span>.</li>
<li>Download the latest version of Testopia <span class="normal_text_link"><a href="http://www.mozilla.org/projects/testopia/">here</a></span>.</li>
</ul>
<p>&nbsp;</p>
<h3>2.- Pre Installation Activities.</h3>
<p>Copy <strong>testopia-2.5-BUGZILLA-4.2.tar.gz</strong> to Bugzilla&#8217;s directory:</p>
<p></p><pre class="crayon-plain-tag">#cp testopia-2.5-BUGZILLA-4.2.tar.gz /var/www/html/bugzilla/</pre><p></p>
<p>Untar the testopia-2.5-BUGZILLA-4.2.tar.gz file:</p>
<p></p><pre class="crayon-plain-tag">#tar xzvf testopia-2.5-BUGZILLA-4.2.tar.gz</pre><p></p>
<p>Verify that extensions/Testopia/ directory was created:</p>
<p></p><pre class="crayon-plain-tag"># ls -l extensions/Testopia/
total 984
-rw-r----- 1 root apache 87959 May 28 2012 ChangeLog
-rw-r----- 1 root apache 1110 May 28 2012 Config.pm
drwxr-x--- 3 root apache 4096 May 28 2012 contrib
drwxr-x--- 2 root apache 4096 May 28 2012 css
drwxr-x--- 4 root apache 4096 May 28 2012 doc
-rw-r----- 1 root apache 318 May 28 2012 environment.dtd
-rw-r----- 1 root apache 94940 May 28 2012 Extension.pm
drwxr-x--- 10 root apache 4096 Oct 1 2010 extjs
drwxr-x--- 2 root apache 4096 May 28 2012 img
-rw-r----- 1 root apache 1838 May 28 2012 import_example.csv
drwxr-x--- 2 root apache 4096 May 28 2012 js
drwxr-x--- 4 root apache 4096 May 28 2012 lib
-rw-r----- 1 root apache 9359 May 28 2012 README
-rwxr-x--- 1 root apache 1139 May 28 2012 run_unit_tests.pl
drwxr-x--- 4 root apache 4096 May 28 2012 t
drwxr-x--- 3 root apache 4096 May 28 2012 template
-rw-r----- 1 root apache 418766 May 28 2012 testopia.all.js
-rw-r----- 1 root apache 206950 May 28 2012 testopia.all.ycomp.js
-rw-r----- 1 root apache 10954 May 28 2012 testopia.xsd
-rwxr-x--- 1 root apache 2063 May 28 2012 testrunner.pl
drwxr-x--- 2 root apache 4096 May 28 2012 tools

#</pre><p></p>
<p>&nbsp;</p>
<h3>3.- First try to Install Testopia.</h3>
<p>Run the <strong> ./checksetup.pl</strong> command to install Testopia:</p>
<p></p><pre class="crayon-plain-tag"># ./checksetup.pl
* This is Bugzilla 4.2.4 on perl 5.8.8
* Running on Linux 2.6.18-308.24.1.el5 #1 SMP Tue Dec 4 17:42:30 EST 2012

Checking perl modules...
Checking for CGI.pm (v3.51) ok: found v3.62
Checking for Digest-SHA (any) ok: found v5.80
Checking for TimeDate (v2.21) ok: found v2.24
Checking for DateTime (v0.28) ok: found v0.78
Checking for DateTime-TimeZone (v0.71) ok: found v1.56
Checking for DBI (v1.41) ok: found v1.623
Checking for Template-Toolkit (v2.22) ok: found v2.24
Return::Value is deprecated at lib/Return/Value.pm line 13
require Return/Value.pm called at lib/Email/Send.pm line 11
Email::Send::BEGIN() called at lib/Return/Value.pm line 0
eval {...} called at lib/Return/Value.pm line 0
require Email/Send.pm called at (eval 95) line 1
eval 'require Email::Send;' called at Bugzilla/Install/Requirements.pm line 668
Bugzilla::Install::Requirements::have_vers('HASH(0x8d25ec4)', 1) called at Bugzilla/Install/Requirements.pm line 445
Bugzilla::Install::Requirements::_check_missing('ARRAY(0x8ce3264)', 1) called at Bugzilla/Install/Requirements.pm line 409
Bugzilla::Install::Requirements::check_requirements(1) called at ./checksetup.pl line 86
Checking for Email-Send (v2.00) ok: found v2.198
Checking for Email-MIME (v1.904) ok: found v1.911
Checking for URI (v1.37) ok: found v1.60
Checking for List-MoreUtils (v0.22) ok: found v0.33
Checking for Math-Random-ISAAC (v1.0.1) ok: found v1.004
Checking for JSON (v2.10) ok: found v2.53
Checking for Text-Diff (v0.35) not found
Checking for GD-Graph3d (v0.63) not found

Checking available perl DBD modules...
Checking for DBD-Pg (v1.45) not found
Checking for DBD-mysql (v4.001) ok: found v4.022
Checking for DBD-SQLite (v1.29) ok: found v1.37
Checking for DBD-Oracle (v1.19) not found

The following Perl modules are optional:
Checking for GD (v1.20) ok: found v2.46
Checking for Chart (v2.1) ok: found v2.4.6
Checking for Template-GD (any) ok: found v1.56
Checking for GDTextUtil (any) ok: found v0.86
Checking for GDGraph (any) ok: found v1.44
Checking for MIME-tools (v5.406) ok: found v5.503
Checking for libwww-perl (any) ok: found v6.04
Checking for XML-Twig (any) ok: found v3.26
Checking for PatchReader (v0.9.6) ok: found v0.9.6
Checking for perl-ldap (any) ok: found v0.52
Checking for Authen-SASL (any) ok: found v2.16
Checking for RadiusPerl (any) ok: found v0.22
Checking for SOAP-Lite (v0.712) ok: found v0.715
Checking for JSON-RPC (any) ok: found v1.03
Checking for JSON-XS (v2.0) ok: found v2.33
Checking for Test-Taint (any) ok: found v1.06
Checking for HTML-Parser (v3.40) ok: found v3.55
Checking for HTML-Scrubber (any) ok: found v0.09
Checking for Encode (v2.21) ok: found v2.47
Checking for Encode-Detect (any) ok: found v1.00
Checking for Email-MIME-Attachment-Stripper (any) ok: found v1.316
Checking for Email-Reply (any) ok: found v1.202
Checking for TheSchwartz (any) ok: found v1.10
Subroutine File::Slurp::O_RDWR redefined at lib/File/Slurp.pm line 11
Subroutine File::Slurp::O_CREAT redefined at lib/File/Slurp.pm line 11
Subroutine File::Slurp::O_EXCL redefined at lib/File/Slurp.pm line 11
Checking for Daemon-Generic (any) ok: found v0.82
Checking for mod_perl (v1.999022) ok: found v2.000004
Checking for Apache-SizeLimit (v0.96) ok: found v0.96
Checking for Text-CSV (v1.06) not found
Checking for XML Schema Validator (v1.10) not found
Checking for XML Schema Parser (any) ok: found v1.01
Checking for XML Twig (any) ok: found v3.26
Checking for mod_headers (any) ok
Checking for mod_expires (any) ok
Checking for mod_env (any) ok
***********************************************************************
* REQUIRED MODULES *
***********************************************************************
* Bugzilla requires you to install some Perl modules which are either *
* missing from your system, or the version on your system is too old. *
* See below for commands to install these modules. *
***********************************************************************
* OPTIONAL MODULES *
***********************************************************************
* Certain Perl modules are not required by Bugzilla, but by *
* installing the latest version you gain access to additional *
* features. *
* *
* The optional modules you do not have installed are listed below, *
* with the name of the feature they enable. Below that table are the *
* commands to install each module. *
***********************************************************************
* MODULE NAME * ENABLES FEATURE(S) *
***********************************************************************
* Text-CSV * CSV Importing of test cases *
* XML Schema Validator * XML Importing of test cases and plans *
***********************************************************************
COMMANDS TO INSTALL OPTIONAL MODULES:

Text-CSV: /usr/bin/perl install-module.pl Text::CSV
XML Schema Validator: /usr/bin/perl install-module.pl XML::Validator::Schema

COMMANDS TO INSTALL REQUIRED MODULES (You *must* run all these commands
and then re-run checksetup.pl):

/usr/bin/perl install-module.pl Text::Diff
/usr/bin/perl install-module.pl GD::Graph3d

To attempt an automatic install of every required and optional module
with one command, do:

/usr/bin/perl install-module.pl --all

*** Installation aborted. Read the messages above. ***

As you can see there some Perl dependencies that we need to install first, so lets do it.</pre><p></p>
<p>&nbsp;</p>
<h3>4.- Install Perl Dependencies</h3>
<h4>Test::Diff.</h4>
<p>To Install Test::Diff run the following command:</p>
<p></p><pre class="crayon-plain-tag">#/usr/bin/perl install-module.pl Text::Diff</pre><p></p>
<h4>GD::Graph3d.</h4>
<p>To Install GD::Graph3d run the following command:</p>
<p></p><pre class="crayon-plain-tag">#/usr/bin/perl install-module.pl GD::Graph3d</pre><p></p>
<h4>Text::CSV.</h4>
<p>To Install Text::CSV run the following command:</p>
<p></p><pre class="crayon-plain-tag">#/usr/bin/perl install-module.pl Text::CSV</pre><p></p>
<h4>XML::Validator::Schema.</h4>
<p>To Install XML::Validator::Schema run the following command:</p>
<p></p><pre class="crayon-plain-tag">#/usr/bin/perl install-module.pl XML::Validator::Schema</pre><p></p>
<p>&nbsp;</p>
<h3>5.- Second Try to Install Testopia.</h3>
<p>At this time we have all the Perl missing libraries that we need to install Testopia, so run the <strong>./checksetup.pl </strong>again:</p>
<p></p><pre class="crayon-plain-tag">#./checksetup.pl

checksetup.pl complete.

#</pre><p></p>
<p>Voilà! Your Testopia installation is complete, as simple as that.</p>
<p>&nbsp;</p>
<h3>6.- Restart Apache</h3>
<p>Restart Apache to reflect the changes.</p>
<p></p><pre class="crayon-plain-tag">#service httpd restart</pre><p></p>
<p>&nbsp;</p>
<h3>7.- Test Testopia Installation</h3>
<p>Go to <span class="normal_text_link"><a href="http://localhost/bugzilla/">http://localhost/bugzilla/</a></span> in your browser to the Bugzilla&#8217;s home page.</p>
<div style="overflow:auto; width:99%; text-align:center"><a href="https://marcotello.com/wp-content/uploads/2013/01/bugzilla1.png"><img class="aligncenter size-full wp-image-374" title="bugzilla1" src="https://marcotello.com/wp-content/uploads/2013/01/bugzilla1.png" alt="" width="600" height="305" srcset="https://marcotello.com/wp-content/uploads/2013/01/bugzilla1.png 600w, https://marcotello.com/wp-content/uploads/2013/01/bugzilla1-300x152.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></a></div>
<p>&nbsp;</p>
<p>At first you may not see any changes but once you are logged in, you&#8217;ll see a new toolbar with the Testopia functionality.</p>
<p>&nbsp;</p>
<div style="overflow:auto; width:99%; text-align:center">
<a href="https://marcotello.com/wp-content/uploads/2013/01/2013-01-16_18-28-10.png"><img class="aligncenter size-full wp-image-396" title="2013-01-16_18-28-10" src="https://marcotello.com/wp-content/uploads/2013/01/2013-01-16_18-28-10.png" alt="" width="596" height="251" srcset="https://marcotello.com/wp-content/uploads/2013/01/2013-01-16_18-28-10.png 596w, https://marcotello.com/wp-content/uploads/2013/01/2013-01-16_18-28-10-300x126.png 300w" sizes="(max-width: 596px) 100vw, 596px" /></a>
</div>
<p>&nbsp;</p>
<p>Enjoy!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://marcotello.com/bugzilla/testopia-installation-in-centos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bugzilla Installation in CentOS</title>
		<link>https://marcotello.com/bugzilla/bugzilla-installation-in-centos/</link>
		<comments>https://marcotello.com/bugzilla/bugzilla-installation-in-centos/#comments</comments>
		<pubDate>Mon, 14 Jan 2013 01:17:56 +0000</pubDate>
		<dc:creator><![CDATA[Marco Tello]]></dc:creator>
				<category><![CDATA[Bugzilla]]></category>

		<guid isPermaLink="false">https://marcotello.com/?p=350</guid>
		<description><![CDATA[Bugzilla is a &#8220;Defect Tracking System&#8221; or &#8220;Bug-Tracking System&#8221; that allows individual or groups of developers to keep track of outstanding bugs in their product effectively. In this tutorial we&#8217;ll install Bugzilla in CentOS 5. &#160; 1.- Prerequisites. Basic Knowledge of Linux Shell Commands. Download latest version of Bugzilla. You can download it here. &#160; 2.- Install Perl. Before installing Perl, check if it&#8217;s already installed with the following command. [crayon-68608648da19d026514181/] If you see the following output Perl is properly<a href="https://marcotello.com/bugzilla/bugzilla-installation-in-centos/" class="more_link more_link_dots"> &#8230; </a>]]></description>
				<content:encoded><![CDATA[<p>Bugzilla is a &#8220;Defect Tracking System&#8221; or &#8220;Bug-Tracking System&#8221; that allows individual or groups of developers to keep track of outstanding bugs in their product effectively.</p>
<p>In this tutorial we&#8217;ll install Bugzilla in CentOS 5.</p>
<div style="overflow: auto; width: 99%; text-align: center; border: 3px solid #D2D4D5; -moz-border-radius: 15px; border-radius: 15px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; background-color: #ffffff;"><a href="https://marcotello.com/wp-content/uploads/2013/01/Bugzilla-final_result.jpg"><img class="aligncenter size-full wp-image-390" title="Bugzilla-final_result" src="https://marcotello.com/wp-content/uploads/2013/01/Bugzilla-final_result.jpg" alt="" width="420" height="280" srcset="https://marcotello.com/wp-content/uploads/2013/01/Bugzilla-final_result.jpg 420w, https://marcotello.com/wp-content/uploads/2013/01/Bugzilla-final_result-300x200.jpg 300w" sizes="(max-width: 420px) 100vw, 420px" /></a></div>
<h3><span id="more-350"></span></h3>
<p>&nbsp;</p>
<h3>1.- Prerequisites.</h3>
<ul>
<li>Basic Knowledge of Linux Shell Commands.</li>
<li>Download latest version of Bugzilla. You can download it <span class="normal_text_link"><a href="http://www.bugzilla.org/download/">here</a></span>.</li>
</ul>
<p>&nbsp;</p>
<h3>2.- Install Perl.</h3>
<p>Before installing Perl, check if it&#8217;s already installed with the following command.</p><pre class="crayon-plain-tag">#perl -v</pre><p>If you see the following output Perl is properly installed in your machine.</p><pre class="crayon-plain-tag">This is perl, v5.8.8 built for i386-linux-thread-multi

Copyright 1987-2006, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using &quot;man perl&quot; or &quot;perldoc perl&quot;. If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.</pre><p>Otherwise you have to install Perl running this command:</p><pre class="crayon-plain-tag">#yum install perl</pre><p>&nbsp;</p>
<h3>3.- Install MySQL.</h3>
<p>Maybe you want to install MySQL as Yum Group Installation to get all the available packages including the server, the client, python and perl libraries. First run the following command to check the availability:</p><pre class="crayon-plain-tag">#yum grouplist | grep -i mysql
   MySQL Database</pre><p>Then run this command to check what is inside the &#8220;MySQL Database&#8221; Bundle:</p><pre class="crayon-plain-tag">#yum groupinfo &quot;MySQL Database&quot;

Loaded plugins: fastestmirror, security
Setting up Group Process
Loading mirror speeds from cached hostfile
* base: mirror.nsc.liu.se
* extras: mirror.nsc.liu.se
* updates: centosx4.centos.org

Group: MySQL Database
Description: This package group contains packages useful for use with MySQL.
Mandatory Packages:
mysql
Default Packages:
MySQL-python
libdbi-dbd-mysql
mysql-connector-odbc
mysql-server
perl-DBD-MySQL
unixODBC
Optional Packages:
mod_auth_mysql
mysql-bench
mysql-connector-odbc64
mysql-devel
php-mysql
qt-MySQL</pre><p>As you can see, this bundle installs all additional packages that maybe you will want to add in the future. (If you want to restrict the installation to just certain packages, this list is useful too).</p>
<p>Install &#8220;MySQL Database&#8221; Bundle</p><pre class="crayon-plain-tag">#yum groupinstall &quot;MySQL Database&quot;</pre><p>Start the MySQL Service.</p><pre class="crayon-plain-tag">#service mysqld start</pre><p>Change the root password.</p><pre class="crayon-plain-tag">#mysql -u root

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.95 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql&amp;gt; select host, user from mysql.user;
+-----------------------+------+
| host | user |
+-----------------------+------+
| 127.0.0.1 | root | 
| localhost | | 
| localhost | root | 
| localhost.localdomain | | 
| localhost.localdomain | root | 
+-----------------------+------+
5 rows in set (0.00 sec)

mysql&amp;gt; set password for 'root'@'localhost' = PASSWORD('your_password_here');
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; set password for 'root'@'127.0.0.1' = PASSWORD('your_password_here');
Query OK, 0 rows affected (0.00 sec)</pre><p>&nbsp;</p>
<h3>4.- MySQL post installation activities.</h3>
<p>Once you have MySQL installed, you need to do the next steps that are listed in the Bugzilla&#8217;s documentation to avoid errors in runtime.</p>
<p>Update <strong>/etc/my.cnf </strong>file with the following lines in the [mysqld] section:</p><pre class="crayon-plain-tag">max_allowed_packet=4M
ft_min_word_len=2</pre><p>Create a database and its user named bugs as follows:</p><pre class="crayon-plain-tag">mysql -u root -p
mysql&amp;gt;create database bugs;
mysql&amp;gt;grant all privileges on bugs.* to bugs@localhost identified by 'bugs_password';
mysql&amp;gt; flush privileges;</pre><p>Restart MySQL service:</p><pre class="crayon-plain-tag">#service mysqld restart</pre><p>&nbsp;</p>
<h3>5.- Install Apache.</h3>
<p>To install Apache you just have to run the following command as root:</p><pre class="crayon-plain-tag">#yum install httpd&nbsp;mod_ssl</pre><p>This will install Apache in its latest version with SSL suppport.</p>
<h3>6.- Check dependencies before installing Bugzilla.</h3>
<p>Copy Bugzilla tar file to <strong>/var/www/html/ </strong>directory.</p><pre class="crayon-plain-tag">#cp bugzilla-4.2.4.tar.gz /var/www/html/</pre><p>Extract the bugzilla-4.2.4.tar.gz file</p><pre class="crayon-plain-tag">#tar xvfz bugzilla-4.2.4.tar.gz</pre><p>Run the bugzilla <strong>checksetup.pl </strong>command to check if the required and optional modules are available.</p><pre class="crayon-plain-tag"># cd bugzilla-4.2.4
# ./checksetup.pl --check-modules
* This is Bugzilla 4.2.4 on perl 5.8.8
* Running on Linux 2.6.18-308.24.1.el5 #1 SMP Tue Dec 4 17:42:30 EST 2012

Checking perl modules...
Checking for CGI.pm (v3.51) ok: found v3.62
Checking for Digest-SHA (any) not found
Checking for TimeDate (v2.21) not found
Checking for DateTime (v0.28) not found
Checking for DateTime-TimeZone (v0.71) not found
Checking for DBI (v1.41) ok: found v1.52
Checking for Template-Toolkit (v2.22) not found
Checking for Email-Send (v2.00) not found
Checking for Email-MIME (v1.904) not found
Checking for URI (v1.37) found v1.35
Checking for List-MoreUtils (v0.22) not found
Checking for Math-Random-ISAAC (v1.0.1) not found

Checking available perl DBD modules...
Checking for DBD-Pg (v1.45) not found
Checking for DBD-mysql (v4.001) found v3.0007
Checking for DBD-SQLite (v1.29) not found
Checking for DBD-Oracle (v1.19) not found

The following Perl modules are optional:
Checking for GD (v1.20) not found
Checking for Chart (v2.1) not found
Checking for Template-GD (any) not found
Checking for GDTextUtil (any) not found
Checking for GDGraph (any) not found
Checking for MIME-tools (v5.406) not found
Checking for libwww-perl (any) ok: found v2.033
Checking for XML-Twig (any) not found
Checking for PatchReader (v0.9.6) not found
Checking for perl-ldap (any) not found
Checking for Authen-SASL (any) not found
Checking for RadiusPerl (any) not found
Checking for SOAP-Lite (v0.712) not found
Checking for JSON-RPC (any) not found
Checking for JSON-XS (v2.0) not found
Checking for Test-Taint (any) not found
Checking for HTML-Parser (v3.40) ok: found v3.55
Checking for HTML-Scrubber (any) not found
Checking for Encode (v2.21) found v2.12
Checking for Encode-Detect (any) not found
Checking for Email-MIME-Attachment-Stripper (any) not found
Checking for Email-Reply (any) not found
Checking for TheSchwartz (any) not found
Checking for Daemon-Generic (any) not found
Checking for mod_perl (v1.999022) not found
Checking for Apache-SizeLimit (v0.96) not found
Checking for mod_headers (any) ok
Checking for mod_expires (any) ok
Checking for mod_env (any) ok
***********************************************************************
* REQUIRED MODULES *
***********************************************************************
* Bugzilla requires you to install some Perl modules which are either *
* missing from your system, or the version on your system is too old. *
* See below for commands to install these modules. *
***********************************************************************
* DATABASE ACCESS *
***********************************************************************
* In order to access your database, Bugzilla requires that the *
* correct &quot;DBD&quot; module be installed for the database that you are *
* running. See below for the correct command to run to install the *
* appropriate module for your database. *
***********************************************************************
* OPTIONAL MODULES *
***********************************************************************
* Certain Perl modules are not required by Bugzilla, but by *
* installing the latest version you gain access to additional *
* features. *
* *
* The optional modules you do not have installed are listed below, *
* with the name of the feature they enable. Below that table are the *
* commands to install each module. *
***********************************************************************
* MODULE NAME * ENABLES FEATURE(S) *
***********************************************************************
* GD * Graphical Reports, New Charts, Old Charts *
* Chart * New Charts, Old Charts *
* Template-GD * Graphical Reports *
* GDTextUtil * Graphical Reports *
* GDGraph * Graphical Reports *
* MIME-tools * Move Bugs Between Installations *
* XML-Twig * Move Bugs Between Installations, Automatic Update Notifications *
* PatchReader * Patch Viewer *
* perl-ldap * LDAP Authentication *
* Authen-SASL * SMTP Authentication *
* RadiusPerl * RADIUS Authentication *
* SOAP-Lite * XML-RPC Interface *
* JSON-RPC * JSON-RPC Interface *
* JSON-XS * Make JSON-RPC Faster *
* Test-Taint * JSON-RPC Interface, XML-RPC Interface *
* HTML-Scrubber * More HTML in Product/Group Descriptions *
* Encode * Automatic charset detection for text attachments *
* Encode-Detect * Automatic charset detection for text attachments *
* Email-MIME-Attachment-Stripper * Inbound Email *
* Email-Reply * Inbound Email *
* TheSchwartz * Mail Queueing *
* Daemon-Generic * Mail Queueing *
* mod_perl * mod_perl *
* Apache-SizeLimit * mod_perl *
***********************************************************************
COMMANDS TO INSTALL OPTIONAL MODULES:

GD: /usr/bin/perl install-module.pl GD
Chart: /usr/bin/perl install-module.pl Chart::Lines
Template-GD: /usr/bin/perl install-module.pl Template::Plugin::GD::Image
GDTextUtil: /usr/bin/perl install-module.pl GD::Text
GDGraph: /usr/bin/perl install-module.pl GD::Graph
MIME-tools: /usr/bin/perl install-module.pl MIME::Parser
XML-Twig: /usr/bin/perl install-module.pl XML::Twig
PatchReader: /usr/bin/perl install-module.pl PatchReader
perl-ldap: /usr/bin/perl install-module.pl Net::LDAP
Authen-SASL: /usr/bin/perl install-module.pl Authen::SASL
RadiusPerl: /usr/bin/perl install-module.pl Authen::Radius
SOAP-Lite: /usr/bin/perl install-module.pl SOAP::Lite
JSON-RPC: /usr/bin/perl install-module.pl JSON::RPC
JSON-XS: /usr/bin/perl install-module.pl JSON::XS
Test-Taint: /usr/bin/perl install-module.pl Test::Taint
HTML-Scrubber: /usr/bin/perl install-module.pl HTML::Scrubber
Encode: /usr/bin/perl install-module.pl Encode
Encode-Detect: /usr/bin/perl install-module.pl Encode::Detect
Email-MIME-Attachment-Stripper: /usr/bin/perl install-module.pl Email::MIME::Attachment::Stripper
Email-Reply: /usr/bin/perl install-module.pl Email::Reply
TheSchwartz: /usr/bin/perl install-module.pl TheSchwartz
Daemon-Generic: /usr/bin/perl install-module.pl Daemon::Generic
mod_perl: /usr/bin/perl install-module.pl mod_perl2
Apache-SizeLimit: /usr/bin/perl install-module.pl Apache2::SizeLimit

YOU MUST RUN ONE OF THE FOLLOWING COMMANDS (depending on which database
you use):

PostgreSQL: /usr/bin/perl install-module.pl DBD::Pg
MySQL: /usr/bin/perl install-module.pl DBD::mysql
SQLite: /usr/bin/perl install-module.pl DBD::SQLite
Oracle: /usr/bin/perl install-module.pl DBD::Oracle

COMMANDS TO INSTALL REQUIRED MODULES (You *must* run all these commands
and then re-run checksetup.pl):

/usr/bin/perl install-module.pl Digest::SHA
/usr/bin/perl install-module.pl Date::Format
/usr/bin/perl install-module.pl DateTime
/usr/bin/perl install-module.pl DateTime::TimeZone
/usr/bin/perl install-module.pl Template
/usr/bin/perl install-module.pl Email::Send
/usr/bin/perl install-module.pl Email::MIME
/usr/bin/perl install-module.pl URI
/usr/bin/perl install-module.pl List::MoreUtils
/usr/bin/perl install-module.pl Math::Random::ISAAC

To attempt an automatic install of every required and optional module
with one command, do:

/usr/bin/perl install-module.pl --all

*** Installation aborted. Read the messages above. ***

#
#</pre><p>As you can see there are many libraries that are not installed, so don&#8217;t be scared and execute the following command:</p><pre class="crayon-plain-tag">#&nbsp;/usr/bin/perl install-module.pl --all</pre><p>After waiting for a while you may want to run bugzilla <strong>checksetup.pl </strong>command again to check if all the libraries have been installed.</p><pre class="crayon-plain-tag"># ./checksetup.pl --check-modules
* This is Bugzilla 4.2.4 on perl 5.8.8
* Running on Linux 2.6.18-308.24.1.el5 #1 SMP Tue Dec 4 17:42:30 EST 2012

Checking perl modules...
Checking for CGI.pm (v3.51) ok: found v3.62
Checking for Digest-SHA (any) ok: found v5.80
Checking for TimeDate (v2.21) ok: found v2.24
Checking for DateTime (v0.28) ok: found v0.78
Checking for DateTime-TimeZone (v0.71) ok: found v1.56
Checking for DBI (v1.41) ok: found v1.623
Checking for Template-Toolkit (v2.22) ok: found v2.24
Return::Value is deprecated at lib/Return/Value.pm line 13
require Return/Value.pm called at lib/Email/Send.pm line 11
Email::Send::BEGIN() called at lib/Return/Value.pm line 0
eval {...} called at lib/Return/Value.pm line 0
require Email/Send.pm called at (eval 70) line 1
eval 'require Email::Send;' called at Bugzilla/Install/Requirements.pm line 668
Bugzilla::Install::Requirements::have_vers('HASH(0xa4f2310)', 1) called at Bugzilla/Install/Requirements.pm line 445
Bugzilla::Install::Requirements::_check_missing('ARRAY(0xa4c3d48)', 1) called at Bugzilla/Install/Requirements.pm line 409
Bugzilla::Install::Requirements::check_requirements(1) called at ./checksetup.pl line 86
Checking for Email-Send (v2.00) ok: found v2.198
Checking for Email-MIME (v1.904) ok: found v1.911
Checking for URI (v1.37) ok: found v1.60
Checking for List-MoreUtils (v0.22) ok: found v0.33
Checking for Math-Random-ISAAC (v1.0.1) ok: found v1.004

Checking available perl DBD modules...
Checking for DBD-Pg (v1.45) not found
Checking for DBD-mysql (v4.001) found v3.0007
Checking for DBD-SQLite (v1.29) ok: found v1.37
Checking for DBD-Oracle (v1.19) not found

The following Perl modules are optional:
Checking for GD (v1.20) not found
Checking for Chart (v2.1) not found
Checking for Template-GD (any) not found
Checking for GDTextUtil (any) not found
Checking for GDGraph (any) not found
Checking for MIME-tools (v5.406) ok: found v5.503
Checking for libwww-perl (any) ok: found v6.04
Checking for XML-Twig (any) not found
Checking for PatchReader (v0.9.6) ok: found v0.9.6
Checking for perl-ldap (any) ok: found v0.52
Checking for Authen-SASL (any) ok: found v2.16
Checking for RadiusPerl (any) ok: found v0.22
Checking for SOAP-Lite (v0.712) ok: found v0.715
Checking for JSON-RPC (any) ok: found v1.03
Checking for JSON-XS (v2.0) ok: found v2.33
Checking for Test-Taint (any) ok: found v1.06
Checking for HTML-Parser (v3.40) ok: found v3.55
Checking for HTML-Scrubber (any) ok: found v0.09
Checking for Encode (v2.21) ok: found v2.47
Checking for Encode-Detect (any) not found
Checking for Email-MIME-Attachment-Stripper (any) ok: found v1.316
Checking for Email-Reply (any) ok: found v1.202
Checking for TheSchwartz (any) ok: found v1.10
Subroutine File::Slurp::O_RDWR redefined at lib/File/Slurp.pm line 11
Subroutine File::Slurp::O_CREAT redefined at lib/File/Slurp.pm line 11
Subroutine File::Slurp::O_EXCL redefined at lib/File/Slurp.pm line 11
Checking for Daemon-Generic (any) ok: found v0.82
Checking for mod_perl (v1.999022) not found
Checking for Apache-SizeLimit (v0.96) not found
Checking for mod_headers (any) ok
Checking for mod_expires (any) ok
Checking for mod_env (any) ok
***********************************************************************
* OPTIONAL MODULES *
***********************************************************************
* Certain Perl modules are not required by Bugzilla, but by *
* installing the latest version you gain access to additional *
* features. *
* *
* The optional modules you do not have installed are listed below, *
* with the name of the feature they enable. Below that table are the *
* commands to install each module. *
***********************************************************************
* MODULE NAME * ENABLES FEATURE(S) *
***********************************************************************
* GD * Graphical Reports, New Charts, Old Charts *
* Chart * New Charts, Old Charts *
* Template-GD * Graphical Reports *
* GDTextUtil * Graphical Reports *
* GDGraph * Graphical Reports *
* XML-Twig * Move Bugs Between Installations, Automatic Update Notifications *
* Encode-Detect * Automatic charset detection for text attachments *
* mod_perl * mod_perl *
* Apache-SizeLimit * mod_perl *
***********************************************************************
COMMANDS TO INSTALL OPTIONAL MODULES:

GD: /usr/bin/perl install-module.pl GD
Chart: /usr/bin/perl install-module.pl Chart::Lines
Template-GD: /usr/bin/perl install-module.pl Template::Plugin::GD::Image
GDTextUtil: /usr/bin/perl install-module.pl GD::Text
GDGraph: /usr/bin/perl install-module.pl GD::Graph
XML-Twig: /usr/bin/perl install-module.pl XML::Twig
Encode-Detect: /usr/bin/perl install-module.pl Encode::Detect
mod_perl: /usr/bin/perl install-module.pl mod_perl2
Apache-SizeLimit: /usr/bin/perl install-module.pl Apache2::SizeLimit
To attempt an automatic install of every required and optional module
with one command, do:

#/usr/bin/perl install-module.pl --all</pre><p></p><pre class="crayon-plain-tag">#</pre><p>At this point the command installed all the libraries it could, but there are some libraries that couldn&#8217;t be installed because of the dependencies that the libraries might need. So you&#8217;ll need to install them one by one before continuing.</p>
<p>At the end of the post I&#8217;ve added a <span class="normal_text_link"><a href="#missing">Missing Libraries Installation Section</a></span> to cover those problems.</p>
<p>&nbsp;</p>
<h3>7.- Check dependencies once again.</h3>
<p>If you have all the missing libraries already installed run checksetup.pl again just to be sure everything is OK.</p><pre class="crayon-plain-tag">#./checksetup.pl --check-modules

* This is Bugzilla 4.2.4 on perl 5.8.8
* Running on Linux 2.6.18-308.24.1.el5 #1 SMP Tue Dec 4 17:42:30 EST 2012

Checking perl modules...
Checking for CGI.pm (v3.51) ok: found v3.62
Checking for Digest-SHA (any) ok: found v5.80
Checking for TimeDate (v2.21) ok: found v2.24
Checking for DateTime (v0.28) ok: found v0.78
Checking for DateTime-TimeZone (v0.71) ok: found v1.56
Checking for DBI (v1.41) ok: found v1.623
Checking for Template-Toolkit (v2.22) ok: found v2.24
Return::Value is deprecated at lib/Return/Value.pm line 13
require Return/Value.pm called at lib/Email/Send.pm line 11
Email::Send::BEGIN() called at lib/Return/Value.pm line 0
eval {...} called at lib/Return/Value.pm line 0
require Email/Send.pm called at (eval 71) line 1
eval 'require Email::Send;' called at Bugzilla/Install/Requirements.pm line 668
Bugzilla::Install::Requirements::have_vers('HASH(0x9c54198)', 1) called at Bugzilla/Install/Requirements.pm line 445
Bugzilla::Install::Requirements::_check_missing('ARRAY(0x9c27140)', 1) called at Bugzilla/Install/Requirements.pm line 409
Bugzilla::Install::Requirements::check_requirements(1) called at ./checksetup.pl line 86
Checking for Email-Send (v2.00) ok: found v2.198
Checking for Email-MIME (v1.904) ok: found v1.911
Checking for URI (v1.37) ok: found v1.60
Checking for List-MoreUtils (v0.22) ok: found v0.33
Checking for Math-Random-ISAAC (v1.0.1) ok: found v1.004

Checking available perl DBD modules...
Checking for DBD-Pg (v1.45) not found
Checking for DBD-mysql (v4.001) ok: found v4.022
Checking for DBD-SQLite (v1.29) ok: found v1.37
Checking for DBD-Oracle (v1.19) not found

The following Perl modules are optional:
Checking for GD (v1.20) ok: found v2.46
Checking for Chart (v2.1) ok: found v2.4.6
Checking for Template-GD (any) ok: found v1.56
Checking for GDTextUtil (any) ok: found v0.86
Checking for GDGraph (any) ok: found v1.44
Checking for MIME-tools (v5.406) ok: found v5.503
Checking for libwww-perl (any) ok: found v6.04
Checking for XML-Twig (any) ok: found v3.42
Checking for PatchReader (v0.9.6) ok: found v0.9.6
Checking for perl-ldap (any) ok: found v0.52
Checking for Authen-SASL (any) ok: found v2.16
Checking for RadiusPerl (any) ok: found v0.22
Checking for SOAP-Lite (v0.712) ok: found v0.715
Checking for JSON-RPC (any) ok: found v1.03
Checking for JSON-XS (v2.0) ok: found v2.33
Checking for Test-Taint (any) ok: found v1.06
Checking for HTML-Parser (v3.40) ok: found v3.55
Checking for HTML-Scrubber (any) ok: found v0.09
Checking for Encode (v2.21) ok: found v2.47
Checking for Encode-Detect (any) ok: found v1.00
Checking for Email-MIME-Attachment-Stripper (any) ok: found v1.316
Checking for Email-Reply (any) ok: found v1.202
Checking for TheSchwartz (any) ok: found v1.10
Subroutine File::Slurp::O_RDWR redefined at lib/File/Slurp.pm line 11
Subroutine File::Slurp::O_CREAT redefined at lib/File/Slurp.pm line 11
Subroutine File::Slurp::O_EXCL redefined at lib/File/Slurp.pm line 11
Checking for Daemon-Generic (any) ok: found v0.82
Checking for mod_perl (v1.999022) ok: found v2.000004
Checking for Apache-SizeLimit (v0.96) ok: found v0.96
Checking for mod_headers (any) ok
Checking for mod_expires (any) ok
Checking for mod_env (any) ok</pre><p></p>
<h3></h3>
<h3>8.- Install Bugzilla.</h3>
<p>Run <strong>./checksetup.pl </strong>once again but this time without any argument to create the <strong>./localconfig</strong> file in which we have to change some options to configure MySQL as the DB Server.</p><pre class="crayon-plain-tag">#./checksetup.pl</pre><p>Update <strong>./localconfig</strong> file changing the following lines:</p><pre class="crayon-plain-tag">$db_driver = 'mysql';
$db_host = 'localhost';
$db_user = 'bugs';
$db_pass = 'your_password';</pre><p>Then run <strong>./checksetup.pl</strong><strong> </strong>for the last time, in this occasion the database will be created and the admin user information is requested:</p><pre class="crayon-plain-tag">Looks like we don't have an administrator set up yet. Either this is

your first time using Bugzilla, or your administrator's privileges
might have accidentally been deleted.

Enter the e-mail address of the administrator: contact@marcotello.com
Enter the real name of the administrator: Marco Tello
Enter a password for the administrator account:
Please retype the password to verify:
contact@marcotello.com&nbsp;is now set up as an administrator.
Creating initial dummy product 'TestProduct'...

Now that you have installed Bugzilla, you should visit the 'Parameters'
page (linked in the footer of the Administrator account) to ensure it
is set up as you wish - this includes setting the 'urlbase' option to
the correct URL.
checksetup.pl complete.</pre><p>&nbsp;</p>
<h3>9.- Bugzilla post installation activities.</h3>
<p>Go to <strong>/var/www/html</strong> directory.</p><pre class="crayon-plain-tag">#cd&nbsp;/var/www/html</pre><p>Delete <strong>bugzilla-4.2.4.tar.gz</strong> file to save space.</p><pre class="crayon-plain-tag">#rm -rf&nbsp;bugzilla-4.2.4.tar.gz</pre><p>Move <strong>bugzilla-4.2.4 </strong>directory to a folder called just <strong>bugzilla</strong>.</p><pre class="crayon-plain-tag">#mv bugzilla-4.2.4 bugzilla</pre><p>Make apache user the owner of bugzilla directory</p><pre class="crayon-plain-tag">#chown -R apache:apache bugzilla</pre><p>Configure MySQL to accept larger attachments in <strong>bugs </strong>database:</p><pre class="crayon-plain-tag">#mysql -u bugs -p
mysql&amp;gt; use bugs
mysql&amp;gt; ALTER TABLE attachments AVG_ROW_LENGTH=1000000, MAX_ROWS=20000;</pre><p>&nbsp;</p>
<h3>10.- Configure Apache to run Bugzilla.</h3>
<p>Create a file named<strong> bugzilla.conf </strong>in <strong>/etc/httpd/conf.d/ </strong>directory with the following content:</p><pre class="crayon-plain-tag">&amp;lt;Directory &quot;/var/www/html/bugzilla&quot;&amp;gt;
   AddHandler cgi-script .cgi
   Options +Indexes +ExecCGI
   DirectoryIndex index.cgi
   AllowOverride Limit FileInfo Indexes</pre><p>Restart Apache.</p><pre class="crayon-plain-tag">#service httpd restart</pre><p>&nbsp;</p>
<h3>11.- Run Bugzilla.</h3>
<p>Open a browser and go to <span class="normal_text_link"><a href="http://localhost/bugzilla">http://localhost/bugzilla</a></span>.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2013/01/bugzilla1.png"><img class="aligncenter size-full wp-image-374" title="bugzilla1" src="https://marcotello.com/wp-content/uploads/2013/01/bugzilla1.png" alt="" width="600" height="305" srcset="https://marcotello.com/wp-content/uploads/2013/01/bugzilla1.png 600w, https://marcotello.com/wp-content/uploads/2013/01/bugzilla1-300x152.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></a></div>
<p>That&#8217;s it, Bugzilla is up and running.<br />
<a id="m" name="missing"></a></p>
<h3>12.- Missing Libraries Installation Section.</h3>
<h4>DBD-mysql (v4.001) is missing</h4>
<p>The DBD-mysql (v4.001) is missing</p>
<p><strong>Solution:</strong> install <strong>mysql-dlevel </strong>library.</p>
<p>To set up properly DBD-mysql (v4.001) you need to install <strong>mysql-devel</strong> first. Run the following command:</p><pre class="crayon-plain-tag">#yum install mysql-devel</pre><p>Once installed run the following command:</p><pre class="crayon-plain-tag">#/usr/bin/perl install-module.pl DBD::mysql</pre><p>&nbsp;</p>
<h4>Can&#8217;t install GD (v1.20).</h4>
<p>There&#8217;s an option to install GD when we get the following error:</p><pre class="crayon-plain-tag">#/usr/bin/perl install-module.pl GD

**UNRECOVERABLE ERROR**
Could not find gdlib-config in the search path. Please install libgd 2.0.28 or higher.
If you want to try to compile anyway, please rerun this script with the option --ignore_missing_gd.</pre><p><strong>Solution</strong>: install <strong>gd-level </strong>package.</p><pre class="crayon-plain-tag">#yum install gd-devel</pre><p>then run the following command to install GD:</p><pre class="crayon-plain-tag">#/usr/bin/perl install-module.pl GD</pre><p>&nbsp;</p>
<h4>XML-Twig is missing.</h4>
<p>The XML-Twig library is missing. It doesn&#8217;t matter how many times you want to run:</p><pre class="crayon-plain-tag">#/usr/bin/perl install-module.pl XML::Twig</pre><p>XML-Twig will not be installed in your system.</p>
<p><strong>Solution:</strong> install <strong>XML Twig</strong> via yum.</p>
<p>Just run the following command:</p><pre class="crayon-plain-tag">#yum install perl-XML-Twig</pre><p>&nbsp;</p>
<h4>Encode::Detect is missing.</h4>
<p>This library is hard to find in the repositories, the best option is to install it manually. You can download the rpm <span class="normal_text_link"><a href="https://dl.dropbox.com/u/31552911/perl-Encode-Detect-1.00-1.el5.rf.i386.rpm">here</a></span>.</p>
<p><strong>Solution:</strong> install manually perl-Encode-Detect rpm.</p><pre class="crayon-plain-tag">#rpm -Uvh perl-Encode-Detect-1.00-1.el5.rf.i386.rpm</pre><p>&nbsp;</p>
<h4>mod_perl is missing.</h4>
<p>mod_per is not installed in your computer.</p>
<p><strong>Solution:</strong> install <strong>mod_perl </strong>via yum.</p><pre class="crayon-plain-tag">#yum install mod_perl</pre><p>&nbsp;</p>
<h4>Can&#8217;t install Apache2::SizeLimit.</h4>
<p>When you try to install Apache Size Limit it returns the following error:</p><pre class="crayon-plain-tag">#Can't find the mod_perl include dir (reason: path /usr/include/httpd doesn't exist) at /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/Apache2/Build.pm line 2030.</pre><p><strong>Solution:</strong> create the <strong>/usr/include/httpd</strong> directory.</p><pre class="crayon-plain-tag">#mkdir /usr/include/httpd

#/usr/bin/perl install-module.pl Apache2::SizeLimit</pre><p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://marcotello.com/bugzilla/bugzilla-installation-in-centos/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Create a Hello World App for Android in Eclipse</title>
		<link>https://marcotello.com/android/create-a-hello-world-app-for-android-in-eclipse/</link>
		<comments>https://marcotello.com/android/create-a-hello-world-app-for-android-in-eclipse/#comments</comments>
		<pubDate>Thu, 06 Dec 2012 15:41:31 +0000</pubDate>
		<dc:creator><![CDATA[Marco Tello]]></dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">https://marcotello.com/?p=284</guid>
		<description><![CDATA[In the following tutorial we will create a Hello World App for Android. The application will display the typical “Hello world!” greeting when we run it through the AVD (Android Virtual Device). We’ll develop all the source code in Eclipse with the help of the ADT plugin (Android Development Tools) and test the application through AVD (included within the plug in). 1.- Prerequisites. Eclipse IDE. Eclipse ADT plugin (Android Development Tools) installed. At least one  Android Virtual Device configured. &#160; 2.-<a href="https://marcotello.com/android/create-a-hello-world-app-for-android-in-eclipse/" class="more_link more_link_dots"> &#8230; </a>]]></description>
				<content:encoded><![CDATA[<p>In the following tutorial we will create a Hello World App for Android. The application will display the typical “Hello world!” greeting when we run it through the AVD (Android Virtual Device). We’ll develop all the source code in Eclipse with the help of the ADT plugin (Android Development Tools) and test the application through AVD (included within the plug in).</p>
<div style="overflow: auto; width: 99%; text-align: center; border: 3px solid #D2D4D5; -moz-border-radius: 15px; border-radius: 15px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; background-color: #ffffff;"><a href="https://marcotello.com/wp-content/uploads/2012/12/helloandroid.jpg"><img class="aligncenter size-full wp-image-306" title="helloandroid" src="https://marcotello.com/wp-content/uploads/2012/12/helloandroid.jpg" alt="" width="504" height="252" srcset="https://marcotello.com/wp-content/uploads/2012/12/helloandroid.jpg 504w, https://marcotello.com/wp-content/uploads/2012/12/helloandroid-300x150.jpg 300w" sizes="(max-width: 504px) 100vw, 504px" /></a><a href="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid1.png"><br />
</a></div>
<p><span id="more-284"></span></p>
<h3>1.- Prerequisites.</h3>
<ul>
<li><span class="normal_text_link"><a href="http://www.eclipse.org/" target="_blank">Eclipse</a></span> IDE.</li>
<li><span class="normal_text_link"><a href="http://developer.android.com/tools/sdk/eclipse-adt.html" target="_blank">Eclipse ADT plugin</a></span> (Android Development Tools) installed.</li>
<li>At least one  <span class="normal_text_link"><a href="http://developer.android.com/tools/devices/managing-avds.html" target="_blank">Android Virtual Device</a></span> configured.</li>
</ul>
<p>&nbsp;</p>
<h3>2.- Create the Android Project.</h3>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid1.png"><img class="aligncenter size-full wp-image-291" title="helloAndroid1" src="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid1.png" alt="" width="593" height="459" srcset="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid1.png 593w, https://marcotello.com/wp-content/uploads/2012/12/helloAndroid1-300x232.png 300w" sizes="(max-width: 593px) 100vw, 593px" /></a></div>
<p>Select File &gt; New &gt; Android Application Project.</p>
<p>Then fill in the inputs with the following information:</p>
<ul>
<li>Application Name: <strong>HelloWorld </strong>(The name that will be displayed in the phone).</li>
<li>Project Name: <strong>HelloWorld </strong>(The name of the project in Eclipse)</li>
<li>Package Name: <strong>com.marco.tello.android </strong>(The package where your code will go)</li>
<li>Minimum Required SDK: <strong>API 10: Android 2.3.3 (Gingerbread)</strong> (Here you are selecting the minimum version of Android in which your application will run)</li>
<li>Target SDK: <strong>API 16 Android 4.1 (Jelly Bean) </strong>(The Target SDK)</li>
<li>Compile With: <strong>API 16 Android 4.1 (Jelly Bean) </strong></li>
<li>Theme: <strong>Holo light with Dark Action Bar </strong></li>
</ul>
<p>&nbsp;</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid2_result.png"><img class="aligncenter size-full wp-image-293" title="helloAndroid2_result" src="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid2_result.png" alt="" width="400" height="369" srcset="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid2_result.png 400w, https://marcotello.com/wp-content/uploads/2012/12/helloAndroid2_result-300x276.png 300w" sizes="(max-width: 400px) 100vw, 400px" /></a></div>
<p>Click Next and click Next again leaving the default options. The next screen introduces us the Icon launcher configuration, leave as default and click Next.</p>
<p>In the next screen check Create Activity and choose &#8220;Blank Activity&#8221; and click Next.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid3_result.png"><img class="aligncenter size-full wp-image-294" title="helloAndroid3_result" src="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid3_result.png" alt="" width="400" height="381" srcset="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid3_result.png 400w, https://marcotello.com/wp-content/uploads/2012/12/helloAndroid3_result-300x285.png 300w" sizes="(max-width: 400px) 100vw, 400px" /></a></div>
<p>Name your Activity as &#8220;HelloAndroid&#8221;. The Activity is the default screen your application shows when it&#8217;s initialized.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid4_result.png"><img class="aligncenter size-full wp-image-295" title="helloAndroid4_result" src="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid4_result.png" alt="" width="400" height="381" srcset="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid4_result.png 400w, https://marcotello.com/wp-content/uploads/2012/12/helloAndroid4_result-300x285.png 300w" sizes="(max-width: 400px) 100vw, 400px" /></a></div>
<p>Click Finish and wait for the magic to end.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid5_result.png"><img class="aligncenter size-full wp-image-326" title="helloAndroid5_result" src="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid5_result.png" alt="" width="590" height="464" srcset="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid5_result.png 590w, https://marcotello.com/wp-content/uploads/2012/12/helloAndroid5_result-300x235.png 300w" sizes="(max-width: 590px) 100vw, 590px" /></a></div>
<p>&nbsp;</p>
<p>That&#8217;s it, your Hello World App is already created, you only have to run it.</p>
<h3>2.- Run the App in a Virtual Device</h3>
<p>If you don&#8217;t have a Virtual Device configured yet, here are the instructions to <span class="normal_text_link"><a href="http://developer.android.com/tools/devices/managing-avds.html">configure one</a></span>.</p>
<p>You need to start your Virtual Device before you run the app. Open Android Virtual Device Manager and click the Start button.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid7_result.png"><img class="aligncenter size-full wp-image-302" title="helloAndroid7_result" src="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid7_result.png" alt="" width="500" height="356" srcset="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid7_result.png 500w, https://marcotello.com/wp-content/uploads/2012/12/helloAndroid7_result-300x213.png 300w" sizes="(max-width: 500px) 100vw, 500px" /></a></div>
<p>The emulator will start but it doesn&#8217;t have your app yet.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid8_result.png"><img class="aligncenter size-full wp-image-303" title="helloAndroid8_result" src="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid8_result.png" alt="" width="342" height="400" srcset="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid8_result.png 342w, https://marcotello.com/wp-content/uploads/2012/12/helloAndroid8_result-256x300.png 256w" sizes="(max-width: 342px) 100vw, 342px" /></a></div>
<p>&nbsp;</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid9_result.png"><img class="aligncenter size-full wp-image-304" title="helloAndroid9_result" src="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid9_result.png" alt="" width="344" height="400" srcset="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid9_result.png 344w, https://marcotello.com/wp-content/uploads/2012/12/helloAndroid9_result-258x300.png 258w" sizes="(max-width: 344px) 100vw, 344px" /></a></div>
<p>To install the app in the Virtual Device emulator you have to select the project in the Package Explorer, right click on it and select Run as &gt; Android application.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid6_result.png"><img class="aligncenter size-full wp-image-301" title="helloAndroid6_result" src="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid6_result.png" alt="" width="500" height="434" srcset="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid6_result.png 500w, https://marcotello.com/wp-content/uploads/2012/12/helloAndroid6_result-300x260.png 300w" sizes="(max-width: 500px) 100vw, 500px" /></a></div>
<p>And voilá! Your Hello World Application is up and running.</p>
<div style="overflow: auto; width: 99%; text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid10_result.png"><img class="aligncenter size-full wp-image-305" title="helloAndroid10_result" src="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid10_result.png" alt="" width="343" height="400" srcset="https://marcotello.com/wp-content/uploads/2012/12/helloAndroid10_result.png 343w, https://marcotello.com/wp-content/uploads/2012/12/helloAndroid10_result-257x300.png 257w" sizes="(max-width: 343px) 100vw, 343px" /></a></div>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>https://marcotello.com/android/create-a-hello-world-app-for-android-in-eclipse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Using the XSLT Transformer in Mule ESB</title>
		<link>https://marcotello.com/mule-esb/using-the-xslt-transformer-in-mule-esb/</link>
		<comments>https://marcotello.com/mule-esb/using-the-xslt-transformer-in-mule-esb/#comments</comments>
		<pubDate>Mon, 26 Nov 2012 02:31:58 +0000</pubDate>
		<dc:creator><![CDATA[Marco Tello]]></dc:creator>
				<category><![CDATA[Mule ESB]]></category>

		<guid isPermaLink="false">https://marcotello.com/?p=262</guid>
		<description><![CDATA[The following example shows how to use the XSLT Transforrmer in Mule ESB. We&#8217;ll transform an XML in the payload to another with a different structure. For this example we&#8217;ll use the XSLT transformation described here. All we need is an input XML like this: Reservation.xml [crayon-68608648dad41591314952/] Github We want to transform it into an output like this: ReservationInfo.xml [crayon-68608648dad47811589485/] It&#8217;s the same data with different structure. To get this, we need to run an XSL transformation in Mule ESB<a href="https://marcotello.com/mule-esb/using-the-xslt-transformer-in-mule-esb/" class="more_link more_link_dots"> &#8230; </a>]]></description>
				<content:encoded><![CDATA[<p>The following example shows how to use the XSLT Transforrmer in Mule ESB. We&#8217;ll transform an XML in the payload to another with a different structure.</p>
<p>For this example we&#8217;ll use the XSLT transformation described <a href="https://marcotello.com/xslt/xslt-1-0-basic-transformation-example/" target="_blank">here</a>.</p>
<div style="overflow:auto; width:99%; text-align:center">
<a href="https://marcotello.com/wp-content/uploads/2012/11/2012-11-25_12-33-48.png"><img src="https://marcotello.com/wp-content/uploads/2012/11/2012-11-25_12-33-48.png" alt="" title="2012-11-25_12-33-48" width="513" height="156" class="aligncenter size-full wp-image-275" srcset="https://marcotello.com/wp-content/uploads/2012/11/2012-11-25_12-33-48.png 513w, https://marcotello.com/wp-content/uploads/2012/11/2012-11-25_12-33-48-300x91.png 300w" sizes="(max-width: 513px) 100vw, 513px" /></a>
</div>
<p><span id="more-262"></span></p>
<p>All we need is an input XML like this:</p>
<p><strong>Reservation.xml</strong></p>
<p></p><pre class="crayon-plain-tag">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
 
&lt;Reservation&gt;
     &lt;reservation id=&quot;123456789&quot; /&gt;
     &lt;arrivingDate&gt;03-09-2012&lt;/arrivingDate&gt;
     &lt;departureDate&gt;03-15-2012&lt;/departureDate&gt;
     &lt;guestName&gt;Fred&lt;/guestName&gt;
     &lt;guestLastName&gt;Davis&lt;/guestLastName&gt;
     &lt;hotelID&gt;03&lt;/hotelID&gt;
     &lt;room&gt;1001&lt;/room&gt;
     &lt;oceanView&gt;true&lt;/oceanView&gt;
     &lt;smokingArea&gt;false&lt;/smokingArea&gt;
&lt;/Reservation&gt;</pre><p></p>
<p style="text-align: right;"><span class="normal_text_link"><a href="https://github.com/marcotello/MuleESB/blob/master/XsltTransformation/src/main/resources/xslt/Reservation.xml" target="_blank"><img class="size-full wp-image-81" title="github-icon2" src="https://marcotello.com/wp-content/uploads/2012/10/github-icon2.png" alt="" width="32" height="32" />Github</a></span></p>
<p>We want to transform it into an output like this:</p>
<p><strong>ReservationInfo.xml</strong></p>
<p></p><pre class="crayon-plain-tag">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
 
&lt;ReservationInfo&gt;
     &lt;reservation id=&quot;123456789&quot; 
                  arrivalDate=&quot;03-09-2012&quot; 
                  departureDate=&quot;03-15-2012&quot; /&gt;
     &lt;guest&gt;
          &lt;name&gt;Fred&lt;/name&gt;
          &lt;lastName&gt;Davis&lt;/lastName&gt;
     &lt;/guest&gt;
     &lt;room number=&quot;1001&quot;&gt;
         &lt;oceanView&gt;true&lt;/oceanView&gt;
         &lt;smokingArea&gt;false&lt;/smokingArea&gt;
     &lt;/room&gt;
&lt;/ReservationInfo&gt;</pre><p></p>
<p>It&#8217;s the same data with different structure.</p>
<p>To get this, we need to run an XSL transformation in Mule ESB using the XSLT Transformer.</p>
<p><strong>xsltTransformation-config.xml</strong></p>
<p></p><pre class="crayon-plain-tag">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;

&lt;mule xmlns:file=&quot;http://www.mulesoft.org/schema/mule/file&quot; xmlns=&quot;http://www.mulesoft.org/schema/mule/core&quot;
	xmlns:http=&quot;http://www.mulesoft.org/schema/mule/http&quot; xmlns:mulexml=&quot;http://www.mulesoft.org/schema/mule/xml&quot;
	xmlns:ajax=&quot;http://www.mulesoft.org/schema/mule/ajax&quot; xmlns:doc=&quot;http://www.mulesoft.org/schema/mule/documentation&quot;
	xmlns:spring=&quot;http://www.springframework.org/schema/beans&quot; xmlns:core=&quot;http://www.mulesoft.org/schema/mule/core&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; version=&quot;CE-3.3.0&quot;
	xsi:schemaLocation=&quot;
http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd 
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.mulesoft.org/schema/mule/ajax http://www.mulesoft.org/schema/mule/ajax/current/mule-ajax.xsd &quot;&gt;
	&lt;file:connector name=&quot;FileConnector&quot; autoDelete=&quot;true&quot;
		streaming=&quot;false&quot; validateConnections=&quot;true&quot; doc:name=&quot;File&quot;&gt;
		&lt;file:expression-filename-parser /&gt;
	&lt;/file:connector&gt;
	&lt;flow name=&quot;xsltTransformation-configFlow1&quot; doc:name=&quot;xsltTransformation-configFlow1&quot;&gt;
		&lt;file:inbound-endpoint responseTimeout=&quot;10000&quot;
			doc:name=&quot;FileInput&quot; connector-ref=&quot;FileConnector&quot; path=&quot;./file-input-directory&quot;&gt;
			&lt;file:filename-wildcard-filter pattern=&quot;*.xml&quot; /&gt;
		&lt;/file:inbound-endpoint&gt;
        &lt;logger message=&quot;#[payload]&quot; level=&quot;INFO&quot; doc:name=&quot;Logger&quot;/&gt;
		&lt;mulexml:xslt-transformer
			maxIdleTransformers=&quot;2&quot; maxActiveTransformers=&quot;5&quot;
			xsl-file=&quot;src/main/resources/xslt/transform.xsl&quot; doc:name=&quot;XSLT&quot; /&gt;
		&lt;file:outbound-endpoint path=&quot;./file-output-directory&quot;
			responseTimeout=&quot;10000&quot; doc:name=&quot;FileOutput&quot;
			outputPattern=&quot;#[function:datestamp]-#[header:originalFilename]&quot; /&gt;
	&lt;/flow&gt;
&lt;/mule&gt;</pre><p></p>
<p style="text-align: right;"><span class="normal_text_link"><a href="https://github.com/marcotello/MuleESB/blob/master/XsltTransformation/src/main/app/xslttransformation-config.xml" target="_blank"><img class="size-full wp-image-81" title="github-icon2" src="https://marcotello.com/wp-content/uploads/2012/10/github-icon2.png" alt="" width="32" height="32" />Github</a></span></p>
<p>We need to tell the XSLT Transformer where the XSL transformation is located in our project (line 26).</p>
<p><strong>Transformation.xslt</strong></p>
<p></p><pre class="crayon-plain-tag">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
 
&lt;xsl:stylesheet version=&quot;1.0&quot;
	xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;
	&lt;xsl:output method=&quot;xml&quot; indent=&quot;yes&quot; /&gt;
	&lt;xsl:template match=&quot;/&quot;&gt;
		&lt;ReservationInfo&gt;
			&lt;reservation&gt;
				&lt;xsl:attribute name=&quot;id&quot;&gt;
					&lt;xsl:value-of select='Reservation/reservation/@id' /&gt;
				&lt;/xsl:attribute&gt;
				&lt;xsl:attribute name=&quot;arrivalDate&quot;&gt;
					&lt;xsl:value-of select='Reservation/arrivingDate' /&gt;
				&lt;/xsl:attribute&gt;
				&lt;xsl:attribute name=&quot;departureDate&quot;&gt;
					&lt;xsl:value-of select='Reservation/departureDate' /&gt;
				&lt;/xsl:attribute&gt; 
			&lt;/reservation&gt;
			&lt;guest&gt;
				&lt;name&gt;
					&lt;xsl:value-of select=&quot;Reservation/guestName&quot; /&gt;
				&lt;/name&gt;
				&lt;lastName&gt;
					&lt;xsl:value-of select=&quot;Reservation/guestLastName&quot; /&gt;
				&lt;/lastName&gt;
			&lt;/guest&gt;
			&lt;room&gt;
				&lt;xsl:attribute name=&quot;number&quot;&gt;
					&lt;xsl:value-of select='Reservation/room' /&gt;
				&lt;/xsl:attribute&gt;
				&lt;oceanView&gt;
					&lt;xsl:value-of select=&quot;Reservation/oceanView&quot; /&gt;
				&lt;/oceanView&gt;
				&lt;smokingArea&gt;
					&lt;xsl:value-of select=&quot;Reservation/smokingArea&quot; /&gt;
				&lt;/smokingArea&gt;
			&lt;/room&gt;
			&lt;/ReservationInfo&gt;
	&lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;</pre><p></p>
<p style="text-align: right;"><span class="normal_text_link"><a href="https://github.com/marcotello/MuleESB/blob/master/XsltTransformation/src/main/resources/xslt/transform.xsl" target="_blank"><img class="size-full wp-image-81" title="github-icon2" src="https://marcotello.com/wp-content/uploads/2012/10/github-icon2.png" alt="" width="32" height="32" />Github</a></span></p>
<p>You might get a warning in Mule&#8217;s console, telling you that you are running an XSLT 1.0 in an XSLT 2.0 processor, but its OK, the transformation will work.</p>
<div style="overflow:auto; width:99%; text-align:center">
<a href="https://marcotello.com/wp-content/uploads/2012/11/2012-11-25_13-07-46.png"><img src="https://marcotello.com/wp-content/uploads/2012/11/2012-11-25_13-07-46.png" alt="" title="2012-11-25_13-07-46" width="559" height="63" class="aligncenter size-full wp-image-266" srcset="https://marcotello.com/wp-content/uploads/2012/11/2012-11-25_13-07-46.png 559w, https://marcotello.com/wp-content/uploads/2012/11/2012-11-25_13-07-46-300x33.png 300w" sizes="(max-width: 559px) 100vw, 559px" /></a>
</div>
<p>You can find the project in Github <span class="normal_text_link"><a href="https://github.com/marcotello/MuleESB/tree/master/XsltTransformation" target="_blank">here</a><span>.</p>
<p>Here is the <span class="normal_text_link"> <a href='https://marcotello.com/wp-content/uploads/2012/11/XsltTransformation.zip'>source code</a></span> of the project.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>https://marcotello.com/mule-esb/using-the-xslt-transformer-in-mule-esb/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>XSLT 1.0 Basic Transformation Example</title>
		<link>https://marcotello.com/xslt/xslt-1-0-basic-transformation-example/</link>
		<comments>https://marcotello.com/xslt/xslt-1-0-basic-transformation-example/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 03:01:46 +0000</pubDate>
		<dc:creator><![CDATA[Marco Tello]]></dc:creator>
				<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">https://marcotello.com/?p=203</guid>
		<description><![CDATA[The following example shows a basic XSLT transformation from one XML to another with a different structure. &#160; &#160; Prerequisites I&#8217;m assuming that the reader has the following skills: XML basic knowledge. XPath knowledge. &#160; Basic Transformation Let&#8217;s begin with this XML: &#160; Reservation.xml [crayon-68608648db28a389618128/] And we want to transform it into a different XML, like this: &#160; ReservationInfo.xml [crayon-68608648db28d548991507/] &#160; It&#8217;s the same data but in different order. To obtain this result, we need a XSLT transformation like this:<a href="https://marcotello.com/xslt/xslt-1-0-basic-transformation-example/" class="more_link more_link_dots"> &#8230; </a>]]></description>
				<content:encoded><![CDATA[<p>The following example shows a basic XSLT transformation from one XML to another with a different structure.<br />
&nbsp;</p>
<div style="overflow:auto; width:99%; text-align:center">
<a href="https://marcotello.com/wp-content/uploads/2012/11/XSLTTransform.png"><img src="https://marcotello.com/wp-content/uploads/2012/11/XSLTTransform.png" alt="" title="XSLTTransform" width="599" height="277" class="aligncenter size-full wp-image-258" srcset="https://marcotello.com/wp-content/uploads/2012/11/XSLTTransform.png 599w, https://marcotello.com/wp-content/uploads/2012/11/XSLTTransform-300x138.png 300w" sizes="(max-width: 599px) 100vw, 599px" /></a>
</div>
<p>&nbsp;<br />
<span id="more-203"></span></p>
<h3>Prerequisites</h3>
<p>I&#8217;m assuming that the reader has the following skills:</p>
<ul>
<li><span class="normal_text_link"><a href="http://www.w3.org/XML/" target="_blank">XML</a></span> basic knowledge.</li>
<li><span class="normal_text_link"><a href="http://www.w3.org/TR/xpath/" target="_blank">XPath</a></span> knowledge.</li>
</ul>
<p>&nbsp;</p>
<h3>Basic Transformation</h3>
<p>Let&#8217;s begin with this XML:<br />
&nbsp;</p>
<p><strong>Reservation.xml</strong></p><pre class="crayon-plain-tag">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
 
&lt;Reservation&gt;
     &lt;reservation id=&quot;123456789&quot; /&gt;
     &lt;arrivingDate&gt;03-09-2012&lt;/arrivingDate&gt;
     &lt;departureDate&gt;03-15-2012&lt;/departureDate&gt;
     &lt;guestName&gt;Fred&lt;/guestName&gt;
     &lt;guestLastName&gt;Davis&lt;/guestLastName&gt;
     &lt;hotelID&gt;03&lt;/hotelID&gt;
     &lt;room&gt;1001&lt;/room&gt;
     &lt;oceanView&gt;true&lt;/oceanView&gt;
     &lt;smokingArea&gt;false&lt;/smokingArea&gt;
&lt;/Reservation&gt;</pre><p></p>
<p>And we want to transform it into a different XML, like this:<br />
&nbsp;</p>
<p><strong>ReservationInfo.xml</strong></p><pre class="crayon-plain-tag">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;

&lt;ReservationInfo&gt;
     &lt;reservation id=&quot;123456789&quot; 
                  arrivalDate=&quot;03-09-2012&quot; 
                  departureDate=&quot;03-15-2012&quot; /&gt;
     &lt;guest&gt;
          &lt;name&gt;Fred&lt;/name&gt;
          &lt;lastName&gt;Davis&lt;/lastName&gt;
     &lt;/guest&gt;
     &lt;room number=&quot;1001&quot;&gt;
         &lt;oceanView&gt;true&lt;/oceanView&gt;
         &lt;smokingArea&gt;false&lt;/smokingArea&gt;
     &lt;/room&gt;
&lt;/ReservationInfo&gt;</pre><p>&nbsp;<br />
It&#8217;s the same data but in different order. To obtain this result, we need a XSLT transformation like this:<br />
&nbsp;</p>
<p><strong>Transformation.xslt</strong></p><pre class="crayon-plain-tag">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;

&lt;xsl:stylesheet version=&quot;1.0&quot;
	xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;
	&lt;xsl:output method=&quot;xml&quot; indent=&quot;yes&quot; /&gt;
	&lt;xsl:template match=&quot;/&quot;&gt;
		&lt;ReservationInfo&gt;
			&lt;reservation&gt;
				&lt;xsl:attribute name=&quot;id&quot;&gt;
					&lt;xsl:value-of select='Reservation/reservation/@id' /&gt;
				&lt;/xsl:attribute&gt;
				&lt;xsl:attribute name=&quot;arrivalDate&quot;&gt;
					&lt;xsl:value-of select='Reservation/arrivingDate' /&gt;
				&lt;/xsl:attribute&gt;
				&lt;xsl:attribute name=&quot;departureDate&quot;&gt;
					&lt;xsl:value-of select='Reservation/departureDate' /&gt;
				&lt;/xsl:attribute&gt; 
			&lt;/reservation&gt;
			&lt;guest&gt;
				&lt;name&gt;
					&lt;xsl:value-of select=&quot;Reservation/guestName&quot; /&gt;
				&lt;/name&gt;
				&lt;lastName&gt;
					&lt;xsl:value-of select=&quot;Reservation/guestLastName&quot; /&gt;
				&lt;/lastName&gt;
			&lt;/guest&gt;
			&lt;room&gt;
				&lt;xsl:attribute name=&quot;number&quot;&gt;
					&lt;xsl:value-of select='Reservation/room' /&gt;
				&lt;/xsl:attribute&gt;
				&lt;oceanView&gt;
					&lt;xsl:value-of select=&quot;Reservation/oceanView&quot; /&gt;
				&lt;/oceanView&gt;
				&lt;smokingArea&gt;
					&lt;xsl:value-of select=&quot;Reservation/smokingArea&quot; /&gt;
				&lt;/smokingArea&gt;
			&lt;/room&gt;
			&lt;/ReservationInfo&gt;
	&lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;</pre><p>&nbsp;</p>
<p>You can notice a few things about the XSLT above:<br />
&nbsp;</p>
<ul>
<li>You have to write your new XML tree and populate it with the values of the old one.</li>
<li> The tag <strong>xsl:value-of select=&#8221;&#8221;</strong> is the basic selector for getting information about a node or attribute.</li>
<li>If you want to insert an attribute inside a node, follow the steps from line 29 to 31</li>
<li>To get the value of an attribute, add an @ before the name of the attribute. Look at line 10</li>
</ul>
<p>&nbsp;<br />
Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>https://marcotello.com/xslt/xslt-1-0-basic-transformation-example/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Create a Java Hello World Example with Google App Engine in Eclipse</title>
		<link>https://marcotello.com/google-app-engine/create-a-hello-world-example-with-google-app-engine-and-java-in-eclipse/</link>
		<comments>https://marcotello.com/google-app-engine/create-a-hello-world-example-with-google-app-engine-and-java-in-eclipse/#comments</comments>
		<pubDate>Mon, 12 Nov 2012 01:42:53 +0000</pubDate>
		<dc:creator><![CDATA[Marco Tello]]></dc:creator>
				<category><![CDATA[Google App Engine]]></category>

		<guid isPermaLink="false">https://marcotello.com/?p=148</guid>
		<description><![CDATA[In the following tutorial we will create a Java Google App Engine example. The application will display the typical &#8220;Hello World&#8221; greeting when it is invoked. We&#8217;ll develop all the source code in Eclipse with the help of the GAE plugin for Eclipse, test the application through Google App Engine Runtime (included within the plug in) and finally we will deploy it to the GAE account. 1.- Prerequisites Eclipse IDE. GAE Eclipse Plugin for Eclipse. A Google App Engine account<a href="https://marcotello.com/google-app-engine/create-a-hello-world-example-with-google-app-engine-and-java-in-eclipse/" class="more_link more_link_dots"> &#8230; </a>]]></description>
				<content:encoded><![CDATA[<p>In the following tutorial we will create a Java Google App Engine example. The application will display the typical &#8220;Hello World&#8221; greeting when it is invoked. We&#8217;ll develop all the source code in Eclipse with the help of the GAE plugin for Eclipse, test the application through Google App Engine Runtime (included within the plug in) and finally we will deploy it to the GAE account.</p>
<p style="text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/11/google_app_engine.gif"><img class="aligncenter  wp-image-159" title="google_app_engine" src="https://marcotello.com/wp-content/uploads/2012/11/google_app_engine.gif" alt="" width="600" height="180" srcset="https://marcotello.com/wp-content/uploads/2012/11/google_app_engine.gif 1000w, https://marcotello.com/wp-content/uploads/2012/11/google_app_engine-300x90.gif 300w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<p><span id="more-148"></span></p>
<h3>1.- Prerequisites</h3>
<ol>
<li><span class="normal_text_link"><a href="http://www.eclipse.org/" target="_blank">Eclipse</a></span> IDE.</li>
<li><span class="normal_text_link"><a href="https://developers.google.com/appengine/docs/java/tools/eclipse" target="_blank">GAE Eclipse</a></span> Plugin for Eclipse.</li>
<li>A <span class="normal_text_link"><a href="https://developers.google.com/appengine/" target="_blank">Google App Engine</a></span> account (to test the app in GAE)</li>
</ol>
<p>&nbsp;</p>
<h3>2.- Create the GAE Project</h3>
<p>Once you have installed the GAE Plugin for Eclipse, a new icon (a blue &#8220;g&#8221;) will be shown in the tool bar. Click it and a menu will be displayed.</p>
<p style="text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/11/2012-11-11_11-05-19.png"><img class="aligncenter size-full wp-image-163" title="2012-11-11_11-05-19" src="https://marcotello.com/wp-content/uploads/2012/11/2012-11-11_11-05-19.png" alt="" width="309" height="276" srcset="https://marcotello.com/wp-content/uploads/2012/11/2012-11-11_11-05-19.png 309w, https://marcotello.com/wp-content/uploads/2012/11/2012-11-11_11-05-19-300x267.png 300w" sizes="(max-width: 309px) 100vw, 309px" /></a></p>
<p>Select New Web Application Project.</p>
<p>A new wizard appears and you have to put the information about your project.</p>
<p style="text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE1.png"><img class="aligncenter" title="HelloWorldGAE1" src="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE1.png" alt="" width="392" height="524" /></a></p>
<p>Make sure that the <strong>Use Google Web Toolkit </strong>is unchecked, then click Finish.<br />
&nbsp;</p>
<h3>3.-Code your Project</h3>
<p>The created project will have this structure:</p>
<p style="text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE3.png"><img class="aligncenter size-medium wp-image-170" title="HelloWorldGAE3" src="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE3-235x300.png" alt="" width="235" height="300" srcset="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE3-235x300.png 235w, https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE3.png 400w" sizes="(max-width: 235px) 100vw, 235px" /></a></p>
<p>&nbsp;</p>
<p>The structure of the project is like a typical Web project with some extra libraries and a <strong>appengine-web.xml </strong>, which we will look into later.</p>
<p>As you can see, a <strong>Servlet</strong> is created. In this Servlet you will put all the logic for the incoming requests that your application will have.</p>
<p>In this example we will return <strong>Hello world from GAE </strong>, so let&#8217;s take a look into the code.</p>
<p></p><pre class="crayon-plain-tag">package com.marco.tello;
import java.io.IOException;
import javax.servlet.http.*;

@SuppressWarnings(&quot;serial&quot;)
public class HelloWorldGAEServlet extends HttpServlet {
	public void doGet(HttpServletRequest req, HttpServletResponse resp) 
           throws IOException {
		
		resp.setContentType(&quot;text/plain&quot;);
		resp.getWriter().println(&quot;Hello world from GAE&quot;);
	}
}</pre><p></p>
<p>&nbsp;</p>
<h3>4.- Test your Application Local</h3>
<p>At this point you can test your application in your local environment. Right click on <strong>HelloWorldGAEServlet.java-&gt;Run As-&gt;Web Application.</strong></p>
<p style="text-align: center;"> <a href="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE4-1.png"><img class="wp-image-171 alignnone" title="HelloWorldGAE4-1" src="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE4-1.png" alt="" width="561" height="472" srcset="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE4-1.png 935w, https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE4-1-300x252.png 300w" sizes="(max-width: 561px) 100vw, 561px" /></a></p>
<p style="text-align: left;">You will see the embedded server starting and when the deploy is ready, something like this will show in the Console tab.</p>
<p><a href="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE4.png"><img class="aligncenter  wp-image-172" title="HelloWorldGAE4" src="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE4.png" alt="" width="743" height="428" srcset="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE4.png 1238w, https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE4-300x173.png 300w, https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE4-1024x590.png 1024w" sizes="(max-width: 743px) 100vw, 743px" /></a></p>
<p>Open a browser and go to <span class="normal_text_link"><a href="http://localhost:8888/">http://localhost:8888/</a></span>. The main Google App Engine screen comes up.</p>
<p style="text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE5.png"><img class="aligncenter size-full wp-image-173" title="HelloWorldGAE5" src="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE5.png" alt="" width="300" height="249" /></a></p>
<p>If you click on <span class="normal_text_link"><a href="http://localhost:8888/helloworldgae">HelloWorldGAE</a></span> you will see the greeting from the servlet you just modified.</p>
<p style="text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE8.png"><img class="aligncenter size-full wp-image-174" title="HelloWorldGAE8" src="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE8.png" alt="" width="383" height="173" srcset="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE8.png 383w, https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE8-300x135.png 300w" sizes="(max-width: 383px) 100vw, 383px" /></a></p>
<p>That&#8217;s it!</p>
<p>&nbsp;</p>
<h3>5- Deploy to Google App Engine</h3>
<p>For this step you have to create an account in  <span class="normal_text_link"><a href="https://appengine.google.com/" target="_blank">https://appengine.google.com/</a></span> and register you application. Google will only let you register 10 application, so be careful!</p>
<p>Modify the <strong>appengine-web.xml </strong>with the name of your registered application. In my case it is <strong>marcotello-test.</strong></p>
<p></p><pre class="crayon-plain-tag">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;appengine-web-app xmlns=&quot;http://appengine.google.com/ns/1.0&quot;&gt;
  &lt;application&gt;marcotello-test&lt;/application&gt;
  &lt;version&gt;1&lt;/version&gt;

  &lt;!--
    Allows App Engine to send multiple requests to one instance in parallel:
  --&gt;
  &lt;threadsafe&gt;true&lt;/threadsafe&gt;

  &lt;!-- Configure java.util.logging --&gt;
  &lt;system-properties&gt;
    &lt;property name=&quot;java.util.logging.config.file&quot; value=&quot;WEB-INF/logging.properties&quot;/&gt;
  &lt;/system-properties&gt;

  &lt;!--
    HTTP Sessions are disabled by default. To enable HTTP sessions specify:

      &lt;sessions-enabled&gt;true&lt;/sessions-enabled&gt;

    It's possible to reduce request latency by configuring your application to
    asynchronously write HTTP session data to the datastore:

      &lt;async-session-persistence enabled=&quot;true&quot; /&gt;

    With this feature enabled, there is a very small chance your app will see
    stale session data. For details, see
    http://code.google.com/appengine/docs/java/config/appconfig.html#Enabling_Sessions
  --&gt;

&lt;/appengine-web-app&gt;</pre><p></p>
<p>&nbsp;</p>
<p>Once you save the changes, click on the <strong>g </strong>icon in the tool bar and select <strong>Deploy to App Engine&#8230; </strong></p>
<p>At this point you will have to log in with your Google account and the deployment will start.</p>
<p style="text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE9.png"><img class="aligncenter size-full wp-image-175" title="HelloWorldGAE9" src="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE9.png" alt="" width="633" height="285" srcset="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE9.png 633w, https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE9-300x135.png 300w" sizes="(max-width: 633px) 100vw, 633px" /></a></p>
<p>When the deployment is finished, the following message will show up in the Eclipse console:</p>
<p>&nbsp;</p>
<p><span style="color: #0000ff; font-family: 'andale mono', times;">Deployment completed successfully</span></p>
<p>&nbsp;</p>
<p style="text-align: left;"> Test the application in the browser with the name of your registered application followed by <strong>appspot.com</strong>. In my case it&#8217;s <span class="normal_text_link"><a href="http://marcotello-test.appspot.com/">http://marcotello-test.appspot.com/</a></span></p>
<p style="text-align: center;"><a href="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE11.png"><img class="aligncenter size-full wp-image-176" title="HelloWorldGAE11" src="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE11.png" alt="" width="349" height="263" srcset="https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE11.png 349w, https://marcotello.com/wp-content/uploads/2012/11/HelloWorldGAE11-300x226.png 300w" sizes="(max-width: 349px) 100vw, 349px" /></a></p>
<p style="text-align: left;">Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>https://marcotello.com/google-app-engine/create-a-hello-world-example-with-google-app-engine-and-java-in-eclipse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Deploy an HTML 5 website with Mule ESB</title>
		<link>https://marcotello.com/mule-esb/deploy-an-html-5-website-with-mule-esb/</link>
		<comments>https://marcotello.com/mule-esb/deploy-an-html-5-website-with-mule-esb/#comments</comments>
		<pubDate>Mon, 05 Nov 2012 00:13:13 +0000</pubDate>
		<dc:creator><![CDATA[Marco Tello]]></dc:creator>
				<category><![CDATA[Mule ESB]]></category>

		<guid isPermaLink="false">https://marcotello.com/?p=131</guid>
		<description><![CDATA[Mule ESB has a Jetty server within so its possible to deploy a JSP and HTML pages through it. The following example shows how to deploy a HTML 5 page in Mule ESB. MuleWebsite-config.xml [crayon-68608648dbd04627012722/] Github You can notice 3 important things in line number 16 The port parameter: this parameter define the port of your website. The host parameter: this parameter could be the host name or the IP. The directory parameter: in this directory you have to store your website files including WEB-INF directory as usual in all<a href="https://marcotello.com/mule-esb/deploy-an-html-5-website-with-mule-esb/" class="more_link more_link_dots"> &#8230; </a>]]></description>
				<content:encoded><![CDATA[<p>Mule ESB has a Jetty server within so its possible to deploy a JSP and HTML pages through it.</p>
<p style="text-align: left;"><a href="https://marcotello.com/wp-content/uploads/2012/11/MuleESBServletContainer.png"><img class="aligncenter  wp-image-139" title="MuleESBServletContainer" src="https://marcotello.com/wp-content/uploads/2012/11/MuleESBServletContainer.png" alt="" width="332" height="284" srcset="https://marcotello.com/wp-content/uploads/2012/11/MuleESBServletContainer.png 504w, https://marcotello.com/wp-content/uploads/2012/11/MuleESBServletContainer-300x257.png 300w" sizes="(max-width: 332px) 100vw, 332px" /></a><br />
The following example shows how to deploy a HTML 5 page in Mule ESB.</p>
<p style="text-align: left;"><span id="more-131"></span></p>
<p><strong>MuleWebsite-config.xml</strong></p>
<p></p><pre class="crayon-plain-tag">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;

&lt;mule xmlns=&quot;http://www.mulesoft.org/schema/mule/core&quot; xmlns:jetty=&quot;http://www.mulesoft.org/schema/mule/jetty&quot;
	xmlns:doc=&quot;http://www.mulesoft.org/schema/mule/documentation&quot;
	xmlns:spring=&quot;http://www.springframework.org/schema/beans&quot; version=&quot;CE-3.3.0&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xsi:schemaLocation=&quot;
http://www.mulesoft.org/schema/mule/jetty http://www.mulesoft.org/schema/mule/jetty/current/mule-jetty.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd &quot;&gt;
	&lt;description&gt; This project presents the Mule Start Page that shows the
		version and the projects deployed in Mule ESB.&lt;/description&gt;
	&lt;jetty:connector name=&quot;Jetty&quot; doc:name=&quot;Jetty&quot;
		doc:description=&quot;This is the conector to Jetty server&quot;&gt;
		&lt;jetty:webapps port=&quot;8093&quot; host=&quot;localhost&quot; directory=&quot;${app.home}/webapps&quot; /&gt;
	&lt;/jetty:connector&gt;
&lt;/mule&gt;</pre><p></p>
<p style="text-align: right;"><span class="normal_text_link"><a href="https://github.com/marcotello/MuleESB/blob/master/MuleWebsite/src/main/app/MuleWebsite-config.xml" target="_blank"><img class="size-full wp-image-81" title="github-icon2" src="https://marcotello.com/wp-content/uploads/2012/10/github-icon2.png" alt="" width="32" height="32" />Github</a></span></p>
<p>You can notice 3 important things in line number 16</p>
<ul>
<li>The <strong>port </strong>parameter: this parameter define the port of your website.</li>
<li>The <strong>host </strong>parameter: this parameter could be the host name or the IP.</li>
<li>The <strong>directory </strong>parameter: in this directory you have to store your website files including <strong>WEB-INF </strong>directory as usual in all java application servers and servlet containers. The <strong>${app.home} </strong>keyword refers to <strong>/PROJECT-FOLDER/</strong> directory in Mule ESB standalone and <strong>/PROJECT-FOLDER/src/main/app/webapps </strong>directory in Mule Studio.</li>
</ul>
<p>&nbsp;</p>
<p><strong>Index.jsp</strong></p>
<p></p><pre class="crayon-plain-tag">&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot; pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
		&lt;title&gt;Mule ESB 3.3.0&lt;/title&gt;
		&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/style.css&quot; /&gt;
		&lt;link rel=&quot;shortcut icon&quot; href=&quot;img/esb.ico&quot; /&gt;
		&lt;!-- Internet Explorer HTML5 enabling code: --&gt;
		&lt;!--[if IE]&gt;
		&lt;script src=&quot;http://html5shiv.googlecode.com/svn/trunk/html5.js&quot;&gt;&lt;/script&gt;

		&lt;style type=&quot;text/css&quot;&gt;
		.clear {
		zoom: 1;
		display: block;
		}
		&lt;/style&gt;

		&lt;![endif]--&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;section id=&quot;page&quot;&gt;
			&lt;!-- Defining the #page section with the section tag --&gt;
			&lt;header&gt;
				&lt;!-- Defining the header section of the page with the appropriate tag --&gt;
				&lt;hgroup id=&quot;logo&quot;&gt;
					&lt;a href=&quot;http://localhost/mule&quot;&gt;&lt;img src=&quot;img/MuleESB.png&quot; alt=&quot;Mule ESB 3.3.0&quot; /&gt;&lt;/a&gt;
					&lt;h3&gt;Mule ESB 3.3.0 is up and kicking&lt;/h3&gt;
				&lt;/hgroup&gt;
				&lt;nav class=&quot;clear&quot;&gt;
					&lt;!-- The nav link semantically marks your main site navigation --&gt;
					&lt;ul&gt;
						&lt;li&gt;
							&lt;a href=&quot;http://www.mulesoft.org/&quot; target=&quot;_blank&quot;&gt;Mule ESB&lt;/a&gt;
						&lt;/li&gt;
						&lt;li&gt;
							&lt;a href=&quot;http://html5.org/&quot; target=&quot;_blank&quot;&gt;HTML 5&lt;/a&gt;
						&lt;/li&gt;
						&lt;li&gt;
							&lt;a href=&quot;https://marcotello.com/&quot; target=&quot;_blank&quot;&gt;Marco Tello&lt;/a&gt;
						&lt;/li&gt;
					&lt;/ul&gt;
				&lt;/nav&gt;
			&lt;/header&gt;
			&lt;section id=&quot;articles&quot;&gt;
				&lt;article id=&quot;article1&quot;&gt;
					&lt;h2&gt;What is Mule ESB?&lt;/h2&gt;
					&lt;div class=&quot;line&quot;&gt;&lt;/div&gt;
					&lt;div class=&quot;articleBody clear&quot;&gt;
						&lt;figure&gt;
							&lt;img src=&quot;http://localhost:8093/mule/img/home-diagram.png&quot; /&gt;
						&lt;/figure&gt;
						&lt;p&gt;
							Mule ESB is the SOA key in the application integration development, adding message routing, endpoint virtualization and transformation capabilities. 
						&lt;/p&gt;
					&lt;/div&gt;
				&lt;/article&gt;
			&lt;/section&gt;
			&lt;footer&gt;
				&lt;div class=&quot;line&quot;&gt;&lt;/div&gt;
				&lt;p&gt;
					Marco Tello - 2012
				&lt;/p&gt;
				&lt;!-- Change the copyright notice
				&lt;a href=&quot;#&quot; class=&quot;up&quot;&gt;Go UP&lt;/a&gt;
				&lt;a href=&quot;http://tutorialzine.com/2010/02/html5-css3-website-template/&quot; class=&quot;by&quot;&gt;Template by Tutorialzine&lt;/a&gt; 
				&lt;a href=&quot;http://www.mulesoft.org/&quot; class=&quot;up&quot;&gt;&lt;img src=&quot;img/mulehead_large.png&quot; height=&quot;45&quot; width=&quot;45&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; --&gt;
				&lt;a href=&quot;http://www.w3.org/html/logo/&quot; class=&quot;up&quot;&gt;
                 	&lt;img src=&quot;http://www.w3.org/html/logo/badge/html5-badge-h-css3-semantics.png&quot; width=&quot;116&quot; height=&quot;45&quot; alt=&quot;HTML5 Powered with CSS3 / Styling, and Semantics&quot; title=&quot;HTML5 Powered with CSS3 / Styling, and Semantics&quot;&gt;
				&lt;/a&gt;
			&lt;/footer&gt;
		&lt;/section&gt;
		&lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot;&gt;&lt;/script&gt;
		&lt;script src=&quot;jquery.scrollTo-1.4.2/jquery.scrollTo-min.js&quot;&gt;&lt;/script&gt;
		&lt;script src=&quot;js/script.js&quot;&gt;&lt;/script&gt;
	&lt;/body&gt;
&lt;/html&gt;</pre><p></p>
<p style="text-align: right;"><span class="normal_text_link"><a href="https://github.com/marcotello/MuleESB/blob/master/MuleWebsite/src/main/app/webapps/mule/index.jsp" target="_blank"><img class="size-full wp-image-81" title="github-icon2" src="https://marcotello.com/wp-content/uploads/2012/10/github-icon2.png" alt="" width="32" height="32" />Github</a></span></p>
<p>Notice that is an HTML 5 compliant web page wrapped in an JSP file.</p>
<p>&nbsp;</p>
<p>The Mule Studio project source code is here <span class="normal_text_link"><a href="https://marcotello.com/wp-content/uploads/2012/11/MuleWebsite.zip">MuleWebsite.zip</a></span> or you can find the project on <span class="normal_text_link"><a href="https://github.com/marcotello/MuleESB/tree/master/MuleWebsite" target="_blank">Github</a></span></p>
]]></content:encoded>
			<wfw:commentRss>https://marcotello.com/mule-esb/deploy-an-html-5-website-with-mule-esb/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
