tag:blogger.com,1999:blog-46337884305142376972024-03-18T13:12:19.058-07:00i am jambaymy personal musings - mostly on platforms and middleware stuffUnknownnoreply@blogger.comBlogger58125tag:blogger.com,1999:blog-4633788430514237697.post-73607525561113816252020-07-20T11:48:00.000-07:002020-07-26T09:54:34.797-07:00United States Schools Should Only Reopen When It's SafeWe had a very long school board session last week in Dublin, CA. They’ve been about 4-6 hours consistently over the last year, not just from COVID. My wife watches most of them. It’s like reality TV. There are characters, plot lines, and rivalries. Our local school board <a href="https://patch.com/california/dublin/dublin-unified-school-district-superintendent-marken-resigns">is in turmoil</a> as half of our town is newer construction on the east side of town and half of the town lives in established neighborhoods from the 1980’s and prior. We’re building a 2nd high school because our existing one has 3k kids and growing. The east side of town wants to keep the tax money flowing into new construction of schools in the east, such as the new high school. The west side wants a balance of investment as our existing schools are older and need renovation.
<p/>
<p/>
Last week the school board revealed a change in plans to not reopen our schools for in-person learning. The prior plan-of-record had each family choose among three fully supported options:<br/>
* In-person 5 days a week<br/>
* In-person 2 days a week, remote 3<br/>
* Full remote<br/>
You could choose to move towards more remote later, but you could not move towards more in-person until the school board’s assessment of what it takes to keep school safe changes. The updated plan is for full remote learning for everyone for the 1st 6 weeks of the school year, and likely beyond that. I believe this is the best solution right now given the safety risks to kids and staff.
<p/>
<p/>
I believe it’s important to establish guiding principles for how to address school during COVID-19. Here are mine:<br/>
1. Prioritize safety over inconvenience.<br/>
2. Public health experts define safety.<br/>
3. Do what works.<br/>
<p/>
<p/>
My views are impacted by my wife’s work as a nurse in San Quentin prison for the last month part time. About 2 months ago they had zero cases. Then there was a <a href="https://www.foxnews.com/health/coronavirus-outbreak-san-quentin-california-prison">botched prison transfer</a> where COVID-positive prisoners were brought in due to incompetent testing and transfer protocols. Within a short time there was a huge outbreak among the 4k prisoners. San Quentin prison <a href="https://slate.com/human-interest/2020/07/san-quentin-coronavirus-outbreak-prison-diary.html">went on full lockdown</a> with prisoners unable to leave their cells except for very stringent protocols. They try to minimize any ability for prisoners and staff to interact to minimize the chance of spreading. The <a href="https://www.cdcr.ca.gov/covid19/population-status-tracking/">positivity rate is now 59%</a> (see below) despite going on lockdown with a much lower positivity rate. When you are indoors with infected people, COVID-19 will spread. Just as it did on cruise ships, <a href="https://www.nytimes.com/2020/04/20/health/airflow-coronavirus-restaurants.html">restaurants</a>, <a href="https://www.dailymail.co.uk/news/article-8094933/How-one-man-spread-coronavirus-NINE-people-bus.html">buses</a> and <a href="https://www.livescience.com/covid-19-superspreader-singing.html">church choir practice</a>. Gatherings indoors are not safe without many precautions. You don’t have to be within 6 feet.
<p/>
<a href="https://1.bp.blogspot.com/-NYMW376XvmQ/XxXkdYmwnlI/AAAAAAABExI/-DFlOBi4_oI8PeE9bWGIjFk8XxqmvmBfgCLcBGAsYHQ/s1600/Screenshot%2B2020-07-19%2B16.11.50.png" imageanchor="1" ><img border="0" src="https://1.bp.blogspot.com/-NYMW376XvmQ/XxXkdYmwnlI/AAAAAAABExI/-DFlOBi4_oI8PeE9bWGIjFk8XxqmvmBfgCLcBGAsYHQ/s320/Screenshot%2B2020-07-19%2B16.11.50.png" width="320" height="184" data-original-width="1003" data-original-height="577" /></a>
<p/>
Here is a fascinating map of how COVID-19 <a href="https://www.nytimes.com/2020/04/20/health/airflow-coronavirus-restaurants.html">spread from one dining session</a> in a restaurant in China where they did extensive contact tracing. Note that the air conditioning airflow impacted who got infected and who didn’t. It wasn’t strictly based on distance alone.
<p/>
<a href="https://3.bp.blogspot.com/-BoUQ-Haf6KE/XxXlCiF0NnI/AAAAAAABExQ/33DpGYmk3JoclPZa5ycfRITaEa6mNA5AgCLcBGAsYHQ/s1600/Screenshot%2B2020-07-19%2B16.17.39.png" imageanchor="1" ><img border="0" src="https://3.bp.blogspot.com/-BoUQ-Haf6KE/XxXlCiF0NnI/AAAAAAABExQ/33DpGYmk3JoclPZa5ycfRITaEa6mNA5AgCLcBGAsYHQ/s320/Screenshot%2B2020-07-19%2B16.17.39.png" width="240" height="320" data-original-width="580" data-original-height="774" /></a>
<p/>
This diagram created from using Closed Circuit TV cameras in Hunan China <a href="https://www.dailymail.co.uk/news/article-8094933/How-one-man-spread-coronavirus-NINE-people-bus.html">shows how a bus passenger was infected with COVID-19</a> despite not boarding the bus until 30min after the infected passenger had got off the bus.
<p/>
<a href="https://3.bp.blogspot.com/-Cd5go6CPmhg/XxXlSZTO8OI/AAAAAAABExU/MW6cWmnoM7o9WLBcKW1t6nFZqU5ezoHOQCLcBGAsYHQ/s1600/Screenshot%2B2020-07-19%2B16.34.04.png" imageanchor="1" ><img border="0" src="https://3.bp.blogspot.com/-Cd5go6CPmhg/XxXlSZTO8OI/AAAAAAABExU/MW6cWmnoM7o9WLBcKW1t6nFZqU5ezoHOQCLcBGAsYHQ/s320/Screenshot%2B2020-07-19%2B16.34.04.png" width="320" height="163" data-original-width="1600" data-original-height="814" /></a>
<p/>
<p/>
South Korea just reported a study <a href="https://www.nytimes.com/2020/07/18/health/coronavirus-children-schools.html?searchResultPosition=1">indicating children 10 years and older spread COVID-19 just as well as adults</a>.
<p/>
<a href="https://3.bp.blogspot.com/-8xjrRn8GSHM/XxXlh9x7D6I/AAAAAAABExc/O73IhtbKxikUxXZCiSahyodFRLPYTCgnACLcBGAsYHQ/s1600/Screenshot%2B2020-07-19%2B16.40.39.png" imageanchor="1" ><img border="0" src="https://3.bp.blogspot.com/-8xjrRn8GSHM/XxXlh9x7D6I/AAAAAAABExc/O73IhtbKxikUxXZCiSahyodFRLPYTCgnACLcBGAsYHQ/s320/Screenshot%2B2020-07-19%2B16.40.39.png" width="320" height="279" data-original-width="801" data-original-height="698" /></a>
<p/>
I understand the reasons why many people want our schools to open to onsite teaching. I want to do it as soon as it’s safe, which I don’t think it is now. For example, the recent <a href="https://www.economist.com/leaders/2020/07/18/the-risks-of-keeping-schools-closed-far-outweigh-the-benefits">Economist article “Let Them Learn”</a> has basic facts wrong. They suggest a policy with remote-only learning does more harm than the risk of COVID-19. The Economist claims do not make sense in the context of this new study from South Korea.
<p/>
<a href="https://2.bp.blogspot.com/--gH50CwLS8A/XxXltm1SevI/AAAAAAABExk/nT6ernDt_K09q_0Rt9YwYAxNRvsNTUrGACLcBGAsYHQ/s1600/Screenshot%2B2020-07-19%2B05.58.14.png" imageanchor="1" ><img border="0" src="https://2.bp.blogspot.com/--gH50CwLS8A/XxXltm1SevI/AAAAAAABExk/nT6ernDt_K09q_0Rt9YwYAxNRvsNTUrGACLcBGAsYHQ/s320/Screenshot%2B2020-07-19%2B05.58.14.png" width="320" height="96" data-original-width="657" data-original-height="198" /></a>
<p/>
The South Korea shows that 10 year olds and above are just as likely to spread the disease as infected adults, and therefore I believe the Economist claim is wrong to say that since kids aren’t “especially likely” to spread it more than adults and therefore it is safe. The Economist's claim about school staff from Sweden not getting COVID-19 at higher rates in other jobs is not comforting. We do not want school staff and volunteers to contract COVID-19 from school at all. We cannot have family members getting infected by kids. If the staff and volunteers don’t feel it’s safe, then <a href="https://www.nytimes.com/2020/07/20/world/coronavirus-updates.html?action=click&module=Spotlight&pgtype=Homepage#link-3a65dbfe">many of them won’t return</a> and we cannot have schools be effective without healthy staff and volunteers.
<p/>
There are models that are known-to-work, <a href="https://www.msn.com/en-us/news/other/taiwan-which-has-been-prepared-for-a-pandemic-since-sars-has-stood-out-for-its-effective-response-to-covid-19/ar-BB16M1Cd">such as Taiwan</a>. Taiwan has children in schools and their economy is largely back to normal. Their response involves a collection of measures including strict quarantine protocols for those crossing the national border, widespread mask wearing with enforced fines, widely available cheap and frequent testing with fast results (say 48 hours and under), and contact tracing.
<p/>
Meanwhile in the United States we are not enforcing quarantine during border crossings. We do not have widespread testing that gets results under 48 hours. We do not have a culture of wearing face coverings or national government guidance to temporarily step up face coverings to get the virus under control. Our outbreaks are currently too large to do effective contact tracing. If we want to make schools safe and stay safe, I believe we need to have a national plan that addresses these problems. Thinking about school as an isolated scenario from other parts of life doesn’t make sense.
<p/>
<a href="https://2.bp.blogspot.com/-meV_f1aEJcc/XxXl16MqMqI/AAAAAAABExs/rLuJ3uFut4IFGJmmiMPHAiyeCzEoGvPvACLcBGAsYHQ/s1600/MissouriGovTweet.png" imageanchor="1" ><img border="0" src="https://2.bp.blogspot.com/-meV_f1aEJcc/XxXl16MqMqI/AAAAAAABExs/rLuJ3uFut4IFGJmmiMPHAiyeCzEoGvPvACLcBGAsYHQ/s320/MissouriGovTweet.png" width="234" height="320" data-original-width="598" data-original-height="817" /></a>
<p/>
Some politicians are trying to <a href="https://twitter.com/stltoday/status/1285199041417158663">force schools to reopen</a>. I am confident that regardless of political affiliation, families of school-age children will resist the push to send their kids to school given the COVID-19 risks. It just doesn’t make any sense right now. We should adopt policies known-to-work by other advanced countries and recognize that we can have a thriving economy and schools only we put in place a system that suppresses the virus and keeps our people safe.Unknownnoreply@blogger.com43tag:blogger.com,1999:blog-4633788430514237697.post-2882069028302744442015-01-02T12:28:00.001-08:002015-01-03T08:21:45.432-08:00boot2docker Work-around for API Limit Error<b><span style="color: red;">update Jan 3rd, 2015: see bottom of this post for follow-up tweets from docker project</span> </b><br />
<br />
i recently got a new laptop and had to reinstall some software. i kept having trouble with boot2docker. after running <span style="font-family: Courier New, Courier, monospace;">boot2docker up</span> followed by <span style="font-family: Courier New, Courier, monospace;">docker version</span> i kept getting an error about an API versions mismatch between the docker client and server. sure enough <span style="font-family: Courier New, Courier, monospace;">boot2docker ssh</span> confirmed that i had an old server despite using the new boot2docker 1.4.1 download package. the standard boot2docker update procedure did not work with some cryptic command about an API rate limit being reached: <span style="background-color: white; color: #333333; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 16.7999992370605px; white-space: pre;">FATA[0000] Error response from daemon: client and server don't have same version (client : 1.16, server: 1.15)</span><br />
<script src="https://gist.github.com/jbayer/72412fd4e0883a65ef83.js"></script>
<br />
it turns out that boot2docker relies on github URLs to determine the latest version and too many unauthenticated users were invoking github from my NAT'd originating IP. <a href="https://github.com/boot2docker/boot2docker/issues/481">boot2docker issue 481</a> is currently tracking this.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://github.com/boot2docker/boot2docker/issues/481"><img border="0" src="https://github-shields.cfapps.io/github/boot2docker/boot2docker/issues/481.svg" /></a></div>
thankfully there is an easy work-around already available that works with the latest 1.4.1 release of docker shown below.<br />
<script src="https://gist.github.com/jbayer/b4caa3f88326376b5b30.js"></script>
now my local docker workflow is all happy again.
<br />
<br />
<span style="color: red;">update Jan 3rd, 2015:</span> the docker team followed up yesterday explaining that the <a href="https://github.com/docker/machine">docker machine</a> project was the preferred going forward approach and that boot2docker would be sunset. i was able to get it working, but the distributed machine binary requires a custom build of docker from a personal repository, which is certainly not ideal if you're concerned about security. they explained that was the path forward until new identity auth work was merged into docker with <a href="https://github.com/docker/docker/pull/8265"><img border="0" src="https://github-shields.cfapps.io/github/docker/docker/pull/8265.svg" /></a>.<br />
<blockquote class="twitter-tweet" lang="en">
<a href="https://twitter.com/jambay">@jambay</a> did you try <a href="https://t.co/0oqaFb7qHF">https://t.co/0oqaFb7qHF</a> ? It is a replacement for the boot2docker cli /cc <a href="https://twitter.com/bfirsh">@bfirsh</a> <a href="https://twitter.com/ehazlett">@ehazlett</a><br />
— Solomon Hykes (@solomonstre) <a href="https://twitter.com/solomonstre/status/551139730817961984">January 2, 2015</a></blockquote>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>
<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/jambay">@jambay</a> <a href="https://twitter.com/solomonstre">@solomonstre</a> <a href="https://twitter.com/bfirsh">@bfirsh</a> we will as soon as identity auth is merged (<a href="https://t.co/0CbbLKJkhW">https://t.co/0CbbLKJkhW</a>)</p>— Evan Hazlett (@ehazlett) <a href="https://twitter.com/ehazlett/status/551182903455928321">January 3, 2015</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
Unknownnoreply@blogger.com378tag:blogger.com,1999:blog-4633788430514237697.post-28706255978384752632014-02-03T00:13:00.002-08:002014-02-03T00:13:29.286-08:00Remote Dependencies, Convenience, Risk and Other Considerations for Operating Distributed Systems<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-G_681H_K4Ic/Uu9AcpzbkUI/AAAAAAAAKnw/WzmG_w-1xvE/s1600/jenga.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-G_681H_K4Ic/Uu9AcpzbkUI/AAAAAAAAKnw/WzmG_w-1xvE/s1600/jenga.jpg" height="320" width="213" /></a></div>
<div style="background-color: rgba(255, 255, 255, 0.298039); color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25.600000381469727px; margin-bottom: 20px;">
One deeply held principle by experienced distributed system operators that I have worked with is that you should have no external dependencies to your software other than the ties to minimum requirements of the OS such as common system libraries, utilities, and the kernel of the base OS. This approach should enable recreating a distributed system deployment without any dependencies on the outside world. When something goes wrong, you should have control over your own destiny. Reliance on any external dependency that is managed or hosted by someone else introduces risk that something outside your system can affect your ability to restore and recreate the system any time you need to.</div>
<div style="background-color: rgba(255, 255, 255, 0.298039); color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25.600000381469727px; margin-bottom: 20px;">
To use a simple metaphor, imagine your system is represented by Jenga blocks and it falls over as Jenga towers inevitably do. However, instead of being able to rebuild your tower you find out that a mandatory required component at the base of your tower is missing or unavailable now no matter what you cannot rebuild the tower exactly how it was before. Your new tower is going to behave differently in unexpected ways and you might topple over because you do not understand all the behaviors when using different building blocks combined in a different way.</div>
<div style="background-color: rgba(255, 255, 255, 0.298039); color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25.600000381469727px; margin-bottom: 20px;">
Some of the original designers of the software deployment project for Cloud Foundry named BOSH (<a href="http://twitter.com/marklucovsky/" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">Mark Lucovsky</a>, <a href="http://twitter.com/vadimspivak/" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">Vadim Spiwak</a>, <a href="http://twitter.com/derekcollison/" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">Derek Collison</a>) embraced this principle and tried to create a prescriptive framework that encouraged this approach. They had experience managing large scale distributed systems at Google (the web services APIs). <a href="https://twitter.com/skaar" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">Kent Skaar</a> also did similar for SaaS provider Zendesk. Given a software release that references specific versions of multiple software packages (known as a <a href="http://docs.cloudfoundry.com/docs/running/bosh/reference/" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">BOSH release</a>), an instantiation of that release (a BOSH deployment) can be reconstructed at any time with the deployment configuration (a <a href="http://docs.cloudfoundry.com/docs/running/deploying-cf/aws-ec2/glossary.html" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">BOSH deployment manifest</a>), the base OS images (the <a href="http://docs.cloudfoundry.com/docs/running/bosh/components/stemcell.html" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">BOSH stemcells</a>) and the software release (the <a href="http://docs.cloudfoundry.com/docs/running/bosh/reference/packages.html" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">BOSH packages</a> and <a href="http://docs.cloudfoundry.com/docs/running/bosh/reference/jobs.html" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">job templates</a> for applying configuration). at any point in time, properly implemented BOSH releases of large scale distributed systems can be recreated without external dependencies. That means this holds true even when the internet is unavailable.</div>
<div style="background-color: rgba(255, 255, 255, 0.298039); color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25.600000381469727px; margin-bottom: 20px;">
BOSH does give you the framework hooks to break out of this prescriptive principle and use external dependencies or at least external dependency formats if you choose to for convenience or other reasons. <a href="http://twitter.com/drnic" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">Dr Nic Williams</a> recently <a href="https://github.com/cloudfoundry-community/bosh-gen#fast-way---reuse-aptitudedebian-packages" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">implemented tooling to use apt packages</a> instead of compiling from source. another example: some of the Pivotal big data software intentionally targets CentOS/RHEL only and therefore only ships rpm packages rather than compiling Hadoop. A guiding principle is that you should be mindful of the tradeoffs you are making of convenience vs risk and tying your release to only one OS distributor.</div>
<div style="background-color: rgba(255, 255, 255, 0.298039); color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25.600000381469727px; margin-bottom: 20px;">
Examples of the tradeoffs:</div>
<ul style="background-color: rgba(255, 255, 255, 0.298039); color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25.600000381469727px; list-style: none; margin: 0px 0px 20px 25px; padding: 0px;">
<li style="line-height: 24px; list-style-type: disc; margin-bottom: 5px; margin-left: 15px; padding-left: 0px;">relying on an externally hosted package manager like apt-get could affect the availability or correctness of that dependency when you need it most</li>
<li style="line-height: 24px; list-style-type: disc; margin-bottom: 5px; margin-left: 15px; padding-left: 0px;">relying on debian packages could prevent someone from using your release unmodified with a CentOS image</li>
</ul>
<div style="background-color: rgba(255, 255, 255, 0.298039); color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25.600000381469727px; margin-bottom: 20px;">
A recent real-world example demonstrated <a href="https://groups.google.com/a/cloudfoundry.org/d/msg/vcap-dev/w5QOPQgWfpM/-EzOR20wQM0J" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">the risk of an external dependency changing unexpectedly</a>. The <a href="https://github.com/coreos/etcd" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">coreos/etcd</a>project that Cloud Foundry is using for storing stateful configuration data for the new Cloud Foundry Health Manager codebase had one of the dependencies (<a href="https://github.com/goraft/raft" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">goraft/raft</a>) force push to master of their git repository that overwrote some git history required by git to work properly. This situation has limited the flexibility of some users to make code modifications on several previous releases of Cloud Foundry without some tedious intervention.</div>
<div style="background-color: rgba(255, 255, 255, 0.298039); color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25.600000381469727px; margin-bottom: 20px;">
<a href="https://groups.google.com/a/cloudfoundry.org/d/msg/bosh-users/hpVl7AYJIfE/dtDnmXNC2FUJ" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">A common reaction</a> when learning about Cloud Foundry BOSH is <a href="https://groups.google.com/a/cloudfoundry.org/d/msg/bosh-dev/ydrIW4h2wm4/-E77o8lTXUcJ" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">to question the prescriptive guidance to compile from source</a> when commonly used distributed package management systems exist in the Linux distributions. My recommendation is to understand the tradeoffs involved and make the best choice for your situation. You should explicitly call out external dependencies if you have them in your system. When you tower inevitably falls over, know how to rebuild it.</div>
<div style="background-color: rgba(255, 255, 255, 0.298039); color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25.600000381469727px; margin-bottom: 20px;">
<a href="http://www.flickr.com/photos/4st4roth/" style="-webkit-tap-highlight-color: rgb(255, 94, 153); color: #0094d4; text-decoration: none;">Thanks to Jose Hernandez for the Jenga image</a></div>
<div style="background-color: rgba(255, 255, 255, 0.298039); color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 25.600000381469727px; margin-bottom: 20px;">
This is a <a href="http://blog.cloudfoundry.com/2014/02/03/remote-dependencies-convenience-risk-and-other-considerations-for-operating-distributed-systems/">cross-post from the Cloud Foundry blog</a>.</div>
Unknownnoreply@blogger.com373tag:blogger.com,1999:blog-4633788430514237697.post-5725098217694234092014-02-01T19:51:00.002-08:002014-02-01T20:16:09.779-08:00How to Find Java Mission Control on OSX 10.9i was excited to show some of my colleagues how great <a href="http://www.oracle.com/technetwork/java/javaseproducts/mission-control/index.html">Java Mission Control</a> is to debug, troubleshoot and monitor local and remote Java applications. On my OSX 10.9 laptop i installed the latest Oracle JDK 7, which now includes Java Mission Control with the JDK, and i expected to be able to type <span style="font-family: Courier New, Courier, monospace;"><span style="font-size: x-small;">jmc</span> </span>on the command line. that didn't work and resulted in a command not found! OSX Finder wouldn't find <span style="font-family: Courier New, Courier, monospace; font-size: x-small;">jmc</span> it either. i <a href="https://community.oracle.com/thread/2579717">found a hint on an OTN community thread</a>. the Java installer only put installation files in the obscure and hard to find <span style="font-size: x-small;"><span style="font-family: Courier New, Courier, monospace;">/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/</span> </span>instead of also placing a shortcut in <span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/usr/local/bin</span> which should link to <span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jmc </span>that should change when <a href="http://www.beeworks.be/2013/10/switch-java-osx/">you use <span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/usr/libexec/java_home</span></a>. you can see the install location by running this command:<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">$ find /Library/Java -name jmc</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/jmc</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/missioncontrol/Java Mission Control.app/Contents/MacOS/jmc</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
the solution i chose was to create this executable file in <span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/usr/local/bin/jmc</span> <br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#!/bin/bash</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/jmc</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
maybe it's because i had JDK 7 installed originally before Mission Control was included with it. i'm not sure, but i hope this helps someone else.Unknownnoreply@blogger.com122tag:blogger.com,1999:blog-4633788430514237697.post-37192761458652210352013-12-19T17:57:00.001-08:002013-12-19T17:57:05.575-08:00Friendly BOSH Labels in vCenterthanks to the BOSH team for showing me how to do this. <a href="http://github.com/cloudfoundry/bosh">Cloud Foundry BOSH</a> automatically tags vSphere deployed VMs with various attributions including the job and index. this way instead of justing have a GUID as the name in vCenter, you can add additional columns that are already populated with the BOSH job and job index. we'll be adding this to the <a href="http://docs.gopivotal.com/pivotalcf/index.html">documentation for pivotal cf</a> soon. click the image to see the full size.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-L-5suLFnASs/UrOjj-WwvVI/AAAAAAAAKnQ/-4Wuk5giNYE/s1600/vSphere_Web_Client_job_index_marked.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="220" src="http://1.bp.blogspot.com/-L-5suLFnASs/UrOjj-WwvVI/AAAAAAAAKnQ/-4Wuk5giNYE/s400/vSphere_Web_Client_job_index_marked.png" width="400" /></a></div>
<br />Unknownnoreply@blogger.com26tag:blogger.com,1999:blog-4633788430514237697.post-79771200163900683262013-12-12T00:35:00.000-08:002013-12-12T00:40:51.857-08:00Send Interactive Commands to a Cloud Foundry App with websocketdon my way home from work tonight i saw the tweet below about connecting STDIN and STDOUT from remote processes with websocket. i tried it out quickly locally and it worked streaming <a href="https://github.com/joewalnes/websocketd/blob/master/examples/bash/count.sh">count.sh</a> output of numbers from 1 to 10 sent to STDOUT 1 second apart over websocket using localhost. can i apply this to cloud foundry easily? it turns out the answer is yes!<br />
<blockquote class="twitter-tweet" lang="en">
websocketd turns any application using STDIN/STDOUT into a websocket server: <a href="http://t.co/fxDRUcFhHZ">http://t.co/fxDRUcFhHZ</a> - simple, clever... useful!<br />
— Ilya Grigorik (@igrigorik) <a href="https://twitter.com/igrigorik/statuses/410939957805457409">December 12, 2013</a></blockquote>
you can easily include the small linux 64bit <a href="https://github.com/joewalnes/websocketd#download">websocketd binary</a> and <a href="https://github.com/jbayer/websocketd-cloudfoundry/blob/master/bash.sh">this bash.sh script</a> with your app and remotely send commands over websocket that will execute in the app container and stream the STDOUT from the command back over websocket to the browser. this is helpful for sending commands like rake <span style="font-family: Courier New, Courier, monospace;">db:migrate</span> or to explore the linux container file system after the buildpack has run. see the screenshot and video below. for the impatient, <a href="https://www.youtube.com/watch?feature=player_detailpage&v=aRq38DEa-gE#t=177">skip to about 3:00</a> of the short demo.<br />
<br />
<a href="https://github.com/jbayer/websocketd-cloudfoundry">more instructions are on github</a>. also see the <a href="https://github.com/joewalnes/websocketd">websocketd project</a>.<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/aRq38DEa-gE?feature=player_embedded" width="560"></iframe>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-JSkXg9ith_0/Uql1Du9ieaI/AAAAAAAAKm4/321Y5roQk74/s1600/websocketd_console.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="234" src="http://2.bp.blogspot.com/-JSkXg9ith_0/Uql1Du9ieaI/AAAAAAAAKm4/321Y5roQk74/s400/websocketd_console.png" width="400" /></a></div>
<br />
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>Unknownnoreply@blogger.com21tag:blogger.com,1999:blog-4633788430514237697.post-1427048686815892562013-12-08T10:10:00.003-08:002013-12-08T12:05:50.063-08:00Be Direct When You Communicate"Be direct when communicating" is a common theme I've been hearing the last few days in Pivotal leadership discussions and other places.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-Y1wlL68f99w/UqTQeDdcBOI/AAAAAAAAKmY/agX4BcrVIkU/s1600/DickCostoloCommunicationMatrix.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-Y1wlL68f99w/UqTQeDdcBOI/AAAAAAAAKmY/agX4BcrVIkU/s1600/DickCostoloCommunicationMatrix.png" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
When I listened to the Twitter CEO <a href="http://pando.com/2013/12/07/pandomonthly-san-francisco-with-twitter-ceo-dick-costolo-the-full-interview/">Dick Costolo fireside chat with PandoMonthly</a> (start listening at around 35:30) it crystalized how important this is and how easy it is to fall out of this to appease the feelings of someone you're meeting with. Dick describes how he has a management / leadership training class where they do exercises for this and how many experienced people still yield to the temptation to "migrate along the Y-axis" and give up clarity instead of "optimize for the X-axis." Doing this definitely takes practice, but I'm going to remind myself to think of these axes in my communication. It's totally great if the person feels great about the discussion, but how they feel about it is not as important as receiving and understanding the message. There are certainly many conversations where someone will feel badly about the message, and that's a fine outcome if they receive the message and were unlikely to feel good about it under any circumstances.<br />
<br />Unknownnoreply@blogger.com46tag:blogger.com,1999:blog-4633788430514237697.post-40325472364829108812013-10-14T18:22:00.000-07:002013-10-14T18:41:54.863-07:00Help Us Design and Build an Open Source Google Omega<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">One key Cloud Foundry design goal is that a single operations person should be able to manage hundreds or thousands of machines. We want to bring to the similar tools that are available privately to web scale-out companies like Google </span><a href="http://www.wired.com/wiredenterprise/2013/03/google-borg-twitter-mesos/all/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">with Omega</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> to the typical enterprise. We are looking for a hands-on practitioner that is passionate about creating and operating large systems, wants to act as the product owner role and enjoys working shoulder-to-shoulder with an extremely talented and experienced <a href="https://github.com/cloudfoundry/bosh">Cloud Foundry BOSH</a> engineering team. You will also join an amazing user community with passionate technologists like <a href="https://twitter.com/drnic">Dr Nic Williams</a>. Watch Dr Nic's talk <a href="http://www.youtube.com/watch?v=RV-QPkPsXs4">describing why he fell in love with Cloud Foundry BOSH</a> in his presentation at <a href="http://www.platformcf.com/">PlatformCF</a> in September of 2013.</span></div>
<b id="docs-internal-guid-728bd44c-b9b2-8e79-7fb4-df94cb388975" style="font-weight: normal;"><br /><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<span style="color: #222222; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">We’re looking for someone </span><span style="color: #222222; font-family: Arial; font-size: 15px; line-height: 17px; white-space: pre-wrap;">passionate</span><span style="color: #222222; font-family: Arial; font-size: 15px; line-height: 1.15; white-space: pre-wrap;"> and conceptually aware of:</span><br />
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cloud operator user experience</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cluster and data lifecycle management</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">vm/container orchestration</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">complex network management</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">disk volumes</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">software package management</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">basic monitoring</span><br />
<br /></div>
</li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-6JOLazWeJ9Y/UlycRr6eTRI/AAAAAAAAKlw/T079sDKJ0Hg/s1600/BOSH_Containers.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="178" src="http://2.bp.blogspot.com/-6JOLazWeJ9Y/UlycRr6eTRI/AAAAAAAAKlw/T079sDKJ0Hg/s320/BOSH_Containers.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Dr Nic metaphor for BOSH at PlatformCF 2013</td></tr>
</tbody></table>
<span style="color: #222222; font-family: Arial; font-size: 15px; line-height: 1.15; white-space: pre-wrap;">Cloud Foundry runtime is a PaaS for running apps and services. Underneath the PaaS, there is a whole other aspect of Cloud Foundry named BOSH (Bosh Outer SHell), which was inspired by the systems in use at Google, Amazon, Facebook and Twitter to deploy and manage their software across many data centers around the world. There is not anything else available in open source that has the same scope and capabilities. Apache Mesos is in the same space, but has a different architecture that doesn't focus on IaaS orchestration, utilizing base operating system images and fine-grained control over network and disk. Cloud Foundry BOSH is the secret sauce that enables running the same Cloud Foundry runtime software on VMware, Amazon and OpenStack infrastructure-as-a-service changing only a minimal amount of infrastructure specific configuration. Not only does BOSH deploy these systems across hundreds or thousands of instances, but it is also able to keep them up-to-date without downtime as new software and fixes are released and rolled through the machines incrementally including kernel patches and middleware.</span><br />
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Cluster lifecycle management and operator user experience will be main focus areas for BOSH in 2014. Many stateful scale-out clustered data services that Cloud Foundry users want to deploy and manage with BOSH have nuances around startup sequence, whether cluster nodes can run in a mixed version cluster, and related considerations. This is a hard problem that when solved well, will be unique in the open source community. </span></div>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Recently, we made it possible to use BOSH on a developer class machine with </span><a href="https://github.com/cloudfoundry/bosh-lite" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">bosh-lite</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. The bosh-lite project uses vagrant and Linux Containers. Instead of traditional IaaS with multiple VMs for each role, bosh-lite uses linux containers inside of a single linux host. Therefore it is much faster to develop and test a BOSH release with fewer resources.</span></div>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">One of the best things the work is the collaboration process. Pivotal truly values the product owner / product manager (PM) role. This role makes the key product decisions with input from all stakeholders, but ultimately the product owner is responsible for defining the product. The PM is embedded shoulder-to-shoulder with the engineering team and is responsible for representing end-users and should meet with customers to build user empathy. The PM prioritizes the daily work items for the engineering team with the agile software tool </span><a href="https://www.pivotaltracker.com/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Pivotal Tracker</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. if the PM prioritizes a feature in the engineering backlog, we can have it in production in days. The feeling of true influence and collaboration over the product destiny cannot be contrasted enough with the experience I had with a traditional waterfall process, such as my time in Product Management at Oracle.</span></div>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Another incredible benefit is that you will be working with a truly world class product management team including </span><a href="http://twitter.com/wattersjames" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">James Watters</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="https://twitter.com/mreider" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Matt Reider</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="https://twitter.com/shalako" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Shannon Coen</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="https://twitter.com/jrichard" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Justin Richard</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="https://twitter.com/sct" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Scott Truitt</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="https://twitter.com/markkropf" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Mark Kropf</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, </span><a href="https://twitter.com/ryanpmorgan" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Ryan Morgan</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> and </span><a href="https://twitter.com/tsaleh" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Tammer Saleh</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. We work at 875 Howard St in downtown San Francisco, walking distance from many commute options and have incredible amenities.</span></div>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">If you read this far, then you should get in touch with </span><a href="mailto:recruiting@pivotallabs.com" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">recruiting@pivotallabs.com</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> and reference the BOSH PM position or </span><a href="http://twitter.com/jambay" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">reach out to me on twitter</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span></div>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Additional reading:</span></div>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Google Omega:</span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="https://medium.com/large-scale-data-processing/a7a81f278e6f" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://medium.com/large-scale-data-processing/a7a81f278e6f</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</li>
</ul>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://www.wired.com/wiredenterprise/2013/03/google-borg-twitter-mesos/all/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://www.wired.com/wiredenterprise/2013/03/google-borg-twitter-mesos/all/</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</li>
</ul>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://www.youtube.com/watch?v=0ZFMlO98Jkc" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://www.youtube.com/watch?v=0ZFMlO98Jkc</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</li>
</ul>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Mesos - open source clustering platform in use at Twitter and others:</span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://mesos.apache.org/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://mesos.apache.org/</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="https://github.com/mesosphere/marathon" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://github.com/mesosphere/marathon</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</li>
</ul>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Yarn - distributed workload management using Hadoop 2.0+</span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
</li>
</ul>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Systems and configuration management automation:</span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://www.opscode.com/chef/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">chef</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://puppetlabs.com/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">puppet</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://www.theregister.co.uk/2013/08/23/vmware_project_zombie_cloud/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">zombie</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="https://github.com/puppetlabs/Razor" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">razor</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://saltstack.com/community.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">saltstack</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://cfengine.com/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">cfengine</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</li>
</ul>
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Distributed linux container management:</span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://www.docker.io/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://www.docker.io/</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<a href="http://coreos.com/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://coreos.com/</span></a><span style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: #222222; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><a href="https://github.com/mailgun/shipper" style="text-decoration: none;">https://github.com/mailgun/shipper</a></span></div>
</li>
</ul>
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span>Unknownnoreply@blogger.com216tag:blogger.com,1999:blog-4633788430514237697.post-40989456159860578222013-10-05T12:49:00.001-07:002013-12-01T21:17:13.721-08:00A Quick Tour of the Cloud Foundry Router and Sticky SessionsThe Cloud Foundry <a href="https://github.com/cloudfoundry/gorouter">Router</a> is a key component of the platform that provides:<br />
<ul>
<li>load balancing to multiple instances of applications with a dynamic routing table updated in a fraction of a second every time there is a change in the system</li>
<li>sticky session support</li>
<li>access log for apps that feeds into an application's <a href="https://github.com/cloudfoundry/loggregator/blob/master/README.md#architecture">Loggregator</a> stream</li>
<li>support for Web Socket and other TCP protocols via <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.9">HTTP Connect</a></li>
</ul>
Cloud Foundry has had support for "sticky" sessions in both v1 and v2. This week I had a meeting with a very large technology provider that has been using Cloud Foundry for quite awhile. They had no idea that sticky sessions were supported or how they worked and I realized we should have a better explanation and showcase of this capability. The use-case for this scenario involved a significant performance optimization when using sticky sessions because of user-specific data caching in the warmed-up app instance.<br />
<br />
To enable Cloud Foundry sticky sessions all you need to do in the application is set a cookie named JSESSIONID. Java web applications have a history of using a cookie named JSESSIONID when you enable a session with code like <span style="font-family: Courier New, Courier, monospace;">request.getSession( true )</span> and because many Cloud Foundry users run Java apps, the project decided to use JSESSIONID as an indicator that sticky sessions should be used. To use another sticky sessions with another language like Ruby or Node.js, all you need to do is set a cookie named JSESSIONID and Cloud Foundry will attempt to consistently route requests to the same app instance.<br />
<br />
I created a <a href="https://github.com/jbayer/cloudfoundry-sticky-session">simple Java web application</a> to show how this works and I hosted a copy of it on <a href="http://sticky-session.cfapps.io/">http://sticky-session.cfapps.io</a>. In the first screenshot you can see that sticky sessions are not enabled. First we can see that there are 4 instances of the app running.<br />
<br />
<script src="https://gist.github.com/jbayer/6845024.js"></script>
<br />
Now when we visit the app and use something like Chrome Dev Tools to inspect the app. Refresh the app several times and observe that the printed out port changes as we are load balanced across the multiple app instances.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-tKt24TZ1_40/UlBml7MpJ8I/AAAAAAAAKlM/U9fa_gHkBls/s1600/sticky-session-no-cookies.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="449" src="http://2.bp.blogspot.com/-tKt24TZ1_40/UlBml7MpJ8I/AAAAAAAAKlM/U9fa_gHkBls/s640/sticky-session-no-cookies.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now we'll click the "start a sticky session" link in the app, which creates a Java session in Tomcat and creates a JSESSIONID cookie. The router will notice the JSESSIONID cookie and set a Cloud Foundry specific cookie named __VCAP_ID__ with a value of the app instance GUID. The __VCAP_ID__ cookie is the hint to the router to send the request to the specific app instance. With these cookies set, refresh the page and the browser should consistently route to the single app instance.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-ep_XEPb0GXs/UlBoaQvxyaI/AAAAAAAAKlY/UcE8rRav3wo/s1600/app-with-sticky-session.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="451" src="http://3.bp.blogspot.com/-ep_XEPb0GXs/UlBoaQvxyaI/AAAAAAAAKlY/UcE8rRav3wo/s640/app-with-sticky-session.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
If you use Chrome Dev Tools to delete the __VCAP_ID__ cookie and refresh the page, and you should see a randomly selected app instance value get set again for __VCAP_ID__. Subsequent page refreshes will be sticky to the instance reflected in the updated __VCAP_ID__ cookie value.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
If you are interested in other features for the Cloud Foundry Router, let us know on the <a href="https://groups.google.com/a/cloudfoundry.org/forum/#!forum/vcap-dev">Cloud Foundry mailing list</a>. </div>
<br />Unknownnoreply@blogger.com892tag:blogger.com,1999:blog-4633788430514237697.post-19358878783897058762013-09-14T21:39:00.000-07:002013-09-14T21:39:10.389-07:00Go-Lang build work-around with brew and gcc strangenessTonight I tried to build <a href="http://golang.org/">go-lang</a> for the new <a href="http://github.com/cloudfoundry/cli">Cloud Foundry cli</a> that is written in Go, which was just announced this week at <a href="http://www.platformcf.com/">#platformcf</a> during the talk by the project anchor <a href="https://twitter.com/mikegehard">Mike Gehard</a>. Because I have both gcc from Brew and Apple's compiler, which I believe I got from the <a href="https://developer.apple.com/technologies/tools/">XCode Developer Tools</a>, sometimes my machine gets a bit confused.<br />
<br />
Below is the gist that shows the context for the <span style="background-color: white; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 16px;">/private/tmp/go-BvwY/go/src/cmd/5l/../ld/lib.c:661:9: error: no case matching constant switch condition '53' [-Werror]</span><br />
<pre class="line-pre" style="background-color: white; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 16px; padding: 0px; width: 2723px;"><div class="line" id="file-gistfile1-txt-LC8">
switch(thechar){</div>
</pre>
error I encountered plus the work-around that I could use to get around it, which is to specify the path to my gcc.<br />
<br />
<script src="https://gist.github.com/jbayer/6568018.js"></script>
<br />
I also found <a href="http://www.ryanday.net/2012/10/01/installing-go-and-gopath/">Ryan Day's blog helpful to explain $GOPATH</a> and make some recommendations for how he sets it up. Unknownnoreply@blogger.com33tag:blogger.com,1999:blog-4633788430514237697.post-74103903331783857712012-05-12T07:11:00.000-07:002012-05-12T09:36:21.426-07:00Great Mobile Demos - Using AirPlay to Demo iPhone and iPad AppsI currently work on <a href="http://cloudfoundry.com/">Cloud Foundry</a> and <a href="http://www.vmware.com/products/application-platform/vfabric/overview.html">vFabric</a> products at VMware, and our customers are often building and hosting mobile applications with our products. Demoing these can be a crappy end-user experience for the person seeing the demo as screenshots and emulators don't give the exact mobile experience.<br />
<br />
<a href="http://3.bp.blogspot.com/-7UHhQ2ASu2E/T65qPisC9iI/AAAAAAAAKMc/HK189G0Jzz8/s1600/Screen+Shot+2012-05-12+at+6.37.03+AM.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img alt="AirServer" border="0" height="94" src="http://3.bp.blogspot.com/-7UHhQ2ASu2E/T65qPisC9iI/AAAAAAAAKMc/HK189G0Jzz8/s200/Screen+Shot+2012-05-12+at+6.37.03+AM.png" title="AirServer" width="200" /></a>A friend of mine, <a href="http://www.linkedin.com/in/jeremiahstone">Jeremiah Stone at SAP</a>, recently showed me an awesome product called <a href="http://www.airserverapp.com/">AirServer</a>. AirServer is $15 and lets you turn your Mac/PC into an AirPlay receiver. This means that using new Apple products like an iPhone 4S or an iPad 3, you can exactly mirror the video/audio of the device to your computer, which can of course be projected to another audience. The projection is smooth enough that you can mirror the iPhone 4S camera display too which is like having a mobile video capture device live feed.<br />
<br />
The best way of explaining it is that AppleTV let's you do this with an iPhone/iPad:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-RMnATqPI59I/T65twMUpydI/AAAAAAAAKMo/a6UFzr5F7w8/s1600/Screen+Shot+2012-05-12+at+7.02.49+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="237" src="http://4.bp.blogspot.com/-RMnATqPI59I/T65twMUpydI/AAAAAAAAKMo/a6UFzr5F7w8/s400/Screen+Shot+2012-05-12+at+7.02.49+AM.png" width="400" /></a></div>
<br />
Using an app like AirServer, you can also point it at your laptop instead of AppleTV.<br />
<br />
Imagine how much better the end-user experience of someone attending a web conference, conference room presentation, or even an auditorium can see your demo when it's <b>exactly</b> the user experience that a real iPhone and iPad application have instead of an approximation of it.<br />
<br />
Here's a quick recording of what it's like. Fast forward to 1 minute 30 seconds if you just want to see the punchline.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/qWK4ZMkSv5U" width="560"></iframe>
</div>
<br />
A few notes, make sure you note the "double-click" and swipe left twice to get the AirPlay menu on your iOS device. I did not even know that menu was there previously.<br />
<br />
Also note that some wireless networks may block the video projection. I could not get the display mirroring to function on the wireless network at work. I've heard that using an Ad-Hoc network or a Hotspot network should work in situations like that, so I'll need to play with that still. If you have trouble using it at first, make sure you're not on a wireless network that might be locked down.<br />
<br />
Now go build an amazing mobile application on <a href="http://cloudfoundry.com/">Cloud Foundry</a> that I can demo!<br />
<br />
<b>Update: </b>The <a href="http://www.dummies.com/how-to/content/how-to-create-a-wireless-ad-hoc-network-between-macs.html">Ad-Hoc network setup</a> is super simple, I recorded that too. Just create a new Ad-Hoc network on you machine, connect to that network with your phone (no IP setup needed) and you're good to go.<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/9EnWGeK5ww0" width="560"></iframe>
<br />
<br />
<br />
<br />
<br />Unknownnoreply@blogger.com14tag:blogger.com,1999:blog-4633788430514237697.post-76776823151090245102012-03-26T23:29:00.000-07:002012-03-26T23:29:40.379-07:00Fixing Twitter Bootstrap and Eclipse Javascript ErrorsI've been meaning to play with <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap</a> and some of it's other associated projects like <a href="http://fortawesome.github.com/Font-Awesome/">Font Awesome</a> lately and decided to see if I could integrate into a sample application I'm building. I'm using an SpringSource Tool Suite 2.9.1 which is based on Eclipse 3.7.2. When using a Dynamic Web project type and bringing in the <span style="font-family: 'Courier New', Courier, monospace;">assets</span> directory from the Bootstrap download into my <span style="font-family: 'Courier New', Courier, monospace;">WebContent</span> directory, I kept getting JavaScript errors, lots of them.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-sTimgBG1ifE/T3FRG9Wy-jI/AAAAAAAAJrk/6Bav07zSDT4/s1600/Screen+Shot+2012-03-26+at+10.22.13+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="306" src="http://2.bp.blogspot.com/-sTimgBG1ifE/T3FRG9Wy-jI/AAAAAAAAJrk/6Bav07zSDT4/s320/Screen+Shot+2012-03-26+at+10.22.13+PM.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I realized that it was simply complaining about a single <a href="http://code.google.com/p/google-code-prettify/">prettify</a> minimized js file that went away if I got the unminimized version. But I'm stubborn so I refused to let Eclipse win with this work-around...</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
At first I thought it was related to the Validator or a Builder. But then I noticed that there was a JavaScript reference to a runtime and I checked the Facets. Sure enough there is a JavaScript facet that you can unlock and then uncheck.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-A9eWl1uXOq8/T3FZbyEMJGI/AAAAAAAAJr0/pedBlxgqFR0/s1600/Screen+Shot+2012-03-26+at+10.34.44+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="162" src="http://3.bp.blogspot.com/-A9eWl1uXOq8/T3FZbyEMJGI/AAAAAAAAJr0/pedBlxgqFR0/s320/Screen+Shot+2012-03-26+at+10.34.44+PM.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-8UIWYUe_ebE/T3FZq-J91uI/AAAAAAAAJr8/0Y6kwb49324/s1600/Screen+Shot+2012-03-26+at+10.24.53+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="158" src="http://1.bp.blogspot.com/-8UIWYUe_ebE/T3FZq-J91uI/AAAAAAAAJr8/0Y6kwb49324/s320/Screen+Shot+2012-03-26+at+10.24.53+PM.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Since I am not using that capability now, removing that Facet seemed to do the trick once I applied and executed a <span style="font-family: 'Courier New', Courier, monospace;">Project -> Clean</span>, but at least on one occasion I actually had to rename/replace the javascript file that was causing problems to be marked as directed to in <a href="http://stackoverflow.com/questions/3131878/how-do-i-remove-javascript-validation-from-my-eclipse-project">this Stack Overflow thread</a>. Once that was out of the way I now had a nice Bootstrap example ready to customize. I simply copied one of the html files like <span style="font-family: 'Courier New', Courier, monospace;">starter-template.html</span> or <span style="font-family: 'Courier New', Courier, monospace;">hero.html</span> over from the Bootstrap <span style="font-family: 'Courier New', Courier, monospace;">examples</span> directory and fixed the asset references with a replace-all. If you have a better approach to get Bootstrap and Eclipse to play nicely, I'd love to hear about it.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-mB7efoRbeiI/T3FdgzLLV-I/AAAAAAAAJsE/dox7Jgyowss/s1600/Screen+Shot+2012-03-26+at+11.22.26+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="239" src="http://2.bp.blogspot.com/-mB7efoRbeiI/T3FdgzLLV-I/AAAAAAAAJsE/dox7Jgyowss/s320/Screen+Shot+2012-03-26+at+11.22.26+PM.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />Unknownnoreply@blogger.com24tag:blogger.com,1999:blog-4633788430514237697.post-49611855866729899182012-03-25T13:29:00.000-07:002012-03-25T13:29:37.172-07:00Mirco Cloud Foundry - Set the Local TimezoneWould you like your Mirco Cloud Foundry to use a local timezone instead of UTC? Hopefully this propagates to the default timestamp display of whatever programming language you are using. I wanted this for a Java application I've been playing around with. Here are the simple steps I used.<br />
<br />
1) Log in to Micro Cloud Foundry using the IP Address displayed on the console as root using the password you supplied when setting up MCF.<br />
<blockquote class="tr_bq">
<pre>ssh root@192.168.129.139</pre></blockquote>
2) Run the dpkg-reconfigure command to select your timezone<br />
<blockquote class="tr_bq">
<pre>root@micro:~# dpkg-reconfigure tzdata</pre></blockquote>
You should get an ASCII-GUI that let's you select the timezone.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-WwtDf7i2z10/T29-JRseeqI/AAAAAAAAJqo/5jdE6TI9q68/s1600/Screen+Shot+2012-03-25+at+1.18.25+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-WwtDf7i2z10/T29-JRseeqI/AAAAAAAAJqo/5jdE6TI9q68/s320/Screen+Shot+2012-03-25+at+1.18.25+PM.png" width="320" /></a></div>
<br />
When finished you should see output like this:<br />
<blockquote class="tr_bq">
<pre>
Current default time zone: 'America/Los_Angeles'<br />Local time is now: Sun Mar 25 13:01:18 PDT 2012.<br />Universal Time is now: Sun Mar 25 20:01:18 UTC 2012. </blockquote>
</pre>
<blockquote class="tr_bq">
<pre>
root@micro:~# date<br />Sun Mar 25 13:01:30 PDT 2012</blockquote>
</pre>
3) Restart your applications.<br />
<br />
Once I restarted the Java application, this time it picked up the local timezone as the default <pre>toString()</pre> output for a <pre>java.util.Date</pre> instead of the UTC timezone.Unknownnoreply@blogger.com10tag:blogger.com,1999:blog-4633788430514237697.post-71439450413169651002012-03-23T01:57:00.000-07:002012-03-23T02:05:51.147-07:00Arun Gupta Java EE 6 and Spring Response<br />
Disclaimer - I am a VMware employee and former WebLogic Server Product Manager at Oracle. I know Arun personally and he is my friend. The views expressed below are mine own and do not necessarily represent the views of my employer. I tried to post this comment on Arun's blog <a href="https://blogs.oracle.com/arungupta/entry/why_java_ee_6_is">https://blogs.oracle.com/arungupta/entry/why_java_ee_6_is</a> but it was marked as spam.<br />
<br />
Arun,<br />
<br />
I'm really surprised to see you trolling Spring like this. I realize that in your job as a Java EE evangelist that you want to advocate for products and frameworks that you are paid to advocate for, but I don't see the point in misrepresenting many of the attributes that people like about the Spring Framework. I find it hard to believe that you actually believe your blog is a balanced and objective analysis. I must say that I never hear the question why should I use Java EE 6 versus Spring and I think it's mostly a contrived question. Evans Data surveys indicate that about 2/3 of Java developers are using or will use Spring <a href="http://www.vmware.com/company/news/releases/vmw-spring-momentum-3-14-12.html">http://www.vmware.com/company/news/releases/vmw-spring-momentum-3-14-12.html</a>. I guess if you're paid to travel around the world telling people not to use the most popular Java framework that you need to come up with reasons. From what I can tell the people screaming the hardest not to use Spring are mostly authors employed by vendors that have a strong interest to lock-in their customers to full Java EE server instead of a framework that lets them (but not requires them!) to run on a Servlet or Java SE container. In your publications list I see authors employed by vendors selling JBoss, Resin, WebSphere, Glassfish and WebLogic Server. There have been lots of people that have a different point of view on this topic. What I really don't understand as why someone promoting the Java ecosystem as their primary job wants to so obviously dissuade users from making up their own minds with an objective analysis of trade-offs, especially when it does not have to be a mutually exclusive choice and Spring is part of the Java community. You know that many other people (in fact the vast majority of Java developers) do not share your view, yet you do not provide a single link to present an alternative perspective. Are Spring advocates not part of the Java community in your view?<br />
<br />
I find it very strange that you try and attach a "l"-word attribute to Spring when the major app server vendors have not even been shipping full Java EE 6 releases until so recently that almost no customers have the latest versions of WebLogic, WebSphere or JBoss installed. Java EE 6 came out in December of 2009 which is 2+ years old, WebLogic Server 12c only started supporting a Java EE 6 compliant server 3 months ago! WebSphere 8.0 was summer 2011 and JBoss EAP 6 is not even yet generally available. You are advocating to use a framework with implementations that are so new that almost no customers of the major application servers have a compliant server in production. Java EE 6 is not even available in the Oracle Public Cloud yet, so if Oracle can't even upgrade their containers that fast how can you expect all the customers to be up-to-date? Spring 3.1, which had a lot of features for a minor release, started shipping in the Fall of 2011, almost 2 years after Java EE 6. Plus as you probably are aware, it supports Java SE 5 and above, so customers are not required to be on the bleeding edge to use it.<br />
<br />
You had some trouble finding a tutorial, and I am happy to help you with that since that should be very easy. First go to <a href="http://www.springsource.org/">http://www.springsource.org/</a> and you should click the big button that says "Get Started". The next page has the links for both tutorials and sample code. The tutorials page http://www.springsource.org/tutorials has both video and written tutorials. If you want to create an MVC style application, there is one called "Green Beans: Getting Started With Spring MVC" by Colin Sampaleanu. <a href="http://blog.springsource.com/2011/01/04/green-beans-getting-started-with-spring-mvc/">http://blog.springsource.com/2011/01/04/green-beans-getting-started-with-spring-mvc/</a> Someone helpfully published a maven archetype in the comments and with only two maven commands you can run the sample with Apache Tomcat, no separate application server installation is required! <a href="http://code.google.com/p/flaveur/source/browse/trunk/m2/baremvc/README">http://code.google.com/p/flaveur/source/browse/trunk/m2/baremvc/README</a> If you also wanted to use persistence, you could consider a video like Spring Data JPA by Oliver Gierke <a href="http://www.youtube.com/watch?v=Yg2gCpBCkZw">http://www.youtube.com/watch?v=Yg2gCpBCkZw</a><br />
<br />
The listing of jar files in the application is not complete if you don't list all the jar files inside Glassfish or WebLogic Server that implement Java EE 6. The comparable Apache Tomcat list of jars is obviously much smaller. You know that an application is a container + framework code + application code and you should represent the entire accurate picture.<br />
<br />
As for jpetstore, that's not really an updated Spring example as you can see by the Spring version being only a SNAPSHOT before 3.0.0 was released. It should probably be removed from the list of samples. The error you saw in maven is from an issue with a JBoss repository. When I removed the JBoss repository at the bottom of the pom.xml file and updated the Spring version from a SNAPSHOT to RELEASE then my maven build worked fine. If you want to use a sample that is often highlighted by Spring advocates, then you could look at Spring Travel, but it is only based on Spring 3.0 and not yet taking advantage of all of the Spring 3.1 capabilities. <a href="https://src.springframework.org/svn/spring-samples/travel/">https://src.springframework.org/svn/spring-samples/travel/</a><br />
<br />
Your comparison tables are also Apples and Oranges. You can simply put Tomcat or Jetty in that comparison table and tc Server Standard edition is under 15MB <a href="http://repo.vmware.com/pub/rhel5/vfabric/5/x86_64/">http://repo.vmware.com/pub/rhel5/vfabric/5/x86_64/</a>. If you include tc Server, then you should use the Standard Edition recommended for production at 15MB as the Developer Edition includes Spring Insight, which would require including JRockit and JRockit Mission Control in the Java EE 6 column. I suppose it doesn't help your case to point out that the production version of WebLogic Server 12c has a 1 Gigabyte generic zip installer and that the smaller developer versions are not suitable or supported in production. I think you are also well aware of the fact that you could run Spring apps on embedded Tomcat 7 which is just a few megs. I am simply amazed that you think tc Server is proprietary when it is based on Apache Tomcat, the reference implementation of the Servlet Specification, which is part of Java EE! Why would you want to mislead people like that? You know as well as I do that there are lots of WebLogic Server customers that are stuck using weblogic.ejb... packages in their code from previous versions of the specification. The only thing even close to that might be Tomcat valves, but over 1/2 of all Java applications use Tomcat these days <a href="http://blog.newrelic.com/2012/01/10/infographic-oss-java-wins-in-the-cloud-era/">http://blog.newrelic.com/2012/01/10/infographic-oss-java-wins-in-the-cloud-era/</a>, which is free and open source, so it's not locking anyone in.<br />
<br />
VMware provides commercial support for both Tomcat and Spring as open source products and customers are not left on their own to manage jars. VMware also provides commercial products like tc Server, which is Apache Tomcat with some additional management and configuration capabilities and other open source derived products in the vFabric family that represent the way most modern applications are built. VMware customers are free to use open source with or without commercial support or they can choose a commercial product derived from open source, the choice is theirs.<br />
<br />
While Java EE 6 was finalized over 2 years ago, Spring has moved on to simplify and provide solutions to lots of other problem domains with Spring Data applied to NoSQL (MongoDB, GemFire, Riak, Redis, Neo4j) and Big Data (Hadoop) <a href="http://www.springsource.org/spring-data">http://www.springsource.org/spring-data</a>. Spring Social <a href="http://www.springsource.org/spring-social">http://www.springsource.org/spring-social</a> has already been available providing solutions to integrate with Twitter, Facebook, LinkedIn, TripIt and Github while JSR 357 is just getting started http://jcp.org/en/jsr/detail?id=357. Developers want solutions to these problems now, not when RedHat, Oracle and IBM get around to it.<br />
<br />
People may not realize that you and I are friends and I'm happy to see you are passionate about your job, but I can't let you misrepresent the facts without setting the record straight. I don't understand the Java EE vendor mentality that encourages deriding Spring when so many developers use it effectively and like it. Go ahead and cheer for your team, but to misrepresent what you see as the other team's case is disingenuous. I personally find it very deflating to the Java community as a whole when you, Bill Burke and others write trolling articles. Hopefully only the vendors are paying attention in these artificial and made-up scuffles while productive developers are actually getting work done.<br />
<br />
Cheers,<br />
<br />
James Bayer<br />
@jambayUnknownnoreply@blogger.com54tag:blogger.com,1999:blog-4633788430514237697.post-51967970528967139872012-01-16T23:28:00.001-08:002012-01-16T23:28:05.210-08:00Will Cloud Era Beer Be Mostly Generic?<p><font color="#ff0000">Disclaimer: I am employed by VMware and work with the Cloud Foundry team.</font> <p><img style="display: inline; margin-left: 0px; margin-right: 0px" align="right" src="http://farm5.staticflickr.com/4100/4917853457_4730ce2c8a_d.jpg" width="240" height="181">The Cloudbees guys like stirring the pot a bit, which is fine, but I’m taking the bait this time. In <a href="http://blog.cloudbees.com/2011/11/virtualisation-and-clouds.html">several of their blog posts</a> they <a href="http://bobbickel.blogspot.com/2011/12/why-vmware-loves-and-hates-cloud.html">try and paint OS or virtualization vendors with a broad brush</a> that can't possibly be relevant in the cloud era, which they believe is a very convenient argument for them. Today <a href="http://sacha.labourey.com/2012/01/16/amazon-1-microsoft-0/">Sacha Labourey offered some commentary on the recent EC2 Windows free tier announcement</a> and I think he's got it wrong enough (at least about the non-obvious points) that it inspired me to write some thoughts down of my own.</p> <p>Sacha's outline is something like:</p> <ul> <li>Microsoft Windows is more expensive than Linux (sorry Microsoft)</li> <li>VMware is more expensive than Xen (sorry VMware)</li> <li>Paid Linux is more expensive than free Linux (sorry Redhat)</li> <li>Hosting margins are smaller than license or subscription margins (sorry licensed and subscription software vendors)</li> <li>Windows has weak cloud DNA</li> <li>Amazon will be the new Microsoft</li> <li>Therefore, try Cloudbees, the <a href="http://bobbickel.blogspot.com/2011/10/cloudbees-open-source-choice.html">closed-source</a> Java PaaS! </li></ul> <p>To really dumb it down, my take away is that Sacha feels like cloud providers like Amazon will commoditize the operating system and virtualization companies to an extreme almost exclusively because they will have the lowest raw compute cost per hour. He implies that totally free open source software without commercial support will dominate the entire stack and dramatically erode business from commercial and subscription based software providers. Virtualization and operating systems won’t matter as Amazon Linux will become defacto. He thinks we're all going to love the taste of the blandest and cheapest generic cloud beer. <p>I disagree that server-side operating system and virtualization software will become undifferentiated and therefore irrelevant in the cloud era. If the only prism you view things in is cost per hour of raw compute instances available on-demand, then sure, running Amazon Linux on EC2 is tough to beat. Some fraternity parties make beer selection decisions with a framework like that. However, an overwhelming majority of the workloads don't and won't fit that model. Even if PaaS really takes off, it will run better on great virtualization and operating systems. Public coulds are not the only way to operate cloud era infrastructure. Cloud can be a malleable term, when I think cloud I think multi-data center, physical layer abstraction, high availability, great density, elasticity, self-service, and organization-relevant billing and metering. Vendors that offer a holistic solution that spans public and private clouds and integrates with pre-cloud systems will have loyal customers that are willing to pay a premium over cheaper solutions with gaps. A winning solution will leverage innovations and differentiation in the operating systems and virtualization. <p>It's not too hard to think of a few examples of why enterprises run Windows which include Exchange, Active Directory, Office, .NET and SQL Server. These customers choose to pay more when there are free Linux alternatives! It would be cheaper for everyone to sustain themselves on ramen noodles every night, yet the restaurant business seems to be doing just fine. Macs cost more than non-Mac laptops, yet I see lots of cloud people using Macs. I believe that generic beer will not be the only option and probably not even the most popular choice on the menu in the cloud era. Customers will pay a premium for stuff that lets them accomplish their goals, which may not be directly aligned with the cheapest compute cost per hour on the blandest stack. Time-to-market, ease-of-use, locality, quality and reliability could all conceivably prioritized over raw compute cost per hour depending on the need. EC2 already illustrates this breadth of menu approach by the variety of OS's supported and different tiers of pricing. <p>A few other random points. I recently learned that many of the worlds ATM's run an embedded version of Windows <a href="http://www.flickr.com/photos/u2sockmonkey/1355889565/">blue-screen-of-death jokes aside</a>. Windows has demonstrated it can be optimized for very small footprints.<br><br>Amazon Linux might be great for some situations, but Red Hat has indicated that they may not continue letting their operating system innovations to trickle downstream easily as shown by their <a href="http://www.redhat.com/about/news/blog/commitment-to-open/">decision to ship the kernel with patches pre-applied in RHEL 6</a>. Operating system R&D is funded by customers and there will be differentiated features for paid offerings. Why else would Joyent invest so much in SmartOS? Amazon Linux is basically equivalent to RHEL today, but this is a fluid situation.</p> <p>Cheap beer has it’s time and place, but the majority of customers want choice and are willing to pay for quality on most occasions. Keep yourself honest and try the cheap beer every once in awhile, just to be sure. It reinforces my appreciation that you get what you pay for.</p> <p><a href="http://www.flickr.com/photos/pdxdiver/4917853457/">Generic beer image</a> is attributed to pdxdiver from flickr.</p> Unknownnoreply@blogger.com14tag:blogger.com,1999:blog-4633788430514237697.post-10281567407463356702011-11-06T16:47:00.001-08:002011-11-06T16:47:06.680-08:00Micro Cloud Foundry – Increasing Default Memory Limits<p>I attended my first SpringOne a few weeks ago in my former hometown Chicago. It was a very fun event with lots of energy around the Spring community as well as they Groovy and Grails crowd. Cloud Foundry topics took center stage with many standing-room-only sessions and lots of people coming up to the booth. All attendees received their very own copy of <a href="https://www.cloudfoundry.com/micro">Micro Cloud Foundry</a> as part of their conference paraphernalia on a USB stick inside the black binder. Micro Cloud Foundry is a Virtual Machine that lets developers have a complete Cloud Foundry instance on their laptop. This is great because you can develop locally and be confident that your application will run the same on cloudfoundry.com or another instance. There are some great resources for getting started with Micro Cloud Foundry including <a href="http://blog.springsource.com/2011/08/24/micro-cloud-foundry-for-spring-developers/">Josh Long’s screencast</a> and a <a href="http://support.cloudfoundry.com/entries/20316811-micro-cloud-foundry-installation-setup">Getting Started guide</a> written by Charles Lee. Micro Cloud Foundry defaults to a 1GB Virtual Machine, which limits the number of applications and the amount of memory per application to 1GB. The Java and Spring application profiles default to 512MB, which is only 2 applications with the default settings. I had a question from someone who walked up to the booth whether the memory limits could be increased. Since <a href="http://twitter.com/#!/mccrory">Cloud Foundry guru Dave McCrory</a> was close by I got a tip to simply boost the memory for the VM and reconfigure using the console menu. I tried it on my laptop since I’m lucky enough to have 8GB of RAM and it worked well. Below are the steps.</p> <h3>Just need the punchline?</h3> <!-- http://twitter.com/jambay/status/129334404618260480 --> <div id="embedly_twitter_79555874" class="embedly_twitter"> <style type="text/css"> #embedly_twitter_79555874{background:url(http://a0.twimg.com/images/themes/theme1/bg.png) #c0deed; padding:20px;} #embedly_twitter_79555874 p{background:#fff;padding:10px 12px 0px 12px;margin:0;min-height:48px;color:#000;font-size:18px;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} #embedly_twitter_79555874 .embedly_tweet_content{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} #embedly_twitter_79555874 p span.metadata{display:block;width:100%;clear:both;margin-top:0px;height:40px; padding-bottom: 12px;} #embedly_twitter_79555874 p span.metadata span.author{line-height:15px;color:#999;font-size:14px} #embedly_twitter_79555874 p span.metadata span.author a{line-height:15px;font-size:20px;vertical-align:middle} #embedly_twitter_79555874 p span.metadata span.author img{float:left;margin:0 10px 0 0px;width:48px;height:48px} #embedly_twitter_79555874 p a {color: #0084b4; text-decoration:none;} #embedly_twitter_79555874 p a:hover{text-decoration:underline} #embedly_twitter_79555874 .embedly_timestamp{font-size:13px;display:inline-block;margin-top: 5px;} #embedly_twitter_79555874 .components-above span.embedly_timestamp{font-size:10px;margin-top: 1px;line-height:12px} #embedly_twitter_79555874 a {color: #0084b4; text-decoration:none;} #embedly_twitter_79555874 a:hover{text-decoration:underline} #embedly_twitter_79555874 .tweet-screen-name {font-size: 14px; font-weight: bold;} #embedly_twitter_79555874 .tweet-full-name {padding-left: 4px; color: #999; font-size: 12px;} #embedly_twitter_79555874 .tweet-actions{margin-left: 10px;font-size:13px;display:inline-block;width:250px} #embedly_twitter_79555874 .components-above span.tweet-actions{font-size:10px} #embedly_twitter_79555874 .controls{line-height:12px!important} #embedly_twitter_79555874 .tweet-actions a {margin-left:5px} #embedly_twitter_79555874 .tweet-actions a b{font-weight:normal} #embedly_twitter_79555874 .components-above span.tweet-actions a b{vertical-align:baseline;line-height:12px} #embedly_twitter_79555874 .components-above .tweet-text{font-size:13px;vertical-align:baseline} #embedly_twitter_79555874 .tweet-image {float: left; width: 40px;} #embedly_twitter_79555874 .tweet-user-block-image {float: left; width: 48px; height: 48px} #embedly_twitter_79555874 .tweet-row {margin-left: 40px; margin-top: 3px;line-height: 17px;} #embedly_twitter_79555874 .tweet-user-block {margin-left: -40px;} #embedly_twitter_79555874 .stream-item {padding-bottom: 0px; margin-left: 12px;} #embedly_twitter_79555874 .simple-tweet-image img {margin-top: 4px;} #embedly_twitter_79555874 .simple-tweet-content {margin: 0 0 13px 0px; font-size: 14px; min-height:48px;} #embedly_twitter_79555874 .in-reply-to-border {border-color: #ebebeb; border-style: solid; border-width: 1px 0 0;} #embedly_twitter_79555874 .in-reply-to-text {margin-left: 4px; padding-left: 8px; padding-right: 10px; color: #999; font-size: 12px;} #embedly_twitter_79555874 .tweet-actions i {background: transparent url(http://a2.twimg.com/a/1306889658/phoenix/img/sprite-icons.png) no-repeat;width:15px;height:15px;margin:0 4px -3px 3px;outline: none; text-indent:-99999px;vertical-align:baseline;display:inline-block;position:relative;} #embedly_twitter_79555874 .tweet-actions a.retweet-action i {background-position:-192px 0;} #embedly_twitter_79555874 .tweet-actions a.reply-action i {background-position:0 0;} #embedly_twitter_79555874 .tweet-actions a.favorite-action i {background-position:-32px 0;} </style> <div class="embedly_tweet_content"> <div class="components-middle"> <p><span class="metadata"><span class="author"><a href="http://twitter.com/jambay"><img src="http://a1.twimg.com/profile_images/51560491/james_bayer_normal.jpg"></a><strong><a href="http://twitter.com/jambay">@jambay</a></strong><br>jambay</span></span> got micro <a href="http://search.twitter.com/search?q=%23cloudfoundry">#cloudfoundry</a> to use up to 2GB of memory (1GB is default), stop mcf, change vm mem setting, start vm, menu option thanks <a href="http://twitter.com/mccrory">@mccrory</a><br><span class="embedly_timestamp"><a title="Wed Oct 26 23:11:39 +0000 2011" href="http://twitter.com/jambay/status/129334404618260480">Oct 26</a> via web</span><span class="tweet-actions"><a class="favorite-action" title="Favorite" href="https://twitter.com/intent/favorite?tweet_id=129334404618260480"><span><i></i><b>Favorite</b></span></a><a class="retweet-action" title="Retweet" href="https://twitter.com/intent/retweet?tweet_id=129334404618260480"><span><i></i><b>Retweet</b></span></a><a class="reply-action" title="Reply" href="https://twitter.com/intent/tweet?in_reply_to=129334404618260480"><span><i></i><b>Reply</b></span></a></span></p></div></div></div> <h3> </h3> <h3>The detailed steps</h3> <p>Micro Cloud Foundry has a text based interface, and if you select “help” you can see the defaults. There is also a <a href="http://support.cloudfoundry.com/entries/20336543-resource-limits-in-micro-cloud-foundry">Knowledge Base article describing resource limits on support.cloudfoundry.com</a>.</p> <p><a href="http://lh5.ggpht.com/-EDF0z2brzXw/TrcqWYWED_I/AAAAAAAAJX8/ZE-IyocZy9s/s1600-h/Screen%252520Shot%2525202011-11-06%252520at%2525209.30.02%252520AM%25255B3%25255D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Screen Shot 2011-11-06 at 9.30.02 AM" border="0" alt="Screen Shot 2011-11-06 at 9.30.02 AM" src="http://lh6.ggpht.com/-EwnQGy2Muy4/TrcqXhOooNI/AAAAAAAAJYE/jIq1KMusAnA/Screen%252520Shot%2525202011-11-06%252520at%2525209.30.02%252520AM_thumb%25255B1%25255D.png?imgmax=800" width="534" height="484"></a> </p> <p>You can validate your Micro Cloud Foundry VM settings by using the vcap command line interface, here is where I start:</p> <p><a href="http://lh5.ggpht.com/-vhmjNTj2EZc/TrcqYZmIGKI/AAAAAAAAJYM/FCgE7LQHPks/s1600-h/memoryToStart%25255B4%25255D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="memoryToStart" border="0" alt="memoryToStart" src="http://lh3.ggpht.com/-m0AYLC-R08E/TrcqZslljHI/AAAAAAAAJYU/wbq4KZ_V4WA/memoryToStart_thumb%25255B2%25255D.png?imgmax=800" width="404" height="271"></a> </p> <p>So now you can stop your Micro Cloud Foundry VM, preferably through the text command interface so the VM shuts down properly. Once the VM has been shutdown, you will be able to edit the memory settings by selecting Processors & RAM as shown below. You cannot edit the memory settings while the VM is running.</p> <p><a href="http://lh4.ggpht.com/-wQCCVCAdBhk/TrcqawaNUiI/AAAAAAAAJYc/WK2VehoWJGE/s1600-h/Screen%252520Shot%2525202011-11-06%252520at%2525209.57.44%252520AM%25255B7%25255D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Screen Shot 2011-11-06 at 9.57.44 AM" border="0" alt="Screen Shot 2011-11-06 at 9.57.44 AM" src="http://lh3.ggpht.com/-Z-rDQHGBUNU/TrcqcpkRmzI/AAAAAAAAJYk/_W8q5wMW7-Q/Screen%252520Shot%2525202011-11-06%252520at%2525209.57.44%252520AM_thumb%25255B5%25255D.png?imgmax=800" width="421" height="484"></a> </p> <p>Now change the value from 1024 MB to 2048 MB.</p> <p><a href="http://lh6.ggpht.com/-xKcnHCha_cc/TrcqdXIp9yI/AAAAAAAAJYs/qctydZbZs70/s1600-h/Screen%252520Shot%2525202011-11-06%252520at%2525209.58.22%252520AM%25255B17%25255D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Screen Shot 2011-11-06 at 9.58.22 AM" border="0" alt="Screen Shot 2011-11-06 at 9.58.22 AM" src="http://lh6.ggpht.com/-vrJQT4T7-VI/TrcqeomYueI/AAAAAAAAJY0/DMstYiS1H3I/Screen%252520Shot%2525202011-11-06%252520at%2525209.58.22%252520AM_thumb%25255B13%25255D.png?imgmax=800" width="404" height="246"></a> </p> <p></p> <p></p> <p></p> <p></p> <p>After restarting the VM with the larger memory settings, the Micro Cloud Foundry interface should detect that the memory settings need to be reconfigured and that should be shown with red text, so select that command.</p> <p><a href="http://lh5.ggpht.com/-ljN-duS9GXs/TrcqfXWkb0I/AAAAAAAAJY8/_yi7xGL_PYs/s1600-h/Screen%252520Shot%2525202011-11-06%252520at%2525209.58.53%252520AM%25255B7%25255D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Screen Shot 2011-11-06 at 9.58.53 AM" border="0" alt="Screen Shot 2011-11-06 at 9.58.53 AM" src="http://lh6.ggpht.com/-vbq6iavh1eM/Trcqg7wvTVI/AAAAAAAAJZE/CaekY7NlxJM/Screen%252520Shot%2525202011-11-06%252520at%2525209.58.53%252520AM_thumb%25255B3%25255D.png?imgmax=800" width="530" height="484"></a> </p> <p></p> <p></p> <p>Follow the instructions in the console and when the services finish coming up again a few moments later, you can reissue the “vmc info” command and hopefully see the new higher memory limit in the response.</p> <p><a href="http://lh4.ggpht.com/-7YYLGmioNgo/TrcqhjumMAI/AAAAAAAAJZM/mkZLz6KwwL0/s1600-h/memoryToEnd%25255B4%25255D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="memoryToEnd" border="0" alt="memoryToEnd" src="http://lh4.ggpht.com/-fMic7BSEeag/TrcqiQQ_ZvI/AAAAAAAAJZU/ltSgNuWBvyo/memoryToEnd_thumb%25255B2%25255D.png?imgmax=800" width="404" height="186"></a></p> Unknownnoreply@blogger.com6tag:blogger.com,1999:blog-4633788430514237697.post-64572788666253476702011-10-11T00:32:00.000-07:002011-10-11T00:32:09.355-07:001st Day at VMwareToday was my 1st day at VMware where I'll be working as a Product Manager on the <a href="http://cloudfoundry.com/">Cloud Foundry</a> team. This tweet sums up my first day:<br />
<br />
<div class="embedly_twitter" id="embedly_twitter_25408892">
<style type="text/css">
#embedly_twitter_25408892{background:url(http://a0.twimg.com/images/themes/theme1/bg.png) #C0DEED; padding:20px;} #embedly_twitter_25408892 p{background:#fff;padding:10px 12px 0px 12px;margin:0;min-height:48px;color:#000;font-size:18px;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} #embedly_twitter_25408892 .embedly_tweet_content{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} #embedly_twitter_25408892 p span.metadata{display:block;width:100%;clear:both;margin-top:0px;height:40px; padding-bottom: 12px;} #embedly_twitter_25408892 p span.metadata span.author{line-height:15px;color:#999;font-size:14px} #embedly_twitter_25408892 p span.metadata span.author a{line-height:15px;font-size:20px;vertical-align:middle} #embedly_twitter_25408892 p span.metadata span.author img{float:left;margin:0 10px 0 0px;width:48px;height:48px} #embedly_twitter_25408892 p a {color: #0084B4; text-decoration:none;} #embedly_twitter_25408892 p a:hover{text-decoration:underline} #embedly_twitter_25408892 .embedly_timestamp{font-size:13px;display:inline-block;margin-top: 5px;} #embedly_twitter_25408892 .components-above span.embedly_timestamp{font-size:10px;margin-top: 1px;line-height:12px} #embedly_twitter_25408892 a {color: #0084B4; text-decoration:none;} #embedly_twitter_25408892 a:hover{text-decoration:underline} #embedly_twitter_25408892 .tweet-screen-name {font-size: 14px; font-weight: bold;} #embedly_twitter_25408892 .tweet-full-name {padding-left: 4px; color: #999; font-size: 12px;} #embedly_twitter_25408892 .tweet-actions{margin-left: 10px;font-size:13px;display:inline-block;width:250px} #embedly_twitter_25408892 .components-above span.tweet-actions{font-size:10px} #embedly_twitter_25408892 .controls{line-height:12px!important} #embedly_twitter_25408892 .tweet-actions a {margin-left:5px} #embedly_twitter_25408892 .tweet-actions a b{font-weight:normal} #embedly_twitter_25408892 .components-above span.tweet-actions a b{vertical-align:baseline;line-height:12px} #embedly_twitter_25408892 .components-above .tweet-text{font-size:13px;vertical-align:baseline} #embedly_twitter_25408892 .tweet-image {float: left; width: 40px;} #embedly_twitter_25408892 .tweet-user-block-image {float: left; width: 48px; height: 48px} #embedly_twitter_25408892 .tweet-row {margin-left: 40px; margin-top: 3px;line-height: 17px;} #embedly_twitter_25408892 .tweet-user-block {margin-left: -40px;} #embedly_twitter_25408892 .stream-item {padding-bottom: 0px; margin-left: 12px;} #embedly_twitter_25408892 .simple-tweet-image img {margin-top: 4px;} #embedly_twitter_25408892 .simple-tweet-content {margin: 0 0 13px 0px; font-size: 14px; min-height:48px;} #embedly_twitter_25408892 .in-reply-to-border {border-color: #EBEBEB; border-style: solid; border-width: 1px 0 0;} #embedly_twitter_25408892 .in-reply-to-text {margin-left: 4px; padding-left: 8px; padding-right: 10px; color: #999; font-size: 12px;} #embedly_twitter_25408892 .tweet-actions i {background: transparent url(http://a2.twimg.com/a/1306889658/phoenix/img/sprite-icons.png) no-repeat;width:15px;height:15px;margin:0 4px -3px 3px;outline: none; text-indent:-99999px;vertical-align:baseline;display:inline-block;position:relative;} #embedly_twitter_25408892 .tweet-actions a.retweet-action i {background-position:-192px 0;} #embedly_twitter_25408892 .tweet-actions a.reply-action i {background-position:0 0;} #embedly_twitter_25408892 .tweet-actions a.favorite-action i {background-position:-32px 0;}
</style><br />
<div class="embedly_tweet_content">
<div class="components-middle">
<span class="metadata"><span class="author"><a href="http://twitter.com/jambay"><img src="http://a1.twimg.com/profile_images/51560491/james_bayer_normal.jpg" /></a><strong><a href="http://twitter.com/jambay">@jambay</a></strong><br />jambay</span></span> today was my first day at <a href="http://search.twitter.com/search?q=vmware" title="#vmware search Twitter">#vmware</a>. 1st impressions: exciting, intense, active, great campus, vibrant, nice perks. <a href="http://search.twitter.com/search?q=cfoundry" title="#cfoundry search Twitter">#cfoundry</a> fires me up.<br />
<span class="embedly_timestamp"><a href="http://twitter.com/jambay/status/123647429378707456" title="Tue Oct 11 06:33:39 +0000 2011">Oct 11</a> via web</span><span class="tweet-actions"><a class="favorite-action" href="https://twitter.com/intent/favorite?tweet_id=123647429378707456" title="Favorite"><i></i><b>Favorite</b></a><a class="retweet-action" href="https://twitter.com/intent/retweet?tweet_id=123647429378707456" title="Retweet"><i></i><b>Retweet</b></a><a class="reply-action" href="https://twitter.com/intent/tweet?in_reply_to=123647429378707456" title="Reply"><i></i><b>Reply</b></a></span></div>
</div>
</div>
<br />
I feel like the PaaS space is still very much in it's early days, somewhat like the application server market was in 1999 when I first started writing my first Servlets with WebSphere as a fresh out-of-school IBMer learning Java. VMware has assembled an incredibly talented team over the last few years to work in this area and has been doing lots of hiring lately <a href="http://wordpress.chanezon.com/?p=1729">like this example demonstrates</a>. In addition to the great people, VMware has a fantastic technology portfolio that is unburdened by a huge legacy middleware business that allows them to think differently and move with much more agility. Do not misunderstand me, I believe Oracle, IBM, Redhat and other traditional middleware vendors will likely still have success selling traditional middleware in the short and mid-term, but I had to jump at this opportunity to be involved where I think the most innovation is and make my impact on this developing space that I think has great promise.<br />
<br />
Thank you to everyone at Oracle for the kind words and emails. I really appreciated my time there and at BEA Systems, made great friends and learned a lot. I know that Java EE, Glassfish and WebLogic Server are in great hands and you will continue being successful.<br />
<br />
If you want to learn more about what has me so excited about Cloud Foundry, there are several obvious paths. One great aspect of Cloud Foundry is that it's <a href="https://github.com/cloudfoundry">hosted on github</a> and <a href="http://en.wikipedia.org/wiki/Cloud_Foundry">Apache 2.0 licensed</a>, so it's easy to get and review the code. You can also download and use the complete package with a <a href="https://www.cloudfoundry.com/micro">Micro Cloud Foundry</a> virtual machine that you can run on a laptop, <a href="http://support.cloudfoundry.com/entries/20329947-introduction-to-using-micro-cloud-foundry-with-spring-sts">with a step-by-step example</a> using Java or <a href="http://blog.cloudfoundry.com/post/5638655616/cloud-foundry-for-ruby-developers-a-tutorial">other languages and frameworks like Ruby</a>. You can also <a href="http://www.youtube.com/cloudfoundry">watch a video or two</a> on youtube if you just want to see more about what it's all about.<br />
<br />
<br />Unknownnoreply@blogger.com5tag:blogger.com,1999:blog-4633788430514237697.post-37272640790379067732011-09-29T22:35:00.000-07:002011-10-06T22:42:57.901-07:00Coherence*Web with WebLogic Server Simple Example and Troubleshooting Overview<span class="Apple-style-span" style="color: red;">This blog was originally posted on <a href="http://blogs.oracle.com/jamesbayer">http://blogs.oracle.com/jamesbayer</a> when I worked for Oracle.</span>
<br />
<div class="MsoNormal">
<span style="font-family: Arial, sans-serif; font-size: 12pt;">This quick troubleshooting guide covers a basic setup of a simple sample application using Coherence*Web instead of traditional WebLogic Server session replication. I used Coherence 3.6.1.x and WebLogic Server 10.3.4 for when I originally created this example, but the steps should be similar for any Coherence 3.5+ and WebLogic Server release capable of using the Coherence*Web SPI, which include some older releases of WLS, but consider 10.3.1+ as the most well-worn-path. I apologize for the formatting, which is a bit sloppy compared to my normal blog posts. This has been in a word doc on my desktop for a long time waiting for when I had time to post it properly. Given two requests for this in the last week I figured a sloppy blog post was better than not sharing it broadly.</span></div>
<div class="MsoNormal">
<span style="font-family: Arial, sans-serif; font-size: 12pt;">For simplicity, we are assuming 2 WebLogic
Server managed server instances in a WLS Cluster are running Coherence*Web as
storage disabled nodes. The WebLogic
Servers will have a <a href="http://www.blogger.com/jamesbayer/resource/CWebTestApp.ear">simple test web application located here</a> deployed that stores session data on a
Coherence cluster with 2 storage enabled cache servers. There are a sequence of steps that help
validate that session failover is working properly. Some of these steps are from product
documentation, and I've supplemented with my own comments <span style="color: red;">in red</span>. Note
that this example will not use Active Cache, which is a way to manage Coherence
configuration and Cache Server lifecycle from WebLogic Server. I recommend users understand this example
first before adding on Active Cache. More detail on Active Cache including a video is covered in this blog
entry </span><a href="http://www.blogger.com/jamesbayer/entry/weblogic_server_1034_screencas">http://blogs.oracle.com/jamesbayer/entry/weblogic_server_1034_screencas</a><span style="font-family: Arial, sans-serif; font-size: 12pt;"><o:p></o:p></span></div>
<div class="MsoNormal">
<strong><span style="color: #336699; font-family: Arial, sans-serif; font-size: 12pt;">2.2.6.2 Configuring EAR-Scoped Cluster Nodes<o:p></o:p></span></strong></div>
<div class="MsoNormal">
<span style="font-family: Arial, sans-serif; font-size: 12pt;">To use Coherence*Web for
session management in EAR-scoped cluster nodes, follow these steps:<o:p></o:p></span></div>
<ol start="1" type="1">
<li class="MsoNormal"><span style="font-family: Arial, sans-serif; font-size: 12pt;">Use the WebLogic Server Administration Console to
deploy the </span><span style="color: #336699; font-family: 'Courier New'; font-size: 10pt;">coherence.jar</span><span style="font-family: Arial, sans-serif; font-size: 12pt;"> and </span><span style="color: #336699; font-family: 'Courier New'; font-size: 10pt;">coherence-web-spi.war</span><span style="font-family: Arial, sans-serif; font-size: 12pt;"> files
as shared libraries to all of the target servers where the application
will be deployed. See "Install a Java EE Library" in <em>Oracle
Fusion Middleware Oracle WebLogic Server Administration Console Help</em> for
more information.<o:p></o:p></span></li>
</ol>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt;">I always recommend using a
shared library to include the coherence.jar on the classpath of your
application instead of the approach where it is embedded directly inside your
application (say in APP-INF/lib or WEB-INF/lib). This way if you patch or upgrade Coherence, the
most you need to do is redeploy the coherence.jar shared library and your
application. If you use the approach
where your application directly embeds coherence.jar inside of it, then you
need a new build of your application which updates the embedded coherence.jar, which is typically an undesirable process.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt;">Note: The WLS 10.3.1 Administrative
Console will not let you deploy coherence.jar without an error, but you can use
the WLST command like:<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: 'Courier New';">deploy('coherence','/scratch/jbayer/coherence/lib/coherence.jar',
libraryModule='true')<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">This console
deployment issue does not affect <strong>WLS
10.3.2+. </strong>However, you may note what
appears to be an error when deploying coherence.jar, but if you read it closely "Assuming this is a library deployment." you will see that it is
not an error, it is a warning and you can proceed with the deployment..<o:p></o:p></span><br />
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;"><br /></span></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://blogs.oracle.com/jamesbayer/resource/deployCoherence.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://blogs.oracle.com/jamesbayer/resource/deployCoherence.png" /></a></div>
<span class="Apple-style-span" style="color: red; font-family: Arial, sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"><br /></span></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;"><br /></span><br />
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">Assuming
you are using an EAR, create a library reference to coherence in your sample
application. Assuming you have an EAR
file with a WAR module inside, then weblogic-application.xml looks like this:<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in;">
<span style="color: red; font-family: 'Courier New'; font-size: 12pt;"><weblogic-application ...><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in;">
<span style="color: red; font-family: 'Courier New'; font-size: 12pt;">...<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in;">
<span style="color: red; font-family: 'Courier New'; font-size: 12pt;"> </span><strong><span style="color: red; font-family: 'Courier New'; font-size: 12pt;"><library-ref></span></strong><span style="color: red; font-family: 'Courier New'; font-size: 12pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in;">
<span style="color: red; font-family: 'Courier New'; font-size: 12pt;"> </span><strong><span style="color: red; font-family: 'Courier New'; font-size: 12pt;"><library-name>coherence</library-name></span></strong><span style="color: red; font-family: 'Courier New'; font-size: 12pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in;">
<span style="color: red; font-family: 'Courier New'; font-size: 12pt;"> </span><strong><span style="color: red; font-family: 'Courier New'; font-size: 12pt;"></library-ref></span></strong><span style="color: red; font-family: 'Courier New'; font-size: 12pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in;">
<span style="color: red; font-family: 'Courier New'; font-size: 12pt;">...<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0.5in; margin-right: 0in; margin-top: 0in;">
<span style="color: red; font-family: 'Courier New'; font-size: 12pt;"></weblogic-application><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">The
above library-ref element will merge the coherence.jar into the APP-INF/lib of
the App during the deployment process, which will make Coherence classes EAR
scoped.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">Quick
aside, If you are using a stand-alone WAR file that is not encapsulated inside
of an EAR, then instead of using a library reference, you can use an Optional
Package approach to refer to the library, which involves creating an entry in
the META-INF/manifest.mf of the WAR file like this:<o:p></o:p></span></div>
<div class="MsoNormal" style="color: black;">
<span style="font-family: 'Courier New';">Manifest-Version: 1.0<o:p></o:p></span></div>
<div class="MsoNormal" style="color: black;">
<span style="font-family: 'Courier New';">Class-Path: <o:p></o:p></span></div>
<div class="MsoNormal" style="color: black;">
<span style="font-family: 'Courier New';">Extension-List: coherencejar<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: 'Courier New';"><span style="color: black;">coherencejar-Extension-Name: coherence</span></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: 'Courier New';"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">Note
that there must be a newline at the end of the last line with text otherwise it
will not work correctly. Unlike the
library reference mechanism, the library is not merged into an archive on disk
at deployment time, rather it utilizes a Java Optional Package approach to put
the coherence.jar on the classpath.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">For
the WAR modules, have the weblogic.xml use a library reference for the
coherence-web-spi.war like this:<o:p></o:p></span></div>
<div class="MsoNormal" style="color: black; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"><wls:weblogic-web-app ...</span></div>
<span style="color: black;"> </span>
<br />
<div class="MsoNormal" style="color: black; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> <wls:library-ref></span></div>
<span style="color: black;"> </span>
<br />
<div class="MsoNormal" style="color: black; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> <wls:library-name>coherence-web-spi</wls:library-name></span></div>
<span style="color: black;"> </span>
<br />
<div class="MsoNormal" style="color: black; line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </wls:library-ref></span></div>
<span style="color: black;"> </span><span style="color: black; font-family: 'Courier New'; font-size: 10pt; line-height: 115%;"></wls:weblogic-web-app></span>
<br />
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">This
will merge the contents of the coherence-web-spi.war with the application's web
module.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">Now
we also have to configure the tangosol-coherence-override.xml file if you want
to override default configuration settings. One such setting I like to override is to use Well-Known-Addresses
(WKA), which is a unicast approach instead of the default multicast networking
that many Network Administrators do not permit. The tangosol-coherence-override.xml file approach will be easier than using
-D options on the command line because in WLS there may be multiple web applications
using different Coherence configurations, and if you use -D options on the Java
command line, then it is the same configuration for all Coherence instances in
that JVM without some other tedious intervention. I used the latest release of Oracle
Enterprise Pack for Eclipse (OEPE) to create
the below configuration file with the Coherence tooling, which will use these
two WKA addresses and auto-increment the port the more servers you start
(default). I put one copy in the EAR
files APP-INF/classes directory and one in $COHERENCE_HOME. You can replace the hostname of</span><span style="color: red;"> </span><span style="font-family: 'Courier New'; font-size: 10pt; line-height: 115%;">adc2101131.us.oracle.com</span><span style="color: red;"> </span><span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">with appropriate hostnames for your systems. Note that the newer versions of Coherence use
XSD instead of DTD.</span><span style="color: red;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><?</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">xml</span><span style="font-family: 'Courier New'; font-size: 10pt;"> <span style="color: #7f007f;">version</span>=<em><span style="color: #2a00ff;">"1.0"</span></em><span style="color: teal;">?></span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><!</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">DOCTYPE</span><span style="font-family: 'Courier New'; font-size: 10pt;"> <span style="color: teal;">coherence</span> <span style="color: grey;">SYSTEM</span> <span style="color: #3f7f5f;">"coherence-override.dtd"</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">coherence</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">cluster-config</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">unicast-listener</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">well-known-addresses</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">socket-address</span><span style="font-family: 'Courier New'; font-size: 10pt;"> <span style="color: #7f007f;">id</span>=<em><span style="color: #2a00ff;">"2"</span></em><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">address</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;">adc2101131.us.oracle.com</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"></</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">address</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">port</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;">8090</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"></</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">port</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"></</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">socket-address</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">socket-address</span><span style="font-family: 'Courier New'; font-size: 10pt;"> <span style="color: #7f007f;">id</span>=<em><span style="color: #2a00ff;">"1"</span></em><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">address</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;">adc2101131.us.oracle.com</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"></</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">address</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">port</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;">8088</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"></</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">port</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"></</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">socket-address</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"></</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">well-known-addresses</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">address</span><span style="font-family: 'Courier New'; font-size: 10pt;"> <span style="color: #7f007f;">system-property</span>=<em><span style="color: #2a00ff;">"tangosol.coherence.localhost"</span></em><span style="color: teal;">></span>adc2101131.us.oracle.com<span style="color: teal;"></</span><span style="color: #3f7f7f;">address</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">port</span><span style="font-family: 'Courier New'; font-size: 10pt;"> <span style="color: #7f007f;">system-property</span>=<em><span style="color: #2a00ff;">"tangosol.coherence.localport"</span></em><span style="color: teal;">></span>8088<span style="color: teal;"></</span><span style="color: #3f7f7f;">port</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"><</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">port-auto-adjust</span><span style="font-family: 'Courier New'; font-size: 10pt;"> <span style="color: #7f007f;">system-property</span>=<em><span style="color: #2a00ff;">"tangosol.coherence.localport.adjust"</span></em><span style="color: teal;">></span>true<span style="color: teal;"></</span><span style="color: #3f7f7f;">port-auto-adjust</span><span style="color: teal;">></span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"></</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">unicast-listener</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"></</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">cluster-config</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: teal; font-family: 'Courier New'; font-size: 10pt;"></</span><span style="color: #3f7f7f; font-family: 'Courier New'; font-size: 10pt;">coherence</span><span style="color: teal; font-family: 'Courier New'; font-size: 10pt;">></span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"><o:p> </o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">Then before
you deploy the application to Weblogic Server, you need to setup and start the
cache servers. I simply clone
$COHERENCE_HOME/bin/cache-server.sh to
$COHERENCE_HOME/bin/sessions-cache-server.sh I'll have bolded and highlighted the edits I made....</span><span style="color: red;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';">#!/bin/sh<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"># This will start a
cache server<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"># specify the
Coherence installation directory<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';">COHERENCE_HOME=.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"># specify the JVM
heap size<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';">MEMORY=512m<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';">if [ ! -f
${COHERENCE_HOME}/bin/<strong><span style="color: red;">session-cache-server.sh</span></strong> ]; then<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"> echo "<strong><span style="color: red;">session-cache-server.sh</span></strong>: must be run
from the Coherence installation directory."<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"> exit<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';">fi<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';">if [ -f
$JAVA_HOME/bin/java ]; then<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"> JAVAEXEC=$JAVA_HOME/bin/java<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';">else<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"> JAVAEXEC=java<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';">fi<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';">JAVA_OPTS="-Xms$MEMORY
-Xmx$MEMORY <strong><span style="color: red;">-Dtangosol.coherence.session.localstorage=true
-Dtangosol.coherence.cacheconfig=WEB-INF/classes/session-cache-config.xml
-Dtangosol.coherence.override=/scratch/jbayer/coherence/tangosol-coherence-override.xml</span></strong>"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';">$JAVAEXEC -server
-showversion $JAVA_OPTS -cp "$COHERENCE_HOME/lib/coherence.jar<strong><span style="color: red;">:$COHERENCE_HOME/lib/coherence-web-spi.war</span></strong>"
com.tangosol.net.DefaultCacheServer $1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">Then start
two instances of the session-cache-server.sh from the $COHERENCE_HOME directory
like this:<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';">bash-3.2$
bin/session-cache-server.sh<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">Make sure they join the cluster together and
see each other by viewing the member list in the output. Here is the output from the first
server. Note the highlighted areas in
red which show that:<o:p></o:p></span></div>
<ul>
<li><span style="color: red; font-family: Symbol; font-size: 12pt; line-height: 115%;">·<span style="font: normal normal normal 7pt/normal 'Times New Roman';"> </span></span><span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">the override file we intend is
being used<o:p></o:p></span></li>
</ul>
<div align="center">
</div>
<ul>
<li><span style="color: red; font-family: Symbol; font-size: 12pt; line-height: 115%;">·<span style="font: normal normal normal 7pt/normal 'Times New Roman';"> </span></span><span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">the session-cache-config.xml from
the coherence-web-spi.war is being used<o:p></o:p></span></li>
</ul>
<div align="center">
</div>
<ul>
<li><span style="color: red; font-family: Symbol; font-size: 12pt; line-height: 115%;">·<span style="font: normal normal normal 7pt/normal 'Times New Roman';"> </span></span><span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">that the protocol specified in the
override is being used, in this case WKA mans unicast instead of multicast<o:p></o:p></span></li>
</ul>
<div align="center">
</div>
<ul>
<li><span style="color: red; font-family: Symbol; font-size: 12pt; line-height: 115%;">·<span style="font: normal normal normal 7pt/normal 'Times New Roman';"> </span></span><span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">the distributed sessions service is
storage enabled<o:p></o:p></span></li>
</ul>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">bash-3.2$ bin/session-cache-server.sh <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">java version "1.6.0_21"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Java(TM) SE Runtime Environment (build 1.6.0_21-b51)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Java HotSpot(TM) Server VM (build 17.0-b17, mixed mode)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:26:56.374/0.580 Oracle Coherence 3.6.1.0
<Info> (thread=main, member=n/a): Loaded operational configuration from
"jar:file:/scratch/jbayer/coherence/lib/coherence.jar!/tangosol-coherence.xml"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:26:56.379/0.585 Oracle Coherence 3.6.1.0
<Info> (thread=main, member=n/a): Loaded operational overrides from
"file:<span style="color: red;">/scratch/jbayer/coherence/tangosol-coherence-override.xml</span>"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:26:56.386/0.592 Oracle Coherence 3.6.1.0
<D5> (thread=main, member=n/a): Optional configuration override
"/custom-mbeans.xml" is not specified<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Oracle Coherence Version 3.6.1.0 Build 19636<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Grid Edition: Development
mode<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Copyright (c) 2000, 2010, Oracle and/or its affiliates. All
rights reserved.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:26:56.760/0.966 Oracle Coherence GE 3.6.1.0
<Info> (thread=main, member=n/a): Loaded cache configuration from
"jar:file:<span style="color: red;">/scratch/jbayer/coherence/lib/coherence-web-spi.war!/WEB-INF/classes/session-cache-config.xml</span>"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:26:57.257/1.463 Oracle Coherence GE 3.6.1.0
<D4> (thread=main, member=n/a): TCMP bound to /10.229.188.238:8088 using
SystemSocketProvider<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:27:27.613/31.819 Oracle Coherence GE 3.6.1.0
<Info> (thread=Cluster, member=n/a): Created a new cluster with
Member(Id=1, Timestamp=2011-02-15 23:26:57.261, Address=10.229.188.238:8088,
MachineId=21486, Location=machine:jbayer-vm,process:30802,
Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=2,
SocketCount=2) UID=0x0AE5BCEE0000012E2D5D5EED53EE1F98<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:27:27.616/31.822 Oracle Coherence GE 3.6.1.0
<Info> (thread=main, member=n/a): Started cluster Name=n/a<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">WellKnownAddressList(Size=2,<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> WKA{Address=10.229.188.238, Port=8090}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> WKA{Address=10.229.188.238, Port=8088}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">MasterMemberSet<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> (<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> ThisMember=Member(Id=1,
Timestamp=2011-02-15 23:26:57.261, Address=10.229.188.238:8088,
MachineId=21486, Location=machine:jbayer-vm,process:30802,
Role=CoherenceServer)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> OldestMember=Member(Id=1,
Timestamp=2011-02-15 23:26:57.261, Address=10.229.188.238:8088,
MachineId=21486, Location=machine:jbayer-vm,process:30802,
Role=CoherenceServer)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> ActualMemberSet=MemberSet(Size=1, BitSetCount=2<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Member(Id=1,
Timestamp=2011-02-15 23:26:57.261, Address=10.229.188.238:8088,
MachineId=21486, Location=machine:jbayer-vm,process:30802,
Role=CoherenceServer)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> RecycleMillis=1200000<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> RecycleSet=MemberSet(Size=0, BitSetCount=0<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">TcpRing{Connections=[]}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">IpMonitor{AddressListSize=0}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:27:27.665/31.871 Oracle Coherence GE 3.6.1.0
<D5> (thread=Invocation:Management, member=1): Service Management joined
the cluster with senior service member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:27:27.828/32.034 Oracle Coherence GE 3.6.1.0
<D5> (thread=ReplicatedCache:ReplicatedSessionsMisc, member=1): Service
ReplicatedSessionsMisc joined the cluster with senior service member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:27:28.074/32.280 Oracle Coherence GE 3.6.1.0
<D5> (thread=DistributedCache:DistributedSessions, member=1): Service
DistributedSessions joined the cluster with senior service member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:27:28.105/32.311 Oracle Coherence GE 3.6.1.0
<Info> (thread=main, member=1): <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Services<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> (<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED),
Id=0, Version=3.6, OldestMemberId=1}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> InvocationService{Name=Management, State=(SERVICE_STARTED), Id=1,
Version=3.1, OldestMemberId=1}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> ReplicatedCache{Name=ReplicatedSessionsMisc, State=(SERVICE_STARTED),
Id=2, Version=3.0, OldestMemberId=1}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> PartitionedCache{Name=DistributedSessions, State=(SERVICE_STARTED), <span style="color: red;">LocalStorage=enabled</span>, PartitionCount=257,
BackupCount=1, AssignedPartitions=257, BackupPartitions=0}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Started DefaultCacheServer...<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">Here is the output from the second cache server. Note that it shows both servers being part
of the cluster now. I'll highlight a few
things to look for. Notably, the same
configuration values are used as the previous cluster and that this time the
member id is 2 and at the end this node asks the member 1 for some partitions.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">bash-3.2$ bin/session-cache-server.sh <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">java version "1.6.0_21"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Java(TM) SE Runtime Environment (build 1.6.0_21-b51)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Java HotSpot(TM) Server VM (build 17.0-b17, mixed mode)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:34:51.856/0.251 Oracle Coherence 3.6.1.0
<Info> (thread=main, member=n/a): Loaded operational configuration from
"jar:file:/scratch/jbayer/coherence/lib/coherence.jar!/tangosol-coherence.xml"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:34:51.861/0.256 Oracle Coherence 3.6.1.0
<Info> (thread=main, member=n/a): Loaded operational overrides from
"file:<span style="color: red;">/scratch/jbayer/coherence/tangosol-coherence-override.xml</span>"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:34:51.866/0.261 Oracle Coherence 3.6.1.0
<D5> (thread=main, member=n/a): Optional configuration override
"/custom-mbeans.xml" is not specified<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Oracle Coherence Version 3.6.1.0 Build 19636<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Grid Edition: Development
mode<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Copyright (c) 2000, 2010, Oracle and/or its affiliates. All
rights reserved.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:34:52.147/0.542 Oracle Coherence GE 3.6.1.0
<Info> (thread=main, member=n/a): Loaded cache configuration from
"jar:file:/scratch/jbayer/coherence/lib/coherence-web-spi.war!/WEB-INF/classes/session-cache-config.xml"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:34:52.500/0.895 Oracle Coherence GE 3.6.1.0
<D4> (thread=main, member=n/a): TCMP bound to <span style="color: red;">/10.229.188.238:8090</span>
using SystemSocketProvider<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:35:16.251/24.646 Oracle Coherence GE 3.6.1.0
<Info> (thread=Cluster, member=n/a): <span style="color: red;">This
Member(Id=2</span>, Timestamp=2011-02-15 23:35:16.04,
Address=10.229.188.238:8090, MachineId=21486,
Location=machine:jbayer-vm,process:31080, Role=CoherenceServer, Edition=Grid
Edition, Mode=Development, CpuCount=2, SocketCount=2) joined cluster with
senior Member(Id=1, Timestamp=2011-02-15 23:34:45.487,
Address=10.229.188.238:8088, MachineId=21486,
Location=machine:jbayer-vm,process:31060, Role=CoherenceServer, Edition=Grid
Edition, Mode=Development, CpuCount=2, SocketCount=2)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:35:16.270/24.665 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member 1 joined Service Cluster with
senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:35:16.270/24.665 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member 1 joined Service Management
with senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:35:16.270/24.665 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member 1 joined Service
ReplicatedSessionsMisc with senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:35:16.270/24.665 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member 1 joined Service
DistributedSessions with senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:35:16.273/24.668 Oracle Coherence GE 3.6.1.0
<Info> (thread=main, member=n/a): Started cluster Name=n/a<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">WellKnownAddressList(Size=2,<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> WKA{Address=10.229.188.238, Port=8088}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> WKA{Address=10.229.188.238, Port=8090}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">MasterMemberSet<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> (<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> ThisMember=Member(Id=2,
Timestamp=2011-02-15 23:35:16.04, Address=10.229.188.238:8090, MachineId=21486,
Location=machine:jbayer-vm,process:31080, Role=CoherenceServer)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> OldestMember=Member(Id=1, Timestamp=2011-02-15 23:34:45.487,
Address=10.229.188.238:8088, MachineId=21486,
Location=machine:jbayer-vm,process:31060, Role=CoherenceServer)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> ActualMemberSet=MemberSet(Size=2,
BitSetCount=2<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Member(Id=1,
Timestamp=2011-02-15 23:34:45.487, Address=10.229.188.238:8088,
MachineId=21486, Location=machine:jbayer-vm,process:31060,
Role=CoherenceServer)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Member(Id=2,
Timestamp=2011-02-15 23:35:16.04, Address=10.229.188.238:8090, MachineId=21486,
Location=machine:jbayer-vm,process:31080, Role=CoherenceServer)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> RecycleMillis=1200000<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> RecycleSet=MemberSet(Size=0, BitSetCount=0<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">TcpRing{Connections=[1]}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">IpMonitor{AddressListSize=0}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:35:16.321/24.716 Oracle Coherence GE 3.6.1.0
<D5> (thread=Invocation:Management, member=2): Service Management joined
the cluster with senior service member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:35:16.429/24.825 Oracle Coherence GE 3.6.1.0
<D5> (thread=ReplicatedCache:ReplicatedSessionsMisc, member=2): Service
ReplicatedSessionsMisc joined the cluster with senior service member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:35:16.618/25.013 Oracle Coherence GE 3.6.1.0
<D5> (thread=DistributedCache:DistributedSessions, member=2): Service
DistributedSessions joined the cluster with senior service member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:35:16.648/25.043 Oracle Coherence GE 3.6.1.0
<Info> (thread=main, member=2): <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Services<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> (<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED),
Id=0, Version=3.6, OldestMemberId=1}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> InvocationService{Name=Management, State=(SERVICE_STARTED), Id=1,
Version=3.1, OldestMemberId=1}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> ReplicatedCache{Name=ReplicatedSessionsMisc, State=(SERVICE_STARTED),
Id=2, Version=3.0, OldestMemberId=1}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> PartitionedCache{Name=DistributedSessions, State=(SERVICE_STARTED), <span style="color: red;">LocalStorage=enabled</span>, PartitionCount=257,
BackupCount=1, AssignedPartitions=0, BackupPartitions=0}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Started DefaultCacheServer...<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-15 23:35:16.657/25.052 Oracle Coherence GE 3.6.1.0
<D4> (thread=DistributedCache:DistributedSessions, member=2): <span style="color: red;">Asking member 1 for 128 primary partitions</span></span><span style="color: red;"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">If the cluster has formed well, then we are
ready to deploy the application to WebLogic Server. Deploy CWebTestApp.ear (assuming you have the
correct values for APP-INF/classes/tangosol-coherence-override.xml inside of it
and see if it activates and joins the cluster. Here is output from one of the two managed servers in the WLS cluster. Your output may vary to a degree.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><Feb 16, 2011 12:12:02 AM PST> <Notice>
<WebLogicServer> <BEA-000360> <Server started in RUNNING
mode> <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><Feb 16, 2011 12:13:09 AM PST> <Warning>
<Munger> <BEA-2156203> <A version attribute was not found in
element application in the deployment descriptor in
/scratch/jbayer/wls1034/user_projects/domains/base_domain/servers/ManagedServer_2/stage/CWebTestApp/CWebTestApp.ear/META-INF/application.xml.
A version attribute is required, but this version of the Weblogic Server will
assume that the JEE5 is used. Future versions of the Weblogic Server will
reject descriptors that do not specify the JEE version.> <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><Feb 16, 2011 12:13:09 AM PST> <Warning>
<Munger> <BEA-2156203> <A version attribute was not found in
element application in the deployment descriptor in
/scratch/jbayer/wls1034/user_projects/domains/base_domain/servers/ManagedServer_2/tmp/_WL_user/CWebTestApp/sapbbg/META-INF/application.xml.
A version attribute is required, but this version of the Weblogic Server will
assume that the JEE5 is used. Future versions of the Weblogic Server will
reject descriptors that do not specify the JEE version.> <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:10.175/115.554 Oracle Coherence 3.6.1.0
<Info> (thread=[STANDBY] ExecuteThread: '5' for queue:
'weblogic.kernel.Default (self-tuning)', member=n/a): Loaded operational
configuration from "zip:/scratch/jbayer/wls1034/user_projects/domains/base_domain/servers/ManagedServer_2/stage/coherence/3.6.1.0@3.6.1.0/coherence.jar!/tangosol-coherence.xml"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:10.190/115.568 Oracle Coherence 3.6.1.0
<Info> (thread=[STANDBY] ExecuteThread: '5' for queue:
'weblogic.kernel.Default (self-tuning)', member=n/a): Loaded operational
overrides from
"zip:/scratch/jbayer/wls1034/user_projects/domains/base_domain/servers/ManagedServer_2/stage/coherence/3.6.1.0@3.6.1.0/coherence.jar!/tangosol-coherence-override-dev.xml"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:10.191/115.569 Oracle Coherence 3.6.1.0
<Info> (thread=[STANDBY] ExecuteThread: '5' for queue:
'weblogic.kernel.Default (self-tuning)', member=n/a): Loaded operational
overrides from
"file:/scratch/jbayer/wls1034/user_projects/domains/base_domain/servers/ManagedServer_2/tmp/_WL_user/CWebTestApp/sapbbg/APP-INF/classes/tangosol-coherence-override.xml"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:10.197/115.575 Oracle Coherence 3.6.1.0
<D5> (thread=[STANDBY] ExecuteThread: '5' for queue:
'weblogic.kernel.Default (self-tuning)', member=n/a): Optional configuration
override "/custom-mbeans.xml" is not specified<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Oracle Coherence Version 3.6.1.0 Build 19636<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Grid Edition: Development
mode<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">Copyright (c) 2000, 2010, Oracle and/or its affiliates. All
rights reserved.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:10.391/115.769 Oracle Coherence GE 3.6.1.0
<Info> (thread=[STANDBY] ExecuteThread: '5' for queue:
'weblogic.kernel.Default (self-tuning)', member=n/a): Loaded cache
configuration from
"file:/scratch/jbayer/wls1034/user_projects/domains/base_domain/servers/ManagedServer_2/tmp/_WL_user/coherence-web-spi/4yxuqd/WEB-INF/classes/session-cache-config.xml"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><Feb 16, 2011 12:13:10 AM PST> <Warning>
<WorkManager> <BEA-002919> <Unable to find a WorkManager with
name wm/CoherenceWorkManager. Dispatch policy wm/CoherenceWorkManager will map
to the default WorkManager for the application CWebTestApp> <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:10.681/116.059 Oracle Coherence GE 3.6.1.0
<D5> (thread=[ACTIVE] ExecuteThread: '0' for queue:
'weblogic.kernel.Default (self-tuning)', member=n/a): <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Clustered Session Cache
Name=session-storage<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Local Session Cache
Name=local-session-storage<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Local Session Attribute
Cache Name=local-attribute-storage<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Death Certificate Cache
Name=session-death-certificates<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> SessionDistributionController Class Name=<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> AttributeScopeController
Class
Name=com.tangosol.coherence.servlet.AbstractHttpSessionCollection$ApplicationScopeController<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Maximum Session Inactive
Seconds=3600<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Session ID Character
Length=52<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Session Locking
Enforced=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Member Session Locking
Enforced=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Application Session
Locking Enforced=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Thread Session Locking
Enforced=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Session Get Lock
Timeout=300<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Suspect Attribute
Detection=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Strict "Servlet
Specification" Exception Handling=true<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Sticky Session
Ownership=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Sticky Session Ownership
Service Name=SessionOwnership<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Assume Session Locality
for Reaping=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Parallel Session
Reaping=true<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Allow Local
Attributes=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Use Default Session ID
Decoding=true<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Use Default Session ID
Encoding=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Session Expiry Filter
Factory=<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:11.256/116.634 Oracle Coherence GE 3.6.1.0
<Warning> (thread=[ACTIVE] ExecuteThread: '0' for queue:
'weblogic.kernel.Default (self-tuning)', member=n/a): PreferredUnicastUdpSocket
failed to set receive buffer size to 1428 packets (1.99MB); actual size is 25%,
357 packets (512KB). Consult your OS documentation regarding increasing the
maximum socket buffer size. Proceeding with the actual value may cause
sub-optimal performance.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:11.257/116.635 Oracle Coherence GE 3.6.1.0
<D4> (thread=[ACTIVE] ExecuteThread: '0' for queue:
'weblogic.kernel.Default (self-tuning)', member=n/a): TCMP bound to
/10.229.188.238:8094 using SystemSocketProvider<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:11.595/116.973 Oracle Coherence GE 3.6.1.0
<Info> (thread=Cluster, member=n/a): Failed to satisfy the variance:
allowed=16, actual=45<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:11.596/116.974 Oracle Coherence GE 3.6.1.0
<Info> (thread=Cluster, member=n/a): Increasing allowable variance to 19<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:11.944/117.322 Oracle Coherence GE 3.6.1.0
<Info> (thread=Cluster, member=n/a): This Member(Id=10,
Timestamp=2011-02-16 00:13:11.72, Address=10.229.188.238:8094, MachineId=21486,
Location=machine:jbayer-vm,process:32763, Role=WeblogicServer, Edition=Grid
Edition, Mode=Development, CpuCount=2, SocketCount=2) joined cluster with
senior Member(Id=1, Timestamp=2011-02-15 23:34:45.487,
Address=10.229.188.238:8088, MachineId=21486,
Location=machine:jbayer-vm,process:31060, Role=CoherenceServer, Edition=Grid
Edition, Mode=Development, CpuCount=2, SocketCount=2)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:11.997/117.375 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member(Id=2, Timestamp=2011-02-15
23:35:16.04, Address=10.229.188.238:8090, MachineId=21486,
Location=machine:jbayer-vm,process:31080, Role=CoherenceServer) joined Cluster
with senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:11.999/117.377 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member(Id=9, Timestamp=2011-02-16
00:13:11.687, Address=10.229.188.238:8092, MachineId=21486,
Location=machine:jbayer-vm,process:32676, Role=WeblogicServer) joined Cluster
with senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.044/117.422 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member 1 joined Service Cluster with
senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.045/117.424 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member 1 joined Service Management
with senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.046/117.424 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member 1 joined Service
ReplicatedSessionsMisc with senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.046/117.424 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member 1 joined Service
DistributedSessions with senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.046/117.424 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member 2 joined Service Cluster with
senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.046/117.424 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member 2 joined Service Management
with senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.046/117.424 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member 2 joined Service
ReplicatedSessionsMisc with senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.046/117.424 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=n/a): Member 2 joined Service DistributedSessions
with senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.087/117.465 Oracle Coherence GE 3.6.1.0
<Info> (thread=[ACTIVE] ExecuteThread: '0' for queue:
'weblogic.kernel.Default (self-tuning)', member=n/a): Started cluster Name=n/a<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">WellKnownAddressList(Size=2,<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> WKA{Address=10.229.188.238, Port=8088}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> WKA{Address=10.229.188.238, Port=8090}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">MasterMemberSet<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> (<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> ThisMember=Member(Id=10,
Timestamp=2011-02-16 00:13:11.72, Address=10.229.188.238:8094, MachineId=21486,
Location=machine:jbayer-vm,process:32763, Role=WeblogicServer)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> OldestMember=Member(Id=1, Timestamp=2011-02-15 23:34:45.487,
Address=10.229.188.238:8088, MachineId=21486,
Location=machine:jbayer-vm,process:31060, Role=CoherenceServer)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> ActualMemberSet=MemberSet(<span style="color: red;">Size=4,</span>
BitSetCount=2<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Member(Id=1,
Timestamp=2011-02-15 23:34:45.487, Address=10.229.188.238:8088,
MachineId=21486, Location=machine:jbayer-vm,process:31060, <span style="color: red;">Role=CoherenceServer</span>)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Member(Id=2,
Timestamp=2011-02-15 23:35:16.04, Address=10.229.188.238:8090, MachineId=21486,
Location=machine:jbayer-vm,process:31080, <span style="color: red;">Role=CoherenceServer</span>)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Member(Id=9,
Timestamp=2011-02-16 00:13:11.687, Address=10.229.188.238:8092,
MachineId=21486, Location=machine:jbayer-vm,process:32676, <span style="color: red;">Role=WeblogicServer</span>)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Member(Id=10,
Timestamp=2011-02-16 00:13:11.72, Address=10.229.188.238:8094, MachineId=21486,
Location=machine:jbayer-vm,process:32763, <span style="color: red;">Role=WeblogicServer</span>)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> RecycleMillis=1200000<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> RecycleSet=MemberSet(Size=0, BitSetCount=0<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> )<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">TcpRing{Connections=[9]}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">IpMonitor{AddressListSize=0}<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.199/117.577 Oracle Coherence GE 3.6.1.0
<D5> (thread=Invocation:Management, member=10): Service Management joined
the cluster with senior service member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.234/117.612 Oracle Coherence GE 3.6.1.0 <D5>
(thread=Cluster, member=10): Member 9 joined Service Management with senior
member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.478/117.856 Oracle Coherence GE 3.6.1.0
<D5> (thread=DistributedCache:DistributedSessions, member=10): Service
DistributedSessions joined the cluster with senior service member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.560/117.938 Oracle Coherence GE 3.6.1.0
<D5> (thread=Cluster, member=10): Member 9 joined Service
DistributedSessions with senior member 1<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.618/117.996 Oracle Coherence GE 3.6.1.0
<Info> (thread=[ACTIVE] ExecuteThread: '0' for queue:
'weblogic.kernel.Default (self-tuning)', member=10): Configured session model
"SplitHttpSessionCollection":<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Clustered Session Cache
Name=session-storage<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Local Session Cache
Name=local-session-storage<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Local Session Attribute
Cache Name=local-attribute-storage<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Death Certificate Cache
Name=session-death-certificates<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> SessionDistributionController Class Name=<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> AttributeScopeController
Class Name=com.tangosol.coherence.servlet.AbstractHttpSessionCollection$ApplicationScopeController<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Maximum Session Inactive
Seconds=3600<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Session ID Character
Length=52<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Session Locking
Enforced=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Member Session Locking
Enforced=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Application Session
Locking Enforced=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Thread Session Locking
Enforced=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Session Get Lock
Timeout=300<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Suspect Attribute
Detection=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Strict "Servlet
Specification" Exception Handling=true<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Sticky Session
Ownership=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Sticky Session Ownership
Service Name=SessionOwnership<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Assume Session Locality
for Reaping=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Parallel Session
Reaping=true<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Allow Local
Attributes=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Use Default Session ID
Decoding=true<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Use Default Session ID
Encoding=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Session Expiry Filter
Factory=<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;">2011-02-16 00:13:12.723/118.101 Oracle Coherence GE 3.6.1.0
<Info> (thread=[ACTIVE] ExecuteThread: '0' for queue:
'weblogic.kernel.Default (self-tuning)', member=10): Registering
HttpSessionManager(ServetContext=ServletContextWrapper (2.5)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> SessionHelper!=null<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> MajorVersion=2<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> MinorVersion=5<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Clustered=false<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> ServletContext
(wrapped)=weblogic.servlet.internal.session.CoherenceWebServletContextWrapper@1bc1ecee<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> AttributeMap=null<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"> Oracle Coherence
3.6.1.0) using object name "type=HttpSessionManager,nodeId=10,appId=<span style="color: red;">CWebTestAppcounter</span>"<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New'; font-size: 8pt; line-height: 115%;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span style="color: red;"><o:p> </o:p></span></div>
<div class="MsoNormal">
<span class="Apple-style-span" style="font-family: 'Courier New';"><br /></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://blogs.oracle.com/jamesbayer/resource/CWebTestAppDeployment.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://blogs.oracle.com/jamesbayer/resource/CWebTestAppDeployment.png" /></a></div>
<span class="Apple-style-span" style="font-family: 'Courier New';"><br /></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New';"><br /></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">If so, now try invoking the index.jsp of the
counter context path. If both managed
servers on are the same hostname, then the same cookie will be sent by the
browser (ports differences are ignored by browsers when sending cookies), and
you should see the counter increment by 1 when you have the same session. If your WLS servers happen to have different
IP addresses or hostnames, then you will have to use a load balancer. More on that later.<o:p></o:p></span></div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://blogs.oracle.com/jamesbayer/resource/counters.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://blogs.oracle.com/jamesbayer/resource/counters.jpg" /></a></div>
<span class="Apple-style-span" style="color: red;"><br /></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">To see if Coherence is really being used for
session state, kill all the WLS JVM(s) (not the Coherence session cache
servers!). Hit refresh in your browser. Both servers should be down. Keep the browser sessions open.</span><span style="color: red;"> <o:p></o:p></span></div>
<div class="MsoNormal">
<span class="Apple-style-span" style="color: red;"><br /></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://blogs.oracle.com/jamesbayer/resource/siteDown.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://blogs.oracle.com/jamesbayer/resource/siteDown.jpg" /></a></div>
<span class="Apple-style-span" style="color: red;"><br /></span><br />
<span class="Apple-style-span" style="color: red;"><br /></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;"> Now
restart the WLS managed servers. Since
the browser is open, the session reference is still in your browser cookie. When WLS servers are started again and you can
refresh the page, the count should pick up where you left off and not start
over.<o:p></o:p></span></div>
<div class="MsoNormal">
<span class="Apple-style-span" style="color: red;"><br /></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://blogs.oracle.com/jamesbayer/resource/threeAndFour.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://blogs.oracle.com/jamesbayer/resource/threeAndFour.jpg" /></a></div>
<span class="Apple-style-span" style="color: red;"><br /></span><br />
<span class="Apple-style-span" style="color: red;"><br /></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">Now you can try the load balancer such as Apache
or the simple one included with coherence. In this case I'm going to have the simple load balancer on port 8080 and
refer to the managed servers on ports 8001/8002 respectively.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';">java -cp
coherence.jar com.tangosol.net.LoadBalancer adc2101131:8080 adc2101131:8001
adc2101131:8002<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">Now I should be able to hit the load balancer
directly on port 8080. Using the same
browser session, I see that the cookie is still valid.<o:p></o:p></span></div>
<div class="MsoNormal">
<span class="Apple-style-span" style="color: red;"><br /></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://blogs.oracle.com/jamesbayer/resource/five.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://blogs.oracle.com/jamesbayer/resource/five.jpg" /></a></div>
<span class="Apple-style-span" style="color: red;"><br /></span><br />
<span class="Apple-style-span" style="color: red;"><br /></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">Plus I see that the output from the simple load
balancer shows me going to both servers, therefore we observe that the simple
Coherence load balancer is not sticky. Below is an example of that output:<o:p></o:p></span></div>
<div class="MsoNormal">
routing to 10.229.188.238:8002</div>
<div class="MsoNormal">
routing to 10.229.188.238:8001</div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">Now you should be able to stop one WLS managed
server and refresh and still get a valid result. If you refresh several times the LoadBalancer
output should have something like this in the System.Out showing that it failed
to connect to the server you stopped.</span><span style="color: red;"><o:p></o:p></span></div>
<div class="MsoNormal">
*** could not connect to 10.229.188.238:8002;
java.net.ConnectException: Connection refused</div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;"> Then
stop the other WLS managed server. Refresh
using the proxy address and there should be a failure to connect from the
browser. Then restart the managed server
you stopped first and the session should recover.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red; font-family: Arial, sans-serif; font-size: 12pt; line-height: 115%;">This marks the end of the basic Coherence*Web
with WebLogic Server example. For more
information, I recommend reading the Coherence*Web documentation and turning on
the JMX reporting features of Coherence and using a tool like JConsole to
explore the MBeans for Coherence*Web.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: red;"><o:p> </o:p></span></div>
Unknownnoreply@blogger.com10tag:blogger.com,1999:blog-4633788430514237697.post-58009190373484869332011-09-26T22:45:00.000-07:002011-10-06T22:47:17.463-07:00JRockit Flight Recorder Plugin for WebLogic Tab Pack behind a Proxy<span class="Apple-style-span" style="color: red;">This blog was originally posted on <a href="http://blogs.oracle.com/jamesbayer">http://blogs.oracle.com/jamesbayer</a> when I worked for Oracle.</span>
<br />
<br />
One of my favorite demos to show is JRockit Flight Recorder integration with WebLogic Server and the WebLogic Server Diagnostic Framework. It's a great way to see what's going on inside applications and the JVM without agents using out-of-the-box defaults with WebLogic Server and JRockit. <a href="http://www.blogger.com/jamesbayer/entry/weblogic_server_screencasts_-">I've made video's and blog posts about it previously</a> and we'll be happy to <a href="http://www.blogger.com/applicationgrid/entry/showcasing_the_1_app_server">give you a demo of it at Oracle Open World at the JavaOne booth or the WebLogic Server booth at the Demogrounds</a>. JRockit Mission Control, which is used to view the JVM recordings called JFRs for JRockit Flight Recording, has some plugins that it downloads from an Eclipse Update site to get the WebLogic Server specific view. If you're behind a firewall and need to use a proxy, there is a simple way to launch JRMC from a java command line that let's you specify the proxy host, port and other settings you might use like authentication. So from the JRockit bin directory, this is the command that you can use to launch Mission Control and make sure you use a proxy for network connections so you can use the Update Site with the proxy you specify. You can substitute your JROCKIT_HOME for your actual path and your actual proxy settings instead of the ones we use at Oracle.<br />
<span style="font-family: 'courier new', courier, monospace;">JROCKIT_HOME/bin/java -Dhttp.proxyPort=80
-Dhttp.proxyHost=www-proxy.us.oracle.com -jar </span><span style="font-family: 'courier new', courier, monospace;">JROCKIT_HOME/</span><span style="font-family: 'courier new', courier, monospace;">missioncontrol/mc.jar </span><br />
Once you launch JRMC with the proxy enabled (or without the proxy settings if you do not need a proxy to access the Oracle Eclipse Update Site), you can then use the link to install the experimental plugin from the Help menu as shown below. The one you want for sure is the WebLogic Tab Pack.<br />
<img src="http://blogs.oracle.com/jamesbayer/resource/installPlugin.png" /><br />
<img src="http://blogs.oracle.com/jamesbayer/resource/weblogicTabPack.png" /><br />
<br />Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-4633788430514237697.post-43426180335287930412011-07-23T22:49:00.000-07:002011-10-06T22:55:20.444-07:00wlstonweb - An Innovative Tool for WebLogic Scripting<span class="Apple-style-span" style="color: red;">This blog was originally posted on <a href="http://blogs.oracle.com/jamesbayer">http://blogs.oracle.com/jamesbayer</a> when I worked for Oracle.</span>
<br />
<br />
Antonio De Juan from Oracle Support introduced me to a <a href="https://www.samplecode.oracle.com/sf/projects/wlstonweb/">very innovative web application</a> he built and put on <a href="https://www.samplecode.oracle.com/">www.samplecode.oracle.com</a> called <a href="https://www.samplecode.oracle.com/sf/projects/wlstonweb/">wlstonweb</a>. This cool web application has 2 primary features.<br />
1) Interactive WLST Sessions via a web browser<br />
2) WLST Script Management via a web browser<br />
The interactive WLST session via a web interface is surprisingly almost equivalent to using WLST from a shell because it leverages AJAX and <del></del><br />
JQuery<br />
<a href="http://www.prototypejs.org/">Prototype</a>. The obvious benefit is, you can do everything that WLST exposes all from a web interface, which means that if you're on a mobile device, using someone else's computer, traveling, etc you have a lot of Administrative and Operation capabilities available even though you may not have a terminal handy.<br />
<a href="http://blogs.oracle.com/jamesbayer/resource/wlstonweb1.png"><img height="375" src="http://blogs.oracle.com/jamesbayer/resource/wlstonweb1.png" width="600" /></a> <br />
The WLST Script management features allows you to organize your WLST scripts on the file system in a catalog as well as create, edit, and run the scripts directly from the web interface. This is a great way to share WLST scripts that are used often among different parts of an organization and build up a catalog of scripts.<br />
<a href="http://blogs.oracle.com/jamesbayer/resource/editRunScripts.png"><img height="295" src="http://blogs.oracle.com/jamesbayer/resource/editRunScripts.png" width="640" /></a> <br />
I created a brief recording showcasing wlstonweb. I encourage you to <a href="http://www.youtube.com/embed/iSW_ly4g7gk?hd=1">watch it in 720p</a> so the recording isn't blurry. Check it out and <a href="https://www.samplecode.oracle.com/sf/global/do/viewUser/antonio_de_juan_ext">contact Antonio</a> via the samplecode site if you have comments or suggestions. The sampelcode UI can be difficult to navigate for new users, so go to the <a href="https://www.samplecode.oracle.com/sf/projects/wlstonweb/">wlstonweb project home page</a> -> File Releases -> war file -> prototype -> wlstonweb.war to download it . Nice work Antonio!<br />
<iframe frameborder="0" height="349" src="http://www.youtube.com/embed/iSW_ly4g7gk" width="560"></iframe>
Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-4633788430514237697.post-76082864843784906362011-07-13T22:53:00.000-07:002011-10-08T22:31:50.951-07:00Create WebLogic Diagnostic Image With Metric Thresholds
<span class="Apple-style-span" style="color: red;">This blog was originally posted on <a href="http://blogs.oracle.com/jamesbayer">http://blogs.oracle.com/jamesbayer</a> when I worked for Oracle.</span>
<br/>
<br/>
<p>My colleague <a href="/jeffwest">Jeff West</a> pointed me to <a href="http://stackoverflow.com">Stack Overflow</a> today where<a href="http://stackoverflow.com/questions/6647233/is-there-any-way-to-trigger-a-thread-dump-for-weblogic-server-as-soon-as-the-serv"> someone had a question about how to take a thread dump when a certain condition was present</a>. In their case, they are trying to troubleshoot a low thread count. Their monitoring tools were missing the critical time window and by the time the thread dump was taken, the threads had recovered. I thought this would be a great opportunity to see if a Diagnostic Image would contain a thread dump (yes it does), and whether I could automatically set WebLogic to <a href="http://download.oracle.com/docs/cd/E21764_01/web.1111/e13714/config_diag_images.htm">create the Diagnostic Image</a> easily when this condition was present (yes it is). Below is the image illustrating the issue they were trying to solve.</p>
<p><img src="http://blogs.oracle.com/jamesbayer/resource/lowthreads.png" width="407" height="123" /></p>
<p>Check out <a href="http://www.youtube.com/embed/QNtON5dcRTc?hd=1">this recording</a> if you want to know more about triggering actions when certain conditions are met automatically with WebLogic Server. I show a WebLogic Diagnostic Framework (WLDF) System Module, configure a Notification and a Watch based on a JMX metric threshold. The Watch has with an Alarm with a <a href="http://download.oracle.com/docs/cd/E21764_01/apirefs.1111/e13951/mbeans/WLDFWatchNotificationRuntimeMBean.html#resetWatchAlarm">manual reset (via JMX/WLST)</a> so that the Watch will not fire again until I reset it although you can also choose not to have Alarms or have them reset automatically after a time period. </p>
<p>I encourage you to <a href="http://www.youtube.com/embed/QNtON5dcRTc?hd=1">watch this video in 720p</a> mode or higher for clarity. You can change that using the menu at the bottom right video widget. It will not display correctly in this blog template when using 720p mode.</p>
<p>
<iframe width="640" height="390" src="http://www.youtube.com/embed/QNtON5dcRTc" frameborder="0"></iframe>
</p>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-4633788430514237697.post-58315460231336815212011-07-09T22:27:00.000-07:002011-10-08T22:27:43.341-07:00WebLogic Server Work Manager Demo Recording and Slides<div class="entry-body">
<span class="Apple-style-span" style="color: red;">This blog was originally posted on <a href="http://blogs.oracle.com/jamesbayer">http://blogs.oracle.com/jamesbayer</a> when I worked for Oracle.</span>
<br />
<br />
I have previously <a href="http://www.blogger.com/jamesbayer/entry/work_manager_leash_for_slow_js"> blogged about WebLogic Server Work Managers and this simple demo</a> before. Now there is a corresponding set of slides and a recording on the <a href="http://www.youtube.com/user/OracleWebLogic">youtube.com/OracleWebLogic channel</a> to accompany it. The slides also contain some additional detail not covered in the original example around stuck threads.
<br />
I was asked about this feature recently when someone needed to know how you could limit the number of requests serviced by WebLogic Server to match and not exceed the number of datasource connections configured. It's very straight-forward to make this happen with a work manager. The video is much more clear if you use the menu in the bottom right to render it in 720p. Unfortunately, the current blog template does not allow a width compatible with <a href="http://youtu.be/NnRcM29zJb4?hd=1">this video in youtube HD</a><a href=""> so it might be easier to use the link if it's not rendering well for you.
</a><br />
<a href="">
</a><br />
<iframe frameborder="0" height="390" src="http://www.youtube.com/embed/NnRcM29zJb4?hd=1" width="640"></iframe><a href="">
</a><br />
<a href=""> </a>
<br />
<div id="__ss_8547568" style="width: 425px;">
<a href=""> <strong style="display: block; margin-bottom: 4px; margin-left: 0px; margin-right: 0px; margin-top: 12px;"></strong></a><strong style="display: block; margin-bottom: 4px; margin-left: 0px; margin-right: 0px; margin-top: 12px;"><a href="http://www.slideshare.net/jambay/weblogic-server-work-managers-and-overload-protection" target="_blank" title="WebLogic Server Work Managers and Overload Protection">WebLogic Server Work Managers and Overload Protection</a></strong>
<iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/8547568" width="425"></iframe>
<br />
<div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px;">
View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/jambay" target="_blank">jambay</a> </div>
</div>
</div>
Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-4633788430514237697.post-36583325369605200932011-06-25T22:33:00.000-07:002011-10-08T22:36:20.079-07:00WebLogic Server JMS WLST Script – Who is Connected To My Server<div class="entry-body">
<span class="Apple-style-span" style="color: red;">This blog was originally posted on <a href="http://blogs.oracle.com/jamesbayer">http://blogs.oracle.com/jamesbayer</a> when I worked for Oracle.</span><br />
<br />
Update 6/27/2011: Tom Barnes indicated a clarification, check out the comments.<br />
Ever want to know who was connected to your WebLogic Server instance for troubleshooting? <a href="http://www.blogger.com/jamesbayer/resource/JT_Switchboard_770x540.jpg"><img align="right" alt="JT_Switchboard_770x540" border="0" height="170" src="http://blogs.oracle.com/jamesbayer/resource/JT_Switchboard_770x540.jpg" style="background-image: none; border-bottom-color: initial; border-bottom-style: initial; border-bottom-width: 0px; border-left-color: initial; border-left-style: initial; border-left-width: 0px; border-right-color: initial; border-right-style: initial; border-right-width: 0px; border-top-color: initial; border-top-style: initial; border-top-width: 0px; display: inline; float: right; margin-bottom: 1px; margin-left: 1px; margin-right: 0px; margin-top: 1px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="JT_Switchboard_770x540" width="244" /></a>An email exchange about this topic and JMS came up this week, and I’ve heard it come up once or twice before too. Sometimes it’s interesting or helpful to know the list of JMS clients (IP Addresses, JMS Destinations, message counts) that are connected to a particular JMS server. This can be helpful for troubleshooting. Tom Barnes from the WebLogic Server JMS team provided some helpful advice:<br />
<em>The JMS connection runtime mbean has “getHostAddress”, which returns the host address of the connecting client JVM as a string. </em><br />
<em>A connection runtime can contain session runtimes, which in turn can contain consumer runtimes. The consumer runtime, in turn has a “getDestinationName” and “getMemberDestinationName”. I think that this means you could write a WLST script, for example, to dump all consumers, their destinations, plus their parent session’s parent connection’s host addresses. </em><br />
<em>Note that the client runtime mbeans (connection, session, and consumer) won’t necessarily be hosted on the same JVM as a destination that’s in the same cluster (client messages route from their connection host to their ultimate destination in the same cluster).</em><br />
<h3>
Writing the Script</h3>
So armed with this information, I decided to take the challenge and see if I could write a WLST script to do this. It’s always helpful to have the <a href="http://download.oracle.com/docs/cd/E21764_01/apirefs.1111/e13951/core/index.html">WebLogic Server MBean Reference</a> handy for activities like this. This one is focused on <a href="http://download.oracle.com/docs/cd/E21764_01/apirefs.1111/e13951/mbeans/JMSConsumerRuntimeMBean.html?skipReload=true">JMS Consumers</a> and I only took a subset of the information available, but it could be modified easily to do <a href="http://download.oracle.com/docs/cd/E21764_01/apirefs.1111/e13951/mbeans/JMSProducerRuntimeMBean.html?skipReload=true">Producers</a>. I haven’t tried this on a more complex environment, but it works in my simple sandbox case, so it should give you the general idea.<br />
<div id="codeSnippetWrapper" style="background-color: #f4f4f4; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; cursor: text; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 20px; max-height: 200px; overflow-x: auto; overflow-y: auto; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 97.5%;">
<div id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"># Better to use Secure Config File approach <span style="color: blue;">for</span> login <span style="color: blue;">as</span> shown here http:<span style="color: green;">//buttso.blogspot.com/2011/02/using-secure-config-files-with-weblogic.html</span></pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">connect(<span style="color: #006080;">'weblogic'</span>,<span style="color: #006080;">'welcome1'</span>,<span style="color: #006080;">'t3://localhost:7001'</span>)</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"># Navigate to the Server Runtime and get the Server Name</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">serverRuntime()</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">serverName = cmo.getName()</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"># Multiple JMS Servers could be hosted by a single WLS server</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">cd(<span style="color: #006080;">'JMSRuntime/'</span> + serverName + <span style="color: #006080;">'.jms'</span> )</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">jmsServers=cmo.getJMSServers()</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"># Find the list of all JMSServers <span style="color: blue;">for</span> <span style="color: blue;">this</span> server</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">namesOfJMSServers = <span style="color: #006080;">''</span></pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">for</span> jmsServer <span style="color: blue;">in</span> jmsServers:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> namesOfJMSServers = jmsServer.getName() + <span style="color: #006080;">' '</span></pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"># Count the number of connections</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">jmsConnections=cmo.getConnections()</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">print str(len(jmsConnections)) + <span style="color: #006080;">' JMS Connections found for '</span> + serverName + <span style="color: #006080;">' with JMSServers '</span> + namesOfJMSServers</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"># Recurse the MBean tree <span style="color: blue;">for</span> each connection and pull <span style="color: blue;">out</span> some information about consumers</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"><span style="color: blue;">for</span> jmsConnection <span style="color: blue;">in</span> jmsConnections:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: blue;">try</span>:</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> print <span style="color: #006080;">'JMS Connection:'</span></pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> print <span style="color: #006080;">' Host Address = '</span> + jmsConnection.getHostAddress()</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> print <span style="color: #006080;">' ClientID = '</span> + str( jmsConnection.getClientID() )</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> print <span style="color: #006080;">' Sessions Current = '</span> + str( jmsConnection.getSessionsCurrentCount() )</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> jmsSessions = jmsConnection.getSessions()</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: blue;">for</span> jmsSession <span style="color: blue;">in</span> jmsSessions:</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> jmsConsumers = jmsSession.getConsumers()</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> <span style="color: blue;">for</span> jmsConsumer <span style="color: blue;">in</span> jmsConsumers:</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> print <span style="color: #006080;">' Consumer:'</span></pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> print <span style="color: #006080;">' Name = '</span> + jmsConsumer.getName()</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> print <span style="color: #006080;">' Messages Received = '</span> + str(jmsConsumer.getMessagesReceivedCount())</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> print <span style="color: #006080;">' Member Destination Name = '</span> + jmsConsumer.getMemberDestinationName()</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> except:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> print <span style="color: #006080;">'Error retrieving JMS Consumer Information'</span></pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> dumpStack()</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"># Cleanup</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">disconnect()</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">exit()</pre>
</div>
</div>
<h3>
Example Output</h3>
I expect the output to look something like this and loop through all the connections, this is just the first one:<br />
<span style="font-family: 'Courier New'; font-size: x-small;">1 JMS Connections found for AdminServer with JMSServers myJMSServer
<br />JMS Connection:
<br /> Host Address = 127.0.0.1
<br /> ClientID = None
<br /> Sessions Current = 16
<br /> Consumer:
<br /> Name = consumer40
<br /> Messages Received = 1
<br /> Member Destination Name = myJMSModule!myQueue</span><br />
Notice that it has the IP Address of the client. There are 16 Sessions open because I’m using an MDB, which defaults to 16 connections, so this matches what I expect. Let’s see what the full output actually looks like:<br />
<div id="codeSnippetWrapper" style="background-color: #f4f4f4; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; cursor: text; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 20px; max-height: 200px; overflow-x: auto; overflow-y: auto; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 97.5%;">
<div id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">D:\Oracle\fmw11gr1ps3\user_projects\domains\offline_domain>java weblogic.WLST d:\temp\jms.py</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">Initializing WebLogic Scripting Tool (WLST) ...</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">Welcome to WebLogic Server Administration Scripting Shell</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">Type help() <span style="color: blue;">for</span> help on available commands</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">Connecting to t3:<span style="color: green;">//localhost:7001 with userid weblogic ...</span></pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">Successfully connected to Admin Server <span style="color: #006080;">'AdminServer'</span> that belongs to domain <span style="color: #006080;">'offline_domain'</span>.</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">Warning: An insecure protocol was used to connect to the</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">server. To ensure on-the-wire security, the SSL port or</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">Admin port should be used instead.</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">Location changed to serverRuntime tree. This <span style="color: blue;">is</span> a read-only tree with ServerRuntimeMBean <span style="color: blue;">as</span> the root.</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">For more help, use help(serverRuntime)</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">1 JMS Connections found <span style="color: blue;">for</span> AdminServer with JMSServers myJMSServer</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">JMS Connection:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Host Address = 127.0.0.1</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> ClientID = None</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Sessions Current = 16</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer40</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 2</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer34</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 2</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer37</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 2</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer16</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 2</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer46</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 2</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer49</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 2</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer43</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 1</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer55</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 1</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer25</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 1</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer22</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 1</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer19</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 1</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer52</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 1</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer31</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 1</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer58</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 1</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer28</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 1</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Consumer:</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Name = consumer61</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Messages Received = 1</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> Member Destination Name = myJMSModule!myQueue</pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">Disconnected from weblogic server: AdminServer</pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"> </pre>
<pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: 'Courier New', courier, monospace; font-size: 8pt; line-height: 12pt; margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;">Exiting WebLogic Scripting Tool.</pre>
</div>
</div>
Thanks to Tom Barnes for the hints and the inspiration to write this up.<br />
Image of telephone switchboard courtesy of <a href="http://www.joetourist.net/">http://www.JoeTourist.net/</a> JoeTourist InfoSystems</div>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-4633788430514237697.post-69446727603421158182011-06-17T22:39:00.000-07:002011-10-08T22:43:48.272-07:00WebLogic Server–Use the Execution Context ID in Applications–Lessons From Hansel and Gretel <div class="entry-body">
<span class="Apple-style-span" style="color: red;">This blog was originally posted on <a href="http://blogs.oracle.com/jamesbayer">http://blogs.oracle.com/jamesbayer</a> when I worked for Oracle.</span><br/><br/>
<p>I learned a neat trick this week. Don’t let your breadcrumbs go to waste like Hansel and Gretel did! Keep track of the code path, logs and errors for each request as they flow through the system. <a href="http://blogs.oracle.com/jamesbayer/resource/hansel-uns-gretel.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px; " title="hansel-uns-gretel" border="0" alt="hansel-uns-gretel" align="right" src="http://blogs.oracle.com/jamesbayer/resource/hansel-uns-gretel.jpg" width="244" height="244" /></a>Earlier this week an <a href="http://forums.oracle.com/forums/thread.jspa?messageID=9660921#9660921">OTN forum post in the WLS – General</a> category by Oracle Ace John Stegeman asked a question how to retrieve the Execution Context ID so that it could be used on an error page that a user could provide to a help desk or use to check with application administrators so they could look up what went wrong. What is the Execution Context ID (ECID)? Fusion Middleware injects an ECID as a request enters the system and it says with the request as it flows from Oracle HTTP Server to <a href="http://download.oracle.com/docs/cd/B15904_01/caching.1012/b14046/concepts.htm#i1032411">Oracle Web Cache</a> to multiple WebLogic Servers to the <a href="http://download.oracle.com/docs/cd/E18283_01/server.112/e17120/diag001.htm#BHCECEJA">Oracle Database</a>. It’s a way to uniquely identify a request across tiers. According to <a href="http://download.oracle.com/docs/cd/E21764_01/web.1111/e13714/using_flightrecorder.htm#CHDEAFAH">the documentation</a> it’s:</p>
<p>The value of the ECID is a unique identifier that can be used to correlate individual events as being part of the same request execution flow. For example, events that are identified as being related to a particular request typically have the same ECID value. The format of the ECID string itself is determined by an internal mechanism that is subject to change; therefore, you should not have or place any dependencies on that format.
</p>
<p>The novel idea that I see John had was to extend this concept beyond the diagnostic information that is captured by Fusion Middleware. Why not also use this identifier in your logs and errors so you can correlate even more information together! Your logging might already identify the user, so why not identify the request so you filter down even more. All you need to do inside of WebLogic Server to get ahold of this information is invoke <a href="http://download.oracle.com/docs/cd/E21764_01/apirefs.1111/e13941/weblogic/diagnostics/context/DiagnosticContextHelper.html">DiagnosticConextHelper</a>:</p>
<div style="border-bottom-color: silver; border-bottom-width: 1px; border-bottom-style: solid; text-align: left; border-left-color: silver; border-left-width: 1px; border-left-style: solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; border-top-color: silver; border-top-width: 1px; border-top-style: solid; cursor: text; border-right-color: silver; border-right-width: 1px; border-right-style: solid; padding-top: 4px; " id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; " id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; ">weblogic.diagnostics.context.DiagnosticContextHelper.getContextId()</pre> <!--CRLF-->
</div>
</div>
<p>This class has other helpful methods to see other values tracked by the diagnostics framework too. This way I can see even more detail and get information across tiers.</p>
<p>In performance profiling, this can be very handy to track down where time is being spent in code. I’ve <a href="http://blogs.oracle.com/jamesbayer/entry/weblogic_server_screencasts_-">blogged and made videos</a> about this before. JRockit Flight Recorder can use the WLDF Diagnostic Volume in WLS 10.3.3+ to automatically capture and correlate lots of helpful information for each request <strong>without installing any special agents and with the out-of-the-box JRockit and WLS settings!</strong> You can see here how information is displayed in JRockit Flight Recorder about a single request as it calls a Servlet, which calls an EJB, which gets a DB connection, which starts a transaction, etc. You can get timings around everything and even see the SQL that is used.</p>
<p><a href="http://blogs.oracle.com/jamesbayer/resource/ecid.gif"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px; " title="ecid" border="0" alt="ecid" src="http://blogs.oracle.com/jamesbayer/resource/ecid.gif" width="574" height="236" /></a></p>
<p><a href="http://download.oracle.com/docs/cd/E21764_01/web.1111/e13714/using_flightrecorder.htm#WLDFC480">http://download.oracle.com/docs/cd/E21764_01/web.1111/e13714/using_flightrecorder.htm#WLDFC480</a></p>
<p>Recent versions of the WLS console also are able to visualize this data too, so it works with other JVMs besides JRockit when you <a href="http://download.oracle.com/docs/cd/E21764_01/apirefs.1111/e13952/taskhelp/diagnostics/performance/DisplayDetailsAboutRequests.html">turn on WLDF instrumentation</a>.</p>
<p><img src="http://blogs.oracle.com/jamesbayer/resource/WindowsLiveWriter-WebLogicServerRequestMonitoringWheredoes_915A/requestPerformance_2.jpg" /></p>
<p>I wrote a little sample application that verified to myself that the ECID did actually cross JVM boundaries. I invoked a Servlet in one JVM, which acted as an EJB client to Stateless Session Bean running in another JVM. Each call returned the same ECID. You need to turn on WLDF Instrumentation for this to work otherwise the framework returns null. I’m glad John put me on to this API as I have some interesting ideas on how to correlate some information together.</p>
<p><a href="http://blogs.oracle.com//jamesbayer/resource/ecidScreenshot.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px; " title="ecidScreenshot" border="0" alt="ecidScreenshot" src="http://blogs.oracle.com/jamesbayer/resource/ecidScreenshot.png" width="644" height="146" /></a></p>
</div>
Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-4633788430514237697.post-69643746410936514672011-06-06T22:47:00.000-07:002011-10-08T22:47:19.081-07:00Sharing a Class With a WebLogic Classloader Without Modifying Scripts<span class="Apple-style-span" style="color: red;">This blog was originally posted on <a href="http://blogs.oracle.com/jamesbayer">http://blogs.oracle.com/jamesbayer</a> when I worked for Oracle.</span><br/><br/>
<div class="entry-body">
<p><a href="http://blogs.oracle.com/jamesbayer/resource/classloader.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px; " title="classloader" border="0" alt="classloader" align="right" src="http://blogs.oracle.com/jamesbayer/resource/classloader.jpg" width="244" height="185" /></a>A question (mostly original with some slight editing on my part) came up on our internal mailing list today that I thought might be interesting to those that have cloassloader questions. For a quick refresher on the options for classloading in WebLogic, click the image to see a larger image or get the presentation from the bottom of the post on slideshare. The key for this scenario is the DOMAIN_HOME/lib directory.</p>
<p><strong>Scenario: </strong>We have a embeddable java component which gets shipped within every webapp in our suite of products. This embeddable java component has a cache object which is loaded every time the component is initialized by the webapp. This cache object is a singleton and has the same content across all the webapps. We have one managed server in which many ear files are deployed to. Each ear initialize's this embeddable java component on start up.</p>
<p><strong>Issue: </strong>When I profile the objects loaded (using <a href="http://download.oracle.com/docs/cd/E21764_01/web.1111/e13706/classloading.htm#BABHJGJJ">Classloader Analysis Tool</a>) in each of these web apps I see that this cache singleton object is loaded in each one of the web app class loaders. I would like to load just one of these singleton objects and reference the same object across all the ear's. This saves heap space and all the calls that it takes to create this cache object in each ear. Even though its a singleton I see that since the class loaders are different for each ear that it creates a new cache object. I have an understanding of the weblogic class loader hierarchies (bootstrap, system, webapp etc). I don't want to move this embeddable java component and its dependencies to the system class loader by modifying the scripts or environment variables. Are there other options?</p>
<p><strong>My answer: </strong>Have a look at the DOMAIN_HOME/lib directory.</p>
<p><a href="http://download.oracle.com/docs/cd/E21764_01/web.1111/e13706/classloading.htm#i1096881">http://download.oracle.com/docs/cd/E21764_01/web.1111/e13706/classloading.htm#i1096881</a></p>
<p>To try it, just drop the jars you want to be shared in the DOMAIN_HOME/lib directory.</p>
<p>Here’s an example.</p>
<div style="border-bottom-color: silver; border-bottom-width: 1px; border-bottom-style: solid; text-align: left; border-left-color: silver; border-left-width: 1px; border-left-style: solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; border-top-color: silver; border-top-width: 1px; border-top-style: solid; cursor: text; border-right-color: silver; border-right-width: 1px; border-right-style: solid; padding-top: 4px; " id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; " id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #008000">/*</span></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #008000">* To change this template, choose Tools | Templates</span></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #008000">* and open the template in the editor.</span></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #008000">*/</span></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #0000ff">package</span> test;</pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #0000ff">import</span> java.util.Map;</pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #008000">/**</span></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #008000">*</span></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #008000">* @author jbayer</span></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #008000">*/</span></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> SharedCache </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; ">{</pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">final</span> Map<String,String> mapCache = <span style="color: #0000ff">new</span> java.util.HashMap<String, String> ();</pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> <span style="color: #0000ff">static</span> </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> {</pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> System.out.println( SharedCache.<span style="color: #0000ff">class</span>.toString() + <span style="color: #006080">" loaded into a classloader"</span> + SharedCache.<span style="color: #0000ff">class</span>.getClassLoader().toString() );</pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> }</pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> <span style="color: #0000ff">public</span> SharedCache() </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> {</pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> }</pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; ">}</pre><!--CRLF-->
</div>
</div>
<p>Now I use this class in two webapps named WebApplication1 and WebApplication2 that refer to the SharedCache class in their identical index.jsp</p>
<div style="border-bottom-color: silver; border-bottom-width: 1px; border-bottom-style: solid; text-align: left; border-left-color: silver; border-left-width: 1px; border-left-style: solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; border-top-color: silver; border-top-width: 1px; border-top-style: solid; cursor: text; border-right-color: silver; border-right-width: 1px; border-right-style: solid; padding-top: 4px; " id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; " id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><%@page contentType=<span style="color: #006080">"text/html"</span> pageEncoding=<span style="color: #006080">"UTF-8"</span> import=<span style="color: #006080">"test.*"</span>%></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><!DOCTYPE html></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><html></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> <head></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> <meta http-equiv=<span style="color: #006080">"Content-Type"</span> content=<span style="color: #006080">"text/html; charset=UTF-8"</span>></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> <title>JSP Page</title></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> </head></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> <body></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> <h1>Hello World! Cache size: </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><% </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> SharedCache myCache = <span style="color: #0000ff">new</span> SharedCache();</pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> <span style="color: #0000ff">out</span>.print( myCache.mapCache.size() ); </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; ">%></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> </pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> </h1></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "> </body></pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "></html></pre><!--CRLF-->
</div>
</div>
<p>When the test.SharedCache class is loaded from each web application respectively, you should see the following in the System.out showing that 2 versions of the class were loaded into separate classloaders for each web module:</p>
<div style="border-bottom-color: silver; border-bottom-width: 1px; border-bottom-style: solid; text-align: left; border-left-color: silver; border-left-width: 1px; border-left-style: solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; border-top-color: silver; border-top-width: 1px; border-top-style: solid; cursor: text; border-right-color: silver; border-right-width: 1px; border-right-style: solid; padding-top: 4px; " id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; " id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #0000ff">class</span> test.SharedCache loaded into a classloaderweblogic.utils.classloaders.ChangeAwareClassLoader@bde4ac finder: weblogic.utils.classloaders.CodeGenClassFinder@1ff9980 annotation: WebApplication1@web</pre><!--CRLF-->
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #0000ff">class</span> test.SharedCache loaded into a classloaderweblogic.utils.classloaders.ChangeAwareClassLoader@4a4acd finder: weblogic.utils.classloaders.CodeGenClassFinder@3f08e3 annotation: <a href="mailto:WebApplication2@web">WebApplication2@web</a></pre><!--CRLF-->
</div>
</div>
<p>Once you drop the jar with the test.SharedCache in the DOMAIN_HOME/lib and restart the server, and access both web apps, you'll see the class is now shared from one system classloader:</p>
<div style="border-bottom-color: silver; border-bottom-width: 1px; border-bottom-style: solid; text-align: left; border-left-color: silver; border-left-width: 1px; border-left-style: solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; border-top-color: silver; border-top-width: 1px; border-top-style: solid; cursor: text; border-right-color: silver; border-right-width: 1px; border-right-style: solid; padding-top: 4px; " id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; " id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px; "><span style="color: #0000ff">class</span> test.SharedCache loaded into a classloaderjava.net.URLClassLoader@88e2dd</pre><!--CRLF-->
</div>
</div>
<p>And if you use CAT, you can see that both applications use the same System Classloader. Click to enlarge. The hash code shows that the same classloader is used for both applications.
</p>
<p><a href="http://blogs.oracle.com/jamesbayer/resource/catSharedCache.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px; " title="catSharedCache" border="0" alt="catSharedCache" src="http://blogs.oracle.com/jamesbayer/resource/catSharedCache.jpg" width="473" height="484" /></a> </p>
<p>Check out Jeff West’s recording on WebLogic Server classloaders and CAT.</p>
<p>
<iframe height="510" src="http://www.youtube.com/embed/ArLTKapjV_8?hd=1" frameborder="0" width="640"></iframe>
</p>
<p><a href="http://www.slideshare.net/jeffreyawest/weblogic-filtering-classloader-and-classloader-analysis-tool-demo">http://www.slideshare.net/jeffreyawest/weblogic-filtering-classloader-and-classloader-analysis-tool-demo</a></p>
<div style="width: 425px; " id="__ss_7643767"><strong style="margin-top: 12px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; display: block; "><a title="WebLogic's ClassLoaders, Filtering ClassLoader and ClassLoader Analysis Tool" href="http://www.slideshare.net/jeffreyawest/weblogics-classloaders-filtering-classloader-and-classloader-analysis-tool">WebLogic's ClassLoaders, Filtering ClassLoader and ClassLoader Analysis Tool</a></strong>
<iframe height="355" marginheight="0" src="http://www.slideshare.net/slideshow/embed_code/7643767" frameborder="0" width="425" marginwidth="0" scrolling="no"></iframe>
<div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px; ">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/jeffreyawest">Jeffrey West</a> </div>
</div>
</div>
Unknownnoreply@blogger.com1