<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8507185344691363497</id><updated>2012-02-29T18:21:58.152+01:00</updated><category term='WebMethods HTTPS TLS handshake'/><category term='IBM'/><category term='webMethods'/><category term='Mule'/><category term='Pervasive'/><category term='CLI'/><category term='Datapower'/><category term='Babelway'/><category term='CentraSite ActiveSOA'/><category term='security'/><category term='OpenWorld'/><category term='BizTalk'/><category term='Integration-As-A-Service'/><category term='Oracle DB objects comparison webMethods'/><category term='Enterprise one adapter'/><category term='Oracle'/><category term='Java'/><category term='Boomi'/><category term='Azure'/><category term='Tibco'/><category term='Software AG My webMethods Server Microsoft Active Directory trusted domain users'/><category term='SOAP'/><category term='CastIron'/><category term='JCAPS'/><category term='JMX'/><category term='Tucon'/><category term='SoftwareAG'/><category term='BiztalkDTAdb'/><category term='performance'/><category term='JMS'/><category term='HornetQ'/><category term='Android'/><category term='open-source'/><category term='Cloud'/><title type='text'>i8c - Business Integration Architects</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-7006214712411853275</id><published>2012-02-27T14:27:00.000+01:00</published><updated>2012-02-27T14:27:11.808+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WebMethods HTTPS TLS handshake'/><title type='text'>Troubleshooting a HTTPS TLSv1 handshake between Microsoft software and Webmethods 8</title><content type='html'>&lt;h1&gt;The problem&lt;/h1&gt;Microsoft software (biztalk, wfetch, IE,…) all have a problem when performing a HTTPS TLSv1 handshake to Webmethods 8.0.1 running on a JVM 1.6 server. The problem manifests itself as an error on the client side (biztalk):&lt;br /&gt;“The underlying connection was closed: An unexpected error occurred on a send.”&lt;br /&gt;Note: IE will actually catch this error and retry using SSLv3 so to the end-user it seems that IE works but it actually exhibits the same behavior.&lt;br /&gt;Server specifications:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Webmethods: windows 2003, JSE 1.664 bit, v8.0.1&lt;/li&gt;&lt;li&gt;Biztalk: windows 2008&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;Recognizing the error&lt;/h1&gt;The first step is recognizing the error on our system so we can identify it when trying to reproduce it.&lt;br /&gt;&lt;h2&gt;Webmethods&lt;/h2&gt;First step is setting all the logging to “TRACE” for thewebmethodsserver logger. The server log/error log does not show any indication that the failed connection took place.&lt;br /&gt;&lt;h2&gt;JVM&lt;/h2&gt;The JVM offers a few system attributes to enable security debugging:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;java.security.debug&lt;/li&gt;&lt;li&gt;javax.net.debug&lt;/li&gt;&lt;/ul&gt;Setting “java.security.debug=all” in the server.bat (and running from CLI) produces a stupendous amount of logging at startup which made it ratherunusable (after 10minutes it wasn’t even at the first startup log you expect in server.log), especially because I couldn’t redirect the output of the CLI to a file (for unknown reasons)&lt;br /&gt;Setting “javax.net.debug=all”(or ssl)in the server.bat actually results in no additional output whatsoever.This may point to a custom webmethods implementation for HTTPS.&lt;br /&gt;&lt;h2&gt;Wireshark&lt;/h2&gt;We installed wireshark on the server to capture the actual traffic going back and forth.We needed some additional configuration to actually make heads and tails from the encrypted traffic (source:&lt;a href="http://support.citrix.com/article/CTX116557"&gt;http://support.citrix.com/article/CTX116557&lt;/a&gt;)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Go to edit &amp;gt; preferences &amp;gt; protocols &amp;gt; SSL&lt;/li&gt;&lt;li&gt;Add &amp;lt;ip-of-webmethods-server&amp;gt;,&amp;lt;https-port-of-webmethods-server&amp;gt;,TCP,c:/path/to/private-key.pem&lt;br /&gt;&lt;ul&gt;&lt;li&gt;E.g. 10.0.0.1,443,TCP,c:\my-private-key.pem&lt;/li&gt;&lt;li&gt;Use “;” to separate multiple entires and make sure there are no spaces after each comma&lt;/li&gt;&lt;li&gt;Or in newer versions of wireshark:&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-OCVXdNv74M0/TyaVkU0qtNI/AAAAAAAAADs/Cwoh3UOB9Bg/s1600/image1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="145" src="http://4.bp.blogspot.com/-OCVXdNv74M0/TyaVkU0qtNI/AAAAAAAAADs/Cwoh3UOB9Bg/s320/image1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fill in an SSL debug file (e.g.c:\ssl-debug.log)&lt;/li&gt;&lt;li&gt;Restart wireshark and the debug file you configured should show something like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ssl_init found host entry&amp;lt;configured-entry&amp;gt;&lt;/li&gt;&lt;li&gt;ssl_init addr‘&amp;lt;ip&amp;gt;' port '&amp;lt;port&amp;gt;' filename '&amp;lt;name&amp;gt;' password(only for p12 file) '(null)'&lt;/li&gt;&lt;li&gt;Private key imported: KeyID&amp;lt;id&amp;gt;..&lt;/li&gt;&lt;li&gt;ssl_init private key file&amp;lt;path&amp;gt;successfully loaded&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;If the key could not be imported (wrong format or the likes) you will see an error in the log file&lt;/li&gt;&lt;/ul&gt;In our case the private key was in DER format so we converted it to PEM using openssl:&lt;br /&gt;$ openssl rsa -in private-key.der -out private-key.pem -outform PEM–inperform DER&lt;br /&gt;Now that we can capture the HTTPS traffic,we add a filter to only see the traffic from the client:&lt;br /&gt;ip.src == &amp;lt;client-ip&amp;gt; || ip.dst == &amp;lt;client-ip&amp;gt;&lt;br /&gt;You can also add a port filter if necessary:&lt;br /&gt;tcp.port == &amp;lt;local-port&amp;gt;&lt;br /&gt;You can see the followingtrafficin wiresharkwhen the client attempts to connect:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-qaYXoJ1zIUk/TyaVw680h7I/AAAAAAAAAD0/AJxA0TBv7eQ/s1600/image2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="21" src="http://2.bp.blogspot.com/-qaYXoJ1zIUk/TyaVw680h7I/AAAAAAAAAD0/AJxA0TBv7eQ/s320/image2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h1&gt;Reproducing the error&lt;/h1&gt;Now that we can recognize the error on our system, we need to reproduce the error so we can narrow down the problem.&lt;br /&gt;&lt;h2&gt;Firefox&lt;/h2&gt;Firefox 9.0.1 will perform the entire conversation in SSLv3 which presents no problem to the server:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-uFsw8QkH4K4/TyaV2UoOaUI/AAAAAAAAAD8/Ij-mTZHwigA/s1600/image3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="66" src="http://2.bp.blogspot.com/-uFsw8QkH4K4/TyaV2UoOaUI/AAAAAAAAAD8/Ij-mTZHwigA/s320/image3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;Internet Explorer&lt;/h2&gt;Internet explorer would seem to work from the client perspective as the HTTPS connection issuccessful;however wireshark tells us a slightly different story:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-UOhQ9dEQGus/TyaV5y2pulI/AAAAAAAAAEE/3acHPBjr_5E/s1600/image4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="http://4.bp.blogspot.com/-UOhQ9dEQGus/TyaV5y2pulI/AAAAAAAAAEE/3acHPBjr_5E/s320/image4.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;As you can see, it actually tries a TLSv1 connection which fails in the same way as the BizTalk one did, but then simply retries using SSLv3 which is successful.&lt;br /&gt;&lt;h2&gt;WFetch&lt;/h2&gt;Microsoft provides a tool to test HTTPS connections: WFetch. If we tell it to connect to the server using TLSv1 (labeled TLS 3.1 because SSL 3.1 == TLS 1.0)we get an error as you can see:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-AuFurKwGn0U/TyaV-61cSMI/AAAAAAAAAEM/h2wVxu9AS38/s1600/image5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="162" src="http://4.bp.blogspot.com/-AuFurKwGn0U/TyaV-61cSMI/AAAAAAAAAEM/h2wVxu9AS38/s320/image5.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Wireshark shows exactly the same pattern as the BizTalk failed connection.&lt;br /&gt;If you toggle the connect option to “https” it will actually work on windows XP because the initial handshake uses SSLv2:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-c030GD9vw9k/TyaWDs6vzvI/AAAAAAAAAEU/STR7j9_AMio/s1600/image6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="100" src="http://2.bp.blogspot.com/-c030GD9vw9k/TyaWDs6vzvI/AAAAAAAAAEU/STR7j9_AMio/s320/image6.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-qEOfpIj8XV8/TyaWGweCJBI/AAAAAAAAAEc/OKM22L48fgQ/s1600/image7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-qEOfpIj8XV8/TyaWGweCJBI/AAAAAAAAAEc/OKM22L48fgQ/s320/image7.png" width="319" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;If you toggle it to “https” on windows 2008(and presumably vista/7)it will try the initial handshake with TLSv1 and fail(note that SSLv2 is disabledin windows 2008 due to security concerns).&lt;br /&gt;&lt;h2&gt;OpenSSL&lt;/h2&gt;With OpenSSL you can also emulate a client (using the s_client option) to test a server:&lt;br /&gt;$openssl s_client -verify 6 -state -msg -showcerts -connect 10.32.54.5:4483 &amp;gt; ssl-output.txt&lt;br /&gt;The output in “ssl-output.txt” shows us that this command uses SSL 2.0 for the initial handshakeand thenproceeds in TLSv1:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-J2vvdkVl77s/TyaWKOLWsmI/AAAAAAAAAEk/ghmH2fLsGkI/s1600/image8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="237" src="http://2.bp.blogspot.com/-J2vvdkVl77s/TyaWKOLWsmI/AAAAAAAAAEk/ghmH2fLsGkI/s320/image8.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;However you can force openssl to use tls1:&lt;br /&gt;$openssl s_client -verify 6 -state -msg -showcerts-tls1-connect 10.32.54.5:4483 &amp;gt; ssl-output.txt&lt;br /&gt;Surprisingly, the TLSv1 handshake works for OpenSSL:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-hJ07aO-NpNM/TyaWNsURlhI/AAAAAAAAAEs/kuP31dQT6IU/s1600/image9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="194" src="http://3.bp.blogspot.com/-hJ07aO-NpNM/TyaWNsURlhI/AAAAAAAAAEs/kuP31dQT6IU/s320/image9.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The server shows us this:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Zli5Eadgha4/TyaWQAJFTwI/AAAAAAAAAE0/kQSQXBaP3aQ/s1600/image10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="80" src="http://1.bp.blogspot.com/-Zli5Eadgha4/TyaWQAJFTwI/AAAAAAAAAE0/kQSQXBaP3aQ/s320/image10.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;Java Client&lt;/h2&gt;The following code will allow you tomake a rather low level SSL socket connection in java where you can choose the supported cypher suites and protocols:&lt;br /&gt;publicstaticvoidmain(String...args)throwsUnknownHostException, IOException {&lt;br /&gt;SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();&lt;br /&gt;SSLSocket socket = (SSLSocket) factory.createSocket("10.32.54.5", 4483);&lt;br /&gt;socket.setEnabledProtocols(newString [] {"TLSv1"});&lt;br /&gt;socket.setEnabledCipherSuites(newString [] {"TLS_RSA_WITH_AES_128_CBC_SHA"});&lt;br /&gt;socket.startHandshake();&lt;br /&gt;&lt;br /&gt;Writer writer =newOutputStreamWriter(socket.getOutputStream());&lt;br /&gt;PrintWriter printer =newPrintWriter(writer);&lt;br /&gt;printer.println("GET /invoke/wm.server:ping HTTP/1.1");&lt;br /&gt;printer.println();&lt;br /&gt;printer.flush();&lt;br /&gt;&lt;br /&gt;System.out.println(StreamUtils.toString(socket.getInputStream()));&lt;br /&gt;&lt;br /&gt;writer.close();&lt;br /&gt;}&lt;br /&gt;There does not seem to be a way to enable or set specific TLS extensionsfor the requestthough.&lt;br /&gt;&lt;h1&gt;Analysis of the error&lt;/h1&gt;We surmise from the above that:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It is not just a bug in TLSv1 handshakes as OpenSSL works&lt;/li&gt;&lt;li&gt;All Microsoft based software seems to be impacted suggesting they use a central configuration which leads to this error&lt;/li&gt;&lt;/ul&gt;Analysing the “unexpected error” in wireshark shows us this:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-mP3qNYcmMXU/TyaWVbYNc7I/AAAAAAAAAE8/uv5a9hnyQwY/s1600/image11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="67" src="http://3.bp.blogspot.com/-mP3qNYcmMXU/TyaWVbYNc7I/AAAAAAAAAE8/uv5a9hnyQwY/s320/image11.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;TheRFC (&lt;a href="http://www.ietf.org/rfc/rfc2246.txt"&gt;http://www.ietf.org/rfc/rfc2246.txt&lt;/a&gt;)does not really shed any more light on the “unexpected message” error.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Uug9IMGfwJc/TyaWY3UvOUI/AAAAAAAAAFE/z3orxHYl_lI/s1600/image12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-Uug9IMGfwJc/TyaWY3UvOUI/AAAAAAAAAFE/z3orxHYl_lI/s320/image12.png" width="244" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-2urUITryDjc/TyaWbnqFxQI/AAAAAAAAAFM/S3j7ad-kc-M/s1600/image13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="42" src="http://1.bp.blogspot.com/-2urUITryDjc/TyaWbnqFxQI/AAAAAAAAAFM/S3j7ad-kc-M/s320/image13.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Comparing the request to the successful OpenSSL TLSv1 handshake, we notice that OpenSSL sends along 27 suggested cipher suites (a selection of them in the screenshot):&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-c54DEREW_Tg/TyaWe-Rbk6I/AAAAAAAAAFU/QW4gyMgFcuA/s1600/image14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="194" src="http://4.bp.blogspot.com/-c54DEREW_Tg/TyaWe-Rbk6I/AAAAAAAAAFU/QW4gyMgFcuA/s320/image14.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;As opposed to theMicrosoftclientswhichsend a much shorter list:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-elXQzlt1dKY/TyaWiYoAqjI/AAAAAAAAAFc/heBw73J_yG4/s1600/image15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="114" src="http://2.bp.blogspot.com/-elXQzlt1dKY/TyaWiYoAqjI/AAAAAAAAAFc/heBw73J_yG4/s320/image15.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;None of these suits ismentioned in the JSE6 documentation&lt;a href="http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SupportedCipherSuites"&gt;http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SupportedCipherSuites&lt;/a&gt;but it may be that there are functional aliases that should work.&lt;br /&gt;&lt;h1&gt;Fixing the error&lt;/h1&gt;&lt;h2&gt;Enable Renegotiation&lt;/h2&gt;More about the renegotiation bug can be found in the sources at the end of this document, but hereis a very short summary:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A renegotiation security error was discovered recently (&lt;a href="http://www.oracle.com/technetwork/java/javase/documentation/tlsreadme2-176330.html"&gt;http://www.oracle.com/technetwork/java/javase/documentation/tlsreadme2-176330.html&lt;/a&gt;) which triggered an update to both the JVM and to Webmethods to disable renegotiation by default, you can reenable them using the following system properties:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JVM:sun.security.ssl.allowUnsafeRenegotiation=true&lt;/li&gt;&lt;li&gt;Webmethods:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;watt.ssl.iaik.clientAllowUnboundRenegotiate=true&lt;/li&gt;&lt;li&gt;watt.ssl.iaik.serverAllowUnboundRenegotiate=true&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Renegotiation has to be enabled on both client and server to work&lt;/li&gt;&lt;/ul&gt;We enabled all renegotiation parameters on the server to no avail, the BizTalk client still failed.While we weren’t able to check if the client had renegotiation enabled, their TLS extensions would seem to indicate that they do:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-iKMynRbLkhE/TyaWm3psKYI/AAAAAAAAAFk/0MWwWsNOf4U/s1600/image16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="285" src="http://4.bp.blogspot.com/-iKMynRbLkhE/TyaWm3psKYI/AAAAAAAAAFk/0MWwWsNOf4U/s320/image16.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;However, even if enabling renegotiation was the fix, itdoes not negate the inherent security risk in doing so in a production environment.&lt;br /&gt;&lt;h2&gt;Upgrade the JVM&lt;/h2&gt;Java 7 was released a little while ago and it contains a number of improvements for TLS communication:&lt;a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/enhancements7.html"&gt;http://docs.oracle.com/javase/7/docs/technotes/guides/security/enhancements7.html&lt;/a&gt;&lt;br /&gt;However Webmethods does not support it so we can’t run it on a production system.Additionally it seems that Webmethods bypasses the default implementation anyway so it may not impact the error.&lt;br /&gt;&lt;h2&gt;Add support for the windows ciphers to the existing JVM&lt;/h2&gt;Just in case the lack of a common cipher is indeed the problem, we tried adding another security provider: bouncy castle. We addeditto the security file (jvm\w64_160\jre\lib\security\java.security):&lt;br /&gt;#&lt;br /&gt;# List of providers and their preference orders (see above):&lt;br /&gt;#&lt;br /&gt;security.provider.1=sun.security.provider.Sun&lt;br /&gt;security.provider.2=sun.security.rsa.SunRsaSign&lt;br /&gt;security.provider.3=com.sun.net.ssl.internal.ssl.Provider&lt;br /&gt;security.provider.4=com.sun.crypto.provider.SunJCE&lt;br /&gt;security.provider.5=sun.security.jgss.SunProvider&lt;br /&gt;security.provider.6=com.sun.security.sasl.Provider&lt;br /&gt;security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI&lt;br /&gt;security.provider.8=sun.security.smartcardio.SunPCSC&lt;br /&gt;security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider&lt;br /&gt;And added it to the classpath in the server.bat filein the hopes that it would contain a working cipher. No luck there.&lt;br /&gt;&lt;h2&gt;Add support for the JVM ciphers to windows&lt;/h2&gt;In the same vain, we looked into adding ciphers to the windows machine (as a client-side fix).There seems to be no easy way to add a cipher to windows though the process in C is explained here:&lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb870930%28v=vs.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/windows/desktop/bb870930%28v=vs.85%29.aspx&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;Install latest core patch in Webmethods&lt;/h2&gt;Although it would seem like the most logical step, installing a core patch for webmethods is also the most invasive solution which is why it is not at the top of our list.&lt;br /&gt;Empower contains (at least) one reference to a handshake failure:&lt;a href="https://empower.softwareag.com/sl24sec/SecuredServices/KCFullTextASP/viewing/view.asp?KEY=081375-10412598&amp;amp;DSN=PIVOTAL&amp;amp;DST=TCD&amp;amp;HL=1&amp;amp;QUERY=tls%7C1.0%7Chandshake&amp;amp;SessionID=608289137"&gt;https://empower.softwareag.com/sl24sec/SecuredServices/KCFullTextASP/viewing/view.asp?KEY=081375-10412598&amp;amp;DSN=PIVOTAL&amp;amp;DST=TCD&amp;amp;HL=1&amp;amp;QUERY=tls|1.0|handshake&amp;amp;SessionID=608289137&lt;/a&gt;&lt;br /&gt;It actually points to a problemfor integration server 7.1.3 instead of 8.0.1, but it advises the installation of the latest core fix to solve the problem.&lt;br /&gt;Installation of core fix 20 fixes the problem though we do still do not know exactly which part of the client handshake triggered the error.&lt;br /&gt;&lt;h1&gt;Sources&lt;/h1&gt;An incomplete list of sources:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;TLSRFC:&lt;a href="http://www.ietf.org/rfc/rfc2246.txt"&gt;http://www.ietf.org/rfc/rfc2246.txt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;TLS Extensions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.networksorcery.com/enp/protocol/tls.htm"&gt;http://www.networksorcery.com/enp/protocol/tls.htm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ietf.org/rfc/rfc3546.txt"&gt;http://www.ietf.org/rfc/rfc3546.txt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tools.ietf.org/html/rfc4366"&gt;http://tools.ietf.org/html/rfc4366&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tools.ietf.org/html/rfc4492"&gt;http://tools.ietf.org/html/rfc4492&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Microsoft cryptography:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cryptography next generation(windows 7+):&lt;a href="http://technet.microsoft.com/en-us/library/cc730763%28WS.10%29.aspx"&gt;http://technet.microsoft.com/en-us/library/cc730763%28WS.10%29.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc771361%28WS.10%29.aspx"&gt;http://technet.microsoft.com/en-us/library/cc771361%28WS.10%29.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;SChannel:&lt;a href="http://msdn.microsoft.com/en-us/library/aa374757%28VS.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa374757%28VS.85%29.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Windows 2003:&lt;a href="http://technet.microsoft.com/en-us/library/cc785811%28WS.10%29.aspx"&gt;http://technet.microsoft.com/en-us/library/cc785811%28WS.10%29.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc766285%28WS.10%29.aspx"&gt;http://technet.microsoft.com/en-us/library/cc766285%28WS.10%29.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb870930%28v=vs.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/windows/desktop/bb870930%28v=vs.85%29.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/245030"&gt;http://support.microsoft.com/kb/245030&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Wireshark:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://support.citrix.com/article/CTX116557"&gt;http://support.citrix.com/article/CTX116557&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.wireshark.org/SSL"&gt;http://wiki.wireshark.org/SSL&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Biztalk:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/Articles/88638/HTTPs-using-BizTalk-2009-HTTP-adapter-on-Windows-2"&gt;http://www.codeproject.com/Articles/88638/HTTPs-using-BizTalk-2009-HTTP-adapter-on-Windows-2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jason.agostoni.net/2010/10/07/biztalk-2009-https-connection-closed-issue/"&gt;http://jason.agostoni.net/2010/10/07/biztalk-2009-https-connection-closed-issue/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;General&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ipa.go.jp/security/rfc/RFC2246-AEEN.html"&gt;http://www.ipa.go.jp/security/rfc/RFC2246-AEEN.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.sun.com/javase/javaseforbusiness/docs/TLSReadme.html"&gt;http://java.sun.com/javase/javaseforbusiness/docs/TLSReadme.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_handshake_in_detail"&gt;http://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_handshake_in_detail&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.g-sec.lu/practicaltls.pdf"&gt;http://www.g-sec.lu/practicaltls.pdf&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/ReadDebug.html"&gt;http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/ReadDebug.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;Author: Alexander Verbruggen&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-7006214712411853275?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/7006214712411853275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2012/02/troubleshooting-https-tlsv1-handshake.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/7006214712411853275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/7006214712411853275'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2012/02/troubleshooting-https-tlsv1-handshake.html' title='Troubleshooting a HTTPS TLSv1 handshake between Microsoft software and Webmethods 8'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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/-OCVXdNv74M0/TyaVkU0qtNI/AAAAAAAAADs/Cwoh3UOB9Bg/s72-c/image1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-6454053919467834839</id><published>2012-02-15T12:41:00.000+01:00</published><updated>2012-02-15T13:11:37.612+01:00</updated><title type='text'>Invoking stored procedure from DataPower ESB</title><content type='html'>On a recent project, a few stored procedures had to&amp;nbsp;be exposed as web services.&amp;nbsp; Actually, the stored procedures already took an XML message as input and returned an XML message as output.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-3Cn-g9AaynM/TzuGni8NYeI/AAAAAAAAAFs/UyNLZ_Zcq7Y/s1600/DataPower_ESB_DB1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-3Cn-g9AaynM/TzuGni8NYeI/AAAAAAAAAFs/UyNLZ_Zcq7Y/s200/DataPower_ESB_DB1.png" width="197" /&gt;&lt;/a&gt;Initial plan was to write some .Net components to expose the stored procedures&amp;nbsp;in the SQL Server 2008 database as web services.&amp;nbsp; The web services themselves would then be exposed via a DataPower ESB.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-2bB1kmw1Fi4/TzuGtfxgmII/AAAAAAAAAF0/6nDAulVayhs/s1600/DataPower_ESB_DB2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="129" src="http://2.bp.blogspot.com/-2bB1kmw1Fi4/TzuGtfxgmII/AAAAAAAAAF0/6nDAulVayhs/s200/DataPower_ESB_DB2.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;But with the DataPower ESB already in place and being capable of directly invoking the stored procedure (see &lt;a href="http://www.ibm.com/developerworks/websphere/library/techarticles/0812_callaway/0812_callaway.html" target="_blank"&gt;also&lt;/a&gt;), the .Net components and underlying Windows servers could be avoided.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A WSDL was created based on the XML input and output messages.&amp;nbsp; That WSDL was the starting point to create a Web Service Proxy (WSP) on DataPower.&amp;nbsp;&amp;nbsp;Within a rule of the WSP policy, a Transform step (XSLT)&amp;nbsp;is executed that will invoke the stored procedure using&amp;nbsp;a DataPower specific extension function.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-gx8usg5XgnE/TzuOGSxKV2I/AAAAAAAAAF8/Dp5hEAmhDls/s1600/DataPowerESB_DB3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="117" src="http://3.bp.blogspot.com/-gx8usg5XgnE/TzuOGSxKV2I/AAAAAAAAAF8/Dp5hEAmhDls/s400/DataPowerESB_DB3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A standard Web Service Proxy will invoke a back-end web service.&amp;nbsp; The rule of the Web Service Proxy immediately returns - wihout invoking any back-end web service - by setting the variable &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;service/mpgw/skip-backside&lt;/span&gt; to 1.&lt;br /&gt;&lt;br /&gt;Below the XSLT used to invoke the stored procedure using the &lt;a href="http://publib.boulder.ibm.com/infocenter/wsdatap/v3r8m1/index.jsp?topic=%2Fxi50%2Fsql-execute_element_reference.htm" target="_blank"&gt;dp:sql-execute&lt;/a&gt; function.&amp;nbsp; We obtain the XML part from the soap:Body and pass that on to the stored procedure.&amp;nbsp; The respone XML is wrapped in a SOAP Envelope.&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;xsl:stylesheet version="1.0"&lt;br /&gt;&amp;nbsp; xmlns:xsl="&lt;/span&gt;&lt;a href="http://www.w3.org/1999/XSL/Transform"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;http://www.w3.org/1999/XSL/Transform&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;"&lt;br /&gt;&amp;nbsp; xmlns:dp="&lt;/span&gt;&lt;a href="http://www.datapower.com/extensions"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;http://www.datapower.com/extensions&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;" &lt;br /&gt;&amp;nbsp; xmlns:xxx="&lt;/span&gt;&lt;a href="http://xxx.com/"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;http://xxx.com/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;"&lt;br /&gt;&amp;nbsp; xmlns:soap="&lt;/span&gt;&lt;a href="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;"&lt;br /&gt;&amp;nbsp; extension-element-prefixes="dp" &amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;xsl:template match="/"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:variable name="statement"&amp;gt;exec stored_proc ?&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:variable name="result"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;strong&gt;dp:sql-execute&lt;/strong&gt; source="'DS_DB'" statement="$statement" &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;arguments&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;argument name="request_id" type="SQL_XML" mode="INPUT"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:copy-of&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&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;select="./soap:Envelope/soap:Body/xxx:Operation" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/argument&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/arguments&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/dp:sql-execute&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;soap:Envelope&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;soap:Body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:copy-of select="&lt;strong&gt;dp:parse&lt;/strong&gt;($result)" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;/span&gt;&lt;br /&gt;Note on the last few lines: the XML response from the stored procedure was contained in a CDATA segment.&amp;nbsp; With the utility function &lt;a href="http://publib.boulder.ibm.com/infocenter/wsdatap/v3r8m1/index.jsp?topic=%2Fxi50%2Fsql-execute_element_reference.htm" target="_blank"&gt;dp:parse()&lt;/a&gt; the XML content within the CDATA&amp;nbsp;could be obtained.&lt;br /&gt;&lt;br /&gt;Conclusion: one of the great features of Integration tools (ESB, EAI) is their built-in database connectivity.  The database adapter of an ESB allows querying, updating and invoking of stored procedures.  Database adapters typically also support polling (staging) tables for new or modified records.&lt;br /&gt;&lt;br /&gt;Author: Guy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-6454053919467834839?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/6454053919467834839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2012/02/invoking-stored-procedure-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/6454053919467834839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/6454053919467834839'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2012/02/invoking-stored-procedure-from.html' title='Invoking stored procedure from DataPower ESB'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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://1.bp.blogspot.com/-3Cn-g9AaynM/TzuGni8NYeI/AAAAAAAAAFs/UyNLZ_Zcq7Y/s72-c/DataPower_ESB_DB1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-5654986905532922977</id><published>2012-01-26T18:41:00.000+01:00</published><updated>2012-01-26T18:41:00.385+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Running Oracle Weblogic Server on Windows: a shutdown class</title><content type='html'>&lt;h3&gt;&lt;span lang="EN-US"&gt;Overview&lt;/span&gt;&lt;/h3&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-family: Symbol;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="font-family: Symbol;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="font-family: Symbol;"&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Running Oracle Weblogic server on Windows can be done in two ways:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span lang="EN-US" style="font-family: Symbol;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;You can start Oracle Weblogic Server from the command line. This is good for test purposes but not very likely to be used in a production environment.&lt;/span&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="EN-US"&gt;You can install Oracle Weblogic Server to run as a windows service using the java wrapper beasvc.exe (or beasvcX64.exe on windows 64-bit)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;The problem with the last option is that, if you stop the service, the Java Virtual Machine (and thus the Oracle Weblogic Server) simply gets killed. This can result in corrupt files, database connections that aren’t closed or even transactions that are started but won’t be stopped. A possible workaround is to stop each Weblogic server in the domain from the admin console. This not only time consuming but also not the preferred way of working. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;In order to provide a proper shutdown, the beasvc.exe has an option called “stopclass”. It specifies a java class with a stop method that will be invoked at the moment the windows service gets stopped. Although you can write any kind of java code in the shutdown class, we will focus on writing code for a decent shutdown for both admin servers and managed servers.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;The shutdown class works as follows:&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Symbol;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span lang="EN-US" style="font-family: Symbol;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;It sends a request over HTTP to the Admin server&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Symbol;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="EN-US"&gt;The Admin server sends the shutdown request to the corresponding server.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;This means that the admin server sends a request to itself in case of a shutdown. The shutdown request for a managed server passes first via the admin server back to the managed server.&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;&lt;h3&gt;&lt;span lang="EN-US"&gt;Configuration&lt;/span&gt;&lt;/h3&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;First of all the beasvc.exe service wrapper needs to be aware of the shutdown class. This can be done by adding the -stopclass option (for example: -stopclass: be.i8c.systemtools.weblogic.ServerStopper)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Secondly, two options need to be set on each server in the domain:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; line-height: 115%;"&gt;You have to enable tunneling. You do this by ticking “Enable Tunneling” under Domain &amp;gt; Environment &amp;gt; Servers &amp;gt; “Server” &amp;gt; Protocols &amp;gt; General&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://2.bp.blogspot.com/-YFEMjfRo80c/Twcy1eMrZuI/AAAAAAAAADc/xmJpXaCR64k/s1600/weblogic1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://2.bp.blogspot.com/-YFEMjfRo80c/Twcy1eMrZuI/AAAAAAAAADc/xmJpXaCR64k/s320/weblogic1.png" width="320" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; line-height: 115%;"&gt;You have to ignore http sessions during shutdown, otherwise the server keeps on waiting for ever until no more http sessions are active. Enable the option “Ignore Sessions During Shutdown” under Domain &amp;gt; Environment &amp;gt; Servers &amp;gt; “Server” &amp;gt; Control &amp;gt; Start/Stop&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/-e62-2P0jfcc/TwczXSoIRUI/AAAAAAAAADk/vrM9BB56q4E/s1600/weblogic2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-e62-2P0jfcc/TwczXSoIRUI/AAAAAAAAADk/vrM9BB56q4E/s1600/weblogic2.png" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;h3&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;&lt;h3&gt;&lt;span lang="EN-US"&gt;Code&lt;/span&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/h3&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;package be.i8c.systemtools.weblogic;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;import java.io.File;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;import java.net.URL;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;import java.net.URLClassLoader;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;import java.util.Date;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;import java.util.Iterator;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;import java.util.Properties;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;import java.util.Set;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;import javax.naming.Context;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;import weblogic.jndi.Environment;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;import weblogic.management.MBeanHome;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;import weblogic.management.runtime.ServerRuntimeMBean;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;import weblogic.management.runtime.ServerStates;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;public class ServerStopper &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp; public static void stop()&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Properties prop = System.getProperties();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MBeanHome home = null;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //url of the Admin server&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String url = "";&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (prop.getProperty("weblogic.management.server") != null)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; // this property will be set automatically on a managed server to indicate the location of the admin server&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url = prop.getProperty("weblogic.management.server");&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;// the admin.url is a property to indicate the location of the admin server on the admin server. It refers to itself, but is necessary to perform a proper shutdown. You can add it manually as a –D property when you install the server as a windows service. The name of the property can be any random name.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-indent: 35.4pt;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; url = prop.getProperty("admin.url");&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// username and password to perform the shutdown operation&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; username = "username";&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; password = "password";&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&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; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerRuntimeMBean serverRuntime = null;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set mbeanSet = null;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Iterator mbeanIterator = null;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set ContextClassloader to prevent assertions&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; URL[] urls = { new File("/").toURL() };&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.currentThread().setContextClassLoader(new URLClassLoader(urls));&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;Environment env = new Environment();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="FR" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; env.setProviderUrl(url);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; env.setSecurityPrincipal(username);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; env.setSecurityCredentials(password);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Context ctx = env.getInitialContext();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; home = (MBeanHome)ctx.lookup("weblogic.management.adminhome");&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbeanSet = home.getMBeansByType("ServerRuntime");&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbeanIterator = mbeanSet.iterator();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(mbeanIterator.hasNext()) &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serverRuntime = (ServerRuntimeMBean)mbeanIterator.next();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // we have to add this check, since the iterator will list all the servers, both admin and managed. If we don’t add this check a shutdown of all the servers will be performed in case we only stop one server&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (serverRuntime.getName().equalsIgnoreCase(prop.getProperty("weblogic.Name")))&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(serverRuntime.getState().equals(ServerStates.RUNNING))&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // we perform a normal shut down in case the server is in the RUNNING state&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serverRuntime.shutdown();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is the same as a forced shutdown, but not the same as killing the JVM. We don’t do a normal shutdown in case the server is not in the RUNNING state. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0cm 35.4pt; mso-layout-grid-align: none; text-indent: 35.4pt;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;System.exit(10);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception e)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;// You can do nothing over here. In case the shutdown call will fail, windows will wait for the service to end, but that won’t happen. It will kill the service anyway after a while.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception e) &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // We get here in case the admin server couldn’t be reached&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;System.exit(10);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"&gt;&lt;span lang="EN-US"&gt;Author: Dimitri Van Kerckhoven &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-5654986905532922977?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/5654986905532922977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2012/01/running-oracle-weblogic-server-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/5654986905532922977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/5654986905532922977'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2012/01/running-oracle-weblogic-server-on.html' title='Running Oracle Weblogic Server on Windows: a shutdown class'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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/-YFEMjfRo80c/Twcy1eMrZuI/AAAAAAAAADc/xmJpXaCR64k/s72-c/weblogic1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-9105234963134154105</id><published>2012-01-20T10:01:00.000+01:00</published><updated>2012-01-20T10:01:00.792+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webMethods'/><title type='text'>How to: automatically remove LOCKFILE on server start (WINDOWS)</title><content type='html'>&lt;div class="MsoNormal"&gt;Have you ever had that annoying issue when your server started up and the LOCKFILE still existed in the webMethods folder?&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;I’ve created a small script for windows which tackles this issue.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background: #D9D9D9; border: solid windowtext 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNoSpacing" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;set jobname=softwareAGwebMethodsIntegrationServer_8.0&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;set location=C:\SoftwareAG\IntegrationServer\LOCKFILE&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;for /F "tokens=3 delims=: " %%H in ('sc query "%jobname%" ^| findstr "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATE"') do (&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&amp;nbsp; if /I "%%H" NEQ "RUNNING" (&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&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; IF EXIST %location% GOTO REMOVEFILEANDSTART&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&amp;nbsp; )&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;)&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;:REMOVEFILEANDSTART&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;del %location%&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;net start "%jobname%"&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Variable jobname is your servicename which you set to start automatic&lt;/div&gt;&lt;div class="MsoNormal"&gt;To find this name open Services and double click the job name&lt;/div&gt;&lt;div class="MsoNormal"&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/-H81rX8TidiQ/TwROV0Z0daI/AAAAAAAAADI/jLFQECit2tA/s1600/2012-01-04_140402.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="50" src="http://3.bp.blogspot.com/-H81rX8TidiQ/TwROV0Z0daI/AAAAAAAAADI/jLFQECit2tA/s320/2012-01-04_140402.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-DxhZJ2bB_0c/TwROdEk5JJI/AAAAAAAAADU/Fkho4c9Bgmo/s1600/2012-01-04_140342.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-DxhZJ2bB_0c/TwROdEk5JJI/AAAAAAAAADU/Fkho4c9Bgmo/s320/2012-01-04_140342.jpg" width="281" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The name entered behind Service name is the name you need to enter for this variable.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Variable “location” is the location of the LOCKFILE, enter the full path.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Explanation of the code : &lt;/div&gt;&lt;div style="background: #BFBFBF; border: solid windowtext 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNoSpacing" style="background: #BFBFBF; border: none; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;set jobname=softwareAGwebMethodsIntegrationServer_8.0&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #BFBFBF; border: none; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;set location=C:\SoftwareAG\IntegrationServer\LOCKFILE&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;Declaration of the variables.&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background: #BFBFBF; border: solid windowtext 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNoSpacing" style="background: #BFBFBF; border: none; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;for /F "tokens=3 delims=: " %%H in ('sc query "%jobname%" ^| findstr "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATE"') do (&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #BFBFBF; border: none; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&amp;nbsp; if /I "%%H" NEQ "RUNNING" (&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #BFBFBF; border: none; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&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; IF EXIST %location% GOTO REMOVEFILEANDSTART&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #BFBFBF; border: none; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&amp;nbsp; )&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #BFBFBF; border: none; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #BFBFBF; border: none; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;)&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Loop over the result of sc query "%jobname%" &amp;nbsp;and search for the word STATE&lt;/div&gt;&lt;div class="MsoNormal"&gt;If the result of STATE is different from RUNNING then execute function REMOVEFILEANDSTART&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background: #BFBFBF; border: solid windowtext 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNoSpacing" style="background: #BFBFBF; border: none; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;:REMOVEFILEANDSTART&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #BFBFBF; border: none; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;del %location%&lt;/div&gt;&lt;div class="MsoNoSpacing" style="background: #BFBFBF; border: none; mso-background-themecolor: background1; mso-background-themeshade: 191; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;net start "%jobname%"&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Delete the LOCKFILE and start the service.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;To use this script, create a scheduled task which is triggered on server startup.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Author: Jeroen W. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-9105234963134154105?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/9105234963134154105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2012/01/how-to-automatically-remove-lockfile-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/9105234963134154105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/9105234963134154105'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2012/01/how-to-automatically-remove-lockfile-on.html' title='How to: automatically remove LOCKFILE on server start (WINDOWS)'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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/-H81rX8TidiQ/TwROV0Z0daI/AAAAAAAAADI/jLFQECit2tA/s72-c/2012-01-04_140402.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-1487101441809800031</id><published>2012-01-15T19:04:00.000+01:00</published><updated>2012-01-15T19:04:00.794+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open-source'/><category scheme='http://www.blogger.com/atom/ns#' term='Mule'/><category scheme='http://www.blogger.com/atom/ns#' term='JMX'/><title type='text'>Writing a Mule JMX Agent</title><content type='html'>A client of ours uses Mule ESB mainly as a mediator component that will throttle, translate and call external parties. Some of these parties are however not so reliable when it comes to response times. There were several utilities in use to check what the response time was of a specific third party. All of these mechanisms could only provide a rough estimate however. Since Mule was the system executing the call to the third party, we found that these kind of statistics should come out of Mule instead. Next question was: how to maintain these and get them out of Mule? To expose statistics, JMX seems a logical choice.&lt;br /&gt;&lt;br /&gt;Mule ESB comes with a number of JMX Agents:&amp;nbsp;&lt;a href="http://www.mulesoft.org/documentation/display/MULE3USER/JMX+Management" target="_blank"&gt;http://www.mulesoft.org/documentation/display/MULE3USER/JMX+Management&lt;/a&gt;. These give some great insight in the system. At our client this info is already being used to display statistics in &lt;a href="http://www.zabbix.com/" target="_blank"&gt;Zabbix&lt;/a&gt;, not only from Mule but also from HornetQ JMS. Zabbix is used to monitor the Average service execution times, JMS Queue depth, memory usage, CPU usage and so on.&lt;br /&gt;These agents however do not expose the information that we want so we we need to write our own.&lt;br /&gt;&lt;br /&gt;But first we need to collect the statistics For this we created a statistics object that will keep track of the number of calls, minimum, maximum and average duration and also the average of the last 500 calls. This last metric allows us to have an average which does show peaks over time. To capture the call and add the call info to our statistics object we used AOP:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;pre&gt;&lt;span style="font-size: x-small;"&gt;@Around("execThirdPartyCall")&lt;br /&gt;public Object execute(ProceedingJoinPoint pjp) throws Throwable{&lt;br /&gt;   long timeBefore = System.currentTimeMillis();&lt;br /&gt;   Object result = pjp.proceed();&lt;br /&gt;   try{&lt;br /&gt;      getStatistics(pjp).addMuleCallInfo(&lt;br /&gt;         System.currentTimeMillis() - timeBefore);&lt;br /&gt;   }catch(Exception e){&lt;br /&gt;      LOGGER.error("Error adding MuleCallInfo to Statistics Object.",e);&lt;br /&gt;   }&lt;br /&gt;   return result;&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;This statistics object than keeps all this info but does not calculate all the metrics: min, max, avg, avg500. Because adding the call info is on the call stack, we want to keep these methods as short as possible. The actual calculation is done when the info is requested via an MBean.&lt;br /&gt;&lt;br /&gt;So now we come to the main part of this post: how to create an MBean and register it to the Mule MBeanServer. I've worked with Spring and MBeans before and I do like the annotation driven&amp;nbsp;&lt;a href="http://static.springsource.org/spring/docs/3.0.5.RELEASE/reference/jmx.html" target="_blank"&gt;mechanisms that Spring offers for auto registrating your MBeans&lt;/a&gt;.&lt;br /&gt;Mule however does not use annotations but a method that is more reflection based. The main class in Mule that provides this logic is&amp;nbsp;org.mule.module.management.agent.ClassloaderSwitchingMBeanWrapper. This class needs an interface for introspection and a concrete class in order to create an MBean instance.&lt;br /&gt;&lt;br /&gt;The first thing you do is create an interface that will define the MBean attributes and methods. In the example there are 4 read-only attributes. The JMX_PREFIX will be used later on to define the JMX objectName:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;pre&gt;&lt;span style="font-size: x-small;"&gt;public interface StatisticsMBean {&lt;br /&gt;   String DEFAULT_JMX_PREFIX = "type=Thirdparty.Statistics,name=";&lt;br /&gt;   long getHttpCallLast500Average();&lt;br /&gt;   long getHttpCallLast500Minimum();&lt;br /&gt;   long getHttpCallLast500Maximum();&lt;br /&gt;   int getTotalNumberOfCalls();&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;Second, you need to define an implementation of this interface:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;pre&gt;&lt;span style="font-size: x-small;"&gt;public final class StatisticsService implements StatisticsMBean {&lt;br /&gt;    private Statistics Statistics;&lt;br /&gt;&lt;br /&gt;    public StatisticsService(Statistics statistics) {&lt;br /&gt;        this.statistics = statistics;&lt;br /&gt;    }&lt;br /&gt;    @Override&lt;br /&gt;    public long getHttpCallLast500Average() {&lt;br /&gt;        return statistics.getAvgLast500HttpCall();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public long getHttpCallLast500Minimum() {&lt;br /&gt;        return statistics.getMinLast500HttpCall();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public long getHttpCallLast500Maximum() {&lt;br /&gt;        return statistics.getMaxLast500HttpCall();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public int getTotalNumberOfCalls() {&lt;br /&gt;        return statistics.getTotalCallsMuleCall();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;Third you need to create the actual agent. A few things to note about the code below:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the fields are missing and also some methods that are left empty anyway&lt;/li&gt;&lt;li&gt;only the registerMbean part is in here, if you have some fancy hot deploy setup, you'll need to provide an unregisterMBean part&lt;/li&gt;&lt;li&gt;a MuleContextListener is used to make sure that Spring has finished initializing before doing any work&lt;/li&gt;&lt;li&gt;the Statistics object below is an Enum, because we keep statistics for multiple third parties&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;pre&gt;&lt;span style="font-size: x-small;"&gt;public final class StatisticsAgent extends AbstractAgent {&lt;br /&gt;&lt;br /&gt;   @Override&lt;br /&gt;   public void initialise() throws InitialisationException {&lt;br /&gt;      if (initialized.get()) {&lt;br /&gt;         return;&lt;br /&gt;      }&lt;br /&gt;      //get mbeanserver&lt;br /&gt;      if (mBeanServer == null) {&lt;br /&gt;         mBeanServer = ManagementFactory.getPlatformMBeanServer();&lt;br /&gt;      }&lt;br /&gt;      if (mBeanServer == null) {&lt;br /&gt;         throw new InitialisationException(&lt;br /&gt;             ManagementMessages.cannotLocateOrCreateServer(), this);&lt;br /&gt;      }&lt;br /&gt;      try {&lt;br /&gt;         // We need to register all the services once the server has initialised&lt;br /&gt;         muleContext.registerListener(new MuleContextStartedListener());&lt;br /&gt;      } catch (NotificationException e) {&lt;br /&gt;         throw new InitialisationException(e, this);&lt;br /&gt;      }&lt;br /&gt;      initialized.compareAndSet(false, true);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   protected class MuleContextStartedListener implements&lt;br /&gt;       MuleContextNotificationListener&lt;mulecontextnotification&gt; {&lt;br /&gt;      public void onNotification(MuleContextNotification notification) {&lt;br /&gt;         if (notification.getAction() == MuleContextNotification.CONTEXT_STARTED) {&lt;br /&gt;            try {&lt;br /&gt;               registerMBeans();&lt;br /&gt;            } catch (Exception e) {&lt;br /&gt;               throw new MuleRuntimeException(&lt;br /&gt;                   CoreMessages.objectFailedToInitialise("MBeans"), e);&lt;br /&gt;            }&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   private void registerMBeans() throws MalformedObjectNameException, &lt;br /&gt;      NotCompliantMBeanException, InstanceAlreadyExistsException, MBeanRegistrationException {&lt;br /&gt;      Statistics[] statisticsAr = Statistics.values();&lt;br /&gt;      for (Statistics statistics : statisticsAr) {&lt;br /&gt;         ObjectName on = jmxSupport.getObjectName(&lt;br /&gt;                           String.format("%s:%s",&lt;br /&gt;                           jmxSupport.getDomainName(muleContext, false),&lt;br /&gt;                           StatisticsMBean.DEFAULT_JMX_PREFIX + statistics.name())&lt;br /&gt;                          );&lt;br /&gt;         StatisticsService statisticsService = new StatisticsService(statistics);&lt;br /&gt;         ClassloaderSwitchingMBeanWrapper mBean = new ClassloaderSwitchingMBeanWrapper(&lt;br /&gt;                           statisticsService,&lt;br /&gt;                           StatisticsMBean.class, &lt;br /&gt;                           muleContext.getExecutionClassLoader()&lt;br /&gt;                           );&lt;br /&gt;         logger.debug("Registering StatisticsAgent with name: " + on);&lt;br /&gt;         mBeanServer.registerMBean(mBean, on);&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/mulecontextnotification&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;As a last step you need to add your agent to the Mule configuration as follows:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;pre&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;mule&amp;gt;&lt;br /&gt;   &amp;lt;custom-agent class="management.StatisticsAgent" name="statistics-agent"/&amp;gt;&lt;br /&gt;&amp;lt;/mule&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;And that's it, once you start up Mule, you will see your custom agent appearing and your MBeans are available via JMX.&lt;br /&gt;&lt;br /&gt;That is how our operations guys can now provide a nice screen with the call durations over time:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-gaI1xBO-D7k/TvSXc-QxA1I/AAAAAAAABzI/sz3FsOXJYug/s1600/StatisticsScreen.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://1.bp.blogspot.com/-gaI1xBO-D7k/TvSXc-QxA1I/AAAAAAAABzI/sz3FsOXJYug/s640/StatisticsScreen.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Author: Jeroen Verellen&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-1487101441809800031?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/1487101441809800031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2012/01/writing-mule-jmx-agent.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/1487101441809800031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/1487101441809800031'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2012/01/writing-mule-jmx-agent.html' title='Writing a Mule JMX Agent'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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://1.bp.blogspot.com/-gaI1xBO-D7k/TvSXc-QxA1I/AAAAAAAABzI/sz3FsOXJYug/s72-c/StatisticsScreen.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-5495888228668642275</id><published>2012-01-10T18:54:00.000+01:00</published><updated>2012-01-10T18:54:00.087+01:00</updated><title type='text'>XSLT transformations and smooks driven CSV parsing in JBoss ESB</title><content type='html'>In this last entry that completes the video series of our JBoss ESB introduction, we explore XSLT transformations and basic smooks parsing.&lt;br /&gt;First up is the XSLT transformation:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/vkd12IHJMGY/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vkd12IHJMGY&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/vkd12IHJMGY&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Link: http://www.youtube.com/watch?v=vkd12IHJMGY&lt;br /&gt;&lt;br /&gt;Parsing flat file into usable XML formats is a rather common requirement for integration platforms. Out of the box JBoss ESB comes with smooks.&lt;br /&gt;The following video shows you how to parse a CSV file using smooks.  &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/Rme4Fv-eqUo/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Rme4Fv-eqUo&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/Rme4Fv-eqUo&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Link: &lt;a href="http://www.youtube.com/watch?v=Rme4Fv-eqUo"&gt;http://www.youtube.com/watch?v=Rme4Fv-eqUo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: Alexander&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-5495888228668642275?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/5495888228668642275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2012/01/xslt-transformations-and-smooks-driven.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/5495888228668642275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/5495888228668642275'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2012/01/xslt-transformations-and-smooks-driven.html' title='XSLT transformations and smooks driven CSV parsing in JBoss ESB'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-9141295656956221602</id><published>2012-01-03T18:14:00.000+01:00</published><updated>2012-01-03T18:14:00.355+01:00</updated><title type='text'>webMethods Process performance analyzing</title><content type='html'>&lt;span lang="EN-US"&gt;We all get in touch with different processes on daily basis. Most of the times there are tools available to monitor if a process ran successfully.&amp;nbsp; But in many cases the performance of these processes aren’t measured before they are deployed to the production environment. &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0cm;"&gt;&lt;span lang="EN-US"&gt;We noticed the same problem with some of our customers. There were processes that should deal with a large amount of traffic. So it was critical that the performance was as good as possible.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0cm;"&gt;&lt;span lang="EN-US"&gt;How did we get started?&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Symbol;"&gt;&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;We recognized different steps in the process&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span lang="FR" style="mso-ansi-language: FR;"&gt;Validation&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="FR" style="mso-ansi-language: FR;"&gt;Xslt transformations&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="FR" style="mso-ansi-language: FR;"&gt;Database transactions&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="FR" style="mso-ansi-language: FR;"&gt;Queuing&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;…&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;We created SQL scripts to measure the time these process steps ran&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;Based on custom audit data from the customer&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;Based on the webMethods audit tables (service execution)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;We analyzed the results with our custom excel template&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-bottom: 0cm; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;span lang="EN-US" style="font-family: Symbol;"&gt;·&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US"&gt;Performance Analyze:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;We wanted to see if there were bottlenecks in our process and if the load had any effect on the process.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;We noticed that all the steps ran a bit longer on a heavy loaded server than on a dedicated one. This seemed to be normal. Abnormal behavior would be when a server started to freeze and the more instances ran, the longer it would take. The curve you can see below is a normal curve. The average runtime doesn’t start to be longer and longer over time.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-GEZEgIwhPmE/TsplHcJ3ujI/AAAAAAAAACQ/44Dl4rHbJmI/s1600/normalProcessing.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/-GEZEgIwhPmE/TsplHcJ3ujI/AAAAAAAAACQ/44Dl4rHbJmI/s400/normalProcessing.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;We also noticed that there wasn’t &amp;nbsp;a normal curve in the queuing step. After some debugging we noticed that though the process was async. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ZZU6vKUetW8/TsplHI2pMDI/AAAAAAAAACI/IvtvRotE6_I/s1600/queueBeforeChange.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="130" src="http://1.bp.blogspot.com/-ZZU6vKUetW8/TsplHI2pMDI/AAAAAAAAACI/IvtvRotE6_I/s400/queueBeforeChange.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;The webMethods triggers were defined as serial.&amp;nbsp; The processing curve improved after changing these triggers.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-zR3THb_DWNU/TsplGi1_HrI/AAAAAAAAACE/hN-iKp3w6J4/s1600/queueAfterChange.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="126" src="http://1.bp.blogspot.com/-zR3THb_DWNU/TsplGi1_HrI/AAAAAAAAACE/hN-iKp3w6J4/s400/queueAfterChange.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Author: Pieter Van de Broeck&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/8507185344691363497-9141295656956221602?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/9141295656956221602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2012/01/webmethods-process-performance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/9141295656956221602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/9141295656956221602'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2012/01/webmethods-process-performance.html' title='webMethods Process performance analyzing'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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/-GEZEgIwhPmE/TsplHcJ3ujI/AAAAAAAAACQ/44Dl4rHbJmI/s72-c/normalProcessing.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-737759384375167396</id><published>2011-12-27T10:29:00.000+01:00</published><updated>2011-12-27T10:29:11.498+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BiztalkDTAdb'/><category scheme='http://www.blogger.com/atom/ns#' term='BizTalk'/><title type='text'>Dealing with huge BizTalk DTA Databases</title><content type='html'>Unexpectedly, it can sometimes occur that you notice that your BizTalk DTA database has grown from a small tracking database to a huge database taking up all disk space on your server. I had the same issue at a client, and have noticed that this can have quite some consequences: BizTalk server stopped processing messages, no backups could be taken anymore from the databases, etc. Not really something you want to happen to a critical environment.&lt;br /&gt;&lt;br /&gt;Therefore following little guideline that you can use as a precaution, as well as a fix while dealing with a huge DTA database.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Make sure you have enough disk space&lt;/b&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;The DTA database can grow quite large from one moment to another, so its best to take into account a quite large disk where the database will be stored. A DTA database stays, according to Microsoft guidelines, healthy in size until 15GB. Everything above 15GB is considered problematic and needs to be dealt with.&lt;br /&gt;&lt;br /&gt;When adding the numbers in terms of size of the DTA db together with the other BizTalk databases, make sure you have around 30GB of disk space allocated for the databases itself. When storing the backups of the databases also on the same disk, take at least 40GB, but take into account that this is the absolute minimum!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Enable the DTA Purge and Archive job&lt;/b&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;The DTA Purge and Archive job in SQL Server will clear completed and failed messages after a certain given time. We make a separation here between 2 situations: a situation where there is no problem yet with the database and one where we’re struggling with a huge DTA database and disk space issues:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;No db problem, just precautionary&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;By default, the DTA Purge and Archive job will call the BackupAndPurge stored procedure. This call to the stored procedure will take some parameters:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;exec dtasp_BackupAndPurgeTrackingDatabase&lt;br /&gt;1, --@nLiveHours tinyint, --Any completed instance older than the live hours +live days&lt;br /&gt;0, --@nLiveDays tinyint = 0, --will be deleted along with all associated data&lt;br /&gt;1, --@nHardDeleteDays tinyint = 0, --all data older than this will be deleted.&lt;br /&gt;'[path to the backuplocation]', --@nvcFolder nvarchar(1024) = null, --folder for backup files&lt;br /&gt;null, --@nvcValidatingServer sysname = null,&lt;br /&gt;0 --@fForceBackup int = 0 – &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The first 3 parameters indicate the following: Amount of hours that a completed instance will be kept in the database; Amount of days that a completed instance will be kept in the database; Amount of days that a failed instance will be kept in the database. &lt;br /&gt;&lt;br /&gt;The first 2 (both for completed instances) will be added up, so you can configure to keep completed instances for example for 2 days and 3 hours. Everything after this time will be removed. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;DB problem, disk space issues&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;When struggling with a huge DTA db and disk space issues, the above stored procedure which is called might give problems, because the backup of the db can’t be made anymore since there is no more space left on the disk to put the backup on. &lt;br /&gt;&lt;br /&gt;When doing this, just to be better safe than sorry, stop all BizTalk services while this script is running and enable them again after step 3.&lt;br /&gt;&lt;br /&gt;In this case, we need to change the DTA Purge and Archive job. Instead of calling the PurgeAndArchive procedure, we will call the Purge procedure, without having to deal with a backup of the database. &lt;br /&gt;&lt;br /&gt;Replace the original procedure call in the step of the DTA Purge and Archive job by this:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;declare @dtLastBackup datetime  &lt;br /&gt;set @dtLastBackup = GetUTCDate()  &lt;br /&gt;exec dtasp_PurgeTrackingDatabase 1, 0, 1, @dtLastBackup&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;And after having done this, run the job. BEWARE! This can take quite some time to finish if this script hasn’t run for quite some time. Give it some time to finish (in my case, it took about 3min to finish and it wasn’t that long since that script had run).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Shrink the database&lt;/b&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;This is a step that is often forgotten, but after doing the Purge of the database, we’re not finished yet. The purge will clear the rows that were filled in the DTA db, but will not remove the empty rows itself. Therefore, you might see a little change in size, but not the big change that we’re looking for.&lt;br /&gt;&lt;br /&gt;What really matters here is shrinking the DTA database. This will remove all empty rows and elements in the database which are not in use anymore. This will free up a significant amount of space and shrink the database significantly.&lt;br /&gt;&lt;br /&gt;Just right click on the BizTalkDTAdb and choose Tasks – Shrink – Database as pictured below.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-uh5q-92IE6M/TrLE_L3FIbI/AAAAAAAAABg/nUe9qm8mLP8/s1600/blog1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="310" src="http://4.bp.blogspot.com/-uh5q-92IE6M/TrLE_L3FIbI/AAAAAAAAABg/nUe9qm8mLP8/s400/blog1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;You will be presented with a window where you can see how much space exactly will be cleared. In my case here, only 158MB will be cleared since I’ve already optimized my DB.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-UxmFUOiXteM/TrLE_TcB5dI/AAAAAAAAABk/-NxZ3-Qst10/s1600/blog2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://3.bp.blogspot.com/-UxmFUOiXteM/TrLE_TcB5dI/AAAAAAAAABk/-NxZ3-Qst10/s400/blog2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Just click OK and let it do its work. BEWARE again: also this can take a lot of time. In my optimization scenario, I had 2,5GB that would be cleaned and took me up to 10 minutes to execute, so be patient, it will be worth the wait.&lt;br /&gt;&lt;br /&gt;After this is done, the window will just disappear. &lt;br /&gt;&lt;br /&gt;In case you’ve disabled your BizTalk services/Host Instances, you can restart them here again.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Finish it up&lt;/b&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Just do a quick check on the size of your database. Normally, you should see a huge difference in db size, depending how much affected your database was of course. &lt;br /&gt;&lt;br /&gt;When having any problems or questions, shoot in the comments.&lt;br /&gt;&lt;br /&gt;Author: Andrew De Bruyne&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-737759384375167396?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/737759384375167396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/12/dealing-with-huge-biztalk-dta-databases.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/737759384375167396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/737759384375167396'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/12/dealing-with-huge-biztalk-dta-databases.html' title='Dealing with huge BizTalk DTA Databases'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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/-uh5q-92IE6M/TrLE_L3FIbI/AAAAAAAAABg/nUe9qm8mLP8/s72-c/blog1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-7605278002377261459</id><published>2011-12-10T10:00:00.000+01:00</published><updated>2011-12-10T10:00:01.936+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Introduction to Android App development (Devoxx 2011)</title><content type='html'>&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;This session started with an explanation of what android is and how it was built.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Android is a platform developed by open handset alliance.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;The platform is built in different layers.&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span lang="EN-US"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;Lowest layer based on linux used for hardware&lt;/span&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="EN-US"&gt;Top of linux libraries and android runtime&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="EN-US"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;Application framework&lt;/span&gt;  &lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;As you all know Android development is done in JAVA, but underneath this layer lies a code which is called “dex”.&lt;br /&gt;When you want to run your app on an android phone, the class files will be converted into a dex file so it can be used on any android phone (depending on the apps requirements).&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;For each app we can reuse existing functionality and therefor a subset of java se is available and an android specific api.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Taking this into account we can do amazing things, but remember it’s just a phone.&lt;br /&gt;So we cannot develop apps which need a massive amount of memory or space as this is limited on a phone. We also need to think about garbage collection.&lt;/span&gt;&lt;/div&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;How to start developing?&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;There are plugins for eclipse and emulators for testing. (&lt;a href="http://www.android.com/"&gt;http://www.android.com/&lt;/a&gt; for more information on how to install the plugin)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; line-height: 115%;"&gt;&lt;br clear="all" style="mso-special-character: line-break; page-break-before: always;" /&gt; &lt;/span&gt;  &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-pQlQBV2Kdac/Tt34rOtD08I/AAAAAAAAACk/W5dGSgtY9zI/s1600/1.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="281" src="http://1.bp.blogspot.com/-pQlQBV2Kdac/Tt34rOtD08I/AAAAAAAAACk/W5dGSgtY9zI/s400/1.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;How does an android project look like?&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ZgLVPdglQyc/Tt35mrf3LwI/AAAAAAAAAC0/8Za0SZilp5o/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fVCI4llZ8M0/Tt36DFI8NNI/AAAAAAAAAC8/d37rpskh9qg/s1600/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-fVCI4llZ8M0/Tt36DFI8NNI/AAAAAAAAAC8/d37rpskh9qg/s400/3.jpg" width="193" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;Some important files&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Mail.xml : Describes content what to see&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ZgLVPdglQyc/Tt35mrf3LwI/AAAAAAAAAC0/8Za0SZilp5o/s1600/2.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-ZgLVPdglQyc/Tt35mrf3LwI/AAAAAAAAAC0/8Za0SZilp5o/s400/2.jpg" width="246" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;R.java : is the class file which is automatically generated when compiling your project. This file zwill be converted into dex code so your app can be used on an android device.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Android manifest file : this file cannot be better described as the property of the app. This file is read on installation, can prompt for access to allow connections to the internet, current location ,…&lt;br /&gt;This file is also used on the android market to filter apps.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;strings.xml : when displaying&amp;nbsp; static fields, you create a variable here and refer to this var that will be used to display. (key-value pair)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;When creating a new project, you have to create an Activity.java file. This is the root file which is called when the app is opened.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Layouts: you can create specific layouts for portrait or landscape mode.&lt;/span&gt;&lt;/div&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;Lifecycle of apps&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Android has a set of rules to kill apps to free-up memory. So when developing apps we need to take in mind so “save” the state of our device before it will be flipped. When flipping your device, android will trigger the lifecycle so your state will be killed and if you haven’t saved the state it cannot be restored.&lt;/span&gt;&lt;/div&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;SQLite&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;This is the databases used in android. Each app will have its own database. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Hope this helps you on your way to develop your first android app.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Author : Jeroen W. &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/8507185344691363497-7605278002377261459?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/7605278002377261459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/12/introduction-to-android-app-development.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/7605278002377261459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/7605278002377261459'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/12/introduction-to-android-app-development.html' title='Introduction to Android App development (Devoxx 2011)'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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://1.bp.blogspot.com/-pQlQBV2Kdac/Tt34rOtD08I/AAAAAAAAACk/W5dGSgtY9zI/s72-c/1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-8724291860892161622</id><published>2011-12-05T17:06:00.000+01:00</published><updated>2011-12-05T17:06:00.133+01:00</updated><title type='text'>SPDY protocol</title><content type='html'>The new Google &lt;a href="http://dev.chromium.org/spdy/spdy-whitepaper"&gt;SPDY&lt;/a&gt; protocol is another attempt to make the web more efficient and reliable. The &lt;a href="http://en.wikipedia.org/wiki/SPDY"&gt;SPDY&lt;/a&gt; protocol introduces an extra layer between HTTP and TCP/IP (actually SSL/TLS) that primarily allows for multiplexing and parallelizing multiple HTTP requests over a single SSL connection.&lt;br /&gt;&lt;br /&gt;The SPDY protocol is not some lab exercise but used in production! The Google Chrome browser uses the SPDY protocol (or should we say extension?) to communicate with most Google's applications. SPDY remains mostly a Google thing, with no adoption by other big&amp;nbsp;names (except for Amazon EC2 it seems).&lt;br /&gt;&lt;br /&gt;With SPDY, the Chromium browser needs to establish fewer SSL connections. But more importantly, the Chrome browser can launch many HTTP requests in parallel, no longer restricted by a maximum number of TCP/IP connections.&lt;br /&gt;&lt;br /&gt;But this made me think: could this have a positive impact on how service consumers are implemented? Similarly to a browser parallizing the retrieval of web content, (web) service consumers should also try to parallize as much as possible.&lt;br /&gt;&lt;br /&gt;The HTTP request/response model that underlies web services should not lock us into a synchronous RPC paradigm wherey a requestor blocks waiting for a response. To fully leverage this potential of parallellism, we must move to non-blocking, AJAX like model programming model.&lt;br /&gt;&lt;br /&gt;While reading about SPDY, I encountered 2 links worth looking into:&lt;br /&gt;- Recent &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/10/10/fire-and-ice-silk-and-chrome-spdy-and-http.aspx"&gt;blog entry&lt;/a&gt; by &lt;a href="http://www.f5.com/"&gt;F5&lt;/a&gt; that is a critical review of the SPDY protocol.&lt;br /&gt;- &lt;a href="http://ideas.4brad.com/super-fast-web-transaction-and-google-spdy"&gt;Article&lt;/a&gt; that starts with SPDY but goes much further into wild (?) and interesting ideas to re-engineer the workings of the Internet in a more dramatic.&lt;br /&gt;&lt;br /&gt;Author: Guy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-8724291860892161622?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/8724291860892161622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/12/spdy-protocol.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/8724291860892161622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/8724291860892161622'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/12/spdy-protocol.html' title='SPDY protocol'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-4199241176178996862</id><published>2011-11-29T17:05:00.000+01:00</published><updated>2011-11-29T17:05:00.774+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IBM'/><category scheme='http://www.blogger.com/atom/ns#' term='Datapower'/><title type='text'>How to use drag-and-drop for creating a reusable processing rule in IBM Datapower</title><content type='html'>&lt;div style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent; font-family: inherit;"&gt;&lt;span id="internal-source-marker_0.5590168051421642" style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;The basic method of creating a reusable processing rule is by dragging the cursor over a part of the existing processing rule. For a very small group of actions this is fine. If you want to make the rule a bit more advanced you probably want to create the processing rule from scratch. This can be achieved by creating a ‘Call processing rule’ action and create the reusable processing rule starting from there.&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent; font-family: inherit;"&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;img height="108px;" src="https://lh5.googleusercontent.com/QD0tfnDui8v_CIDm0TrgkaGq49K192nPUvq9o8SaVoPyxG_O3U8DSIBm6Onediampeb7kXyJbOegzueH2CLr-VPbpjSkyMjaDYiPN7D44vC3FJ--qvc" width="501px;" /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;The problem with this approach is that you cannot use the Datapower drag-and-drop interface you use for all other processing rules. The GUI presents you the same view you get for all &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;processing rules in the ‘Objects’ menu. It lists the different actions, but that’s it. No overview of the used contexts on mouse-over, or other details of the actions besides their name.&lt;/span&gt;&lt;img height="94px;" src="https://lh4.googleusercontent.com/JfF0iuiQWYJEDnlo0qTotfHwk-D6CMfXrDmkGoOO-5bEm9F4umVyoW2iB2kuv_kb7kWGpLLS6A2WVCsp1fbqxve_68dNFk1GqNrJ8dVbk8p-VLdn_N0" width="593px;" /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;A simple solution to overcome this problem is to create the reusable rule in a Multi-Procotol Gateway Policy. &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Go to the page ‘Multi-Protocol Gateway Policy’ by following the link in the menu on the left (Services&amp;gt;Multi-Protocol Gateway&amp;gt;Multi-Protocol Gateway Policy).&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Create a new policy that will contain all future reusable rules. In my example I called it ‘ReusableRules’.&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;You can open this policy and add as much rules to it as you like. For the match action you can pick any existing match (f.e. all (url=*)). This match is only used in this policy. When calling a processing rule from within another rule the match action is not used.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&lt;/span&gt;&lt;img height="154px;" src="https://lh6.googleusercontent.com/qap38WEDQH7BcnY75h5TYEnFZmuZhStPIrC7k6U0UbjYGIsMfAtBbcTVgCdbKV6sD7QoTP5kJd723St9kfp-N_WWP9bXHNZlhqW7qsepdK1Fwy3RPTc" width="350px;" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;To call this processing rule from within the ‘Call processing rule’ action you just have to select your newly created rule in the dropdown-box as you can see in the screenshot below.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img height="258px;" src="https://lh5.googleusercontent.com/kOp8tTOHoT4VASeCf6wtYf8fXgJL98ljBAVqHQ2D7_rcNI1uAn5WV_R0mVxpX3074keQx0SwAqXFz3RpU5lNoHrouJGYhmo0Exsl-S5-1X11wXanTKw" width="408px;" /&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Author: Tim &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-4199241176178996862?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/4199241176178996862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/11/how-to-use-drag-and-drop-for-creating.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/4199241176178996862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/4199241176178996862'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/11/how-to-use-drag-and-drop-for-creating.html' title='How to use drag-and-drop for creating a reusable processing rule in IBM Datapower'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-1403473593445212665</id><published>2011-11-24T07:48:00.000+01:00</published><updated>2011-11-24T07:48:50.065+01:00</updated><title type='text'>Technical: Using REST web services with 2-legged OAuth on datapower.</title><content type='html'>2-legged OAuth consists of:&lt;br /&gt;•&amp;nbsp;&amp;nbsp; &amp;nbsp;The client signs up to the server. The server &amp;amp; client has a shared secret.&lt;br /&gt;•&amp;nbsp;&amp;nbsp; &amp;nbsp;The client uses these key to gain access to resources on the server&lt;br /&gt;&lt;br /&gt;What is &lt;a href="http://www.ibm.com/developerworks/webservices/library/ws-restful/" target="_blank"&gt;REST&lt;/a&gt; ?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;GET method&lt;/b&gt;&lt;br /&gt;The client(secret=password) sends the following request to datapower.&lt;br /&gt;Request: GET http://testname:1010/testname?name=KIM&lt;br /&gt;Header: Authorization: OAuth &amp;nbsp;&amp;nbsp; &amp;nbsp;oauth_nonce="12345abcde",&lt;br /&gt;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oauth_consumer_key="Kim",&lt;br /&gt;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oauth_signature_method="HMAC-SHA1",&lt;br /&gt;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oauth_timestamp="1319032126",&lt;br /&gt;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oauth_version="1.0",&lt;br /&gt;&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;&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;&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;&amp;nbsp; oauth_signature="m2A6bZejY7smlH6OcWwaKLo7X4o="&lt;br /&gt;&lt;br /&gt;&lt;b&gt;oauth_nonce&lt;/b&gt; = A randomly-generated string that is unique to each API call. This, along with the timestamp, is used to prevent replay attacks.&lt;br /&gt;&lt;b&gt;oauth_consumer_key&lt;/b&gt; = the client’s key.&lt;br /&gt;&lt;b&gt;oauth_signature_method&lt;/b&gt; = the cryptographic method used to sign.&lt;br /&gt;&lt;b&gt;oauth_timestamp &lt;/b&gt;= the number of seconds that have elapsed since midnight, January 1, 1970, also known as &lt;a href="http://www.epochconverter.com/" target="_blank"&gt;UNIX&lt;/a&gt; time.&lt;br /&gt;&lt;b&gt;oauth_signature&lt;/b&gt; = The authorization signature.&lt;br /&gt;&lt;br /&gt;On datapower a Multi-protocol gateway needs to be configured allowing requests with an empty message body.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-woA-y6gGZ1Y/Ts0JRPnPqnI/AAAAAAAAACc/h3njMs3dNec/s1600/screenshotje.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-woA-y6gGZ1Y/Ts0JRPnPqnI/AAAAAAAAACc/h3njMs3dNec/s1600/screenshotje.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The secret needs to be shared between client and datapower. To make everything easy I stored the shared secret in an xml file in the “local:” file system of datapower.&lt;br /&gt;&lt;br /&gt;The next step is verifying the signature. The best way to verify the signature is recreate the signature with the shared secret and then compare the two signatures. Of course to do this, some xslt skills are recommended.&lt;br /&gt;This is the signature base-string that will be signed with the shared secret.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;GET&amp;amp;http%3A%2F%2Ftestname%3A1010%2Ftestname&amp;amp;name%3DKIM%26oauth_consumer_key%3DKim&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;%26oauth_nonce%3D12345abcde%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1319032126%26oauth_version%3D1.0&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;How do we get to this?&lt;br /&gt;If you look closely you see that there are 3 distinguished parts.&lt;br /&gt;&lt;ol&gt;&lt;li style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;GET&amp;amp;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;http%3A%2F%2Ftestname%3A1010%2Ftestname&amp;amp;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;name%3DKIM%26oauth_consumer_key%3DKim%26oauth_nonce%3D12345abcde%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1319032126%26oauth_version%3D1.0&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;The first part is fairly straightforward. &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;GET = the http method used.&lt;br /&gt;&lt;br /&gt;The second part is the URL which is url-encoded.&lt;br /&gt;We’ll need to percent encode all of the parameters when creating our signature. These "reserved" characters must be converted into their hexadecimal values and preceded by a % character. The rest of the characters are "unreserved" and must not be encoded.&lt;br /&gt;The reserved characters are:&lt;br /&gt;&lt;span style="color: red;"&gt;!&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;&amp;nbsp; &amp;amp;&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;&amp;nbsp; #&amp;nbsp;&amp;nbsp; [&amp;nbsp;&amp;nbsp; ]&amp;nbsp; white-space&lt;/span&gt;&lt;br /&gt;These are the percent-encoded values of the above characters:&lt;br /&gt;&lt;span style="color: red;"&gt;%21 %2A %27 %28 %29 %3B %3A %40 %26 %3D %2B %24 %2C %2F %3F %25 %23 %5B %5D %20&lt;/span&gt;&lt;br /&gt;Be careful with URL encoding functions built into languages, they may not encode all of the reserved characters, or may encode unreserved characters.&lt;br /&gt;&lt;span style="color: blue; font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;xsl:variable &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; name="BasicUrl" &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; select="dp:encode(string(&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; dp:variable('http://testname:1010/testname’)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;),'url')&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The third part gets a bit more complicated to do with xslt, because the number of parameters and OAuth header fields can change.&lt;br /&gt;We need to extract the Oauth header from the request.&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:variable &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name="OAuthParams" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select="dp:request-header('Authorization')"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;/span&gt;&lt;br /&gt;The URL parameters are also necessary. The parameters in this example are “name=KIM”. Put them all together and alphabetically organize them. You will get a string like this:&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;name=KIM&amp;amp;oauth_consumer_key=Kim&amp;amp;oauth_nonce=12345abcde&amp;amp;oauth_signature_method=HMAC-SHA1&amp;amp;oauth_timestamp=1319032126&amp;amp;oauth_version=1.0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;And again url-encode this string using the datapower function(dp:encode).If you now concatenate the 3 parts with a “&amp;amp;” you will get the signature base string.&lt;br /&gt;&lt;br /&gt;The next thing we need to calculate the signature is the shared secret. OAuth standard uses a concatenation of the shared secret &amp;amp; token(&amp;lt;secret&amp;gt;&amp;amp;&amp;lt;token&amp;gt;). Since we are working with the 2-legged OAuth we don’t need the token and we can leave it empty. So in the example we used the shared secret “password”. Important is that you add the “&amp;amp;” behind the secret: ”&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;password&amp;amp;&lt;/span&gt;”. Now we have the necessary information to calculate the signature.&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:variable name="Calculate_Signature" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select="dp:hmac('http://www.w3.org/2000/09/xmldsig#hmac-sha1',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ‘password&amp;amp;’,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;SignatureBaseString&amp;gt;)"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Finally we can compare the signature of the OAuth header with our own calculated signature. Don’t forget to validate the timestamp against a predefined limit e.g. 5 minutes. If all checks out, the client is authorized to use the web service.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oauth.googlecode.com/svn/code/javascript/example/signature.html" target="_blank"&gt;link&lt;/a&gt; to check OAuth signature&lt;br /&gt;&lt;br /&gt;POST method is coming soon…&lt;br /&gt;&lt;br /&gt;Author: Kim&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-1403473593445212665?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/1403473593445212665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/11/technical-using-rest-web-services-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/1403473593445212665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/1403473593445212665'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/11/technical-using-rest-web-services-with.html' title='Technical: Using REST web services with 2-legged OAuth on datapower.'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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/-woA-y6gGZ1Y/Ts0JRPnPqnI/AAAAAAAAACc/h3njMs3dNec/s72-c/screenshotje.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-4479356498173634558</id><published>2011-11-15T18:46:00.000+01:00</published><updated>2011-11-15T18:46:00.764+01:00</updated><title type='text'>Exposing a webservice in JBoss ESB</title><content type='html'>Webservice-based communication is of course at the core of SOA and as such the support should be easy and robust.&lt;br /&gt;As the video demonstrates it is very easy to expose a service as a webservice and optionally demand validation.&lt;br /&gt;Additionally it shows you how to enable WS-Security.&lt;br /&gt;&lt;br /&gt;There are other ways to work with webservices:&lt;br /&gt;- you can expose native jboss webservices&lt;br /&gt;- create proxy webservices&lt;br /&gt;- poll remote webservices&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/xflkWQZZsHE/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xflkWQZZsHE&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/xflkWQZZsHE&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Link: http://www.youtube.com/watch?v=xflkWQZZsHE&lt;br /&gt;&lt;br /&gt;Author: Alexander Verbruggen&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-4479356498173634558?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/4479356498173634558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/11/exposing-webservice-in-jboss-esb.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/4479356498173634558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/4479356498173634558'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/11/exposing-webservice-in-jboss-esb.html' title='Exposing a webservice in JBoss ESB'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-8895289990026188570</id><published>2011-11-14T22:45:00.000+01:00</published><updated>2011-11-14T22:45:39.550+01:00</updated><title type='text'>OAuth</title><content type='html'>With the upcoming &lt;a href="http://www.devoxx.com/"&gt;Devoxx&lt;/a&gt; conference, I did some reading last weekend. With Fri Nov 11 as a national holiday in Belgium - because of the end of World War I - I had some extra time. Looked a bit into most recent development around HTML 5 and Android development.&lt;br /&gt;&lt;br /&gt;Quickly I ended up diving deeper into REST. Must confess that I was very WS-* minded and was not really impressed by REST initially. But with the incompleteness of WS-* and the success of REST, I'm changing my mind.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://restinpractice.com/img/frontpage.jpg"&gt;&lt;img alt="" border="0" src="http://restinpractice.com/img/frontpage.jpg" style="float: right; height: 181px; margin: 0pt 0pt 10px 10px; width: 261px;" /&gt;&lt;/a&gt;So I ended up browsing through the book "&lt;a href="http://shop.oreilly.com/product/9780596158057.do"&gt;Restful Java with JAX-RS&lt;/a&gt;". This REST stuff triggered me into looking into different REST API's, including the one from &lt;a href="http://www.dropbox.com/developers/reference/api"&gt;Dropbox&lt;/a&gt;. And Dropbox security is based on OAuth, which triggered me to dive (back) into &lt;a href="http://oauth.net/"&gt;OAuth&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Looked for an OAuth book on &lt;a href="http://safari.oreilly.com/"&gt;Safari&lt;/a&gt; and Amazon, but none (yet?) avaialble. So I ended up re-reading chapter 9 of the the book "&lt;a href="http://restinpractice.com/"&gt;REST in practice&lt;/a&gt;". By the way, very good book, I like it. Some great links while looking around:&lt;br /&gt;- The &lt;a href="http://hueniverse.com/oauth/guide/workflow/"&gt;introduction&lt;/a&gt; on OAuth&lt;br /&gt;- Good OAuth introduction by &lt;a href="http://developer.yahoo.com/oauth/guide/oauth-auth-flow.html"&gt;Yahoo&lt;/a&gt;&lt;br /&gt;- Google &lt;a href="http://googlecodesamples.com/oauth_playground/"&gt;Oauth Playground&lt;/a&gt;, so see OAuth live in action&lt;br /&gt;&lt;br /&gt;While looking into OAuth, I started making the comparison with WS-Security and &lt;a href="http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language"&gt;SAML&lt;/a&gt; in particular. With OAuth, no XML signing nor &lt;a href="http://www.w3.org/TR/xml-exc-c14n/"&gt;XML canonicalization&lt;/a&gt;, the option to use &lt;a href="http://en.wikipedia.org/wiki/HMAC"&gt;HMAC &lt;/a&gt;instead of keypairs and certificates. So simpler, but not simple!&lt;br /&gt;&lt;br /&gt;Note: one of my &lt;a href="http://www.integr8consulting.com/"&gt;I8C&lt;/a&gt; colleagues (Kim) just finished project on &lt;a href="http://www-01.ibm.com/software/integration/datapower/"&gt;DataPower&lt;/a&gt; appliance to implement OAuth support&lt;br /&gt;&lt;br /&gt;Author: Guy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-8895289990026188570?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/8895289990026188570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/11/oauth.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/8895289990026188570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/8895289990026188570'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/11/oauth.html' title='OAuth'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-8068690645664475492</id><published>2011-11-08T18:39:00.000+01:00</published><updated>2011-11-08T18:39:00.618+01:00</updated><title type='text'>jBPM Orchestration in JBoss ESB</title><content type='html'>The third installment in the JBoss ESB video series features the jBPM module which introduces service orchestration and human task flows. &lt;br /&gt;The first video shows you how to set up a simple jBPM process:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/jFBEqhAuOCw/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/jFBEqhAuOCw&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/jFBEqhAuOCw&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Link: http://www.youtube.com/watch?v=jFBEqhAuOCw &lt;br /&gt;&lt;br /&gt;The second one covers a few additional topics like variables passing back and forth between jBPM and the ESB services as well as user-driven branching:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/9Mhd7VO0-oA/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9Mhd7VO0-oA&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/9Mhd7VO0-oA&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Link: &lt;a href="http://www.youtube.com/watch?v=9Mhd7VO0-oA"&gt;http://www.youtube.com/watch?v=9Mhd7VO0-oA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: Alexander Verbruggen&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-8068690645664475492?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/8068690645664475492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/11/jbpm-orchestration-in-jboss-esb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/8068690645664475492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/8068690645664475492'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/11/jbpm-orchestration-in-jboss-esb.html' title='jBPM Orchestration in JBoss ESB'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-6150548320121086650</id><published>2011-11-02T17:35:00.000+01:00</published><updated>2011-11-02T17:35:00.745+01:00</updated><title type='text'>Custom java service in JBoss ESB</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/TfgUW0D-aAo/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TfgUW0D-aAo&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/TfgUW0D-aAo&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;This second video in the JBoss ESB series demonstrates how to create a simple custom java service that prints out the message content it receives.&lt;br /&gt;&lt;br /&gt;Link: &lt;a href="http://www.youtube.com/watch?v=TfgUW0D-aAo"&gt;http://www.youtube.com/watch?v=TfgUW0D-aAo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: Alexander Verbruggen&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-6150548320121086650?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/6150548320121086650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/11/custom-java-service-in-jboss-esb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/6150548320121086650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/6150548320121086650'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/11/custom-java-service-in-jboss-esb.html' title='Custom java service in JBoss ESB'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-9164440777859600898</id><published>2011-10-27T09:04:00.000+02:00</published><updated>2011-10-27T09:04:16.807+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenWorld'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Oracle Openworld 2011 through he eyes of an I8C employee</title><content type='html'>In the beginning of October I was one of the 45,000 attendees from 117 countries.&lt;br /&gt;&lt;br /&gt;If someone would ask me next year what was on the 2011 Open World I will definitely remember these key words: CLOUD and EXA.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Exalytics and Supercluster were anounced during several keynotes. These new children of the EXA family will allow Oracle even better to power private clouds and their own public cloud. These machines are impressive and they are definitive an asset to your corporation ... if you can pay for them :-)&lt;br /&gt;In any case the &lt;a href="http://www.oracle.com/us/products/middleware/exalogic/specifications/index.html"&gt;specs for Exalogic&lt;/a&gt;, &lt;a href="http://www.oracle.com/ocom/groups/public/@otn/documents/webcontent/173705.pdf"&gt;Exadata&lt;/a&gt; and &lt;a href="http://www.oracle.com/us/products/servers-storage/servers/sparc-enterprise/t-series/sparc-supercluster-ds-496616.pdf"&gt;Supercluster&lt;/a&gt; are pretty amazing. Who would have thought a few years back that you could have a machine that can load a few TB of data in memory? &lt;/td&gt;&lt;td&gt;&lt;img border="0" height="213px" src="http://www.oracle.com/us/assets/im08t0-exalogic-x2-2-1-495530.jpg" width="320px" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;As mentioned before Larry Ellison also announced the &lt;a href="http://cloud.oracle.com/"&gt;Oracle Public Cloud&lt;/a&gt;. Their cloud offering is mixed in that way that it offers a SAAS model for CRM and HCM fusion applications and Oracle Database and a PAAS offering for Custom Java applications. Maybe the &lt;a href="http://blogs.computerworld.com/19056/larry_ellison_rages_on_salesforce_com_in_keynote_war"&gt;riot with Salesforce&lt;/a&gt; was only to get extra attention for this anouncement ;-) &lt;br /&gt;&lt;br /&gt;While the cloud wars continued I was trying to get a roadmap for fusion middleware for the next years. I however could not seem to find it, which was a pity.&lt;br /&gt;&lt;br /&gt;A keynote that did provide a roadmap was at JavaOne. For java 8 the most interesting items are for me: addition of lambda expressions, Java modularity and completion of the HotSpot/JRockit JVM convergence project. Also nice to hear was that Twitter will join the OpenJDK!&lt;br /&gt;&lt;br /&gt;At openworld some of the most interesting sessions I followed were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A hands on workshop for Oracle CEP: this is a really interesting tool. Even though you can freely download and play with it, it is nice to just walk in a room to play with the tool and get all the information that you want, straight from the PTS guys.&lt;/li&gt;&lt;li&gt;A more in depth talk on Oracle Coherence gave me some more insight in this product. A distributed cache is something that is used in many applications nowadays, mainly to boost performance to new limits. In middleware and more specifically in ESB solutions this technology is interesting to cache configuration data, offload frequently used data from the database, cache service results and sometimes it is even used for messaging.&lt;/li&gt;&lt;li&gt;Continuous integration for SOA and BPM projects: this was a very interesting session on how to do more Test Driven Development (TDD) in an Oracle SOA environment. They also showed how to use popular tools like ant and Jenkins.&lt;/li&gt;&lt;li&gt;There were also some panel sessions during the conference. The most interesting I found the one on OSB and how to tune this ESB for peak performance. By the questions from the audience you can really see that this ESB is widely used in massive deployments.&lt;/li&gt;&lt;/ul&gt;For me personally the only downside of Open World are the 25 hours I need to spend in the airplane :-)&lt;br /&gt;&lt;br /&gt;Author: Jeroen V.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-9164440777859600898?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/9164440777859600898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/10/oracle-openworld-2011-through-he-eyes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/9164440777859600898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/9164440777859600898'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/10/oracle-openworld-2011-through-he-eyes.html' title='Oracle Openworld 2011 through he eyes of an I8C employee'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-7473324379681588330</id><published>2011-10-24T20:18:00.000+02:00</published><updated>2011-10-24T20:18:00.247+02:00</updated><title type='text'>Random errors when using MQSeries adapter in Clustered Environment</title><content type='html'>In the following article, we will be describing an error that we've encountered in a clustered MSCS Cluster with MQSeries installed, using Microsoft BizTalk 2006 R2.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;The Problem&lt;/h2&gt;Well, it's not exactly one error we've encountered. The problem actually exists of multiple random warnings that seem to be popping up in the event viewer when using the MQSeries adapter (using the MQSAgent2 COM+ component) whilst sending messages towards this adapter. Strangely enough, we also noticed these warnings popping up when there is absolutely no traffic going on on the server.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some samples of errors:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;The adapter "MQSeries" raised an error message. Details "The remote procedure call failed and did not execute. (Exception from HRESULT: 0x800706BF)"&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The adapter "MQSeries" raised an error message. Details "Unable to cast object of type 'System.__ComObject' to type 'Microsoft.BizTalk.Adapter.MQS.Agent.MQSProxy'."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The adapter failed to transmit message going to send port "prtSendSecLendMsgStatusSLT_MQSeries" with URL "MQS://BDAMCAPP100/MQPRD205/FIAS.QL.SLT_BT_IN.0001". It will be retransmitted after the retry interval specified for this Send Port. Details:"The remote procedure call failed and did not execute. (Exception from HRESULT: 0x800706BF)".&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;h2&gt;The Impact&lt;/h2&gt;It might seem that these warnings are "just" warnings, but whenever one of these warnings is encountered, it causes the sending of messages towards the MQSeries adapter to fail. This will trigger the BizTalk retry mechanism which works with a certain amount of retries. These retries can be scheduled by minutes, where the lowest value of this configuration is 1. &lt;br /&gt;&lt;br /&gt;This means that, when an problem occurs and the message needs to be resent, there will be a minimum delay of 1 minute on every message. In an environment where large amounts of messages are being processed, this can be a huge painpoint.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;h2&gt;The Solution&lt;/h2&gt;After investigation, we seem to have found that the source of this issue can be found on network level of the servers. Idle TCP sessions on the network of the client are closed within 1 hour. This seems to be a common default setting on a lot of environments, and is certainly not a bad thing. &lt;br /&gt;&lt;br /&gt;The problem is that the default TCP Keep Alive interval in Windows seems to be 2 hours. So when a Keep Alive package is sent towards the cluster through an idle connection with more than 1 hour idle time, it will return an error since the TCP session on the network is already closed. &lt;br /&gt;&lt;br /&gt;Obviously, the most logical thing to do to avoid these errors is changing the Keep Alive timeout time on the Windows (BizTalk) servers. Tis can be done by changing a registry value on your BizTalk servers, followed by a reboot.&lt;br /&gt;&lt;br /&gt;The following link describes which value to set:&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc782936%28WS.10%29.aspx"&gt;http://technet.microsoft.com/en-us/library/cc782936(WS.10).aspx&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Good luck!&lt;br /&gt;Andrew De Bruyne&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-7473324379681588330?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/7473324379681588330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/10/random-errors-when-using-mqseries.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/7473324379681588330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/7473324379681588330'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/10/random-errors-when-using-mqseries.html' title='Random errors when using MQSeries adapter in Clustered Environment'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-6957449090797989767</id><published>2011-10-16T20:12:00.000+02:00</published><updated>2011-10-16T20:12:00.452+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webMethods'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise one adapter'/><title type='text'>Installing an old E1 adapters in recent versions of webMethods</title><content type='html'>Let’s say you have a current webMethods version 6.5 and you’re upgrading to version 8, but all subsystems are not upgrading.&lt;br /&gt;&lt;br /&gt;The webMethods Enterprise one adapter (8.96 one-off Adapter for XPI 8.94) which came with the installation of webMethods 6.5 will be replaced when you install a new Enterprise one adapter in version 8.&lt;br /&gt;&lt;br /&gt;It can be that your JDE environment is old and that the adapter of version 6.5 is the latest supported version. How can it be used now on webMethods version 8.&lt;br /&gt;First step: Export the current Enterprise one adapter from version 6.5 (Developer -&amp;gt; export) and save it on your machine.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-T39jrRCq5uE/TorKoyY92FI/AAAAAAAAAAk/rV96EDOcspQ/s1600/2011-10-04_105724.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="164" src="http://1.bp.blogspot.com/-T39jrRCq5uE/TorKoyY92FI/AAAAAAAAAAk/rV96EDOcspQ/s320/2011-10-04_105724.jpg" width="285" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-R4ly7KpIuak/TorK-i4vOpI/AAAAAAAAAAs/aozaXzYDu-8/s1600/2011-10-04_105844.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-R4ly7KpIuak/TorK-i4vOpI/AAAAAAAAAAs/aozaXzYDu-8/s320/2011-10-04_105844.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now copy this export in the replicate -&amp;gt; inbound folder of your new version 8 installation.&lt;br /&gt;Before you can install this package, you need to install the PSFT_PackageManagement package first.&lt;br /&gt;Once that package is installed, open it’s pub page.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ef4Sy-nlfU0/TorM5B8GnFI/AAAAAAAAABM/K4kVIK1j5Ac/s1600/2011-10-04_110720.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://3.bp.blogspot.com/-ef4Sy-nlfU0/TorM5B8GnFI/AAAAAAAAABM/K4kVIK1j5Ac/s400/2011-10-04_110720.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Click install inbound releases and select your exported zip file.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-o6Kms0rqVdg/TorNRZZwtXI/AAAAAAAAABU/h2tSRVX4aDg/s1600/2011-10-04_110846.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="139" src="http://2.bp.blogspot.com/-o6Kms0rqVdg/TorNRZZwtXI/AAAAAAAAABU/h2tSRVX4aDg/s400/2011-10-04_110846.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Select that exported zip to be installed and click save changes&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-qIc8Cn-g4s8/TorNhSPOlNI/AAAAAAAAABc/JDZQZ3HttWE/s1600/2011-10-04_111006.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="136" src="http://4.bp.blogspot.com/-qIc8Cn-g4s8/TorNhSPOlNI/AAAAAAAAABc/JDZQZ3HttWE/s400/2011-10-04_111006.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The Enterprise one adapter from version 6.5 is now installed and your new webMethods version 8 installation can work with old JDE systems. &lt;br /&gt;&lt;br /&gt;Author : JeroenW&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-6957449090797989767?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/6957449090797989767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/10/installing-old-e1-adapters-in-recent.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/6957449090797989767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/6957449090797989767'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/10/installing-old-e1-adapters-in-recent.html' title='Installing an old E1 adapters in recent versions of webMethods'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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://1.bp.blogspot.com/-T39jrRCq5uE/TorKoyY92FI/AAAAAAAAAAk/rV96EDOcspQ/s72-c/2011-10-04_105724.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-137637163583260653</id><published>2011-10-11T22:06:00.000+02:00</published><updated>2011-10-11T22:06:43.571+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tibco'/><category scheme='http://www.blogger.com/atom/ns#' term='Tucon'/><title type='text'>TUCON2011</title><content type='html'>Last week TUCON2011 took place in Las Vegas, USA.  As we are the only TIBCO partner, with its HQ in Belgium, Integr8 Consulting could not be absent this year! So together with my colleague, we went out to the far-west of the USA. &lt;br /&gt;&lt;br /&gt;This year TUCON started with the keynote speakers and the BIG idea track. The focus of these BIG idea tracks is to hear from TIBCO customers and TIBCO visionaries, how they are using TIBCO technologies and how it provides them with the 2-second advantage. For those out there not knowing what the 2-second advantage is, &lt;a href="http://www.youtube.com/watch?v=9efKJRiuQIo"&gt;here&lt;/a&gt; is a link to a video from Vivek (TIBCO CEO) explaining the 2-second advantage.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Putting the right information on the right time in the right context&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;These are my 4 keywords I remember from my TUCON visit:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tibbr&amp;nbsp;&lt;/li&gt;&lt;li&gt;Context&amp;nbsp;&lt;/li&gt;&lt;li&gt;Silver&amp;nbsp;&lt;/li&gt;&lt;li&gt;Mobility&lt;/li&gt;&lt;/ul&gt;If it’s one thing that is clear, TIBCO is investing a lot in its social computing tool, tibbr. Tibbr is a tool; build specific for the&amp;nbsp;work-space, which will allow you to follow subjects, applications and event streams. Using this approach it will be possible to put the information you receive, directly in the right context when and where you want it.&lt;br /&gt;&lt;br /&gt;This brings me to the second keyword, context. One of the keynote speakers stated ‘what if you have a million of data events, but you can’t place it’. And that’s what it’s all about. If you can place the data at the right time in the right context, it will provide you with a 2-second advantage. &lt;br /&gt;&lt;br /&gt;The third keyword is Silver. Silver is TIBCO’s brand name for its cloud services like you have ActiveMatrix for the SOA/BPM platform. Next to Tibbr, Silver will become a focus point for the future. You will get Silver Mobile, Silver Fabric, Silver Spotfire and many more. All providing you with Cloud services to start with Tibco technology in just a matter of seconds (at least in theory). &lt;br /&gt;&lt;br /&gt;Now the fourth option will look a bit strange but this might become the biggest shifting of enterprise communication since the rise of the email (maybe a bit exaggerated) . With the upcoming boost of the smartphones, ipads, smart devices (like smart grid readers, which read your electricity usages, and send it to your electricity provider), new technologies are needed that will make it possible to use your mobile device as…. well as a workstation. If you’re interested on how Silver Mobile will work: &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Silver Mobile will provide you with a platform that runs on your Android, iPhone or BlackBerry. Using the platform, you will receive a common API that you can use in your mobile framework (jQuery Mobile, etc…) when building your own app&lt;/li&gt;&lt;li&gt;Using Silver Fabric you can push, from the cloud, your apps to the Silver Mobile platform on your company’s iphones, blackberries, or androids.&lt;/li&gt;&lt;li&gt;The example shown on TUCON was showing the status of your BW applications on your iphone. In case something went down, you got a notification using the native notification bus from your mobile device.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In the sessions of Orange, we saw a M2M (Machine-2-Machine) example on how Orange is using mobile communication technology. Now imagine about the possibilities when you think again about ‘context’. You can analyze the date from a mobile device and correlate this context with build in embedded devices like GPS, etc… to provide you with … the context of the data.&lt;br /&gt;To conclude, enterprises will have to adapt their architectures to provide more and more a context-aware mobility delivery architecture in order to ‘please’ there customers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Announcements&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Next to the BIG idea tracks, day 2 and 3 are technology tracks that provided us with some insights of the current developments done by TIBCO. Now I will start this chapter, like TIBCO started each session. Every information provided is purely informational and does not legally bound us / TIBCO to any delivery&lt;br /&gt;&lt;br /&gt;I tried to follow a diverse schema trying to know as much as I can and these are the things that are still in my mind:  &lt;br /&gt;&lt;ul&gt;&lt;li&gt;The ActiveMatrix platform will be extended with a rule engine, TIBCO ActiveMatrix Decisions. This product is build based on BusinessEvents and exposes it rules as services which can be used for example in a BPM process of ActiveMatrix BPM&lt;/li&gt;&lt;li&gt;TIBCO ActiveSpaces 2.0 data grid. Woow, was I overwhelmed with this technology. To be honest, I didn’t really know this technology, but from what I’ve seen on TUCON, I immediately want to start with it!&lt;/li&gt;&lt;li&gt;BusinessWorks plugins. Instead of adapter based technology, TIBCO is coming more and more with external plugins that can enhance BusinessWorks. Examples are tibbr, SalesForce, ActiveSpaces and an Aspect plugin that you could use for AOP programming in BW!&lt;/li&gt;&lt;li&gt;Hawk! What Hawk?? Yes indeed, Hawk is coming with a nice web interface that will provide you with a better overview of your TIBCO Administrative domains. And as most products will do, Hawk will also integrate with Tibbr and maybe Spotfire in the future. &lt;/li&gt;&lt;li&gt;Nimbus. This newly acquired technology provides you with a tool that can be used for documenting your business processes in a way your business can understand them. Don’t see it as an automation engine but rather as a tool for documenting (discovering) your business process. If TIBCO will connect AMX BPM and Nimbus, information is exchanged between them, it might become a strong product bundle. &lt;/li&gt;&lt;li&gt;TIBCO EMS / FTL. During the engineering roundtable, it came to a discussion on how the future will look like for messaging. In the end there is no real answer. EMS is still the messaging solution if you want a guaranteed reliable messaging solution. FTL is the future for TIBCO if it concerns really fast messaging.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;If you visited TUCON this year, maybe you joined some other sessions and got other ideas then myself. Please share your experiences. By sharing information and putting it in the right context, we can get that 2-second advantage! &lt;br /&gt;&lt;br /&gt;Author: Günther&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-137637163583260653?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/137637163583260653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/10/tucon2011.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/137637163583260653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/137637163583260653'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/10/tucon2011.html' title='TUCON2011'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-7250662253652845487</id><published>2011-09-20T20:39:00.000+02:00</published><updated>2011-10-11T22:42:05.885+02:00</updated><title type='text'>JBoss ESB - A simple file poller</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.youtube.com/watch?v=GOKFl79W1To"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/GOKFl79W1To/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/GOKFl79W1To&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/GOKFl79W1To&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A while ago I took JBoss ESB for a spin to see how it compares to other tools we frequently use  (both in terms of features and usability). I created a few how-to videos which&amp;nbsp; can be used as a reference to implement some common usecases. Though they assume a working JBoss ESB server and the appropriate eclipse tooling, they are generally pretty straight forward.&lt;br /&gt;&lt;br /&gt;This first video demonstrates how to set up a (very) simple file poller. Subsequent tutorials will highlight more advanced features like XSLT transformations, jBPM and some smooks-based csv parsing. Please note that it is best viewed at 1080p or original resolution.&lt;br /&gt;&lt;br /&gt;Link: &lt;a href="http://www.youtube.com/watch?v=GOKFl79W1To"&gt;http://www.youtube.com/watch?v=GOKFl79W1To&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Author: Alexander Verbruggen&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-7250662253652845487?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/7250662253652845487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/09/jboss-esb-simple-file-poller.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/7250662253652845487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/7250662253652845487'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/09/jboss-esb-simple-file-poller.html' title='JBoss ESB - A simple file poller'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-4760905368167758976</id><published>2011-09-10T19:00:00.000+02:00</published><updated>2011-09-10T19:00:04.014+02:00</updated><title type='text'>Migrating Trading Networks data between v6.5 and v8 on different servers</title><content type='html'>&lt;br /&gt;&lt;div class="MsoNormal"&gt;The client I’m currently working for requires a new webMethods 8 environment, but this has to be a copy of an existing 6.5 environment, which should stay. They created new servers so I could install all required components on this new machine for a version 8 with Trading Networks.&lt;br /&gt;&lt;br /&gt;They required a clean install, but needed to have the code and TN data from the version 6.5 on the new version 8 installation. The installation itself was easy, just as the setup of the environments (e.g. ports, security, LDAP, …)&lt;/div&gt;&lt;div class="MsoNormal"&gt;When I came to the point where I wanted to migrate the Trading Networks data, I came up with some issues. The biggest problem was that we have a current table wm65tn which holds all the data and we had to create a new one wmTN for the version 8, as they still want to use the version 6.5.&lt;/div&gt;&lt;div class="MsoNormal"&gt;The first thing I tried was to deploy the Trading networks settings. This was already an issue as the old environment was behind a firewall and this needed to be opened for traffic towards the new version 8 environment. Once the firewall was opened I could finally deploy all TN settings, but this wouldn’t work.&lt;/div&gt;&lt;div class="MsoNormal"&gt;WebMethods Deployer won’t deploy TN data between different versions (6.5 and 8).&lt;/div&gt;&lt;div class="MsoNormal"&gt;Next I tried to Export and Import all data into the new version. Again the same issue appeared, Not allowed to copy data between 6.5 and 8.&lt;/div&gt;&lt;div class="MsoNormal"&gt;My next option was to install a second database version 6.5, copy all the data there and then run a migration for that table.&lt;/div&gt;&lt;div class="MsoNormal"&gt;So with this last step in mind I started. First bumble on the road, the disk where all tables was stored didn’t have enough free space. After creating the required space I could create the database. (wmTN) After the database was created. I disconnected the old version 6.5 table and copied the MDF and LDF file (SQL server).&lt;/div&gt;&lt;div class="MsoNormal"&gt;Now we need to disconnect the wmTN table and rename the log files to the required log file names which are linked with this table.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Now the new database has the same data as the old one. So we can connect the tables again to the SQL server.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Next step is to upgrade the database according to the webmethods documentation.&lt;/div&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; line-height: 115%;"&gt;&lt;br clear="all" style="page-break-before: always;" /&gt; &lt;/span&gt;  &lt;br /&gt;&lt;div class="MsoNormal"&gt;Unfortunatly there was a step which mentioned “if errors occured, contact Software AG Customer Care” and yes lucky me, I can contact software AG.&lt;/div&gt;&lt;div class="MsoNormal"&gt;For getting this error :&lt;/div&gt;&lt;div style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;[wm-cjdbc40-0034][SQLServer JDBC Driver][SQLServer]Foreign key 'fk_PtnrUser_PtnrID' references invalid table 'Partner'.&lt;/div&gt;&lt;div class="MsoNormal" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;MIGRATE TRADINGNETWORKS [31] FAILED&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;After some mails and telephone calls with webMethods support the issue is still not resolved.&lt;/div&gt;&lt;div class="MsoNormal"&gt;They managed to solve the foreign key issue by just removing this, but when that issue is solved we got this issue.&lt;/div&gt;&lt;div style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;*** Data Migration from TN 6.5 to TN 7.1 started...&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;* Creating Partner-User mappings...&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;java.sql.SQLException: [wm-cjdbc36-0007][SQLServer JDBC Driver][SQLServer]Invali d object name 'PartnerUser'.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.wm.dd.jdbc.base.BaseExceptions.createException(Unknown Source)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.wm.dd.jdbc.base.BaseExceptions.getException(Unknown Source)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;at com.wm.dd.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Sou&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;rce)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.wm.dd.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Sou&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;rce)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.wm.dd.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;Source)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.wm.dd.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.wm.dd.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unk&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;nown Source)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.wm.dd.jdbc.base.BaseStatement.commonTransitionToState(Unknown Sou&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;rce)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.wm.dd.jdbc.base.BaseStatement.postImplExecute(Unknown Source)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.wm.dd.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Sou&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;rce)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.wm.dd.jdbc.base.BaseStatement.commonExecute(Unknown Source)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.wm.dd.jdbc.base.BaseStatement.executeUpdateInternal(Unknown Sourc&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;e)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.wm.dd.jdbc.base.BasePreparedStatement.executeUpdate(Unknown Sourc&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;e)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.wm.app.tn.util.migrate.migratedata_to_tn_71.createPartnerUsers(mi&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;gratedata_to_tn_71.java:137)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.wm.app.tn.util.migrate.migratedata_to_tn_71.main(migratedata_to_t&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span lang="X-NONE"&gt;n_71.java:47)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;This issue is related to the partner table (which holds all the partner profiles). The first thought was that it was related to the unknown profile because it has an id of 00000000000000. But the contact person of SAG confirmed that this wasn’t the issue as this is the default entry that comes with every TN database.&lt;/div&gt;&lt;div class="MsoNormal"&gt;At this moment the ticket is already open for more than one week and still no solution found.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Today I received another call from SAG and they said to have found the issue. I recovered the original 6.5 TN database. So I could follow the correct guidelines from SAG without touching anything to the table’s structure (removing foreign keys).&lt;/div&gt;&lt;div class="MsoNormal"&gt;The problem was that the original 6.5 database was created with a user specific for this table and the table had a schema defined.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Solution&lt;/b&gt;:&lt;/div&gt;&lt;div class="MsoNormal"&gt;I had to create a user which had a default schema equal to wm65tn (which was the old value) and then run the upgrade script via the command line.&lt;/div&gt;&lt;div style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b&gt;dbConfigurator.bat -a migrate -d sqlserver -c TradingNetworks -v latest -l &amp;lt;db_server_URL&amp;gt; -u &amp;lt;existing_db_user&amp;gt; -p &amp;lt;password&amp;gt; -fv 10 &lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;Now the table was upgraded to version 8 and all new tables have the correct schema (wm65tn).&lt;/div&gt;&lt;div class="MsoNormal"&gt;Now run this command migratedata_from_tn_7-1 6.5 from the correct folder as this copies the data from the old table to the correct new table. (all partner profiles, agreements, …)&lt;/div&gt;&lt;div class="MsoNormal"&gt;E.g : Partner to PartnerUser&lt;/div&gt;&lt;div class="MsoNormal"&gt;Now a restart of the environment is needed, unless your environment was already down, and the data is available in TN version 8.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Author : Jeroen W. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-4760905368167758976?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/4760905368167758976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/09/migrating-trading-networks-data-between.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/4760905368167758976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/4760905368167758976'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/09/migrating-trading-networks-data-between.html' title='Migrating Trading Networks data between v6.5 and v8 on different servers'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-5456417147829777437</id><published>2011-09-06T05:56:00.000+02:00</published><updated>2011-09-06T05:56:00.201+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BizTalk'/><title type='text'>BizTalk is dead, long live BizTalk</title><content type='html'>&lt;br /&gt;On the WPC (World Partner Conference) 2011, Microsoft revealed it’s future plans for their integration stack. It seems that BizTalk as product name will disappear in the nearby future… &lt;br /&gt;&lt;br /&gt;A new integration platform (stack) is being built in the cloud, offering us most of the BizTalk functionality. The same stack will also be made available on-premise, thus replacing BizTalk as we know it today. &lt;br /&gt;&lt;br /&gt;It is up to us now, to learn utilizing the new integration stack in the cloud as on-premise. This will keep us busy for the next 5 to 10 years, I presume. &lt;br /&gt;&lt;br /&gt;Does this mean that BizTalk will no longer be supported? No! It just means that the integration stack as we know it today will remain fairly unchanged (they keep it aligned with their Windows, SQL and .NET stack) until the new product becomes available on-premise. How long will this take? I assume we will see the new on-premise product within 2 to 3 years. The name of this new product is not yet determined, so maybe “BizTalk” as name may continue to live J &lt;br /&gt;&lt;br /&gt;This &lt;a href="http://seroter.wordpress.com/2011/07/14/is-biztalk-server-going-away-at-some-point-yes-dead-nope/"&gt;link&lt;/a&gt; gives a good overview of what we may expect.&amp;nbsp; And the &lt;a href="http://digitalwpc.com/Videos/AllVideos/Permalink/e821e9f8-e379-45b0-8879-12fe271c86be#fbid=8XvnxCo6v9U"&gt;WPC presentation video&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Author: Koen&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8507185344691363497-5456417147829777437?l=integr8consulting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://integr8consulting.blogspot.com/feeds/5456417147829777437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://integr8consulting.blogspot.com/2011/09/biztalk-is-dead-long-live-biztalk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/5456417147829777437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8507185344691363497/posts/default/5456417147829777437'/><link rel='alternate' type='text/html' href='http://integr8consulting.blogspot.com/2011/09/biztalk-is-dead-long-live-biztalk.html' title='BizTalk is dead, long live BizTalk'/><author><name>i8c</name><uri>http://www.blogger.com/profile/05003002313779050051</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></entry><entry><id>tag:blogger.com,1999:blog-8507185344691363497.post-3401332694060602980</id><published>2011-08-30T21:16:00.000+02:00</published><updated>2011-08-30T21:16:00.544+02:00</updated><title type='text'>JVM performance tuning part 3: JVM tuning</title><content type='html'>The Java virtual machine can be tuned in several ways. The three most important ones will be discussed in this blog entry: &lt;br /&gt;&lt;ol&gt;&lt;li&gt;Java heap space&lt;/li&gt;&lt;li&gt;Garbage collection tuning &lt;/li&gt;&lt;li&gt;Garbage collection ergonomic&lt;span lang="EN-US" style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Java heap space&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;As discussed in an earlier blog post, objects reside in the java heap space. The more objects exist, the more heap space will be needed. So thus the most important part of JVM tuning is sizing the heap correctly. Only after changing the heap to the correct size, you can start playing with garbage collection options in order to further improve performance to reach specific goals.&lt;br /&gt;&lt;br /&gt;For java server application Oracle recommends the following regarding java heap size:&lt;br /&gt;&lt;i&gt;Unless you have problems with pauses, try granting as much memory as possible to the virtual machine. The default size (64MB) is often too small.&lt;br /&gt;Setting -Xms and -Xmx to the same value increases predictability by removing the most important sizing decision from the virtual machine. On the other hand, the virtual machine can't compensate if you make a poor choice.&lt;br /&gt;Be sure to increase the memory as you increase the number of processors, since allocation can be parallelized.&lt;/i&gt;This means that, as soon as you start getting the error &lt;i&gt;java.lang.OutOfMemoryError: Heap space&lt;/i&gt; it’s time to increase the heap. The easiest way to size correctly is by monitoring garbage collection, but this will be discussed in the next blog entry.&lt;br /&gt;Sizing the heap can be done using the parameters –Xms and –Xmx, defining the minimum and maximum heap space respectively.  –Xms is also called committed memory. –Xmx is also called reserved memory, although only the committed memory will be asked to the operating system at startup of the virtual machine. The difference between maximum and minimum memory is called virtual memory.&lt;br /&gt;For server applications it’s best to set –Xms equal to –Xms. This allows the JVM to reserve all the necessary virtual memory at startup of the virtual machine. The best way to explain this is using an example:&lt;br /&gt;suppose we have a server application that needs 800Mb of java heap after startup. If we would put –Xms256MB and –Xmx1024MB the JVM will ask the operating system 256MB of virtual memory for the heap just after creation of the virtual machine. As the server starts and needs more and more memory, the virtual machine will ask the operating system for more memory. Then you can only hope the operating system is able to give more memory. If not, the JVM starts throwing a java.lang.OutOfMemoryError. If we would put –Xms1024MB and –Xmx1024MB the JVM will ask the operating system enough virtual memory to create the maximum heap size. If that’s not possible the JVM simply won’t start, but you won’t get possible memory errors (related to resizing the heap) while the JVM is running.&lt;br /&gt;By setting –Xms = -Xmx the JVM will start faster (no overhead added to allocate new memory blocks during startup, since the whole block will be reserved at startup).&lt;br /&gt;Another advantage of setting –Xms equal to –Xmx is a reduction in the number of garbage collections, but adding larger pause times for each garbage collection.&lt;br /&gt;Another rule is that the larger the heap size, the larger the pause times will be.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Garbage collection tuning&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Since JDK 1.5 update 6, four different types of garbage collectors are available:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The serial collector (the default one)&lt;/li&gt;&lt;li&gt;The parallel or throughput collector&lt;/li&gt;&lt;li&gt;The parallel compacting collector&lt;/li&gt;&lt;li&gt;The Concurrent Mark Sweep collector&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;The serial collector&lt;/b&gt;&lt;br /&gt;The serial is the default collector where both minor and major collections happen in a “stop the world” way. As the name implies garbage collections run serial and are only using one CPU core, even if more of them are available.&lt;br /&gt;&lt;br /&gt;A young generation collection is done by copying the live object from the “Eden space” to the empty survivor space (“To space” in the figures). Objects that are too big for the survivor space are directly copied to the tenured space. Relative young objects in the other survivor space (“From space”) will be copied to the other survivor space (“To space”), while relative old objects will be copied to the tenured space. This also happens for all the other objects in the “Eden space” or “From space” when the “To space” becomes too small. Objects that are still in the “Eden space” or the “From space” after the copy operation, are dead objects and can be swept.&lt;span lang="EN-US" style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;img alt="" src="data:image/png;base64,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lStbW1vPnj179OjRDz/88MKFC6LGzZ07FyHEsqxEInn77be/+OKL8+fPm81miUQyceJEhNC33367cOHCBx54wOl07tu3b+zYsffcc09jY6PNZpNIJPfffz9JkhaLZdmyZX5v90ARqCAWi2XFihVxcXE6nc7vBvIPon3XuRNEELcW+u86gSun2/E8v3jx4j5Ck52d7Rcasesktnd27979wAMPLFq0CCFUWFjodwb7AQDYsmWLv0tFEMS9994rftyzZ89DDz301FNPrVy5cu3atSNGjLjnnnusVqtOp/PXhXpdP/Pmzevq6vrDH/7w+OOPL1++fN26dS+//PLdd99tMBj0er1fMkQIgtDe3l5UVBQTEyORSMaNG4cQMhqNEokkJCRELCN+a/z48Qihtra2Rx999K233hL/heP4z3/+8xUrVng8HlGbxP319fUSieTll1++gUvvdxKLH3meP378uNhB+25Jr9cbFJogbl1c1RncZ/rJmjVr+nSdUlNTJRLJ5s2bUW/rZv369ah3SFssKY46BTqDRWzdutXfdfrqq682bNggkUji4+M1Go1EInnssceio6OnTp06Y8aM+Ph4f4smLi6ux2iNRiKRrFy5srKyUiKRPPLII1FRUdOmTZs+ffrmzZuPHDki7p8yZQpCCADQ3d1NEMS4ceOWLFny8ssvSySSiIgIhJDBYPCLDurVHVFERNGZMGGC+C+GYSQSydSpU0WhefPNN8X9TqdTIpG89tprN3DpA0fQA/d//vnnOI6XlJQcOXIE9bZogmujgrilcY0Je6jXN6lSqe66667IyMgLFy4ghC5dujR16tR7771Xr9ej3hbNhg0bEEJKpfKnP/2p6JeRyWT+LlWg30csExoaKvpu/b5kh8Nx5513TpgwQQzx74fYhJk9e3aP0RqN6Pppbm6+6667Xn/9dfE4fpSXl0skksjISPFjU1PTI4888sorr3R3d4tqEhoaihCqqanxT5xBV4qL0+m88847/QNSeXl5v/zlLzEMc7vdEonk9ddfF/fb7XaJRPKvf/3rBi59H+eLv3PU2dn5zDPP3H///bNnz3Y6nYHlb6CWIIK4GXBtZ7D49/jx42+99dbPf/7z1atX19XVJScn//rXv545c6a4PlCcRyO2XNra2p566qmRI0caDIbY2Ng+zmDxzfzhhx+OGjXqF7/4xfr162tq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" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXkAAADPCAIAAACfhTa2AAAgAElEQVR4nOx9d3gTR/q/vvf9PXeX3DeXy5XUu+SSkEu5FHIpEFoqOYJtmgMYF0wPoQeIjXFTc8O4d0nbVCzZcrelLbJsS7sryQ0XDA4lxJBAjkDgQnWRdn5/LOiEMQnksBNgP8/ngd3V7M5smY/feWfmHREQIECAgNGHCABw7uKQvumQQIECBd50nrs49B+t0TcdisbadY0HvfSm0zUe1FkP6qwHR/x19DhyMUY/62EZeYsx4o2P2dMQKPAWZTTWrm86dIXW6BoPejwejuPcbje/wcPj8QwNDQ07wqcZVXOLz8W7y+fLcdyoZurNiL87/n59c/f+xG94EwgQIGBE8IrDb/9Ha/h93yrk3fCKCy9Gg4ODo601XtXzSsyYVWyvpPrqi+9B4KM1Y1AeAQJuXYygNfqmQ3z1vlpoAAD8cX5jcHDQuzuq8FZ1Prthls6o5usVF7fbPTQ05Ha7veaeNxlfpDEojwABty5GsmusB4eGhvjm0rDUw2TF+xd+bMo69vBtr/mqKn+wt7cXQZDPPvvM18wRIEDAiBhZa/hqw9sODocjOjq6urq6v7+f47iBgYHS0tLU1NRDhw4BAMaggnmtqosXLxoMBrFYrNVqz549O9r58vD1TwEATp06dfr0af6u5XK5SCRKSEgAly2gsSmSAAG3IkZuQ/H7fOWprq7+1a9+9eqrrx48eBAAcPjw4Zdffvn555/nd8dGawAAx44dE4vFv/zlL0UikUgkWrZsWVdX16jme3VL7ezZs0lJSVqtlt+1WCzbtm2zWCyjWgwBAm4PfJ9vmMf58+fDwsLuuusuDMMAADAM33fffYmJiWNZysHBwcTExP/5n/+ZNm2aTCbbuHHjkiVLGhoaxqwAQ0NDAIDPP/983LhxsbGx/MH+/v6TJ08ODAyAq1qXAgQIGIaR7Rrf7m0AAIZhf/jDH1atWnX69Onw8PBx48Z1dnYCALq6upKSkuLj4ymKOnfuHH8Vm80mFovtdrt322azAQAOHz7c3d196tSp+vr6/Pz8PXv2+Jajq6srOTl527ZtWq325MmT4HLt5f/t6+ubNm3auHHjWlpa+PRnz549e/Ysb1UNDQ21t7cnJSXl5uZ+9dVXfIIvvviio6Pj5MmTFEUVFRXt3bvXm5fb7e7o6EhMTMzIyOjr6/Omb29vP3PmTFNTU21t7WeffWY0GmNjY1NTU/fv3w8AIEkyMDDwrrvueu211zIyMr755pva2tpZs2YZjUZw2bPT0tIiFouTk5M7Ozt5m6ivr2/37t3ffffdnj17srKyUlNTe3t7b/pbFCDg54/v64fyas3XX389Y8aMp59+WiKRTJw4cdOmTQCAiooKf3//999/f9KkSS+//HJKSgovNxERESKRKDo6GgDw6aefikSibdu2AQDy8/OnTZu2fv36Dz/88Le//e2iRYuOHj0KAPB4PDqdbsaMGTNmzHjggQfuvfdevpHi6yVpaGh49NFHV6xYMTg46Ft6j8dz/vz53NzcuXPnhoSETJ8+febMmbW1tQCAvLy8yZMnr127du7cuffdd19wcDDvYDp37lxBQcH8+fPDwsLefffdGTNm1NTUAACysrJmz5796aefvvzyy1u3bjUYDOvXr58+ffqDDz4YGBjY19dXVVV1//33/+IXv3j88cdXr1795Zdf8v6a7du384UpKSl555133n777YkTJ06YMAGGYQBAQUHBtGnTVq5cuW7duvHjx4tEopCQkMOHD4/BqxUg4GeFkdtQVw8YycnJefDBB++777433nijpaXlxIkTEyZMmDZt2mefffbZZ5+99dZbf/zjH8vKygAAsbGxIpGIb2SJxWKRSCSVSgEA0dHRIpEoICCgsrLS39//rrvuUiqVAIC+vr4JEyZMnDhx//79fBpep4BPwyQ7O/v//b//t3btWgAASZIRERHx8fFmsxkAQNP0/fffHxoaCgDo7u5++OGH582bx3Ecn/Xs2bMrKir8/Py82dlstvvvvz84OBgA0Nvb+9hjjwUGBnIcFxMTc9ddd02aNCkhIaGnp+fQoUNffvnl+fPnP/nkE5FIlJ+fDwDYvHmzSCSKjIw8deqU2+2WSCTeu/vqq68mT548ZcqUgwcP2u32xx9/fPz48d9++21iYqJIJHrnnXeMRmN9ff3777/vLYnQ7BJwR+GaWjNsLOyRI0cCAgJEItGGDRsAAAiC3H333Xw1AwDEx8eLRKL169cDAKRSqUgkksvlAAC+NvLbfOXfuXMnAEAmk3k1Ra1W33PPPbwThD8uk8n4y3oLwNtKn3zyCQDAaDT+/ve/F4lES5cudbvdvHHx1ltvRUZGfvLJJw888MCkSZOGhoZS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AMBxvMuJ44BnaHBo/boNc8KWGV1dGOm4Ia3p7e0NCgp68MEHp0+fnpuby9dwo9E4YcKE4uJiAEBxcfHkyZMpijKZTH/4wx8CAgL4ePKBgYGDg4Nr16599tln+/r6qqqqXnzxxdLS0qNHj7766quLFi0aGhpau3btiy++qNfrX3755XfeeWf//v09PT1Tpkx54YUXjh49ajab//SnP33wwQd1dXUnT57ky3P06NFNmzY98MADr732mlQq5YPAlpSUPPLII2vXrnU4HO++++7DDz/scDgGBgb27Nmzd+/eAwcOhIWFPfXUU0lJSa+99tq0adOam5ubm5u/+uqrvr6+8ePHv//++99+++3mzZufe+65FStW/PrXvw4JCblw4cKFCxe8/hrvk7l1tYaFCJuCYIos7QjZkqHQREfHpKVl5aLlkgIkKlGasDNHVWbLLYTjordmYoYyem82qomI3palMurse7IQQ2z09gxYW9q4N0tZsm37thx1sYHthcmu9FxIFhuTqTUWNbamIljstu2ZkFbV6EosUEhjYguwkqLKmu2pCfGZ2Wi1VU81YzirJp0YScOE/aZo6GhrjV9QWJlzT6LS8NGmLQ31ZgCA5+YGfeK4Sxl63AAAykIuX//JDrikunX/rEVLNq5beykKI+fhazoHfl6xRD2A81wOUTA0MLTho49mh4aXOLrVuMNwHW0oX/T19aWlpU2cOPGBBx5YsWLFV199VVNTM3Xq1LKyMgCAwWCYNGkSQRAEQTzyyCP5+fkAgMDAwDfffPPgwYOhoaHTp0+/cOFCVVXVhAkT+FPmzZs3ZcqUffv2hYeHz5kzJzc39+9//zu/whoAIDIy8le/+hWO4xRFPfLIIzk5Ofxxr+H29ddf8ysO3nfffe+9915vb29VVdXkyZN526ewsHDcuHEGgwEAcPDgQalUGh0dPXfu3PHjx4eEhPzjH/8oKiry3prJZHr88cenTZuWk5OzYsWK5557bs2aNcHBwU8//XRERARv+AwboXOrag1EMmqC1eLNMNGmrKZT86HYuLgdqak785VJBWhaniobMsC1zqwizbZPP03O12ibdmcj2riY7bloqd7elY0Ux8dEZyEag707W2WI+nRbDoJpGpsRqjlbCcfHbM/CSjX1u7IgXVzU9nQVom505WFGeVzCziK4wFAam5iYWARpKAYjHKiJVpsZ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" /&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;An old generation collection makes use of a mark-sweep-compact algorithm. The mark phase determines the live objects. The sweep phase erases the dead objects. During compaction the objects that are still live will be slide to the beginning of the tenured space. The result is a “full” region and an “empty” region in the tenured space. New objects too large for the “Eden space” can be allocated directly in the “empty” part of the tenured space.&lt;br /&gt;&lt;img alt="" src="data:image/png;base64,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lLa2NpfLdfLkyatXr47XIDjFG3rzzTffjIiIKCgogNE5oBtnAxHiwYMH0Z/B0RZJkvv27fv+97//9NNP5+fnL1u2LD4+Hg3WxuPGE9uhCk92f0I9J7yPInn33XcfeeSRnJwcdNPv91+8eHFoaAgmGktSFBVePg/jXx23xji5ublvv/323r17+Xz+Z599BgDDw8Pz589/+eWXP/74Ywh5M1MUtWLFioiIiN27d4em98EHH5w8efLSpUtms5nP5585cwZCxjjnz58vLS3NyMiYOXNmREREfn4+jJoVJEmiYG+//faBAwcyMjIOHz6MHv/kk08WLVoUERHx17/+VaPRIBOMJEkAuHDhwgsvvPDwww83NTUhBd55551PP/0UXZ87d2737t3Z2dlGo7G/vx+l9d5777W3t/f09Fit1v3793d0dDAM09HRsXfv3j179qBJlvPnz3d1dfX29ra3t+/fv18gEFy6dAkAaJq+cOGC0WjctWvXhg0bDh8+jMw6hmH8fn9LS0thYeGOHTtOnToFAGazmcfjfe9733vqqaeOHDnS3d1dXV09d+5cpVKJ1Hv77bffeOON7Oxsq9WK1GNZ9vz586dOnbp8+bJery8tLQ1P+oTxr4WbZZy8vLyIiIjXXnstPz9/ypQpERERO3fu7O3tBYBly5b94Q9/QPPHoYMjxDgpKSmtra0nTpy4ePEiAJSWls6cOXPlypU8Hu+BBx5YtGjR+fPn0SMajWbWrFlPP/30rFmzZsyYEWrjoAgZhtFoNC+++OKTTz752muvPfbYY88++2xtbW1HR8ff/va3iIiIRx555ODBg8gQQE/Z7fYf//jHcXFxfX19odlmWVYul/N4vNmzZ//lL395/PHH33zzTTQbdeTIkWeffXbZsmUxMTFTpkx5/vnnMzIyVq5c+cQTT9xxxx1Lliy5cuUKhmHPP//8qlWrNm3aNG3atO985zuFhYVXr17t7e1Vq9XZ2dkLFix48sknp02btmDBgnfffRcAxGLxn/70pz/84Q9cLvfQoUM9PT3V1dUPPvjgd77znUcffXT16tUfffQRstS2bdsGAEi9WbNmPfXUU3/605927NiBSOfgwYMvvPDCmjVr5syZc++99y5cuPDDDz/8+tpHGGHcXtwa48THxxuNxrKysscee2zGjBkejwcAcnJy7rnnHhzH4fp5mYyMjIiIiClTpvzsZz979dVXvV4vAGRnZ0dERHA4nJqamtdff/2uu+4SCAQA0NPT8/LLL//85z9H73MULC8vD0JY7MKFCzNnzpwxY4bFYunv7xeJRA888MAzzzzz/vvvo4ntzMzMwcHB0AWso0eP3nHHHenp6cGpEHRx4cKFP//5z3/+85/ffffdd9555+WXX77//vsVCgWMWnNz5syprq6OiYmJiIh47rnnNBpNY2PjK6+8ctdddx07dmzPnj2If00mk1AofOyxxx599FGXyzU0NHTmzJn3339/eHh4cHBw+fLlERERfD6/r6/vqaeemjFjhtvtvnDhQltbW3d3NwCsX78eTZD39PRQFFVUVISswoGBgaeffvovf/nL2bNnz549+9JLL02ZMkWj0cDonHpkZKRWq509e/add97J5/O/iZYSRhi3A7c2qtq1axe6v3nz5jvuuOPQoUMwusKC3szBOYvgPM7MmTM3btxYUlKCxheIufbs2QMA27dvD32l33fffcEZDRQnmqgGABQnhmH//d//jdbLUBIJCQnf+973jh8/fvjw4eA0U3C3IYwusa1Zs2ZMdkQi0d133x1MrrCwMCIiYuXKlQCwa9euiIiIkpKSoBpI26Dyhw4dOnToUOj9zMzM//iP/0ClAQBnzpzZt2/fxo0bX3rppYiIiH379h0/fvzuu+8Oah4Eopji4mL0JyrkAwcO6PX6e++9d8uWLeg+sn1QLpBKqCLQ49u3b7/VWg8jjG8Lt8Y4QQpA3RL18FDigNEdNzRNozf83r17Q9PbuXNncIIG9XM0dMrMzAxlNNS3g6MqNFDavHkzGs0FY0NmlEAgOHr0aOhSWjCASCS67777kpKS0HRsEFlZWaHJoW6MujTSCplXSI1gl0bKHz16tLy8PKgejPb8kpISkiRLSkpiY2MXL16ckJDw+9//PiIioqysDNlEKDm0NBZqOQbjQcxy9OjRvXv3hjIRUi8tLS2YFnoEhUeFGUYY/xK4NcYJ9oG1a9fef//9aB1327Zt//mf/1laWgohRwfQVp3QXo2A6Al1mFDGOXTo0B133BF8q7/xxhtBBgkOkQ4dOvT//t//27p1azC2pKSk++67r7m5ef/+/WMYBz11+vTpJ5544he/+IXdbkePfPDBB59++unBgwfvuOOO3NxcdBP1fMRlKKeoG6P7wS6NfiorKysrKwtduVu+fPm9995LEASyTebPn3/58mUA2LFjB7JZampq7rzzzg0bNowp/dB0g38ePHhQpVJ95zvfCaqHCgoRH2IZlPSY10AYYfzzY1LGYa4/e5mTkxMREZGVldXX14fj+A9/+MMlS5agmeOMjIyHH37Y6XRCyDxOcOY4NTX1xIkTTqcTLfogxkGdBHUY1JF8Pt9jjz32m9/8RigUGo3G1157LWhowOioqr29/Ve/+tXvf/97l8vV29t77NixqVOnvvjiiwMDA8j6QPt3gkYWAPT19a1cuRIN7oqKitavXx8XF9fQ0HDmzJlHH3105syZ77777pkzZ5577rmHH37Y5XLB9XYH6uoo2uBPpaWlR44cQVt7BgYG6urqgvsD0GgrPT390qVLp0+f5vF4iB0++eST3/72t7/+9a9ra2stFktlZeU777wDACUlJREREatWrfrss88YhkFssm/fvvPnzz/yyCMvvPDC22+//dZbb7300kvTp09H6oWyDFIvvGMwjH8h3OjseOg+OhzHv//9799///0LFiyYOXMmj8draWkBgP7+/piYmOeee+7cuXNw/QEItGJ95513PvbYYw899OIf3eIAACAASURBVFBCQkIgEECdFm0mRpOgaHajv78fjR0eeOCBzZs3r1q16q9//euRI0eQZmgkQlGUQCB4/PHHn3jiiVdfffXFF1+Mioqqrq6G0QlpZP4Ety+iZ9va2pKTk7/73e9GRETcd999a9asQTNKhw8ffuKJJ2bOnPnSSy89//zzAoEgEAjA6IALTfEgDYPTPejPffv2IcaZMWPG7NmzX3jhhbS0NJ/PBwCtra2vvPLKtGnToqKi8vPz169f/9xzz5WVlTEMc+jQoalTp957773PPPPM1q1b0ao2QRB/+tOfpkyZkpaW1t3djRgHmTaHDx9+8sknn3322VdfffXll18uLy9H6/0op6jQ0DAzaAqFEcY/PybdczxmV94nn3zC5/MzMzNzcnKqq6uvXLmC7l+4cOGvf/3r/Pnzh4aGgpYRGlXV1dVt27YtJydn48aNGzdurKyspCjKaDSmpKTU1tYCQH19fWpqqtFoRFF99tlnfD5///797e3tly9f7ujoeP/9Ee6DUTMnEAh4vd5du3atWbOGz+ejFR+WZWtra5OTk+vr64MKh+7Q7enpqaysLCoqMhqNwQkdkiRtNlt2dnZx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" /&gt;&lt;br /&gt;The serial collector can be activated by using –XX:+UseSerialGC.&amp;nbsp; This collector is good for client side applications that have no strong pause constraints.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;The parallel or throughput collector &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;The design of this GC is focused on the use of more CPU cores during garbage collection instead of leaving the other cores unused while one is doing all the garbage collection. &lt;br /&gt;&lt;br /&gt;The young generation collector makes use of a parallel variant of the serial collector. Although it makes use of multiple cores it’s still a “stop the world” garbage collector. The use of multiple cores decreases total GC time and increased the throughput. &lt;br /&gt;&lt;img alt="" src="data:image/png;base64,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lStbW1vPnj179OjRDz/88MKFC6LGzZ07FyHEsqxEInn77be/+OKL8+fPm81miUQyceJEhNC33367cOHCBx54wOl07tu3b+zYsffcc09jY6PNZpNIJPfffz9JkhaLZdmyZX5v90ARqCAWi2XFihVxcXE6nc7vBvIPon3XuRNEELcW+u86gSun2/E8v3jx4j5Ck52d7Rcasesktnd27979wAMPLFq0CCFUWFjodwb7AQDYsmWLv0tFEMS9994rftyzZ89DDz301FNPrVy5cu3atSNGjLjnnnusVqtOp/PXhXpdP/Pmzevq6vrDH/7w+OOPL1++fN26dS+//PLdd99tMBj0er1fMkQIgtDe3l5UVBQTEyORSMaNG4cQMhqNEokkJCRELCN+a/z48Qihtra2Rx999K233hL/heP4z3/+8xUrVng8HlGbxP319fUSieTll1++gUvvdxKLH3meP378uNhB+25Jr9cbFJogbl1c1RncZ/rJmjVr+nSdUlNTJRLJ5s2bUW/rZv369ah3SFssKY46BTqDRWzdutXfdfrqq682bNggkUji4+M1Go1EInnssceio6OnTp06Y8aM+Ph4f4smLi6ux2iNRiKRrFy5srKyUiKRPPLII1FRUdOmTZs+ffrmzZuPHDki7p8yZQpCCADQ3d1NEMS4ceOWLFny8ssvSySSiIgIhJDBYPCLDurVHVFERNGZMGGC+C+GYSQSydSpU0WhefPNN8X9TqdTIpG89tprN3DpA0fQA/d//vnnOI6XlJQcOXIE9bZogmujgrilcY0Je6jXN6lSqe66667IyMgLFy4ghC5dujR16tR7771Xr9ej3hbNhg0bEEJKpfKnP/2p6JeRyWT+LlWg30csExoaKvpu/b5kh8Nx5513TpgwQQzx74fYhJk9e3aP0RqN6Pppbm6+6667Xn/9dfE4fpSXl0skksjISPFjU1PTI4888sorr3R3d4tqEhoaihCqqanxT5xBV4qL0+m88847/QNSeXl5v/zlLzEMc7vdEonk9ddfF/fb7XaJRPKvf/3rBi59H+eLv3PU2dn5zDPP3H///bNnz3Y6nYHlb6CWIIK4GXBtZ7D49/jx42+99dbPf/7z1atX19XVJScn//rXv545c6a4PlCcRyO2XNra2p566qmRI0caDIbY2Ng+zmDxzfzhhx+OGjXqF7/4xfr162tq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" /&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;A collection of the old generation happens in the same way as a serial collection. &lt;br /&gt;&lt;br /&gt;The throughput collector can be activated by using –XX:+UseParallelGC &lt;br /&gt;&lt;br /&gt;This collector is efficient on machines with more than one CPU, but still has the disadvantage of long pause times for a full GC. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;The parallel compacting collector&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;This GC is new since JDK 1.5 update 6 and has been added to perform old generation collections in a parallel fashion. &lt;br /&gt;&lt;br /&gt;A young generation collection is done the same way as a young generation collection in the throughput collector. &lt;br /&gt;&lt;br /&gt;The old generation collection is also done in a “stop the world” fashion, but is done in parallel with added sliding compaction. The collector consists out of 3 phases: mark, summary and compaction. First of all the old generation is divided into regions of fixed length. During the mark phase objects are divided among several GC threads. These threads mark all live objects. The summary phase defines the density of each region; if the density is large enough no compaction will be performed on that region. As soon as a region will be reached for which the density is low enough to do compaction (the cost of compaction is low enough), compaction will be performed on all subsequent regions based on information from the summary phase. The mark and compaction phases are parallel phases while the summary phase is implemented serial. &lt;br /&gt;&lt;br /&gt;The parallel compacting collector can be activated by using –XX:+UseParallelOldGC &lt;br /&gt;&lt;br /&gt;The collector is efficient on machines with more than one CPU and for applications that have higher requirements regarding pause times, since a full GC will be done in parallel.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;The Concurrent Mark Sweeper &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;The focus of this GC is on reducing pause times rather than improving the throughput. Some java servers require large heap space, leading to major collections that can take a while to complete. This behavior introduces large pause times. That’s why this GC has been introduced. &lt;br /&gt;&lt;br /&gt;The young generation collection is done the same way as a young generation collection in the throughput collector. &lt;br /&gt;&lt;br /&gt;The biggest part of the old generation collection occurs in parallel with the application threads, resulting in shorter pause times. The CMS will start a GC before the tenured space will be full. Its goal is to perform a GC before the tenured space will have no more space left. Due to fluctuations in the load of a server the tenured space can be filled more quickly than the CMS GC can be ended. At that moment the CMS GC will stop and a serial GC will take place. The CMS has 3 major phases: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Initial mark: the application threads will be stopped to see which objects are directly reachable from the java code. &lt;/li&gt;&lt;li&gt;Concurrent mark: during this phase the GC determines which objects are still reachable from the set of the initial mark. Application threads keep on running during this phase. This makes that this phase can’t determine all reachable objects (since the application threads are still running new objects can be made). For this reason a third phase is required.&lt;/li&gt;&lt;li&gt;Remark: an extra check will be performed on the set of objects from the concurrent mark phase. Applications threads will be interrupted, but this phase makes use of multiple threads. &lt;/li&gt;&lt;/ul&gt;Since there is some overlap between the different phases, this GC introduces some overhead. &lt;br /&gt;&lt;img alt="" src="data:image/png;base64,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Tk76+vpz5szZs2fP5MmT33nnnTFjxhw4cOCPsIg3FikiAQBbtmxp3779hg0bpF9jY2OnTp06f/780aNHx8TEZGRkTJgwwdLS0sXFRUdHZ9asWcXFxa6urr1797a2tr527dqyZcs0NTUvX7586dKldu3aKRSKhISEAQMGTJ48OTU11cfHZ/DgwVOmTElISFi/fr2JiQkzpMzMzIsXL3733XfW1tYjR44cNGjQyZMnfXx83nvvPX19/eTkZCZqVVVVU6dO7dWrl66ubmRkZGZm5vjx47W1tb/55psrV66wJvP111+bmJgUFRUVFBSYmppOmjRp48aNe/fu7du3r0Kh2L9///Lly5mRl5aWDhgwwNjYOD8/HwBiYmI6duyYnZ29Y8cODQ2Nr7/++uLFi2PGjDE1NQWArVu3jhw5csyYMczsRVF0d3f/8ssvR44cuWrVqp07d44fP37u3Lnz58/v0KHDmjVramtr5cE3+fsSzu/Hr+syABBCGhoaNm3aZGBg0LdvXxsbG+YpGBkZxcXFnT17tl+/fnv27AkJCdHQ0HB3d1epVI6OjlpaWqdPn66pqQGA48ePa2pqbtiwITQ0VE9PjzkC7AGfPHnSzMzM3t5+wYIFixYt2rZt27hx47p06XLmzBmlUvnLL78AwLJly7p161ZeXu7n56ehoaFQKERRXLNmjZaW1nfffWdpaXn8+PHHjx8/ffr00aNHjo6O7733nomJSXp6+qVLl7744ouQkBAvL6+33nprwoQJe/fuNTc3t7a2Hjt27KJFix48eGBgYLBo0aJz584ZGRmtX78+JyfHwMAgKSnJ39//k08+OXz48Lx58wYMGJCbm/vkyZPa2tq5c+e+9957p0+flioxLS3tn//856FDh44cOaKnp7d///7AwMD33nsvJSVlyZIl77///p49exYtWjRw4MC1a9f26dPHysrq3r17s2bN6t+//4ULF1hE6Pjx45988klEREROTo6+vn5wcPD9+/dfvHjh5OSko6PDaozzGuSDvBUrVvz9739PT09nX2/evDlkyJB58+bV19fb29sPHz5869aturq6FhYWFRUVtra2Q4YM8fLyMjIyCgoKevDgwYsXL5ydnXv37n316tVr167p6OisXbs2MjLyrbfe8vT0rK+vd3d319DQ8PX1vX79+tChQ+fNm3fnzp2BAwcuXrz4p59+6tWr19KlSw8fPqylpRUcHFxaWqqtre3k5ARNo8+7d++OGTPGysrK0tLS1tZ24cKFDg4Os2bNGjRoUGFhIbOHEydOfPTRR+Hh4Tdv3uzZs+ekSZPu3LmTm5traGg4YsQIMzOz+Ph45vg/fPgwNjbWwMBAT09v4cKFoaGhzOa9vb3feuutyZMn796928zMzM/Pr7q6+vPPP//+++/v3r07ePDgH374obCw0NjYODY2NiMjw8jIyNLSctCgQXPmzLl7966ZmZmBgcHly5dBNsGjxbcynN+cludjENkEA3kPmZ+f7+zsrKWlNXLkSCsrK21t7SlTplhYWGhoaPj7+4eFhXXr1u3ChQsA4OTk1KtXr8LCwlu3bkVFRU2bNu29995jI/1evXqxjp1lu3fv3smTJ69fv37BggXdunWLiIhYvXp1586d09LSAODixYu+vr6fffZZ//79b9y44e3tLV3C19dXQ0ODXfrQoUNfffWVm5tbXV3dkydPgoODu3TpYmhoeOjQITMzs6lTp86YMaNv375Tp06dPXv2ihUrVqxY8eWXXw4aNMje3v6jjz5ydHQMDQ1l1m9ubv72228HBASEhYX16dPn0aNHoaGhn332GXO1wsPD3d3dO3TosHHjRqkSV69ePXDgwJs3b964ccPQ0DAmJmbt2rX6+vr37t0LCQnp27fv/fv3AwICDAwMQkNDDQ0NPT09AWDNmjW6uroFBQW3bt2KjIycPn36u+++GxkZGR0dra+vz+4RAJhAXLp06Q+yiDcWuWSsX7++Xbt2kr986dIlbW1tVu1eXl69e/f28/MzNDR0d3cHAHd3d2Nj42+//XbQoEFSta9YsaJHjx6lpaWlpaW9evUKCQkJDQ3t0aMHC1Y4OTlpa2uXlpaWlJR8+umnn376qYODQ/v27RcuXJiTk6OnpxcQEPDo0SNdXV0vL6+bN2/26tWLXZ258+Xl5SNGjHBxcXFzc+vatWuPHj3CwsJcXV319PTOnTtXWVkZERFhZmb27rvvBgQElJeX6+npeXt7A0BeXt7QoUM1NDRsbGwAYO/evV988YVCobh//35OTo6jo2PHjh0HDBhgYGBgYWExc+bM/v37m5mZWVlZLV68+NixY0VFRYaGhkx5P/nkk+XLlwcGBvbo0cPU1NTKyuqdd975/PPPR4wYwapl9erVPXv2zM7OBtnEcC7Kfwwt67I0q5HFldReRq1YseLdd9/V0dFp167doEGDbGxsLC0ts7OzAwIC9PX1meauXLlSX19/586dtra2w4cPNzEx0dDQiImJCQoK6t2798WLF6HJd9i1a9fMmTMzMjKWLl2qoaHh4+Nz8OBBQ0PDAwcOpKenDx06dNq0aX379jUwMLh586ZCodDV1WXOo6en54cffvj+++/b2tomJSWtWLFi+/bt0ttIJycnDQ2N+Ph4Jyenjh07Dho0SKFQWFlZffjhh0uXLt28efOwYcO0tbWtra3Nzc0PHToUFhb2/vvvDxo0yMLCYtasWQUFBf7+/np6epcvX/7+++//+c9/bt68edmyZXv27Dl//vyAAQNGjx59+fLldevWHTx4MC4uTl9f/8SJE2lpaSNHjiwoKAgMDNTT0ysvL/f19e3du3d5eblCoRgwYEB4eDiTg5qamjFjxowZMyYrK8vc3NzIyIhVUVRU1K5du/7xj3+Eh4ffv3//0aNH8+fP19TUPHny5B9qF28gVDYt7OrVqwYGBqNHj7548eLWrVtXrlzZq1ev+fPnNzQ0WFtbDx8+PCEhYeDAgW5ubgDg7OxsZGQ0a9asTp06RUREsGr39fXV0dE5cOBASkrKO++8ExISwmJT7NWIs7Ozrq7u1atXS0pKBgwY0KNHD1tb2xkzZiQlJRUWFurp6fn4+DA5Zj51586dV61aBU1vF0tLS4cOHerv73/kyJGPP/64U6dO586d8/f379279+bNm62srIyNjceOHauhoREQEFBSUtK7d+81a9YAQH5+vpGRkaamppmZWVFRUUZGxvLly7ds2aJUKlklLFu27O233/7444979OgxePBgT09Pa2vrDz/80M7Orry8vLi42NDQsEePHszs09LSmNl/+umnVlZWtra2zs7OBgYGLi4u9fX148eP//LLLx89esRyJrIlYG3xeP+3aFmX5cs92GMoKiry8vJaunSps7MzU8nNmzcvXrx45MiRP/zww6ZNm5RKpaOjY+fOndn7hGXLlnXv3n379u1TpkwZPnx4cHDw0KFDN2/evH79+g4dOmzZsoW9nwGAgICAgQMHXrhwITg4uGPHjgcPHjx58uTf//736OhoFhZYsWLF8uXLJ0yYcO3aNVdX186dOzPpX7x4cdeuXRcuXPjpp5+uXbuW5ZaZmbls2TJnZ+eBAwfq6emV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4sWLLVq04PtgnD59um3btuPGjZs4ceK0adMePnwo6fIvpP78ZcEXE6IEmZmZmz02Ozs6jfjq67at27Ro1rxdm7ZN33t/9MhRcplcLpPJZfJfuW3evDknJ0fQ5a5du44ePfrq1asAUFlZuX79+nfeeeejjz6KjIxUKpVjx45dvHjx8OHDAwMDjx07Nm7cuAULFixcuLBVq1bOzs583OP69euDBw9+++23v/rqq7Vr1/bt23fw4MFDhgz57LPP1Gq10Wh0cnL64osvhgwZsnz5cl7NZTJZ+/btz5w5ExkZaWFh8fnnn+fm5g4fPnzatGmU0m3btk2YMGHZsmXDhg3btm3b8ePHp02bNnbs2F27ds2aNevjjz8+f/68Xq93cnL6/PPPP/nkk88++4x/keQvytPTs1u3bnPnzv3kk09cXFweP368f/9+FxeXr7766quvvrpw4UJubu57773n6Oh46dKlv//97w4ODoWFhZMmTZo3b97Bgwf1en1YWNigQYOGDh06cuTIAwcOgEmX660K1cLV2eUvf/5L0/ff796t24oflu8MCy+6eKnhsvtVMMwYYZRjjEOUIkoJANUlsZ0TjBGTjTvGoshJaMcost+JPL5HASglGD1/ZcnKzFTI5YsWLnz/vffq3dv4z2U3PRQLCwsXLly4f//+PXv2LF68+Pr161evXl2wYEFKSkpqauqiRYuKiooIISqVytvbOzk5edmyZXFxcQBw4sSJHTt2pKWlZWRklJWV5eXlLVmyJCQkpLKyEgB0Ot38+fN592LTpk2+vr4AkJiYaGdnl5mZqdVqfX19d+/efeLEicuXL1+5cmXx4sW82fz8/KVLlyYkJKhUqoULFxYUFPzGd4ZH0uXnc7WIh3Ju2LCBf+d6589/adu6jVV7S8sP2lu1t2zRrHk9vtC5ubkBAGOsvLzczc3t/fffHzBgAF8/+Libm5vbw4cP//nPf86bN0+v18+fP793797h4eGdO3eeM2fOrVu37OzsOnfunJaWdv/+fQBYs2aNtbW1Vqvl3/iWL1++b9++du3ayWSyixcv9ujRIzAw8MSJE5988omvr29VVVVSUtJHH33k6+vr5ORkYWExYsSIuLi4adOmeXt737t3r0ePHosXL66urp4/f37//v2joqI+/PDD0aNHl5SUrF692sbGpqCgIC0trVevXiqVysXFpXPn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
