<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;AkIBRnkyeCp7ImA9WhRUFkg.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737</id><updated>2012-01-27T15:32:37.790+05:30</updated><category term="linux" /><category term="IBM" /><category term="mobile" /><category term="sample code" /><category term="amazon-ec2" /><category term="java" /><category term="software" /><category term="Business Objects" /><category term="tips and tricks" /><category term="my-open-source" /><category term=".net" /><category term="freeware" /><category term="BPEL" /><category term="iMac" /><category term="oracle" /><title>Trip over IT</title><subtitle type="html">Building a bridge at eventide</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://tripoverit.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/KhsTt" /><feedburner:info uri="blogspot/khstt" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D0IGRX49eSp7ImA9WhdUEEQ.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-597479566509281217</id><published>2011-09-25T22:57:00.000+05:30</published><updated>2011-09-27T09:22:04.061+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-27T09:22:04.061+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="my-open-source" /><title>Heap Visualizer (web app)</title><content type="html">&lt;div class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif; text-align: justify;"&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-iS9pWxH2tSM/Tn9tGHDI2GI/AAAAAAAAAIk/Vs7KBUi5w-Y/s1600/heapv2.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="265" src="http://3.bp.blogspot.com/-iS9pWxH2tSM/Tn9tGHDI2GI/AAAAAAAAAIk/Vs7KBUi5w-Y/s400/heapv2.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;JVM Memory (Heap and Non-Heap) Visualizer&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://code.google.com/p/heap-visualizer-webapp/"&gt;http://code.google.com/p/heap-visualizer-webapp/&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
You're having some heap-related issues (OOM, long GC pauses) in production and do not have the liberty to fire up jconsole or install glassbox (or something similar) to diagnose the situation. What do you do Jack?&lt;br /&gt;
&lt;br /&gt;
I these situations, I wished that&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;I could have a view of the Heap &lt;i&gt;and Non-Heap&lt;/i&gt; sections simultaneously.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;I could then drill down into either or both the sections and view details of the different heap generations and sections as the application progressed&amp;nbsp;&lt;/li&gt;
&lt;li&gt;I could do this by simply dropping an app (.war) into the app server to monitor the heap.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
Luckily I didn't waste too much time wishing for more and &lt;a href="http://code.google.com/p/heap-visualizer-webapp/"&gt;just wrote the darn thing&lt;/a&gt; :)&lt;br /&gt;
&lt;br /&gt;
Well, in keeping with the philosophy of this blog I thought I'd share it so that it might be useful to someone someday.&lt;br /&gt;
&lt;br /&gt;
I normally deploy the app as 'heap.war' so I can reach it at http://[server]:[port]/heap&lt;br /&gt;
&lt;br /&gt;
Here's what you see when you first access it:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-b_16MmMWsUM/Tn9rO2OyrNI/AAAAAAAAAIc/5RpmI3omPl8/s1600/heapv1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="172" src="http://3.bp.blogspot.com/-b_16MmMWsUM/Tn9rO2OyrNI/AAAAAAAAAIc/5RpmI3omPl8/s640/heapv1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif; text-align: justify;"&gt;
The screen shows the overall used/committed/max values for the 'Heap' and 'Non Heap' sections of the memory used by the JVM.&lt;br /&gt;
The UI is minimal and the colors have been chosen to present a 'console' experience.&lt;br /&gt;
There are two graphs, a bullet graph that plots the used, committed and max values for the respective portion of memory, and a line graph that plots the relative movement of the 'used memory' values.&lt;br /&gt;
&lt;br /&gt;
If you click on the 'details' link you'll see something like this:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-iS9pWxH2tSM/Tn9tGHDI2GI/AAAAAAAAAIk/Vs7KBUi5w-Y/s1600/heapv2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="426" src="http://3.bp.blogspot.com/-iS9pWxH2tSM/Tn9tGHDI2GI/AAAAAAAAAIk/Vs7KBUi5w-Y/s640/heapv2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
As you can see, you'll be able to see drill-down details of the 'heap' and 'non-heap' memory components and their respective memory usage and utilization characteristics.&lt;br /&gt;
&lt;br /&gt;
The next version have customizable refresh-rate (it's currently set at 2 seconds), an option to invoke a Garbage Collection and a way to look at the detailed properties of the current JVM&lt;br /&gt;
&lt;br /&gt;
The code is at&amp;nbsp;&lt;a href="http://code.google.com/p/heap-visualizer-webapp/"&gt;http://code.google.com/p/heap-visualizer-webapp/&lt;/a&gt;&lt;br /&gt;
You can get the source and the download (.war) from the menu on this page.&lt;br /&gt;
&lt;br /&gt;
Do post your feedback and feature requests :)&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-597479566509281217?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QfjbuEk6hDkiGZTkPrnjKJ7Js2o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QfjbuEk6hDkiGZTkPrnjKJ7Js2o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QfjbuEk6hDkiGZTkPrnjKJ7Js2o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QfjbuEk6hDkiGZTkPrnjKJ7Js2o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/VQ9RX1hQPc4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/597479566509281217/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=597479566509281217" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/597479566509281217?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/597479566509281217?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/VQ9RX1hQPc4/heap-visualizer-web-app.html" title="Heap Visualizer (web app)" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-iS9pWxH2tSM/Tn9tGHDI2GI/AAAAAAAAAIk/Vs7KBUi5w-Y/s72-c/heapv2.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2011/09/heap-visualizer-web-app.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cCQ3c9fCp7ImA9WhdVGUo.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-7352248659061446605</id><published>2011-06-30T10:47:00.087+05:30</published><updated>2011-09-25T23:54:22.964+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-25T23:54:22.964+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>Technical Disclaimers</title><content type="html">&lt;div style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;I just read an interesting document on &lt;a href="http://www.cas.mcmaster.ca/~baber/Courses/3J03/StudentPresentations/DisclaimersZylinski.pdf"&gt;software disclaimers by Jarek Zylinski&lt;/a&gt; which is, &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;in  short, more of an appeal to develop software using educated (read  professionally trained) and ethical (read decent-human-beings)  personnel.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;I took a few minutes to ponder on the impact this kind of &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;thinking &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;could have to so-called intermediate software artefacts/products created during a product's SLDC. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;In today's multi-company development environments, this is especially important as experts from one company might create an overall architecture, while experts from another firm create high-level designs and integration specifications and another firm might actually realize the design into a tangible code. During this process, there are several software artefacts, especially documents, to be generated before the final product is realized, and at some level all of these artefacts could benefit from having a way of telling the audience what they are really about and what the audience should really focus on without getting caught up in the "letter" of the document.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;You, as a producer of an artefact that is in the form of a document, need to have a way to declare upfront where you've directed your efforts and your wishes to ensure that the audience views the document as you do.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;Here is, what I believe to be one of the clearest disclaimers to add to a technical document:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #625b5a; font-family: arial, helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;table style="background-color: black; text-align: justify;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="color: yellow;"&gt;
&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"&gt;The  contents of this document are believed to be accurate.&amp;nbsp;This is not a  legal document and should not be treated as such. The statements,  information and recommendations mentioned in this document are intended  to be read more in spirit than in letter. This document is intended to  be objective. Any subjectivity or bias that has crept into this document  must be considered unintentional and must be attributed to a human  failing on the part of the author.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: yellow;"&gt;
&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: large;"&gt;The author(s) of this document agree to the terms above.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span class="Apple-style-span" style="color: #625b5a;"&gt;I really don't recall where I got this from, but I do recall seeing something similar in a document I read on the internet. I might have, at the time edited it for relevance to my field of work but have lost the source of this inspiration.&lt;/span&gt;&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;div style="text-align: justify;"&gt;
&lt;span class="Apple-style-span" style="color: #625b5a;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #625b5a;"&gt;If any reader that stumbles upon this post and has knowledge of its source, please comment and I shall take appropriate action.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-7352248659061446605?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qEdXLK5_TOICs30jAUpKP0lx3ug/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qEdXLK5_TOICs30jAUpKP0lx3ug/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qEdXLK5_TOICs30jAUpKP0lx3ug/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qEdXLK5_TOICs30jAUpKP0lx3ug/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/nn6T_Bh4V94" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/7352248659061446605/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=7352248659061446605" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/7352248659061446605?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/7352248659061446605?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/nn6T_Bh4V94/technical-disclaimers.html" title="Technical Disclaimers" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2011/06/technical-disclaimers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAARXsycSp7ImA9WhdSEk8.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-3825467628149513929</id><published>2011-06-30T10:20:00.001+05:30</published><updated>2011-07-21T09:29:04.599+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-21T09:29:04.599+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>Save encrypted PDF as plain / unencrypted PDF</title><content type="html">&lt;div style="font-family: sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Note: If you don't have the password for the PDF file, this post is not &lt;/i&gt;what you're looking for.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;You have a PDF file that's encrypted and you already know the password.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Say you need to send this PDF file to someone without them needing to use a password to open it, or you just need to store it in an unencrypted format. How do you do this?&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;As always with software, there are options:&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Option 1: Buy an commercial product (like &lt;a href="http://www.adobe.com/products/acrobat.html"&gt;Adobe Acrobat&lt;/a&gt; or &lt;a href="http://www.foxitsoftware.com/products/phantomPDF/"&gt;Foxit PhantomPDF &lt;/a&gt;)that is able to strip the encryption from the PDF file- &lt;i&gt;Not for El Cheapo types (like me)&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;Option 2: Use a product to save the file to JPEG (or any image) format, either manually (using screen prints) or using a free/commercial product (like &lt;a href="http://www.techsmith.com/snagit/"&gt;SnagIT&lt;/a&gt;) that takes a screen shot of the entire document, not just the visible window. - &lt;i&gt;Not for the lazy (like me)&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;Option 3: The quick, simple and free and high quality way - &lt;i&gt;Now that's what I like&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;span style="font-size: small;"&gt;As you guessed, I'm going for Option 3 :)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;Option 3 - &lt;/b&gt;&lt;/i&gt;&lt;b&gt;A surprisingly simple way of doing this while preserving the quality and format of the document:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Install a free PDF Printer (I'd recommend &lt;a href="http://www.primopdf.com/"&gt;PrimoPDF&lt;/a&gt;, but that's purely a personal choice).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;Open the encrypted PDF file and type in the password.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;"&gt;Invoke the 'Print' option (File-&amp;gt;Print) and use the PDF Printer as your choice.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Enjoy!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-3825467628149513929?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/D4y_HRwVJyp2fgCNju8y8SBMU1U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D4y_HRwVJyp2fgCNju8y8SBMU1U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/D4y_HRwVJyp2fgCNju8y8SBMU1U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D4y_HRwVJyp2fgCNju8y8SBMU1U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/3VAYVJCkHE8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/3825467628149513929/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=3825467628149513929" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/3825467628149513929?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/3825467628149513929?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/3VAYVJCkHE8/save-encrypted-pdf-as-plain-unencrypted.html" title="Save encrypted PDF as plain / unencrypted PDF" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2011/06/save-encrypted-pdf-as-plain-unencrypted.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ENRX84cCp7ImA9WhZTFEQ.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-4421169910935896008</id><published>2011-03-19T07:23:00.001+05:30</published><updated>2011-03-19T07:24:54.138+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-19T07:24:54.138+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amazon-ec2" /><title>Creating DMZ configurations on Amazon EC2</title><content type="html">&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; font-size: small;"&gt;This post tries to address an approach to replicating corporate-style DMZ configurations using Amazon EC2 components.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conventional (non-cloud) Network configuration for hosting internet facing applications&lt;/b&gt;&lt;br /&gt;
Most internet applications are deployed on servers placed in secured demilitarized zones.&lt;br /&gt;
A DMZ's main function is to restrict the extent of an attack should systems be compromized.&lt;br /&gt;
Typically, there would be a main firewall that allows traffic from the internet only to web servers on a particular port. Subsequent to that there could possibly be firewalls that isolate application servers, database and reporting servers etc.&lt;br /&gt;
&lt;br /&gt;
An example of this configuration is shown below. It consists of a Web DMZ hosting only web servers accessible from the internet via port 80. The application servers are placed after the second firewall and cannot receive traffic from any other source other than the web servers. The traffic is only restricted to port 8009 and only in one direction. The database servers are behind the third firewall and can only receive traffic from the application servers on port 3128.&lt;br /&gt;
For monitoring and management, all machines in the network have been allowed access on port 22 from machines internal to the company.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-odn1frXRlDA/TYQLrfOfRpI/AAAAAAAAAIU/TfGWERwEYMg/s1600/cn.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-odn1frXRlDA/TYQLrfOfRpI/AAAAAAAAAIU/TfGWERwEYMg/s1600/cn.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Cloud Network configuration for hosting internet facing applications&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The first thing to realize is that a Security Group is quite similiar to a firewall configuration specifying the allowed protocol (tcp/udp), port/port range, traffic direction and source network. The only real difference is that Security Groups currently only support the ALLOW sematics (not the DENY), but this is quite sufficient as we shall see.&lt;br /&gt;
&lt;br /&gt;
Once a Security Group is created, it can be associated to a server instance. In reality, the Security Group/s have to be specified for an instance before it can be instantiated.&lt;br /&gt;
&lt;br /&gt;
They say that a picture is worth a thousand words, but I don't think that includes code. &lt;br /&gt;
The following depicts the configuration of Amazon's EC2 Security Groups to replicate the above DMZ configurations. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-_yfwT02CL4U/TYQLvuO9H9I/AAAAAAAAAIY/whiuvL-HxjI/s1600/cln.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-_yfwT02CL4U/TYQLvuO9H9I/AAAAAAAAAIY/whiuvL-HxjI/s1600/cln.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The simplest approach to achieve this is as follows:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Map each DMZ to a Security Group&lt;/li&gt;
&lt;li&gt;Create the Security Groups in EC2 using the ec2-add-group API&lt;/li&gt;
&lt;li&gt;Authorize access (port, port-range, direction, source group/CIDR) using the ec2-authorize API&lt;/li&gt;
&lt;li&gt;Create instances using these security groups&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;Example: Web DMZ, App DMZ and DB DMZ

//create groups / zones
ec2-add-group web-dmz -d "Web DMZ"
ec2-add-group app-dmz -d "Application DMZ"
ec2-add-group db-dmz -d "Database DMZ"

//Allow admin access to all the servers
ec2-authorize web-dmz -P tcp -p 22 -s 0.0.0.0/0
ec2-authorize app-dmz -P tcp -p 22 -s 0.0.0.0/0
ec2-authorize db-dmz -P tcp -p 22 -s 0.0.0.0/0

//Allow access to the site from anywhere on the internet
ec2-authorize web-dmz -P tcp -p 80 -s 0.0.0.0/0

//Allow access from Web DMZ to Application DMZ on port 8009 only
ec2-authorize app-dmz -o web-dmz -u xxxxxxxxxxxx -P tcp -p 8009

//Allow access from Application DMZ to Database DMZ on port 3128 only
ec2-authorize db-dmz -o app-dmz -u xxxxxxxxxxxx -P tcp -p 3128

//Create instances and assign them to DMZs
ec2-run-instances ami-cef405a7 -z us-east-1d -t t1.micro -g web-dmz
ec2-run-instances ami-cef405a7 -z us-east-1d -t t1.micro -g app-dmz
ec2-run-instances ami-cef405a7 -z us-east-1d -t t1.micro -g db-dmz
&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-4421169910935896008?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FUyoB3RVN59x3ktgawn2iTz0qLY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FUyoB3RVN59x3ktgawn2iTz0qLY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FUyoB3RVN59x3ktgawn2iTz0qLY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FUyoB3RVN59x3ktgawn2iTz0qLY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/kif9desLDqA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/4421169910935896008/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=4421169910935896008" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/4421169910935896008?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/4421169910935896008?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/kif9desLDqA/creating-dmz-configurations-on-amazon.html" title="Creating DMZ configurations on Amazon EC2" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-odn1frXRlDA/TYQLrfOfRpI/AAAAAAAAAIU/TfGWERwEYMg/s72-c/cn.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2011/03/creating-dmz-configurations-on-amazon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMFQXc9eip7ImA9WhZTEEo.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-1591008687303745902</id><published>2011-03-14T10:06:00.000+05:30</published><updated>2011-03-14T10:06:50.962+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-14T10:06:50.962+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amazon-ec2" /><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>Add t1.micro support to ElasticFox</title><content type="html">&lt;span style="font-family: 'Trebuchet MS', sans-serif; font-size: small;"&gt;&lt;br /&gt;
A lot of people, including me depend on the ElasticFox firefox plugin to interact with Amazon Web Services and its easy to see why. It has GUI support for almost everything that you'd need to interact with AWS.&lt;br /&gt;
However, it seems that, as of today, ElasticFox has yet to add support for the t1.micro instances that Amazon introduced recently.&lt;br /&gt;
&lt;br /&gt;
Well, I just couldn't stand waiting for the latest release, and if you're just as impatient, you might want to try the following:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Check out the elasticfox code from svn:&lt;br /&gt;
&lt;pre&gt;svn co https://elasticfox.svn.sourceforge.net/svnroot/elasticfox/trunk elasticfox&lt;/pre&gt;&lt;/li&gt;

&lt;li&gt;Open up &lt;pre&gt;trunk\src\chrome\content\ec2ui\newinstancesdialog.js&lt;/pre&gt;in your favorite editor. Go to line 247 and add the following:&lt;br /&gt;
&lt;pre name="code" class="java"&gt;if (this.image.rootDeviceType == "ebs") {
   typeMenu.appendItem("t1.micro", "t1.micro");
}
&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;Now, its time to build the code into a plugin.&lt;br /&gt;
Download and install the &lt;a href="https://addons.mozilla.org/en-us/firefox/addon/extension-developer/"&gt;firefox extension developer plugin&lt;/a&gt;  &lt;br /&gt;
Open Firefox. Go to Tools-&amp;gt;Extension Developer-&amp;gt;Extension Builder, browse for your working directory and hit 'Build extension'. &lt;br /&gt;
You can then drag this resulting .xpi file into the browser window to install the plugin&lt;br /&gt;
&lt;br /&gt;
You should now be able to select a t1.micro instance for a corresponding valid AMI &lt;br /&gt;
&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-1591008687303745902?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bW38M1fID86d_AlwRqGq2pWB4Z0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bW38M1fID86d_AlwRqGq2pWB4Z0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bW38M1fID86d_AlwRqGq2pWB4Z0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bW38M1fID86d_AlwRqGq2pWB4Z0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/BVMBQ8nmXuo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/1591008687303745902/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=1591008687303745902" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/1591008687303745902?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/1591008687303745902?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/BVMBQ8nmXuo/add-t1micro-support-to-elasticfox.html" title="Add t1.micro support to ElasticFox" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2011/03/add-t1micro-support-to-elasticfox.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AGSXk9fCp7ImA9WhdSEkw.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-4497965714737227134</id><published>2011-03-12T12:08:00.003+05:30</published><updated>2011-07-21T09:12:08.764+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-21T09:12:08.764+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="sample code" /><category scheme="http://www.blogger.com/atom/ns#" term="amazon-ec2" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title /><content type="html">&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; font-size: small;"&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Distributed Caching Using Ehcache on Amazon EC2&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
This post elaborates the setup of Ehcache to enable distributed caching in JEE applications. It also contains a specific Ehcache configuration for use in applications deployed on Amazon EC2.&lt;br /&gt;
&lt;br /&gt;
Ehcache, since its takeover by Terracotta®, has evolved to incorporate enterprise features like ‘search’, BigMemory in the Ehcache DX, EX and FX product editions.&lt;br /&gt;
However, you can still achieve a high degree of distributed caching by just using the ‘core’ Ehcache library.&lt;br /&gt;
&lt;br /&gt;
This post focuses on a minimalistic approach to incorporate distributed caching into an application. Deployment approaches that involve a large number of instances in a cluster/farm and require cache interactions to participate in JTA-transactions are not covered here. Distributed Caching that caters to these requirements can be achieved using a Terracotta Server Array (TSA).&lt;br /&gt;
&lt;br /&gt;
There are 4 available mechanisms that can be employed to realize a distributed and replicated cache using Ehcache:&lt;br /&gt;
RMI &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; – Default remoting mechanism in Java&lt;br /&gt;
JGroups &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; – Requires adding JGroups to the application stack&lt;br /&gt;
JMS &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; – Requires a Messaging System Provider&lt;br /&gt;
Cache Server &amp;nbsp;&amp;nbsp;&amp;nbsp; – Realized using a Terracotta Server (/Array)&lt;br /&gt;
&lt;br /&gt;
This post will cover the use of Java’s default remoting mechanism – RMI.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Configuring an application for Distributed Caching&lt;/span&gt;&lt;br /&gt;
Enabling distributed and replicated caching in a Java/JEE application is surprisingly simple using Ehcache. The procedure involves 3 steps:&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; font-size: small;"&gt;Download Ehcache (core) from http://ehcache.org&lt;/span&gt;&lt;/li&gt;
&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; font-size: small;"&gt;
&lt;li&gt;Place ehcache-core-xxx.jar, slf4j-api-xxx.jar, slf4j-log4jxx-xxx.jar into the library folders of your application (e.g. classpath, WEB-INF/lib)&lt;/li&gt;
&lt;li&gt;Place the Ehcache configuration file (ehcache.xml) in the application classpath (e.g. classpath, WEB-INF/classes)&lt;/li&gt;
&lt;/span&gt;&lt;/ol&gt;
&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; font-size: small;"&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: small;"&gt;Ehcache Configuration File (ehcache.xml)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
The configuration file, which configures Ehache’s Cache Manager, must have the following elements to enable distributed caching:&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; font-size: small;"&gt;A CacheManagerPeerListenerFactory&lt;/span&gt;&lt;/li&gt;
&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; font-size: small;"&gt;
&lt;li&gt;A CacheManagerPeerProviderFactory&lt;/li&gt;
&lt;li&gt;At least one Cache configuration containing:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;A CacheEventListenerFactory&lt;/li&gt;
&lt;li&gt;A BootstrapCacheLoaderFactory&lt;/li&gt;
&lt;/ol&gt;
&lt;/span&gt;&lt;/ol&gt;
&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; font-size: small;"&gt;&lt;br /&gt;
&lt;b&gt;Configurations for environments with no multicast limitations:&lt;/b&gt;&lt;br /&gt;
Using RMI as the replication mechanism, a simple configuration of the Cache Manager would be as follows:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="ehcache.xsd"
         updateCheck="false" monitoring="autodetect"
         dynamicConfig="true" name="my cache"&amp;gt;

    &amp;lt;cacheManagerPeerListenerFactory     
               class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/&amp;gt;

    &amp;lt;cacheManagerPeerProviderFactory
                class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
      properties="peerDiscovery=automatic, 
                   multicastGroupAddress=230.0.0.1, 
                   multicastGroupPort=4446, 
                   timeToLive=32"/&amp;gt;
 

    &amp;lt;cache name="cache1"
           maxElementsInMemory="100"
           eternal="true"
           overflowToDisk="false"&amp;gt;

        &amp;lt;cacheEventListenerFactory
                class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/&amp;gt;
        &amp;lt;bootstrapCacheLoaderFactory
                class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/&amp;gt;
    &amp;lt;/cache&amp;gt;
&amp;lt;/ehcache&amp;gt;


&lt;/pre&gt;
This configuration file can be copied into all deployments of the application that need to be part of, and have access to the distributed cache.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Configurations for environments with multicast limitations:&lt;/b&gt;&lt;br /&gt;
If the application is deployed within an environment where multicast is not allowed or not available (like Amazon EC2) then the following configuration can be used:&lt;br /&gt;
Example configuration on machine 1 [server1]:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="ehcache.xsd"
         updateCheck="false" monitoring="autodetect"
         dynamicConfig="true" name="my cache"&amp;gt;


&amp;lt;!-- For Non-Multicast supported environments [for server1] START --&amp;gt;
    &amp;lt;cacheManagerPeerListenerFactory
            class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
   properties="port=40001, 
   remoteObjectPort=40002, 
   socketTimeoutMillis=120000"/&amp;gt;

    &amp;lt;cacheManagerPeerProviderFactory
           class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
           properties="peerDiscovery=manual, 
                        rmiUrls=//server2:40001/cache1"/&amp;gt;
  
&amp;lt;!-- For Non-Multicast supported environments [for server1] END --&amp;gt;

    &amp;lt;cache name="cache1"
           maxElementsInMemory="100"
           eternal="true"
           overflowToDisk="false"&amp;gt;

        &amp;lt;cacheEventListenerFactory
                class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/&amp;gt;
        &amp;lt;bootstrapCacheLoaderFactory
                class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/&amp;gt;
    &amp;lt;/cache&amp;gt;
&amp;lt;/ehcache&amp;gt;

&lt;/pre&gt;
&lt;br /&gt;
Example configuration on machine 2 [server2]:&lt;br /&gt;
&lt;pre class="xml" name="code"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="ehcache.xsd"
         updateCheck="false" monitoring="autodetect"
         dynamicConfig="true" name="my cache"&amp;gt;


&amp;lt;!-- For Non-Multicast supported environments [for server2] START --&amp;gt;
    &amp;lt;cacheManagerPeerListenerFactory
            class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
   properties="port=40001, 
   remoteObjectPort=40002, 
   socketTimeoutMillis=120000"/&amp;gt;

    &amp;lt;cacheManagerPeerProviderFactory
           class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
           properties="peerDiscovery=manual, 
                        rmiUrls=//server1:40001/cache1"/&amp;gt;
  
&amp;lt;!-- For Non-Multicast supported environments [for server2] END --&amp;gt;

    &amp;lt;cache name="cache1"
           maxElementsInMemory="100"
           eternal="true"
           overflowToDisk="false"&amp;gt;

        &amp;lt;cacheEventListenerFactory
                class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/&amp;gt;
        &amp;lt;bootstrapCacheLoaderFactory
                class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/&amp;gt;
    &amp;lt;/cache&amp;gt;
&amp;lt;/ehcache&amp;gt;

&lt;/pre&gt;
If there are more than 2 servers in a replication group, then additional servers can be specified in the ‘rmiUrls’ property using a pipe character ‘|’ as the delimiter.&lt;br /&gt;
&lt;br /&gt;
This configuration relies on manual peer discovery and requires the enumeration of all machines participating in the distributed cache to be specified.&lt;br /&gt;
Another important point to note is that if the machines are separated by firewalls then the RMI remoteObjectPort needs to be specified (as shown in the example above) and firewall configurations would need to be made accordingly.&lt;br /&gt;
&lt;br /&gt;
For the above configurations, create your servers/virtual machines in a security group and authorize the group to itself (this allows all virtual machines in the group free access to each other).&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;ec2-add-group ehcache -d "ehcache replication ports”
ec2-authorize ehcache -o ehcache –u [aws account id]
&lt;/pre&gt;
&lt;br /&gt;
If this is not possible and each virtual machine has its own group then allow ports 40001 and 40002 between the groups (you can read &lt;a href="http://tripoverit.blogspot.com/2011/03/creating-dmz-configurations-on-amazon.html"&gt;this post&lt;/a&gt; for details on how to do this).&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-4497965714737227134?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FmrNp8eTHXZSv-3CESIrS8gRgMU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FmrNp8eTHXZSv-3CESIrS8gRgMU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FmrNp8eTHXZSv-3CESIrS8gRgMU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FmrNp8eTHXZSv-3CESIrS8gRgMU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/lXL78imA7O4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/4497965714737227134/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=4497965714737227134" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/4497965714737227134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/4497965714737227134?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/lXL78imA7O4/distributed-caching-using-ehcache-on.html" title="" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2011/03/distributed-caching-using-ehcache-on.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAER3s7fip7ImA9Wx5SFE0.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-8529179018584059651</id><published>2010-08-10T07:37:00.002+05:30</published><updated>2010-08-10T07:48:26.506+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-10T07:48:26.506+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>Phone remains in headset mode - Fix</title><content type="html">&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;For those who own it, the nokia 6230i with its great form-factor, screen resolution and connectivity options is what keeps them from wanting to chuck it for the latest and greatest to arrive in the market. It is a great phone for accessing the internet and your &lt;a href="http://tripoverit.blogspot.com/2007/12/access-gmail-using-nokia-6320i-or-any.html"&gt;email &lt;/a&gt;easily on the go. If you are a power user, the only accessory that you may ever need is a &lt;a href="http://www.amazon.com/DKU-2-Data-Cable-Nokia-6255i/dp/B001658KMS?ie=UTF8&amp;amp;tag=tri0bd-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;DKU-2 USB Data Cable &lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Imagine my dismay when I received a call this morning and couldn't hear a thing unless I switched on the loudspeaker. Looking closer at the screen I found that the headset sign was on even though the headset was not connected! Googled, looked up forums and decided to fish for an old toothbrush. They usually come in handy while cleaning my stereo and PC motherboard:) &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;The headset sign remaining on seems to be a common problem with a lot of phones and it happens because there is usually some accumulated dust/dirt lodged in the connector at the bottom which makes the phone think that a headset is connected.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: white; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Fixing this problem is a breeze. All you need to do is remove the front and back covers. Unscrew the 6 screws that you see on the PCB and brush the bottom connector from the inside and the outside throughly with a dry toothbrush. Worked for me!&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-8529179018584059651?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/abYxewsX7PPYsFiOhBh5l5BCF1o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/abYxewsX7PPYsFiOhBh5l5BCF1o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/abYxewsX7PPYsFiOhBh5l5BCF1o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/abYxewsX7PPYsFiOhBh5l5BCF1o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/lPe6WGSAQNY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/8529179018584059651/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=8529179018584059651" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/8529179018584059651?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/8529179018584059651?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/lPe6WGSAQNY/phone-remains-in-headset-mode-fix.html" title="Phone remains in headset mode - Fix" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2010/08/phone-remains-in-headset-mode-fix.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcNSHo_eCp7ImA9WxBTGEg.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-5763738704108495861</id><published>2009-12-15T11:44:00.004+05:30</published><updated>2009-12-15T11:51:39.440+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-15T11:51:39.440+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>Memorizing Design Patterns - the fun way</title><content type="html">&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Just stumbled upon a wonderful way to memorize stuff at &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://www.memorize.com/"&gt;memorize.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Say you want to test yourself or just plain want to memorize Design Patterns for example, just head over here and discover how fun it can be.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: trebuchet ms;" href="http://memorize.com/design-patterns"&gt;Design Patterns&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: trebuchet ms;" href="http://memorize.com/core-j2ee-design-patterns"&gt;Core JEE Design Patterns&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;I must admit, this is a really unique way of using a wiki!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;*I am in no way affiliated with memorize.com. I just happen to like their stuff&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-5763738704108495861?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pdXyyfGFg4nDEE16xSy8K-d1h3w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pdXyyfGFg4nDEE16xSy8K-d1h3w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pdXyyfGFg4nDEE16xSy8K-d1h3w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pdXyyfGFg4nDEE16xSy8K-d1h3w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/BbPAbag4mZ8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/5763738704108495861/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=5763738704108495861" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/5763738704108495861?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/5763738704108495861?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/BbPAbag4mZ8/memorizing-stuff-fun-way.html" title="Memorizing Design Patterns - the fun way" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2009/12/memorizing-stuff-fun-way.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIBRn88eyp7ImA9WxJVGEg.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-2873301156275362885</id><published>2009-07-06T09:57:00.001+05:30</published><updated>2009-07-06T09:59:17.173+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-06T09:59:17.173+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>Ready reference for Web Service Types</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y9vlmWWEuA0/SlF9dqZkneI/AAAAAAAAAGo/XakdvfxLqkU/s1600-h/wstypes.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 201px;" src="http://2.bp.blogspot.com/_Y9vlmWWEuA0/SlF9dqZkneI/AAAAAAAAAGo/XakdvfxLqkU/s400/wstypes.png" alt="" id="BLOGGER_PHOTO_ID_5355199380471455202" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-2873301156275362885?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IDyJJFNLJf6WCQed375hsk_ZYNc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IDyJJFNLJf6WCQed375hsk_ZYNc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IDyJJFNLJf6WCQed375hsk_ZYNc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IDyJJFNLJf6WCQed375hsk_ZYNc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/-mJnnX41t5s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/2873301156275362885/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=2873301156275362885" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/2873301156275362885?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/2873301156275362885?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/-mJnnX41t5s/ready-reference-for-web-service-types.html" title="Ready reference for Web Service Types" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_Y9vlmWWEuA0/SlF9dqZkneI/AAAAAAAAAGo/XakdvfxLqkU/s72-c/wstypes.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2009/07/ready-reference-for-web-service-types.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcDRXc8eCp7ImA9WxJWEkQ.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-5530333544502795428</id><published>2009-06-15T12:05:00.004+05:30</published><updated>2009-06-18T08:31:14.970+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-18T08:31:14.970+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term=".net" /><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>TripleDES encryption compatibility when using Java and .NET</title><content type="html">&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Note: This article shows you how to generate a SecretKey to use with a TripleDES encryption cipher. The shared-secret key can be 24 byte or even 16 bytes long.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;For a quick brief of how TripleDES (3DES) works have a look &lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Triple_DES"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;here&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The most common problem related to encrypting something in Java and decrypting in .NET or vice-versa is a misunderstanding of the Keying options that are defined in the standards and those implemented by Java and .NET&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;A DES key is made up of 56 bits and 8 parity bits (8 bytes)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;A &lt;b&gt;3DES&lt;/b&gt; key is made up of a bunch of &lt;b&gt;3&lt;/b&gt;, 8-byte DES keys i.e. a &lt;b&gt;24 bytes long&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;If you are going to use a 24 byte key for both Java and .NET, you're safe; then encryption will be compatible.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:'trebuchet ms';font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms'; font-size: 13px; "&gt;Java will force you to use only a 24 byte key when using TripleDES; the subtly is that .NET supports both a 16 byte as well as a 24 byte key.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Now If you generate a key from a MD5 hash of a shared secret, it will be just 16 bytes. .NET has no problem with this. It implements Keying Option 2. It will intelligently take the first 8 bytes and append it after the 16th byte - forming a 24 byte key. Java, *sigh* sadly doesn't do this. You'll have to spoon feed it like so:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public SecretKey getSecretKey(byte[] encryptionKey) {&lt;br /&gt; SecretKey secretKey = null;&lt;br /&gt; if (encryptionKey == null)&lt;br /&gt;   return null;&lt;br /&gt;&lt;br /&gt;byte[] keyValue = new byte[24]; // final 3DES key&lt;br /&gt;&lt;br /&gt;if (encryptionKey.length == 16) {&lt;br /&gt; // Create the third key from the first 8 bytes&lt;br /&gt; System.arraycopy(encryptionKey, 0, keyValue, 0, 16);&lt;br /&gt; System.arraycopy(encryptionKey, 0, keyValue, 16, 8);&lt;br /&gt;&lt;br /&gt;} else if (encryptionKey.length != 24) {&lt;br /&gt; throw new IllegalArgumentException("A TripleDES key should be 24 bytes long");&lt;br /&gt;&lt;br /&gt;} else {&lt;br /&gt; keyValue = encryptionKey;&lt;br /&gt;}&lt;br /&gt; DESedeKeySpec keySpec;&lt;br /&gt;try {&lt;br /&gt; keySpec = new DESedeKeySpec(keyValue);&lt;br /&gt; SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");&lt;br /&gt; secretKey = keyFactory.generateSecret(keySpec);&lt;br /&gt;} catch (Exception e) {&lt;br /&gt; throw new RuntimeException("Error in key Generation",e);&lt;br /&gt;}&lt;br /&gt; return secretKey;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-5530333544502795428?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i36nJvFwJWKbFuDJGauS8X0THcE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i36nJvFwJWKbFuDJGauS8X0THcE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i36nJvFwJWKbFuDJGauS8X0THcE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i36nJvFwJWKbFuDJGauS8X0THcE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/A_TpgUAoLgo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/5530333544502795428/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=5530333544502795428" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/5530333544502795428?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/5530333544502795428?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/A_TpgUAoLgo/tripledes-encryption-compatibility.html" title="TripleDES encryption compatibility when using Java and .NET" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2009/06/tripledes-encryption-compatibility.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMFRHw-eip7ImA9WxJTE0o.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-2343878264503047095</id><published>2009-04-22T08:40:00.003+05:30</published><updated>2009-04-22T08:50:15.252+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-22T08:50:15.252+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>Damn Small Linux: Install files with .dsl extension</title><content type="html">&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms;"&gt;The &lt;a href="http://www.damnsmalllinux.org"&gt;DamnSmallLinux&lt;/a&gt; live CD/USB allows you run DSL in memory. It also allows you to run apps that you download from the MyDSL repository. If you install DSL to HDD/USB then you'll want to have these apps permanently on your system. You can do this easily.&lt;br /&gt;If you look carefully, the &lt;a href="http://distro.ibiblio.org/pub/linux/distributions/damnsmall/mydsl/"&gt;MyDSL repository&lt;/a&gt;, contains a lot of files (apps) with the .dsl extension.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;&lt;br /&gt;A .dsl extension file is nothing but a compressed archive in the tar-gzip format.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;All you need to do is:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;download the .dsl file to any location (lets say /home/dsl)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;cd /&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;tar -zxvf /home/dsl/&lt;downloadedapp&gt;.dsl&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;and you're through!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-2343878264503047095?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SqU43_7kMpPDjIATWP4ymGNhdOQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SqU43_7kMpPDjIATWP4ymGNhdOQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SqU43_7kMpPDjIATWP4ymGNhdOQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SqU43_7kMpPDjIATWP4ymGNhdOQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/GQvUH79zNPc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/2343878264503047095/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=2343878264503047095" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/2343878264503047095?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/2343878264503047095?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/GQvUH79zNPc/damn-small-linux-install-files-with-dsl.html" title="Damn Small Linux: Install files with .dsl extension" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2009/04/damn-small-linux-install-files-with-dsl.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YGR389fCp7ImA9WxFaFE8.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-371000749390330043</id><published>2009-03-12T17:02:00.006+05:30</published><updated>2010-07-18T09:22:06.164+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-18T09:22:06.164+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><title>JPA and Stored Procedures</title><content type="html">&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I recently stumbled upon many queries on google about how to make Stored Proc calls via JPA. Something was not right with questions like this.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms'; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Stored Procs and JPA are completely different beasts with completely different philosophies behind them.&lt;/span&gt; Sure you can call stored procs using JPA but thats using the wrong hammer. JPA deals with persistence of entities; Stored procs, with business logic being closest to the data.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;iframe align="right" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=1590596455&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt; &lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms'; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;span class="Apple-style-span" style="color: #cc0000;"&gt;If you have a lot of business logic in stored procs, you have the advantage of speed, security and maintainability, however, you lose portability of your business logic if you change your database.  &lt;/span&gt; Now, in any large-scale enterprise, the database vendor is not really going to change and a database (oracle/sql server/db2)  is going to be a uniform commitment across the organization.  Having said that, even if you have to port the procs from one database to another, the vendor documentation will include quite comprehensive migration guides for the same. They have to :)  &lt;span class="Apple-style-span" style="font-style: italic;"&gt;For the record, IMHO, I normally stick with stored procs for the reasons listed above.  &lt;/span&gt; I always have some real DBA cats working on my team that perform something called ATM (Application Transaction Modelling) on the database. &lt;a href="http://www.amazon.com/Database-Transaction-Advanced-Applications-Management/dp/1558602143"&gt;Look it up&lt;/a&gt; (ATM). Once they are through with this you can flex your ORM muscles all you like, but in the end what you will be left with will just be UGLY.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms'; font-size: 13px; white-space: pre-wrap;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms'; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Been there, done that, got the T-Shirt.  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 11px; white-space: pre-wrap;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms'; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 11px; white-space: pre-wrap;"&gt;If there's one book you should read on JPA, let it be &lt;a href="http://www.amazon.com/Pro-EJB-Java-Persistence-API/dp/1590596455?ie=UTF8&amp;amp;tag=widgetsamazon-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;this&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=widgetsamazon-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1590596455" style="border: medium none ! important; margin: 0px ! important; padding: 0px ! important;" width="1" /&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-371000749390330043?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Opoeh1BPnYEC_VSs8CoF0S9UgnQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Opoeh1BPnYEC_VSs8CoF0S9UgnQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Opoeh1BPnYEC_VSs8CoF0S9UgnQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Opoeh1BPnYEC_VSs8CoF0S9UgnQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/aWGoLUpA_KQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/371000749390330043/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=371000749390330043" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/371000749390330043?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/371000749390330043?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/aWGoLUpA_KQ/jpa-and-stored-procedures.html" title="JPA and Stored Procedures" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2009/03/jpa-and-stored-procedures.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8ASHczcCp7ImA9WxVVFUw.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-8477023304180548835</id><published>2009-03-08T18:46:00.003+05:30</published><updated>2009-03-08T18:57:29.988+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-08T18:57:29.988+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>HP Laptops with XP - Brightness buttons dont work - Fix</title><content type="html">&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;If you've got a new HP laptop and have formatted it (to probably get rid of the lousy Vista OS) &lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;and installed or downgraded it to XP you'll have noticed something that people all over seem to be annoyed with: &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The brightness keys Fn F7 and F8 don't work once the XP OS starts loading into memory.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;HP has probably rigged this to work only with Vista. So you're stuck.. right?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Nope :)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Here's the surefire fix:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;1. Just download the &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;amp;displaylang=en"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.NET 2.0 framework from microsoft&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;2. And then hop across to HP and search for something called HP Quick Launch Buttons or do a google search for "HP Quick Launch Buttons &lt;/span&gt;&lt;laptop&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;"&lt;/span&gt;&lt;/laptop&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;3. Download it for your laptop model. Install it and reboot. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;After this you should have your laptop running XP with the Fn F7 and F8 brightness buttons working!   &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-8477023304180548835?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wYeWBjBsuckRUvfOBdKCD9MzwhY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wYeWBjBsuckRUvfOBdKCD9MzwhY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wYeWBjBsuckRUvfOBdKCD9MzwhY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wYeWBjBsuckRUvfOBdKCD9MzwhY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/N1VhsDoXpSw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/8477023304180548835/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=8477023304180548835" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/8477023304180548835?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/8477023304180548835?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/N1VhsDoXpSw/hp-laptops-with-xp-brightness-issue-fix.html" title="HP Laptops with XP - Brightness buttons dont work - Fix" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2009/03/hp-laptops-with-xp-brightness-issue-fix.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UCQ347eip7ImA9WxVWEE4.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-2200588336263578962</id><published>2009-02-18T12:08:00.012+05:30</published><updated>2009-02-19T13:44:22.002+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-19T13:44:22.002+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IBM" /><category scheme="http://www.blogger.com/atom/ns#" term="BPEL" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title>BPEL: Get clobbered with the Golden Hammer</title><content type="html">&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Somewhere in the lobby after an IBM/Oracle seminar showing off their shinny and latest BPEL products&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Brainwashed customer:&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; I just met with IBM and Oracle and I'm convinced that I need their BPEL engines since we are going down the SOA road. After all, what am I going to do with my business services?  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;BPEL Zen Master (to herself): &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Ah. I see I have to do more penance on this earth by suffering these zombies. Looks like they dont know that &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;a href="http://apsblog.burtongroup.com/2009/01/soa-is-dead-long-live-services.html"&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;SOA is dead&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-style: normal; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;BPEL Zen Master : &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I agree you need to model and monitor your business processes and also automate some 'processes' that you have. How did they convince you that you need BPEL to do this? &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Brainwashed customer: &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;They told me that with BPEL m&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;y business activities can be modelled and hence I will have control and I can monitor them and I can tweak them and .... &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;BPEL Zen Master:&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; Ahem! Have you tried modelling your process in a tool that supports BPMN? Have you tried the same with a tool that does it in BPEL. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Pssst... &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;You will find that the big vendors are using the '&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Golden_hammer"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;golden hammer&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;'. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;You must know that you cannot model your Business Process completely in BPEL as you can do in BPMN.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Contrary to what a vendor might tell you, a business analyst just CANT manage (draw, manage, round-trip) a business process as a BPEL today. Anyway, once you model your processes in the vendors modeller, round-tripping that back is virtually impossible. Besides, BPEL is all very technical...Would your like your Business Analyst to know what a SOAP fault is? &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Brainwashed customer:&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; SOAP what?!... Nevermind..But...I can orchestrate my stateless "processes" easily! &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;BPEL Zen Master: &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Vendors have been fooling customers into using microflows (an IBM innovation... verbiage-wise) which are nothing but stateless 'programs' that invoke (orchestrate) webservices. You're better off using a mediation module (Take that, IBM.. you can stick your  microflows where the sun dont shine). Speaking about Oracle, there's really not much to speak of. After acquiring BEA, they seemed to have dumped their BPEL engine in favor of BEA's. Actually, from a quick look at their conFUSION Middleware stack, they dont know their butt from their heads. Buttheads! For the rest of us, a simple composite business service will do. Not only will you yourself save mucho $$$ by not buying the BPEL engine, but also CPU, storage space, administrator time and most importantly user frustration.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Brainwashed customer:&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; But I will be backed by standards if I go with BPEL, wont I? What about long running processes with human interaction? Is'nt BPEL the best for this? I'm solid with the support on standards aren't I?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;BPEL Zen Master:&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; Oh yes! A million of them, non which make sense to any business analyst anyway. And here something to thing about: Any decent business process will probably require some human interation. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Well Long running with Human Interaction... Hmm dont let the BPEL vendors fool you on this one. The moment you get human interaction as part of your BPEL, you'd have to use their extensions to BPEL (which are completely proprietary). &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;That flushing sound you are now hearing is the standards going down the toilet.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;In case your still wondering about which way to go, this should enlighten you&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.infoq.com/news/2009/01/WhoNeedsBPEL"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://www.infoq.com/news/2009/01/WhoNeedsBPEL&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;BPEL Zen Master:&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;a href="http://www.infoq.com/news/2009/01/WhoNeedsBPEL#view_38502"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Meditate on this koan from the one-who-has-been-enlightened&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I will reproduce it here for your convenience.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;table border="1" width="90%" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="Apple-style-span" style=" -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; "&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(68, 68, 68); font-weight: bold; line-height: 16px; "&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Hermann Schmidt:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;BPEL is advertized as a high-level process design language. That's a lie. BPEL exposes the designer to lowest-level issues like communication failures, SOAP faults, and XML unmarshalling problems. Drawing a BPEL process naively will not produce any usable artifact. It is a programmers job. Picking up the recent discussion about "BPMN is not software engineering", I think it is fair to say that BPEL is one reason why BPMN still is software engineering.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I have seen tutorials from SUN that show how to access rows in a database table with BPEL. What a brilliant idea. Let business people drag their data from databases directly! That about says it all how some vendors treat BPEL. It's just yet another programming language with a fancy graphical interface. "Hey, look what I can do with BPEL! Isn't that neat?". Hello? Service orientation?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;BPEL has no modularity. BPEL has no concept of reusable patterns or code fragments (besides functional decomposition into yet more processes - did someone say high-level?). Reusing patterns in BPEL means cut&amp;amp;paste of sourcecode. No signs of object orientation anywhere. It is a low-level web-service caller with a functional decomposition design model and a little event dispatching with parallel execution. Oh, and you can shuffle data around in XML-based structures.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The ubiquitous GUIs give the illusion of a high abstraction. Ironically, they are necessary because BPEL code is a pain to write as text. The graphics are merely the syntactical representation of a very basic programming language.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Vendors pimp up BPEL engines with additional features to alleviate weaknesses of the language. This may even result in practically usable products, if done well. However, that makes BPEL non-portable in all but trivial cases and renders the whole standard useless.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I am deeply frustrated by the level of intelligence in this standard. I believe that it will not take the software industry any closer to more efficiency or excellence. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I don't need it. It doesn't get the job done.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'trebuchet ms';"&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Brainwashed customer: &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Master, that was enlightening. During my meditation my mind drifted to a scene from the movie '&lt;/span&gt;&lt;a href="http://en.wikiquote.org/wiki/The_Matrix"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The Matrix&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;' and then... then it hit me&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0); "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;a href="http://www.friesian.com/matrix.htm"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;There is no BPEL&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-2200588336263578962?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HCwoht9A1K6byYU8gWucYnuo43Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HCwoht9A1K6byYU8gWucYnuo43Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HCwoht9A1K6byYU8gWucYnuo43Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HCwoht9A1K6byYU8gWucYnuo43Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/iCb1NkE0Avk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/2200588336263578962/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=2200588336263578962" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/2200588336263578962?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/2200588336263578962?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/iCb1NkE0Avk/bpel-get-clobbered-with-golden-hammer.html" title="BPEL: Get clobbered with the Golden Hammer" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2009/02/bpel-get-clobbered-with-golden-hammer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUNQn09eSp7ImA9WxRRF04.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-5575692058923454086</id><published>2008-09-30T06:54:00.006+05:30</published><updated>2008-09-30T07:01:33.361+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-30T07:01:33.361+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="Business Objects" /><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>Hung Threads with BO SDK - Solution</title><content type="html">&lt;span style="font-family:verdana;"&gt;&lt;span style=";font-family:trebuchet ms;font-size:100%;"  &gt;Many developers seem to be facing the dreaded 'Hung threads' issue when they you the BO SDK in their java applications.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The symptoms:&lt;/span&gt;&lt;br /&gt;The issue usually manifests itself with a line in the SystemOut.log or equivalent reporting the following:&lt;br /&gt;WSVR0605W: Thread "THREAD NAME : ID" (55c8824f) has been active for 600,112 milliseconds and may be hung. There are 1 threads in total in the server that may be hung.&lt;br /&gt;&lt;br /&gt;If you do a thread dump in your App Server at this point, you will see something like so:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;- waiting on &amp;lt;0x93d29020&amp;gt; (a java.lang.Object)&lt;br /&gt;at java.lang.Object.wait(Object.java:429)&lt;br /&gt;at com.crystaldecisions.thirdparty.com.ooc.OB.Downcall.waitUntilCompleted(Downcall.java:831)&lt;br /&gt;- locked &amp;lt;0x93d29020&amp;gt; (a java.lang.Object)&lt;br /&gt;at com.crystaldecisions.thirdparty.com.ooc.OB.GIOPClientWorkerThreaded.receive(GIOPClientWorkerThreaded.java:327)&lt;br /&gt;at com.crystaldecisions.thirdparty.com.ooc.OB.GIOPClientWorkerThreaded.sendReceive(GIOPClientWorkerThreaded.java:353)&lt;br /&gt;at com.crystaldecisions.thirdparty.com.ooc.OB.Downcall.request(Downcall.java:336)&lt;br /&gt;at com.crystaldecisions.thirdparty.com.ooc.OB.DowncallStub.invoke(DowncallStub.java:583)&lt;br /&gt;at com.crystaldecisions.thirdparty.com.ooc.CORBA.Delegate.invoke(Delegate.java:579)&lt;br /&gt;at com.crystaldecisions.thirdparty.org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:125)&lt;br /&gt;at com.crystaldecisions.enterprise.ocaframework.idl.OCA.OCAi._InfoStoreEx3Stub.queryEx3(_InfoStoreEx3Stub.java:62)&lt;br /&gt;at com.crystaldecisions.enterprise.ocaframework.j.a(Unknown Source)&lt;br /&gt;at com.crystaldecisions.enterprise.ocaframework.j.find(Unknown Source)&lt;br /&gt;at com.crystaldecisions.enterprise.ocaframework.AbstractServerHandler.buildServerInfo(Unknown Source)&lt;br /&gt;at com.crystaldecisions.enterprise.ocaframework.AbstractServerHandler.buildClusterInfo(Unknown Source)&lt;br /&gt;at com.crystaldecisions.enterprise.ocaframework.aa.for(Unknown Source)&lt;br /&gt;at com.crystaldecisions.enterprise.ocaframework.ServiceMgr.for(Unknown Source)&lt;br /&gt;at com.crystaldecisions.enterprise.ocaframework.o.a(Unknown Source)&lt;br /&gt;at com.crystaldecisions.enterprise.ocaframework.o.a(Unknown Source)&lt;br /&gt;at com.crystaldecisions.enterprise.ocaframework.o.a(Unknown Source)&lt;br /&gt;at com.crystaldecisions.enterprise.ocaframework.p.a(Unknown Source)&lt;br /&gt;at com.crystaldecisions.enterprise.ocaframework.ServiceMgr.getManagedService(Unknown Source)&lt;br /&gt;at com.crystaldecisions.sdk.occa.managedreports.ras.internal.CECORBACommunicationAdapter.connect(Unknown Source)&lt;br /&gt;at com.crystaldecisions.sdk.occa.managedreports.ras.internal.RASReportAppFactory.a(Unknown Source)&lt;br /&gt;at com.crystaldecisions.sdk.occa.managedreports.ras.internal.RASReportAppFactory.a(Unknown Source)&lt;br /&gt;at com.crystaldecisions.sdk.occa.managedreports.ras.internal.RASReportAppFactory.openDocument(Unknown Source)&lt;br /&gt;at com.crystaldecisions.sdk.occa.managedreports.ras.internal.RASReportAppFactory.openDocument(Unknown Source)&lt;br /&gt;at com.talic.pi.utils.ReportingEngine.generateReport(ReportingEngine.java:86)&lt;br /&gt;at com.talic.pi.cms.dao.ReportsDAO.generateReport(ReportsDAO.java:31)&lt;br /&gt;at com.talic.pi.cms.component.ReportGeneratorComponentImpl.generateReport(ReportGeneratorComponentImpl.java:41)&lt;br /&gt;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br /&gt;at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&lt;br /&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&lt;br /&gt;at java.lang.reflect.Method.invoke(Method.java:324)&lt;br /&gt;at com.ibm.ws.sca.internal.java.handler.JavaReflectionAdapter$2.run(JavaReflectionAdapter.java:152)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The cause:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style=";font-family:trebuchet ms;font-size:100%;"  &gt;This is mainly caused by reports that take a great deal of time to execute causing the application server to report that the processing thread is 'hung'. A worse side effect of this is when the application server runs out of threads and is unable to process any further requests due to these hung threads.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style=";font-family:trebuchet ms;font-size:100%;"  &gt;&lt;span style="font-weight: bold;"&gt;The solution:&lt;/span&gt;&lt;br /&gt;The problem is due to the fact that the Corba Timeout has not been set. You've missed the clientSDKOptions.xml in your deployment. This causes the RAS SDK to probably never timeout its call to the RAS.&lt;br /&gt;&lt;br /&gt;Create a file called clientSDKOptions.xml and place it in your application's WEB-INF/classes folder, or alternatively, you could place it in a server wide classpath folder like 'applib' on OC4J or $WASPROFILE/properties on WebSphere.&lt;br /&gt;The contents of the file should be as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;CrystalReports.ClientSDKOptions&lt;br /&gt; xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"&lt;br /&gt; version="2"&lt;br /&gt; xsi:type="CrystalReports.ClientSDKOptions"&amp;gt;&lt;br /&gt;   &amp;lt;CORBARequestTimeout&amp;gt;120000&amp;lt;/CORBARequestTimeout&amp;gt;&lt;br /&gt;&amp;lt;/CrystalReports.ClientSDKOptions&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Restart your app and your done. Your call should now timeout within 2 minutes (something with you can change) and you can say goodbye to your Hung Threads issue.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-5575692058923454086?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bkB8UarR633Gw964szEVO5PMKns/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bkB8UarR633Gw964szEVO5PMKns/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bkB8UarR633Gw964szEVO5PMKns/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bkB8UarR633Gw964szEVO5PMKns/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/eSWZ54_ARz8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/5575692058923454086/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=5575692058923454086" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/5575692058923454086?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/5575692058923454086?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/eSWZ54_ARz8/hung-threads-with-bo-sdk-solution.html" title="Hung Threads with BO SDK - Solution" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2008/09/hung-threads-with-bo-sdk-solution.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQCRX0yfyp7ImA9WxRSE0Q.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-1099532291512811384</id><published>2008-09-02T14:43:00.009+05:30</published><updated>2008-09-14T17:42:44.397+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-14T17:42:44.397+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sample code" /><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><category scheme="http://www.blogger.com/atom/ns#" term="freeware" /><title>Install and configure CVS on Solaris 10</title><content type="html">&lt;span style="font-family:trebuchet ms;"&gt;Download the appropriate binary from&lt;br /&gt;&lt;a href="http://www.nongnu.org/cvs"&gt;http://www.nongnu.org/cvs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;# create a "cvs" user. This user will be used to impersonate cvs' users&lt;/span&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$ mkdir  /export/home/cvsroot&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$ useradd -d /home/cvs -c "CVS Owner" cvs&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;# create the CVS repository&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$ cvs -d /path_to_repository&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;#Add the following to  /etc/services&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;cvspserver 2401/tcp # CVS Client/server operations&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;cvspserver 2401/udp # CVS Client/server operations&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;#Place this following line in a file called "cvs_inetd"&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;cvspserver stream tcp nowait root /path_to_cvs_executable -f \&lt;br /&gt;--allow-root=/path_to_cvs_repository pserver&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;# import the service into smf&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$ inetconv -f -i ./cvs_inetd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;cvspserver -&gt; /var/svc/manifest/network/cvspserver-tcp.xml&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Importing cvspserver-tcp.xml …Done&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;#Add the following lines to /var/svc/profile/inetd_services.xml&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;service name='network/cvspserver-tcp' version='1' type='service'&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;instance name='default' enabled='true'/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;#Restart the network&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$ svcadm restart svc:/network/inetd:default&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;You're done. Your pserver should be listening on port 2401&lt;br /&gt;&lt;br /&gt;#Script to create cvs users&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;#!/usr/bin/perl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$cvsroot="/path_to_cvs_root";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$user = shift @ARGV || die "cvspasswd user\n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;print "Enter password for $user: ";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;system "stty -echo";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;chomp ($plain = &lt;&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;system "stty echo";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;print "\n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;@chars = ('A'..'Z', 'a'..'z', '0'..'9');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$salt = $chars[rand(@chars)] . $chars[rand(@chars)];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$passwd = crypt($plain, $salt);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;open(PASSWD,"&gt;&gt;$cvsroot/CVSROOT/passwd") || die("Cannot Open File");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;print PASSWD "$user:$passwd:cvs\n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;close PASSWD;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;#-End&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$ perl createcvspasswd.pl your_cvs_user&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-1099532291512811384?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JINVTfDL6idDBlzEL5qTjUSX0Ew/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JINVTfDL6idDBlzEL5qTjUSX0Ew/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JINVTfDL6idDBlzEL5qTjUSX0Ew/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JINVTfDL6idDBlzEL5qTjUSX0Ew/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/8mpHt-g9A3M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/1099532291512811384/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=1099532291512811384" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/1099532291512811384?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/1099532291512811384?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/8mpHt-g9A3M/install-and-configure-cvs-on-solaris-10.html" title="Install and configure CVS on Solaris 10" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>11</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2008/09/install-and-configure-cvs-on-solaris-10.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAEQHozeyp7ImA9WxdaEk8.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-8733738763815342979</id><published>2008-08-20T14:53:00.003+05:30</published><updated>2008-08-20T15:01:41.483+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-20T15:01:41.483+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>Improve windows networking (especially if hosting webservers)</title><content type="html">&lt;span style="font-family: trebuchet ms;"&gt;&lt;br /&gt;First of all, I forgive you for having to use windows to host your  web server :)&lt;br /&gt;&lt;br /&gt;Now that thats out of the way, here's how you speed up networking performance on windows (especially if you happen to host Apache, IBM HTTP Server, or any other web server on a windows machine)&lt;br /&gt;&lt;br /&gt;Create a .reg file (eg: perf.reg) with the contents that follow:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre name="code"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Windows Registry Editor Version 5.00&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"MaxUserPort"=dword:00008000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"TcpTimedWaitDelay"=dword:0000001e&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"TcpMaxDataRetransmissions"=dword:00000005&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"TcpAckFrequency"=dword:00000001&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"TcpDelAckTicks"=dword:00000000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"EnableDynamicBacklog"=dword:00000001&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"MinimumDynamicBacklog"=dword:00000020&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"MaximumDynamicBacklog"=dword:00001000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"DynamicBacklogGrowthDelta"=dword:00000010&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"KeepAliveInterval"=dword:00000001&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Double click on the file to merge its contents into the registry. Restart the machine.&lt;br /&gt;You're done.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-8733738763815342979?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xL-8oDzYUH4-cC6KI1RyaVr1atM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xL-8oDzYUH4-cC6KI1RyaVr1atM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xL-8oDzYUH4-cC6KI1RyaVr1atM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xL-8oDzYUH4-cC6KI1RyaVr1atM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/tF-so48s9fc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/8733738763815342979/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=8733738763815342979" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/8733738763815342979?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/8733738763815342979?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/tF-so48s9fc/improve-windows-networking-especially.html" title="Improve windows networking (especially if hosting webservers)" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2008/08/improve-windows-networking-especially.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UFQn8yfCp7ImA9WxRSF0k.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-1107537569048627783</id><published>2008-08-09T00:43:00.012+05:30</published><updated>2008-09-18T18:03:33.194+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-18T18:03:33.194+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>SSH Port Forwarding, X11 fowarding, RDP tunneling and much more</title><content type="html">&lt;div style="text-align: center;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:130%;"&gt;The only firewall port you'll ever need opened - PORT 22&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;SSH Tunneling/Port Forwarding&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pre requisites:&lt;br /&gt;&lt;br /&gt;1.    Putty (or an equally good ssh client that allows creation of ssh tunnels)&lt;br /&gt;2.    Xming (X Server)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;3.    root access to the ssh server (if you need to modify the /etc/ssh/sshd_config) file&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;On the server:&lt;/span&gt;&lt;br /&gt;Edit /etc/ssh/sshd_config and confirm that the configuration is as below:&lt;br /&gt;&lt;br /&gt;&lt;table style="border: 1px solid rgb(0, 0, 255); border-collapse: collapse;" border="1" width="80%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;AllowTcpForwarding yes&lt;br /&gt;X11Forwarding yes&lt;br /&gt;X11DisplayOffset 10&lt;br /&gt;X11UseLocalhost yes&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Close the file and execute the following command (if you’ve changed the f&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;ile)&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ svcadm restart ssh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SSH Tunneling is a feature that lets you create 'tunnels of TCP traffic' from the client through to the ssh server over your SSH connection.&lt;br /&gt;&lt;br /&gt;See the diagram below:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y9vlmWWEuA0/SJ_gOFDkHVI/AAAAAAAAAEg/odWrM92udI0/s1600-h/ssh.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Y9vlmWWEuA0/SJ_gOFDkHVI/AAAAAAAAAEg/odWrM92udI0/s400/ssh.gif" alt="" id="BLOGGER_PHOTO_ID_5233147824507723090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;You can create as many 'tunnels' as you like from the client. All you need to create this tunnel is:&lt;br /&gt;1. The local port -&gt; Local end of the tunnel&lt;br /&gt;2. The remote host and port -&gt; Location where you want your TCP packets to finally reach.&lt;br /&gt;&lt;br /&gt;Note: The remote end of the tunnel is the SSH server. This implies that  your communication channel is encrypted only from your client to your SSH server (which shouldn't be a problem if your SSH server and the servers you want to finally connect to are all on the same trusted network)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;Now for some fun:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;RDP Tunneling&lt;/span&gt;&lt;br /&gt;Lets say you want to access the machine running XP using windows using Remote Desktop client from your local machine that's outside the firewall.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1: CREATE THE TUNNEL&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The general syntax is:&lt;br /&gt;D:\&gt;putty –L [local port]:[remote machine]:[remote port] [ssh server]&lt;br /&gt;&lt;br /&gt;a. Choose a local port say 30001, for the local end of the tunnel. See that it is not already in use.&lt;br /&gt;b. Execute the command to create the tunnel:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;D:\&gt;putty –L 30001:mymac:3389 mysshserver&lt;/span&gt;&lt;br /&gt;Enter the username and password in the putty window that pops up.&lt;br /&gt;&lt;br /&gt;You're done! You now have an encrypted tunnel from your machine to the ssh server to send tcp packets to the remote machine.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2: USE THE TUNNEL&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;a. Connect to the remote machine from the local end of the tunnel :&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;D:\&gt;mstsc –v localhost:30001&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you want to be extra naughty, you can even share you local disk drives with the remote computer ? like so:&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Y9vlmWWEuA0/SJ_cNLrPlWI/AAAAAAAAAEI/q5T22K1q9LA/s1600-h/rdp1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_Y9vlmWWEuA0/SJ_cNLrPlWI/AAAAAAAAAEI/q5T22K1q9LA/s400/rdp1.gif" alt="" id="BLOGGER_PHOTO_ID_5233143411058382178" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Y9vlmWWEuA0/SJ_fOhMxJeI/AAAAAAAAAEQ/zCaL_pg_ApA/s1600-h/rdp2.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_Y9vlmWWEuA0/SJ_fOhMxJeI/AAAAAAAAAEQ/zCaL_pg_ApA/s400/rdp2.gif" alt="" id="BLOGGER_PHOTO_ID_5233146732550890978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:130%;"&gt;X11 forwarding&lt;br /&gt;&lt;/span&gt;If you want to do X11 forwarding, its really very simple.&lt;br /&gt;Just ensure that the login on the ssh server doesnt have the DISPLAY environment set (in the .login/.bashrc_profile)&lt;br /&gt;&lt;br /&gt;After that you'll need to do the following:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y9vlmWWEuA0/SJ_jMOSJR0I/AAAAAAAAAEo/rnQ6IUUrjBo/s1600-h/p3.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Y9vlmWWEuA0/SJ_jMOSJR0I/AAAAAAAAAEo/rnQ6IUUrjBo/s400/p3.gif" alt="" id="BLOGGER_PHOTO_ID_5233151091159942978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y9vlmWWEuA0/SJ_jMbIPVAI/AAAAAAAAAEw/rXjL_Q3aXu8/s1600-h/p4.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Y9vlmWWEuA0/SJ_jMbIPVAI/AAAAAAAAAEw/rXjL_Q3aXu8/s400/p4.gif" alt="" id="BLOGGER_PHOTO_ID_5233151094608057346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Y9vlmWWEuA0/SJ_jMq5VHAI/AAAAAAAAAE4/4-Z_5JUqZ6M/s1600-h/p6.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_Y9vlmWWEuA0/SJ_jMq5VHAI/AAAAAAAAAE4/4-Z_5JUqZ6M/s400/p6.gif" alt="" id="BLOGGER_PHOTO_ID_5233151098840488962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Now, start XMing on your desktop, open the putty session, login and type the following:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;$ xclock &amp;amp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You should see the XWindow pop up on your desktop.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;local port=""&gt;&lt;remote host=""&gt;&lt;remote port=""&gt;&lt;ssh server=""&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;/ssh&gt;&lt;/remote&gt;&lt;/remote&gt;&lt;/local&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-1107537569048627783?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uJ8wMvDcPWsLp2kIREe1nheOc7g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uJ8wMvDcPWsLp2kIREe1nheOc7g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uJ8wMvDcPWsLp2kIREe1nheOc7g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uJ8wMvDcPWsLp2kIREe1nheOc7g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/aDzY25XYB5k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/1107537569048627783/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=1107537569048627783" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/1107537569048627783?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/1107537569048627783?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/aDzY25XYB5k/ssh-port-forwarding-x11-fowarding-rdp.html" title="SSH Port Forwarding, X11 fowarding, RDP tunneling and much more" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_Y9vlmWWEuA0/SJ_gOFDkHVI/AAAAAAAAAEg/odWrM92udI0/s72-c/ssh.gif" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2008/08/ssh-port-forwarding-x11-fowarding-rdp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cERHk8fyp7ImA9WxFaEEk.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-6274310375615818844</id><published>2008-07-24T22:06:00.004+05:30</published><updated>2010-07-13T23:46:45.777+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-13T23:46:45.777+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IBM" /><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>WebSphere Process Server - File Adapter errors</title><content type="html">&lt;span style="font-family: 'trebuchet ms';"&gt;Once you deploy a mediation module containing a file adapter on a websphere process server and turn on global security, things start going bad.&lt;br /&gt;
&lt;br /&gt;
This mess could manifest itself in very many ways, some of which I encountered are listed below along with their solutions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem 1:&lt;br /&gt;
Error message : SECJ5010E: Could not create default AuthenticationToken during propagation login. The following exception occurred: com.ibm.websphere.security.auth.WSLoginFailedException: Validation of LTPA token failed due to invalid keys or token type.&lt;br /&gt;
&lt;br /&gt;
Fix: Upgrade WAS to at least 6.0.2.11 (WAS is currently at 6.0.2.27)&lt;br /&gt;
Create an entry in Admin Console-&amp;gt;Global Security-&amp;gt;Addition Properties-&amp;gt;Custom properties :&lt;br /&gt;
com.ibm.ws.security.createTokenSubjectForAsynchLogin=true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem 2:&lt;br /&gt;
Error message: CWWBF0060E: Cannot find a specific session EJB component.Process for the process&lt;br /&gt;
&lt;br /&gt;
Fix: Go to the resource view in WID, and clean the respective EJB project of the Module. Then go back to the business integration view and 'clean' the entire module.&lt;br /&gt;
You might have to shutdown and restart WID after this. Rebuild the project and deploy. The error will go away.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem 3:&lt;br /&gt;
Error message: com.ibm.websphere.sca.ServiceRuntimeException: caused by: java.lang.IllegalStateException: No implementation or binding handler was found to process this interaction&lt;br /&gt;
&lt;br /&gt;
Fix: Uninstall the following iFix: 6.0.2.0-WS-WPS-IFJR28515.pak&lt;br /&gt;
Better still, upgrade to 6.0.2.4&lt;br /&gt;
&lt;br /&gt;
General Warning about iFixes:&lt;br /&gt;
Expect every iFix emitted by IBM to break something in the existing product. You'll often hear of iFixes for iFixes and it is not funny, especially if you are in production. Your best bet is to avoid iFixes if possible.&lt;br /&gt;
&lt;/span&gt;&lt;span style="font-family: 'trebuchet ms';"&gt;Better still, upgrade to 6.0.2.4&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'trebuchet ms';"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="font-family: 'trebuchet ms';"&gt;&lt;br /&gt;
Problem 4&lt;br /&gt;
The file adapter (inbound) doesn't work well at all on Solaris (or any unixy systems). The file adapter doesn't know when the file transfer to the inbound folder is completed and starts reading it the moment its poll interval time is up. The adapter works well on windows as windows locks the file during transfer.&lt;br /&gt;
&lt;br /&gt;
Fix: There is none at this time, unless you just want to just transfer the file to another location without parsing it. (Create a 0 byte &lt;originalfilename&gt;.done file for file that is placed in the inbound folder and programatically copy the original file to the destination location. The &lt;originalfilename&gt;.done file will be transferred to the archive folder (if archiving is turned on))&lt;br /&gt;
&lt;br /&gt;
&lt;/originalfilename&gt;&lt;/originalfilename&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'trebuchet ms';"&gt;&lt;originalfilename&gt;&lt;originalfilename&gt;Check out the following book that could help you work better with WPS:&lt;/originalfilename&gt;&lt;/originalfilename&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'trebuchet ms';"&gt;&lt;originalfilename&gt;&lt;originalfilename&gt;&lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=B001334IUQ&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="align: left; height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;&lt;/originalfilename&gt;&lt;/originalfilename&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-6274310375615818844?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/caauKbVvdYvx53yTvwzX5piqsuE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/caauKbVvdYvx53yTvwzX5piqsuE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/caauKbVvdYvx53yTvwzX5piqsuE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/caauKbVvdYvx53yTvwzX5piqsuE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/BmfG35-fbjM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/6274310375615818844/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=6274310375615818844" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/6274310375615818844?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/6274310375615818844?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/BmfG35-fbjM/websphere-process-server-file-adapter.html" title="WebSphere Process Server - File Adapter errors" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2008/07/websphere-process-server-file-adapter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EGQnczcSp7ImA9WxdWGU8.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-695398006168109760</id><published>2008-07-13T10:25:00.003+05:30</published><updated>2008-07-13T10:37:03.989+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-13T10:37:03.989+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="freeware" /><title>Update files in .war and .ear directly</title><content type="html">&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;I have seen many applications (.war and .ear) that have their property files or resource bundles stored within the .war or .ear files.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;When the time comes for deploying them into production you usually have to unzip the entire war/ear file, modify the property files or resource bundle file and zip the whole thing back up again. Sometimes, some lazy developers just want to sneak in a .class file too :)&lt;br /&gt;Trust me, this &lt;span style="font-style: italic;"&gt;can &lt;/span&gt;be a pain.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;This is where a utility (open source, of course) called &lt;a href="http://www.7-zip.org/"&gt;7-zip&lt;/a&gt; (www.7-zip.org) comes in handy. It allows you to do all of the above, plus provides the best compression in this industry, does almost any compression format on the planet and the best-est of all, its free and open source.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.7-zip.org/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Y9vlmWWEuA0/SHmNAl1cBvI/AAAAAAAAAEA/P7H4LZI8ul0/s200/7z_ns.jpg" alt="" id="BLOGGER_PHOTO_ID_5222360284208563954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Use it. Trust me, its great.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-695398006168109760?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HMZh2OJu9fYTk4cwaCKPIyA5G2Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HMZh2OJu9fYTk4cwaCKPIyA5G2Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HMZh2OJu9fYTk4cwaCKPIyA5G2Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HMZh2OJu9fYTk4cwaCKPIyA5G2Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/Upjubm4L7hQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/695398006168109760/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=695398006168109760" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/695398006168109760?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/695398006168109760?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/Upjubm4L7hQ/update-files-in-war-and-ear-directly.html" title="Update files in .war and .ear directly" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_Y9vlmWWEuA0/SHmNAl1cBvI/AAAAAAAAAEA/P7H4LZI8ul0/s72-c/7z_ns.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2008/07/update-files-in-war-and-ear-directly.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAER3w_fSp7ImA9WxdQFE8.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-2632249617008339391</id><published>2008-06-14T10:42:00.008+05:30</published><updated>2008-06-14T11:38:26.245+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-14T11:38:26.245+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IBM" /><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>WebSphere Portal Server migration Issues - Part I</title><content type="html">&lt;span style="font-family:trebuchet ms;"&gt;You've got WebSphere Portal Server 6.x comfortably hooked up to Oracle / Oracle RAC and then someone wants you to move to another Oracle installation (on a different machine possibly).&lt;br /&gt;&lt;br /&gt;IBM has told you that all you need to do is export your database and import it into the other installation.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://commons.wikimedia.org/wiki/Image:FIRE_01.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_Y9vlmWWEuA0/SFNeCJhKIvI/AAAAAAAAADQ/ZvyZU6VUPso/s400/fire.jpg" alt="" id="BLOGGER_PHOTO_ID_5211612584805540594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;You're confident. You try it. You do a full=y export and do a full=y import into the new da&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;tabase, change your datasources to point to the new oracle instances, check all the connections and everything is fine.... start your server .... and BOOM!&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Part I - tells you about this stack trace that you receive:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);font-family:courier new;" &gt;Unable to locate default library category Error while calling a function retrieveItemsByCMId of PLS data manager.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);font-family:courier new;" &gt;Unable to locate webContent library category Error while calling a function retrieveItemsByCMId of PLS data manager.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);font-family:courier new;" &gt;javax.jcr.RepositoryException: Error while calling a function retrieveItemsByCMId of PLS data manager.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;What do you do Jack? Don't raise a PMR for one. The answer is simple for this one.&lt;br /&gt;You're DBA has forgotten to check the tablespaces that were involved with the Oracle Instance for the Portal.&lt;br /&gt;&lt;br /&gt;You'd need to tell the DBA (should you be so unlucky to have one who couldn't figure this out) to create the following tablespaces BEFORE the import.:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Y9vlmWWEuA0/SFNfMDMTr_I/AAAAAAAAADY/7GA-aJZoqoo/s1600-h/90px-Fire-extinguisher-sign.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_Y9vlmWWEuA0/SFNfMDMTr_I/AAAAAAAAADY/7GA-aJZoqoo/s400/90px-Fire-extinguisher-sign.jpg" alt="" id="BLOGGER_PHOTO_ID_5211613854417793010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;# These are for Oracle RAC. For plain, standalone Oracle, you'd specify the datafile location after the 'datafile' keyword&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;create tablespace ICMLFQ32 datafile size 300M autoextend on&lt;br /&gt;next 10M maxsize UNLIMITED extent management local autoallocate;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;&lt;br /&gt;create tablespace ICMLNF32 datafile size 25M  autoextend on&lt;br /&gt;next 10M maxsize UNLIMITED extent management local autoallocate;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;&lt;br /&gt;create tablespace ICMVFQ04 datafile size 25M  autoextend on&lt;br /&gt;next 10M maxsize UNLIMITED extent management local autoallocate;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;&lt;br /&gt;create tablespace ICMSFQ04 datafile size 150M autoextend on&lt;br /&gt;next 10M maxsize UNLIMITED extent management local autoallocate;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:courier new;" &gt;&lt;br /&gt;create tablespace ICMLSNDX datafile size 10M  autoextend on&lt;br /&gt;next 10M maxsize UNLIMITED extent management local autoallocate;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Run the database import again and you'll be fine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-2632249617008339391?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dlBGjIFhfRiLBLxOHQjgpy8dSUE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dlBGjIFhfRiLBLxOHQjgpy8dSUE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dlBGjIFhfRiLBLxOHQjgpy8dSUE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dlBGjIFhfRiLBLxOHQjgpy8dSUE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/CBm1q09tkSA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/2632249617008339391/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=2632249617008339391" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/2632249617008339391?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/2632249617008339391?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/CBm1q09tkSA/websphere-portal-server-migration.html" title="WebSphere Portal Server migration Issues - Part I" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Y9vlmWWEuA0/SFNeCJhKIvI/AAAAAAAAADQ/ZvyZU6VUPso/s72-c/fire.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2008/06/websphere-portal-server-migration.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEMRnYyfip7ImA9WxRbF08.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-2646873729955514926</id><published>2008-05-30T06:44:00.004+05:30</published><updated>2008-12-08T14:44:47.896+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-08T14:44:47.896+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>Little's Law - Verify Performance Test Results</title><content type="html">&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Here is something I often use (and need to lookup) when I'm analyzing performance test reports.&lt;br /&gt;Most of the time, these reports are nothing but nebulous and I have no choice but to go back to the basics.&lt;/span&gt;&lt;/span&gt;&lt;a style="font-family: courier new;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Y9vlmWWEuA0/SD9a9S-Nr5I/AAAAAAAAABI/kALWT4mZ_qg/s1600-h/little.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_Y9vlmWWEuA0/SD9a9S-Nr5I/AAAAAAAAABI/kALWT4mZ_qg/s400/little.gif" alt="Professor John D.C. Little" id="BLOGGER_PHOTO_ID_5205979703374884754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;Here's the simple procedure I use to verify the sanity of the test:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Run a step load test. Get the following data  from your load testing tool (averaged) per step&lt;span style="font-weight: bold;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1. Transactions per second&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;2. Hits per second&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;3. Think time&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;4. Response time&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:100%;"&gt;5. Number of virtual users being simulated.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;6. Throughput (bytes) &lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;&lt;br /&gt;Here's where the math starts:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;Using &lt;/span&gt;&lt;a style="color: rgb(51, 0, 51);" href="http://en.wikipedia.org/wiki/Little%27s_law"&gt;Little's Law&lt;/a&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;, you then then deduce the following:&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;font-family:courier new;"&gt;Actual Number of Users in the System = (Response time + Think time) * Transactions per second&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can also verify the page size:&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;font-family:courier new;"&gt;Page size = Throughput / Hits per second&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can tell if there is something wrong with your test bed If the actual number of users in the system given by Little's Law is different from the number of virtual users being pumped in by your load testing tool. i.e. &lt;span style="font-weight: bold;"&gt;if the number of users simulated by the testing tool is more than what you deduce by Little's Law, your system is probably just queuing those extra users. &lt;/span&gt;You'll also notice your response time will start to 'knee' once this starts to happen.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;The main thing here is to do this calculation for an average of all points data points per step change in number of virtual users simulated.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-2646873729955514926?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JUxsFKQ1_C-jZYinIdf8HnLrzfA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JUxsFKQ1_C-jZYinIdf8HnLrzfA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JUxsFKQ1_C-jZYinIdf8HnLrzfA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JUxsFKQ1_C-jZYinIdf8HnLrzfA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/wfd0LsqaV0g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/2646873729955514926/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=2646873729955514926" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/2646873729955514926?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/2646873729955514926?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/wfd0LsqaV0g/littles-law-verify-performance-test.html" title="Little's Law - Verify Performance Test Results" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Y9vlmWWEuA0/SD9a9S-Nr5I/AAAAAAAAABI/kALWT4mZ_qg/s72-c/little.gif" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2008/05/littles-law-verify-performance-test.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIHQX46eip7ImA9WxRbGEU.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-7527356101851419160</id><published>2008-05-30T06:36:00.002+05:30</published><updated>2008-12-10T11:25:30.012+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-10T11:25:30.012+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>Change CVS default port on Solaris 10</title><content type="html">&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Changing the default port (2401) of CVS on Solaris 10 is real easy.&lt;br /&gt;&lt;br /&gt;1. Edit your /etc/services file&lt;br /&gt;Change the following line:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cvspserver         2401/tcp           #cvs pserver&lt;/span&gt;&lt;br /&gt;to&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cvspserver         {new port}/tcp     #cvs pserver&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. Execute the following commands:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# svcadm disable svc:/network/cvspserver/tcp:default &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# svcadm enable  svc:/network/cvspserver/tcp:default&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and you're done!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;Find out how to &lt;a href="http://tripoverit.blogspot.com/2008/09/install-and-configure-cvs-on-solaris-10.html"&gt;install and configure CVS for Solaris 10&lt;/a&gt; here.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-7527356101851419160?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Pr1-emSh5hDCpExMo9AL6_p09UQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pr1-emSh5hDCpExMo9AL6_p09UQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Pr1-emSh5hDCpExMo9AL6_p09UQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pr1-emSh5hDCpExMo9AL6_p09UQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/WCuoZj7ujA8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/7527356101851419160/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=7527356101851419160" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/7527356101851419160?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/7527356101851419160?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/WCuoZj7ujA8/change-cvs-default-port-on-solaris-10.html" title="Change CVS default port on Solaris 10" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2008/05/change-cvs-default-port-on-solaris-10.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08DRXk6fSp7ImA9WxdRE00.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-54093166720196238</id><published>2008-05-28T21:23:00.001+05:30</published><updated>2008-06-01T12:01:14.715+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-01T12:01:14.715+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IBM" /><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>WebSphere Process Server / Portal Server with Oracle RAC</title><content type="html">&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;If you're thinking that you'll get out-of-the-box Oracle RAC support for an IBM WebSphere Process Server or Portal Server installlation, you're sadly mistaken.&lt;br /&gt;&lt;br /&gt;All the scripts that are generated by the installation process (for the oracle database) are for a standalone installation and will fail or make your DBA very angry if they are run on one of the RAC nodes!&lt;br /&gt;&lt;br /&gt;Well, there's a way out, but you'd have to edit the scripts that these monstrous products generate.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;You'll find a line like this in Portal server scripts:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;create tablespace ICMLFQ32 datafile &lt;span style="color: rgb(255, 0, 0);"&gt;'/oracle/tb/ICMLFQ32_01.dbf'&lt;/span&gt; size 300M reuse autoextend on next 10M maxsize UNLIMITED extent management local autoallocate;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;you'll have to change it to :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;create tablespace ICMLFQ32 datafile size 300M autoextend on next 10M maxsize UNLIMITED extent management local autoallocate;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;i.e. remove the &lt;span style="font-style: italic;"&gt;location &lt;/span&gt;of the datafile specified.&lt;br /&gt;&lt;br /&gt;There's another thing that you'd need to do if your using Oracle RAC as the datastore for WebSphere Process and WebSphere Portal Servers... change your JDBC string.&lt;br /&gt;&lt;br /&gt;I got this tip from the &lt;a href="http://www.ibm.com/developerworks/websphere/techjournal/0706_banerjee/0706_banerjee.html"&gt;an IBM developerworks article on Oracle RAC with Process Server&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;Change your datasource from:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;&lt;br /&gt;jdbc:oracle:thin:@{hostname}:{port number}:{DBName}&lt;/code&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;to:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre class="displaycode"&gt;jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=&lt;br /&gt;(ADDRESS=(PROTOCOL=TCP)(HOST= myoraclehost1.ibm.com)(PORT=1521))&lt;br /&gt;(ADDRESS=(PROTOCOL=TCP)(HOST= myoraclehost2.ibm.com)(PORT=1521))&lt;br /&gt;(FAILOVER=on)(LOAD_BALANCE=on)&lt;br /&gt;(CONNECT_DATA=(SERVER=DEDICATED)&lt;br /&gt;(SERVICE_NAME=dbservice)))&lt;/pre&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;I should be posting more gotchas with the IBM stack .... check the 'IBM' tags&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-54093166720196238?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2LVTFbQMUqsIUr915AIdELxzqHc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2LVTFbQMUqsIUr915AIdELxzqHc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2LVTFbQMUqsIUr915AIdELxzqHc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2LVTFbQMUqsIUr915AIdELxzqHc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/mzQhHoiO69M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/54093166720196238/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=54093166720196238" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/54093166720196238?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/54093166720196238?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/mzQhHoiO69M/websphere-process-server-portal-server.html" title="WebSphere Process Server / Portal Server with Oracle RAC" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2008/05/websphere-process-server-portal-server.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEMQ3o7fSp7ImA9WxdbFEs.&quot;"><id>tag:blogger.com,1999:blog-2860433619790681737.post-3015639149383828954</id><published>2008-04-12T10:45:00.005+05:30</published><updated>2008-08-11T20:28:02.405+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-11T20:28:02.405+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="sample code" /><category scheme="http://www.blogger.com/atom/ns#" term="tips and tricks" /><title>Java - Create Zip file in memory</title><content type="html">&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;I find myself writing and rewriting this piece of code whenever I want to zip a set of files (in memory) and return the zipped file back as an object in memory. I often use this when the user requests a download of multiple reports and the deployment environment doesn't allow for disk access.&lt;br /&gt;&lt;br /&gt;I thought I'd post it here so that I could copy-paste it the next time I need it :) If you've stumbled upon this page, you're free to use the code below too!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;private static byte[] createZip(Map files) throws IOException {&lt;br /&gt;    ByteArrayOutputStream bos = new ByteArrayOutputStream();&lt;br /&gt;    ZipOutputStream zipfile = new ZipOutputStream(bos);&lt;br /&gt;    Iterator i = files.keySet().iterator();&lt;br /&gt;    String fileName = null;&lt;br /&gt;    ZipEntry zipentry = null;&lt;br /&gt;    while (i.hasNext()) {&lt;br /&gt;        fileName = (String) i.next();&lt;br /&gt;        zipentry = new ZipEntry(fileName);&lt;br /&gt;        zipfile.putNextEntry(zipentry);&lt;br /&gt;        zipfile.write((byte[]) files.get(fileName));&lt;br /&gt;    }&lt;br /&gt;    zipfile.close();&lt;br /&gt;    return bos.toByteArray();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2860433619790681737-3015639149383828954?l=tripoverit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/e-fbaqIIdyPwpbvaiXmszgiqZ9w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e-fbaqIIdyPwpbvaiXmszgiqZ9w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/e-fbaqIIdyPwpbvaiXmszgiqZ9w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e-fbaqIIdyPwpbvaiXmszgiqZ9w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/KhsTt/~4/xbHxAdUv7_M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tripoverit.blogspot.com/feeds/3015639149383828954/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2860433619790681737&amp;postID=3015639149383828954" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/3015639149383828954?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2860433619790681737/posts/default/3015639149383828954?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/KhsTt/~3/xbHxAdUv7_M/java-create-zip-file-in-memory.html" title="Java - Create Zip file in memory" /><author><name>Ryan Fernandes</name><uri>http://www.blogger.com/profile/02730837764730410485</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>10</thr:total><feedburner:origLink>http://tripoverit.blogspot.com/2008/04/java-create-zip-file-in-memory.html</feedburner:origLink></entry></feed>

