<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-19569500</id><updated>2011-12-12T16:17:07.713-01:00</updated><category term='JDeveloper'/><category term='clustering'/><category term='OEM'/><category term='mediator'/><category term='books'/><category term='OSB'/><category term='Weblogic'/><category term='deployment'/><category term='SCA'/><category term='B2B'/><category term='JSF'/><category term='JMS'/><category term='middleware'/><category term='Coherence'/><category term='JRockit'/><category term='Java'/><category term='BPEL'/><category term='AQ'/><category term='Ant'/><category term='management'/><category term='11G'/><category term='FMW'/><title type='text'>SOA and Java using Oracle technology</title><subtitle type='html'>:: Oracle SOA Suite, Oracle Service Bus and Oracle Coherence ::</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19569500.post-3851974942035274409</id><published>2010-06-13T18:30:00.006-01:00</published><updated>2010-06-13T18:49:54.906-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><title type='text'>OSB 11g - JCA polling adapter: StuckThread trace in the server log</title><content type='html'>I recently had to configure in OSB 11g the JCA AQ adapter to poll for new messages on an AQ inbound queue. This is quite easy using this &lt;a href="http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/jcatransport/transport.html"&gt;tutorial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;However after I had configured the adapter and run some successful tests I saw the following stack trace in the server log after a period:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;Jun 13, 2010 9:05:22 PM CEST&gt; &lt;Error&gt; &lt;WebLogicServer&gt; &lt;BEA-000337&gt; &lt;[STUCK] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "600" seconds working on the request "weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl@4b936059", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:&lt;br /&gt;        java.net.SocketInputStream.socketRead0(Native Method)&lt;br /&gt;        java.net.SocketInputStream.read(SocketInputStream.java:129)&lt;br /&gt;        oracle.net.nt.MetricsEnabledInputStream.read(TcpNTAdapter.java:564)&lt;br /&gt;        oracle.net.ns.Packet.receive(Packet.java:295)&lt;br /&gt;        oracle.net.ns.DataPacket.receive(DataPacket.java:94)&lt;br /&gt;        oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:176)&lt;br /&gt;        oracle.net.ns.NetInputStream.read(NetInputStream.java:121)&lt;br /&gt;        oracle.net.ns.NetInputStream.read(NetInputStream.java:96)&lt;br /&gt;        oracle.net.ns.NetInputStream.read(NetInputStream.java:81)&lt;br /&gt;        oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124)&lt;br /&gt;        oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80)&lt;br /&gt;        oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1087)&lt;br /&gt;        oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1062)&lt;br /&gt;        oracle.jdbc.driver.T4Caqdq.receive(T4Caqdq.java:338)&lt;br /&gt;        oracle.jdbc.driver.T4CConnection.doDequeue(T4CConnection.java:4067)&lt;br /&gt;        oracle.jdbc.driver.PhysicalConnection.dequeue(PhysicalConnection.java:16057)&lt;br /&gt;        oracle.jdbc.driver.PhysicalConnection.dequeue(PhysicalConnection.java:16138)&lt;br /&gt;        oracle.jdbc.OracleConnectionWrapper.dequeue(OracleConnectionWrapper.java:1594)&lt;br /&gt;        weblogic.jdbc.wrapper.XAConnection_oracle_jdbc_driver_LogicalConnection.dequeue(Unknown Source)&lt;br /&gt;        weblogic.jdbc.wrapper.JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConnection.dequeue(Unknown Source)&lt;br /&gt;        oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent.dequeue(AbstractDequeueAgent.java:356)&lt;br /&gt;        oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent.dequeueMessage(AbstractDequeueAgent.java:259)&lt;br /&gt;        oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent.getInputRecord(AbstractDequeueAgent.java:232)&lt;br /&gt;        oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent.run(AbstractDequeueAgent.java:101)&lt;br /&gt;        weblogic.work.ContextWrap.run(ContextWrap.java:41)&lt;br /&gt;        weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)&lt;br /&gt;        weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)&lt;br /&gt;        weblogic.work.ExecuteThread.run(ExecuteThread.java:173)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;br /&gt;&lt;br /&gt;Apparently, this StuckThread trace occurs 10 minutes after the server has been started and is caused by the fact that WebLogic uses by default 1 polling thread which remains active, or in other words is never released by the adapter, by design. Therefore the stuck thread trace can be ignored.&lt;br /&gt;&lt;br /&gt;Please look in the &lt;a href="http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/jcatransport/transport.html"&gt;OSB JCA transport guide&lt;/a&gt; for a detailed explanation and the configuration steps that can be applied to prevent stuck thread traces for polling threads (use a special configured Workmanager)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-3851974942035274409?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/3851974942035274409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=3851974942035274409' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/3851974942035274409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/3851974942035274409'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2010/06/osb-11g-jca-polling-adapter-stuckthread.html' title='OSB 11g - JCA polling adapter: StuckThread trace in the server log'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-8303418478358190250</id><published>2010-06-02T18:32:00.004-01:00</published><updated>2010-06-02T19:24:41.942-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FMW'/><category scheme='http://www.blogger.com/atom/ns#' term='Coherence'/><title type='text'>Coherence in Oracle Fusion Middleware 11g: useful tips &amp; links</title><content type='html'>Since the release of Oracle Fusion Middleware 11g the integration of Coherence in the Fusion Middleware has increased drastically with every PatchSet release. Currently in FMW 11g PS2 Coherence is used for:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Cluster Deployment&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Weblogic ActiveCache/Coherence*Web integration&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;OSB ResultCache&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;This posting will contain useful pointers to documentation section that can help you with managing and using Coherence in FMW 11g...the list is not complete but a first attempt to bundle the links I have used before and which were/are very helpful for me.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Coherence Network and performance tuning&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://orasoa.blogspot.com/2010/02/soa-11g-coherence-cluster-setup-on.html"&gt;Configuration tips fo local laptop configuration - Thanks Marc&lt;/a&gt;; &lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;use the &lt;span style="font-style:italic;"&gt;tangosol.coherence.ttl&lt;/span&gt; (time-to-live) to prevent network traffic to different hosts - useful when working locally on laptops.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;use the &lt;span style="font-style:italic;"&gt;tangosol.coherence.localhost &lt;/span&gt;to force Coherence to bind to a specific address&lt;/li&gt;&lt;br /&gt;&lt;li&gt;use the &lt;span style="font-style:italic;"&gt;tangosol.coherence.wka&lt;/span&gt; to force unicast cluster communication. Determine the wka addresses and the number of wka addresses carefully to avoid loss of service in case the wka nodes die.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;for the OSB the coherence cache and cluster configuration files can be found in &lt;DOMAIN-HOME&gt;/config/osb/coherence&lt;/li&gt; and can be changed accordingly.&lt;br /&gt;&lt;li&gt;When encountering Coherence socket buffer warnings in the log files it is useful to increase the socket buffer size of your OS. Please have a look &lt;a href="http://download.oracle.com/docs/cd/E14526_01/coh.350/e14509/perftune.htm#CACIEGCC"&gt;here to find the settings per OS&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/docs/cd/E14526_01/coh.350/e14509/perftune.htm"&gt;Coherence performance tuning&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In my opinion it is wise not to use the Managed server JVM for cache storage in case your cache will grow to a significant size. Configure the Managed Server JVM with local-storage false and off-load storage to other cache-servers in the Coherence cluster running in separate JVMs&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Active Cache - Coherence*Web&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/docs/cd/E14571_01/web.1111/e16517/coh_wls.htm#COHWL115"&gt;Development guide&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/docs/cd/E14571_01/web.1111/e16517/cweb_summary.htm#COHWL709"&gt;Coherence*Web&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I will update this post when I have more useful information that can be shared. In case of Coherence related questions feel free to send me an email.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-8303418478358190250?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/8303418478358190250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=8303418478358190250' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/8303418478358190250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/8303418478358190250'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2010/06/coherence-in-oracle-fusion-middleware.html' title='Coherence in Oracle Fusion Middleware 11g: useful tips &amp; links'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-5045748986693460193</id><published>2010-05-30T13:20:00.005-01:00</published><updated>2010-05-30T13:29:37.403-01:00</updated><title type='text'>Book review: Oracle Coherence 3.5: Create internet scale applications using Oracle's high-performance data grid</title><content type='html'>The IT book publisher PackT asked me, based on my blog activities here, a couple of weeks ago if I was willing to review the newly published book &lt;a href="https://www.packtpub.com/oracle-coherence-3-5/book"&gt;Coherence 3.5&lt;/a&gt;. Being a person who works with Coherence, follows the developments around Coherence and believes in the capabilities of Oracle Coherence for building reliable scalable architectures, I was definitely willing to review this book and to bundle my feedback in a blog posting afterwards.&lt;br /&gt;&lt;br /&gt;The book starts with an overview of what scalability, performance and high availability means and (also important) what not, what it does involve, how you achieve it and how Coherence fits  into this picture. After explaining the basic concepts of performance, scalability and availability the book proceeds with explaining how easy it is to start off with Oracle Coherence to build your first 'Hello World' Coherence application.&lt;br /&gt;&lt;br /&gt;After this overviev the book starts with the 'real stuff'. First a detailed overview is given about the different type of caching topologies and the options Coherence provide to decide for the right caching strategy. The book also provides so called 'When to use it?' chapter per topology in which it explains for which typical applications the topolgy is applicable and should be used; very useful. The following chapter explains how you can define your domain objects and make them Coherence-aware. In this chapter it uses the concepts of Domain Driven Design as the basis to construct the domain model for a sample applications. For me personally, this chapter was an eye-opener regarding building domain models for Coherence. One thing you should keep in mind, which i had learned before, when you start using Coherence is that you should keep things very simple and don't treat Coherence as an in-memory relational database. only put those things in Coherence grid which should be in the cache and avoid to think like you're going to build a database relation model. For example, store whole aggregates (Order, order items) in a single cache entry for the sake of atomicity, consistency and simplicity. The chapter also provides information about efficient object serialization using Coherence Portable Object Format (POF) and object change managements using evolvable objects.&lt;br /&gt;&lt;br /&gt;The book continues with covering the following topics that makes the book a complete Coherence&lt;br /&gt;reference :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Querying the Grid&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Entry processing&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Event processing&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Persistency&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Coherence*Extend&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;C++ and .Net interoperability&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My final conclusion about this book is that is an excellent book to start off with in order to make yourself familiar with implementing Coherence applications. The book is complete in terms of&lt;br /&gt;'should-know' features and contains useful guidelines and best-practices.&lt;br /&gt;&lt;br /&gt;The book can be ordered from here:&lt;br /&gt;- &lt;a href="https://www.packtpub.com/oracle-coherence-3-5/book"&gt; PackT site &lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.amazon.com/Oracle-Coherence-3-5-Aleksandar-Seovic/dp/1847196128"&gt;Amazon site&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-5045748986693460193?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/5045748986693460193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=5045748986693460193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/5045748986693460193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/5045748986693460193'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2010/05/book-review-oracle-coherence-35-create.html' title='Book review: Oracle Coherence 3.5: Create internet scale applications using Oracle&apos;s high-performance data grid'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-5869140495070544845</id><published>2010-05-07T18:46:00.024-01:00</published><updated>2010-05-08T09:50:58.975-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JRockit'/><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic'/><title type='text'>How-to: Analyzing Out-Of-Memory issues in WebLogic 10.3.3 with JRockit 4.0 Flight Recorder</title><content type='html'>&lt;a href="http://www.oracle.com/technology/products/weblogic/index.html"&gt;Oracle WebLogic Server 10.3.3 &lt;/a&gt;provides out-of-the box support for &lt;a href="http://download.oracle.com/docs/cd/E15289_01/doc.40/e15070/introduction.htm#BABGIEGJ"&gt;JRockit Flight Recorder&lt;/a&gt; (JFR); the new enhanced run-time JVM analyzer in JRockit 4.0 positioned as the replacement for JRA with the following points of improvement &lt;i&gt;Always on&lt;/i&gt;, &lt;i&gt;Better data&lt;/i&gt;, &lt;i&gt;third-party application&lt;/i&gt; integration through an API and &lt;i&gt;low-to-zero overhead&lt;/i&gt;. JFR integrates seamlessly with WLS 10.3.3 to produce recording images on demand or event-based to analyze and solve all kinds of JVM issues.&lt;br /&gt;&lt;br /&gt;In this blog posting, I show how to capture automatically an overall WLS system image, including a JFR image, after an out-of-memory (OOM) exception has occured in the JVM hosting WLS 10.3.3.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Setting up WLS Diagnostic framework&lt;/b&gt;&lt;br /&gt;To enable event generation by WLS for JFR, the Weblogic &lt;i&gt;Diagnostic Volume&lt;/i&gt; property has to be set to the value low, medium or high indicating the amount of recorded events. The&lt;br /&gt;&lt;i&gt;Diagnostic Volume&lt;/i&gt; can be set in the WLS Administration console -&gt; Environment -&gt; servers -&gt; YourServer.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uIvcRKK_dew/S-RwowrG5pI/AAAAAAAADNw/QGMlMqFUdO0/s1600/wls-diagnostic-vlm.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 309px;" src="http://4.bp.blogspot.com/_uIvcRKK_dew/S-RwowrG5pI/AAAAAAAADNw/QGMlMqFUdO0/s400/wls-diagnostic-vlm.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5468619693097412242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now we have started event generation by WLS for JFR, we have to configure a WLS Diagnostic system module with a watch rule and a notification so that image capturing is triggered whenever an OOM error happens. The image capturing mechanism captures the WLS system state together with the JFR buffered event data and generates a zip file in containing the JFR file in the image folder. The image folder is specified in the WLS adminstation console -&gt; Diagnostics -&gt; Diagnostic images -&gt; YourServer&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uIvcRKK_dew/S-RxDrPUTzI/AAAAAAAADN4/CCYVbqvv0b0/s1600/wls-image-vlm1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 299px;" src="http://1.bp.blogspot.com/_uIvcRKK_dew/S-RxDrPUTzI/AAAAAAAADN4/CCYVbqvv0b0/s400/wls-image-vlm1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5468620155495141170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Go in the WLS Administration console to WLS adminstation console -&gt; Diagnostics -&gt; Diagnostic modules and create a new diagnostic module. I have called it &lt;span style="font-style:italic;"&gt;JRFDiagnosticeModule&lt;/span&gt;. Click on the created diagnostic module and target it to the designated server (tab Targets). Go back to configuration tab and click on the Watches and Notifications tab to create a watch rule and a notification with following specs:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Watch rule&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Type = Server Log&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Expression = (MESSAGE LIKE '%OutOfMemoryError%')&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Use an automatic alarm so that the rule is re-enabled each time it is triggered after a defined period&lt;/i&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Notification&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Type = Diagnostic Image&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Make sure everything is enabled and the notification is associated with the watch. Leave every other setting to their defaults.&lt;br /&gt;&lt;br /&gt;This is all we have to do in WLS 10.3.3. Before we proceed with triggering a OOM with a sample application, we first start the JRockit Mission Control (JRMC) application to verify that the JFR recording has been started. Execute the jrmc file in the folder &lt;jrockit-home&gt;/bin folder to start JRMC. Open the JVM browser and right-click on the WLS jvm and select view reports. In the lower-right panel you'll see that one recording has been started:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uIvcRKK_dew/S-Rx2epSwWI/AAAAAAAADOA/PNRpYLmYYG0/s1600/jrmc-overview.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://2.bp.blogspot.com/_uIvcRKK_dew/S-Rx2epSwWI/AAAAAAAADOA/PNRpYLmYYG0/s400/jrmc-overview.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5468621028287758690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Generate an OOM error&lt;/b&gt;&lt;br /&gt;To generate an OOM I've created a simple web application constisting of a simple page with a button that triggers a servlet that will execute the following code-snippet to generate an OOM in WLS 10.3.3.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt; List list = new ArrayList();&lt;br /&gt;        while(true){&lt;br /&gt;          list.add("test string");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Deploy the web application to the WLS server and trigger the OOM by pressing the button on the page. After a few seconds you'll see this in console logging:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uIvcRKK_dew/S-RyKPqbTRI/AAAAAAAADOI/6H2PehgPoXs/s1600/console-overview1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 319px;" src="http://2.bp.blogspot.com/_uIvcRKK_dew/S-RyKPqbTRI/AAAAAAAADOI/6H2PehgPoXs/s400/console-overview1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5468621367863364882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The console logging shows that the watch rule has been triggered and a image capture has been generated in the folder &lt;DOMAIN_HOME&gt;/servers/AdminServer/logs/diagnostic_image. Unzip the file and open the JRockitFlightRecorder.jfr  file in JRMC.&lt;br /&gt;&lt;br /&gt;In the JRMC console you are now able to analyze the root cause of the problem. For this obvious OO example (you can also get the root cause from the console output..but the intention here is to show the capabilities of JFR in general), you can have a look at the allocation tab in the Memory panel to drill down to class that causes the String object creation (It's just an example and the JFR contains a lot more information about Threads/CPU utilization and GC executions for example):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uIvcRKK_dew/S-R0LiYG6jI/AAAAAAAADOY/SUqUlwpsqXM/s1600/jrmc-oo-allocation-trace.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 223px;" src="http://3.bp.blogspot.com/_uIvcRKK_dew/S-R0LiYG6jI/AAAAAAAADOY/SUqUlwpsqXM/s400/jrmc-oo-allocation-trace.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5468623589089929778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also the Hot Method tab in the Code panel shows the servlet doPost method as a top listed hot method:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uIvcRKK_dew/S-R6ZCIE8dI/AAAAAAAADOg/G4VpzCbHmfo/s1600/memory-oo-hotmethods.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 220px;" src="http://3.bp.blogspot.com/_uIvcRKK_dew/S-R6ZCIE8dI/AAAAAAAADOg/G4VpzCbHmfo/s400/memory-oo-hotmethods.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5468630418020692434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This simple and obvious example shows how easy it is to let WLS diagnostic framework continuously produce monitoring data for JFR that can be dumped to a JFR image when required, e.g. in case of OOM exception or other events. The default WLS diagnostic framework can be configured to collect a specific amount of events by using the coarse-grained Diagnostic Volume property. If you want extra events to JFR image you can start extra Recording by using the JRMC or using the command line. Also it is possible to use Java startup parameter &lt;span style="font-style:italic;"&gt;-XX:+|-FlightRecordingDumpOnUnhandledException&lt;/span&gt; to trigger a JFR dump after a unhandled exception in the JVM.&lt;br /&gt;&lt;br /&gt;Documentation:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://download.oracle.com/docs/cd/E15289_01/doc.40/e15070/introduction.htm#BABGIEGJ"&gt;JRockit Flight Recorder run-time guide&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://download.oracle.com/docs/cd/E14571_01/web.1111/e13714/toc.htm"&gt;WebLogic Server Diagnostic Framework guide&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-5869140495070544845?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/5869140495070544845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=5869140495070544845' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/5869140495070544845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/5869140495070544845'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2010/05/how-to-analyzing-out-of-memory-issues.html' title='How-to: Analyzing Out-Of-Memory issues in WebLogic 10.3.3 with JRockit 4.0 Flight Recorder'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uIvcRKK_dew/S-RwowrG5pI/AAAAAAAADNw/QGMlMqFUdO0/s72-c/wls-diagnostic-vlm.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-5921559095050959880</id><published>2010-05-06T17:51:00.012-01:00</published><updated>2010-05-06T18:37:16.422-01:00</updated><title type='text'>How-to: Building REST/JSON services with OSB 11g and JAX-RS</title><content type='html'>Last couple of weeks, I have read a lot of blog postings about &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST&lt;/a&gt; services in combination with the &lt;a href="http://www.oracle.com/technology/software/products/osb/index.html"&gt;Oracle Service Bus&lt;/a&gt; (like &lt;a href="http://biemond.blogspot.com/2009/05/osb-rest-service-with-xml-json-output.html"&gt;this&lt;/a&gt; posting). &lt;span style="font-style:italic;"&gt;I've even made a first attempt to write a posting about this subject, but I got really constructive comments in return on that posting that I decided to write a complete new one. Thanks for the comments :) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I decided to play around with REST and OSB myself and choosed for &lt;a href="https://jersey.dev.java.net"&gt;JAX-RS (Jersey)&lt;/a&gt; as the Java technology to build my REST service and the brand new OSB 11g release for proxing this REST service. In this posting, I will show you how easy it is to build a REST/JSON service with the feature rich and highly flexible JAX-RS standard, deploy it to WebLogic 10.3.3 and proxy it with an OSB 11g service.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;REST service in JAX-RS &lt;/span&gt;&lt;br /&gt;Required libraries (can be downloaded from &lt;a href="https://jersey.dev.java.net/nonav/documentation/latest/user-guide.html#chapter_deps"&gt;here&lt;/a&gt;):&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;jersey-bundle-1.1.5.1.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;jsr113-api-1.1.jar&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;asm-3.1.jar&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I build in JDeveloper a very simple REST product service with a single method to find a product by its id. The REST method returns a JSON representation of the product.&lt;br /&gt;&lt;br /&gt;First you have to create a new web application project in JDeveloper, because the JAX-RS product service is deployed as a web application to the WebLogic Server. In the web.xml file the following things has to be specified:&lt;br /&gt;&lt;ul&gt; &lt;br /&gt; &lt;li&gt;the JAX-RS servlet which will handle all requests and forward them to the appropriate REST Service class.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt; The context path to access the servlet &lt;/li&gt;&lt;br /&gt;  &lt;li&gt; The mime type application/json &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The web.xml has the following content:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;?xml version = '1.0' encoding = 'UTF-8'?&gt;&lt;br /&gt;&lt;web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  &lt;br /&gt;         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  &lt;br /&gt;         version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"&gt;  &lt;br /&gt;    &lt;description&gt;web.xml for &lt;/description&gt;&lt;br /&gt;    &lt;session-config&gt;  &lt;br /&gt;        &lt;session-timeout&gt;10&lt;/session-timeout&gt;  &lt;br /&gt;    &lt;/session-config&gt;  &lt;br /&gt;    &lt;mime-mapping&gt;  &lt;br /&gt;        &lt;extension&gt;html&lt;/extension&gt;  &lt;br /&gt;        &lt;mime-type&gt;text/html&lt;/mime-type&gt;  &lt;br /&gt;    &lt;/mime-mapping&gt;  &lt;br /&gt;    &lt;mime-mapping&gt;  &lt;br /&gt;        &lt;extension&gt;json&lt;/extension&gt;  &lt;br /&gt;        &lt;mime-type&gt;application/json&lt;/mime-type&gt;  &lt;br /&gt;    &lt;/mime-mapping&gt;      &lt;br /&gt;    &lt;mime-mapping&gt;  &lt;br /&gt;        &lt;extension&gt;txt&lt;/extension&gt;  &lt;br /&gt;        &lt;mime-type&gt;text/plain&lt;/mime-type&gt;  &lt;br /&gt;    &lt;/mime-mapping&gt;  &lt;br /&gt;    &lt;servlet&gt;  &lt;br /&gt;        &lt;display-name&gt;JAX-RS Servlet&lt;/display-name&gt;  &lt;br /&gt;        &lt;servlet-name&gt;jersey-servlet&lt;/servlet-name&gt;  &lt;br /&gt;        &lt;servlet-class&gt;com.sun.jersey.spi.container.servlet.ServletContainer&lt;/servlet-class&gt;&lt;br /&gt;        &lt;init-param&gt;  &lt;br /&gt;             &lt;param-name&gt;com.sun.jersey.config.property.resourceConfigClass&lt;/param-name&gt;  &lt;br /&gt;             &lt;param-value&gt;com.sun.jersey.api.core.PackagesResourceConfig&lt;/param-value&gt;  &lt;br /&gt;         &lt;/init-param&gt;  &lt;br /&gt;         &lt;init-param&gt;  &lt;br /&gt;             &lt;param-name&gt;com.sun.jersey.config.property.packages&lt;/param-name&gt;  &lt;br /&gt;             &lt;param-value&gt;nl.oracle.com.fmw.rest;nl.oracle.com.fmw.rest.model&lt;/param-value&gt;  &lt;br /&gt;         &lt;/init-param&gt;        &lt;br /&gt;    &lt;/servlet&gt;  &lt;br /&gt;    &lt;servlet-mapping&gt;  &lt;br /&gt;        &lt;servlet-name&gt;jersey-servlet&lt;/servlet-name&gt;  &lt;br /&gt;        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;  &lt;br /&gt;    &lt;/servlet-mapping&gt;  &lt;br /&gt;&lt;/web-app&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now the web.xml file is in place, two Java classes have to be implemented:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;ProductResource&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Product&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The ProductResource class will contain the method to find a product by its id:&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;package nl.oracle.com.fmw.rest;&lt;br /&gt;&lt;br /&gt;import javax.ws.rs.GET;&lt;br /&gt;import javax.ws.rs.Path;&lt;br /&gt;import javax.ws.rs.PathParam;&lt;br /&gt;import javax.ws.rs.Produces;&lt;br /&gt;&lt;br /&gt;import nl.oracle.com.fmw.rest.model.Product;&lt;br /&gt;&lt;br /&gt;@Path("/products")&lt;br /&gt;public class ProductResource {&lt;br /&gt;&lt;br /&gt;@GET &lt;br /&gt;@Path("{id}")&lt;br /&gt;@Produces("application/json")&lt;br /&gt;public Product getProductById(@PathParam("id") int id){  &lt;br /&gt;     //Return a simple new product with the provided id &lt;br /&gt;     return new Product(id, "DummyProduct");&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The code listing above shows that that &lt;span style="font-style:italic;"&gt;getProductById&lt;/span&gt; method is only accessible through the HTTP GET method. Also the use of the @Path annotation on the class and method level makes it possible to set a specific &lt;span style="font-style:italic;"&gt;relative-uri&lt;/span&gt; with which the service can be accessed. The {id} serves as a placeholder for the product id  and can be accessed through @PathParam annotation&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-style:italic;"&gt;Product&lt;/span&gt; class is shown in the following code listing and uses the &lt;span style="font-style:italic;"&gt;JAXB XmlRootElement&lt;/span&gt; binding annotation to automatically map the class structure to a JSON structure. Isn't that cool :). More JSON serialization and deserialization options in JAX-RS can be found &lt;a href="https://jersey.dev.java.net/nonav/documentation/latest/user-guide.html#d4e792"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package nl.oracle.com.fmw.rest.model;&lt;br /&gt;&lt;br /&gt;import javax.xml.bind.annotation.XmlRootElement;&lt;br /&gt;&lt;br /&gt;@XmlRootElement&lt;br /&gt;public class Product {&lt;br /&gt;    &lt;br /&gt;    private int id;&lt;br /&gt;    private String name;&lt;br /&gt;    &lt;br /&gt;    public Product(){&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public Product(int id, String name) {&lt;br /&gt;      this.id=id;&lt;br /&gt;      this.name=name;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setId(int id) {&lt;br /&gt;        this.id = id;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int getId() {&lt;br /&gt;        return id;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setName(String name) {&lt;br /&gt;        this.name = name;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getName() {&lt;br /&gt;        return name;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Coding is completed and it should be clear now that the use of annotations makes it very easy and flexible to create REST services with JAX-RS. Create a WAR deployment descriptor and make sure you add the jersey libraries to the WAR file and set the JEE web context root to &lt;i&gt;services&lt;/i&gt;. Finally, deploy the WAR file to the WebLogic 10.3.3 server. I target the application to the &lt;span style="font-style:italic;"&gt;osb_server1&lt;/span&gt; managed server, which hosts my OSB 11g installation.&lt;br /&gt;&lt;br /&gt;After deployment you can test the REST service using this URL where I use 1 as the id:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;http://localhost:port/services/products/1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;OSB 11g proxy&lt;/span&gt;&lt;br /&gt;I used the brand new &lt;a href="http://eelzinga.wordpress.com/2010/05/03/oracle-service-bus-11g-installation/"&gt;OSB 11g installation &lt;/a&gt;for creating a proxy service for my REST service. &lt;br /&gt;&lt;br /&gt;The implementation is fairly simple and straight forward and follows more or less the same steps used in this excellent &lt;a href="http://blogs.oracle.com/jeffdavies/2009/06/restful_services_with_oracle_s_1.html"&gt;posting&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Business Service&lt;/span&gt;&lt;br /&gt;The business service invokes the REST product service. Make sure you use the messaging service type with the HTTP transport protocol. Also set the HTTP method to GET.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Proxy Service&lt;/span&gt;&lt;br /&gt;Create a proxy service in Eclipse and use the messaging service type with the HTTP transport protocol. I used request type &lt;span style="font-style:italic;"&gt;none&lt;/span&gt; and Response type&lt;span style="font-style:italic;"&gt; text&lt;/span&gt;. In the message flow I added a routing action to invoke the business service. &lt;br /&gt;I need to mention two important things about the my Proxy service implementation&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Set the endpoint /osb-services/products. This enables you to add anything to this context path, for example /{id}. This makes it also possible to use the OSB service as a proxy for different types of REST calls (make sure you can switch between HTTP methods in the message flow) to the same product service&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Use the &lt;http:relative-uri&gt; transport request element from the $inbound variable to append the relative path after /osb-services/products to the REST service endpoint. I've used an insert operation for this:&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uIvcRKK_dew/S-MQc6xX-5I/AAAAAAAADNQ/hydrDr0kArI/s1600/eclipse-sbeditor.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 277px;" src="http://4.bp.blogspot.com/_uIvcRKK_dew/S-MQc6xX-5I/AAAAAAAADNQ/hydrDr0kArI/s400/eclipse-sbeditor.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5468232461556644754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Deploy the OSB service to the OSB 11g server and use the test console to test the service. Make sure you set the relative-uri attribute in the test console transport panel:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uIvcRKK_dew/S-MQqCYzFVI/AAAAAAAADNY/NQ7qv9c2jQc/s1600/transport-sbtestconsole.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 399px;" src="http://1.bp.blogspot.com/_uIvcRKK_dew/S-MQqCYzFVI/AAAAAAAADNY/NQ7qv9c2jQc/s400/transport-sbtestconsole.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5468232686939346258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The $body element in the response message should look like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uIvcRKK_dew/S-MVPm_IDHI/AAAAAAAADNo/7j2MX-7v2Ag/s1600/output-sbtestconsole1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 393px;" src="http://4.bp.blogspot.com/_uIvcRKK_dew/S-MVPm_IDHI/AAAAAAAADNo/7j2MX-7v2Ag/s400/output-sbtestconsole1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5468237730465451122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The OSB service just passes the JSON response forward to the client. It is fairly simple to convert the JSON output to XML and vice versa using &lt;a href="http://json-lib.sourceforge.net/"&gt;JSON lib&lt;/a&gt; in a Java service callout. How to do this is described in this &lt;a href="http://biemond.blogspot.com/2009/05/osb-rest-service-with-xml-json-output.html"&gt;posting&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Also the JSON structure returned by the product service is very simple. In most cases you have to do more work with JAX-RS in order to construct the required JSON structure. The JAX-RS libraries contain options for &lt;a href="https://jersey.dev.java.net/nonav/documentation/latest/user-guide.html#json"&gt;configuring JSON&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-5921559095050959880?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/5921559095050959880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=5921559095050959880' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/5921559095050959880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/5921559095050959880'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2010/05/how-to-building-restjson-services-with.html' title='How-to: Building REST/JSON services with OSB 11g and JAX-RS'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uIvcRKK_dew/S-MQc6xX-5I/AAAAAAAADNQ/hydrDr0kArI/s72-c/eclipse-sbeditor.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-7383651250586919777</id><published>2010-03-07T18:18:00.012-01:00</published><updated>2010-03-07T19:20:26.695-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='B2B'/><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>How-to: Oracle Service Bus 10gR3 - Oracle FMW B2B 11g interoperability</title><content type='html'>In this posting I will describe how you can integrate &lt;a href="http://www.oracle.com/technology/products/soa/b2b/index.html"&gt;Oracle B2B 11g&lt;/a&gt; and &lt;a href="http://www.oracle.com/technology/products/integration/service-bus/index.html"&gt;Oracle Service Bus 10gR3&lt;/a&gt; to send messages to Oracle B2B 11g from an OSB 10gR3 service.&lt;br /&gt;&lt;br /&gt;The most easy way to integrate Oracle B2B 11g and OSB 10gR3 is by using JMS. Oracle B2B 11g supports JMS as protocol for its internal inbound and outbound delivery channels out-of-the-box.To enable JMS set the &lt;i&gt;Use JMS Queue as default&lt;/i&gt; property to &lt;i&gt;true&lt;/i&gt; in the Administration -&gt; Configuration tab in the Oracle B2B 11g management console in order to switch on the usage of the JMS queues B2B_IN_QUEUE and B2B_OUT_QUEUE.&lt;br /&gt;&lt;br /&gt;I have reused the ebXML configuration that I have described in a &lt;a href="http://tomhofte.blogspot.com/2009/11/how-to-configure-ebxml-communication-in.html"&gt;previous blog posting&lt;/a&gt; in this example. In Oracle Workshop 10gR3 (shipped with OSB 10gR3) you now have to make a simple OSB service that accepts a message through a proxy service and enqueues the message on the B2B_OUT_QUEUE of Oracle B2B 11g using a business service. Below I will describe the details that require special attention while implementing the OSB 10gR3 service.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Business Service - JNDI string&lt;/b&gt;&lt;br /&gt;The BS serves as a JMS wrapper for the B2B_OUT_QUEUE. Use the following JNDI string to locate the&lt;br /&gt;ConnectionFactory and Destination:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;    jms://(ofm b2b 11g host):(port)/jms.b2b.B2BQueueConnectionFactory/jms.b2b.B2B_OUT_QUEUE&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Proxy Service - message flow&lt;/b&gt;&lt;br /&gt;Oracle B2B 11g expects several user header properties in the JMS transport header to be set. A list of the required properties can be found &lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10229/enq_deq.htm#sthref717"&gt;here&lt;/a&gt;. You have to use the property names defined in the second column. To set the user header properties use the &lt;i&gt;Transport Header action&lt;/i&gt; in the request lane of the &lt;i&gt;Routing action&lt;/i&gt; (assumed you use a &lt;i&gt;Routing action&lt;/i&gt;). Click on &lt;span style="font-style:italic;"&gt;Add Header&lt;/span&gt; to add a new header property and select &lt;i&gt;Other&lt;/i&gt; to define a custom header property. Add header properties for all listed properties in the &lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10229/enq_deq.htm#sthref717"&gt;table&lt;/a&gt; expect the last four in the table (at least I didn't set them)&lt;br /&gt;&lt;br /&gt;Here's a screen shot of my OSB 10gR3 configuration:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uIvcRKK_dew/S5QKFIlpcSI/AAAAAAAADM8/7wIHbWfJGdU/s1600-h/b2b_console_transport_headers.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 362px;" src="http://4.bp.blogspot.com/_uIvcRKK_dew/S5QKFIlpcSI/AAAAAAAADM8/7wIHbWfJGdU/s400/b2b_console_transport_headers.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5445988932718784802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After you have completed the message flow publish your configuration to the server and use the SB console test functionality to execute a test.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-7383651250586919777?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/7383651250586919777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=7383651250586919777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/7383651250586919777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/7383651250586919777'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2010/03/how-to-oracle-service-bus-10gr3-oracle.html' title='How-to: Oracle Service Bus 10gR3 - Oracle FMW B2B 11g interoperability'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uIvcRKK_dew/S5QKFIlpcSI/AAAAAAAADM8/7wIHbWfJGdU/s72-c/b2b_console_transport_headers.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-1839543721487268075</id><published>2010-02-17T18:42:00.005-01:00</published><updated>2010-02-18T19:54:19.505-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='B2B'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>How-to: Archiving Oracle FMW B2B 11g run-time data using data pumps</title><content type='html'>In &lt;a href="http://www.oracle.com/technology/products/middleware/index.html"&gt;Oracle Fusion Middleware B2B 11g&lt;/a&gt; enhanced procedures are introduced to archive and/or purge the B2B 11g run-time data.&lt;br /&gt;&lt;br /&gt;The procedures that take care of archiving/purging live in the SOAINFRA database schema of your FMW 11g database repository:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;B2B_ARCHIVE_PROCEDURE&lt;/li&gt;&lt;li&gt;B2B_EXPORT_JOB&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The &lt;i&gt;B2B_EXPORT_JOB&lt;/i&gt; procedure does the actual archiving and is invoked from the &lt;i&gt;B2B_ARCHIVE_PROCEDURE&lt;/i&gt; procedure. The &lt;i&gt;B2B_EXPORT_JOB&lt;/i&gt; procedure uses a &lt;a href="http://www.oracle.com/technology/products/database/utilities/htdocs/data_pump_overview.html"&gt;data pump&lt;/a&gt; to archive the run-time data to a file on the file system.&lt;br /&gt;&lt;br /&gt;To make use of data pumps, you first have to grant SOAINFRA with &lt;i&gt;DIRECTORY&lt;/i&gt; object privileges in order to allow SOAINFRA to create a &lt;i&gt;DIRECTORY&lt;/i&gt; object that points to the location on the file system in which the data pump will write the archive file (the name of the &lt;i&gt;DIRECTORY&lt;/i&gt; object should be B2B_EXPORT_DIR):&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;-- I tested it on my development installation using XE, hence the 'dev' prefix&lt;br /&gt;GRANT create any directory TO dev_soainfra;&lt;br /&gt;GRANT drop any directory TO dev_soainfra;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;after granting the right priviliges you can create the directory object with:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;create or replace directory "B2B_EXPORT_DIR" as '(absolute patch to the location on the file system)'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The following script will archive and purge all the run-time data for completed messages from 19-02-2009 until 19-02-2010 and will archive the data in the file called 'b2b_runtime_export.dat':&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;begin&lt;br /&gt;b2b_archive_procedure(to_date('19-02-2009', 'dd-mm-yyyy'),to_date('19-02-2010', 'dd-mm-yyyy'),'MSG_COMPLETE','b2b_runtime_export.dat','Y');&lt;br /&gt;end;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The standard archiving script provided by Oracle FMW B2B 11g can easily be extended to fit your specific needs or to be merged into existing archiving procedures.&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;- &lt;a href="http://download.oracle.com/docs/cd/E15523_01/index.htm"&gt;Oracle FMW 11g documentation&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-1839543721487268075?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/1839543721487268075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=1839543721487268075' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/1839543721487268075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/1839543721487268075'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2010/02/how-to-archiving-oracle-fmw-b2b-11g-run.html' title='How-to: Archiving Oracle FMW B2B 11g run-time data using data pumps'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-2543123452196001920</id><published>2010-01-25T19:51:00.004-01:00</published><updated>2010-01-25T20:31:33.298-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><title type='text'>Book review: Middleware Management with Oracle Enterprise Manager Grid Control 10g R5</title><content type='html'>In December last year the publisher of IT books &lt;a href="http://www.packtpub.com/"&gt;Packt Publishing &lt;/a&gt;contacted me to ask me if I was willing to read their newly released book about &lt;a href="http://www.oracle.com/technology/products/oem/index.html"&gt;Oracle Enterprise Manager Grid Control&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.packtpub.com/middleware-management-with-oracle-enterprise-manager-grid-control-10g-r5/book"&gt;Middleware Management with Oracle Enterprise Manager Grid Control 10g R5&lt;/a&gt;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;They've selected me based on the contents of my blog.&lt;br /&gt;&lt;br /&gt;The book is well structured and written in a clear language. The book starts with explaining the main features of &lt;a href="http://www.oracle.com/technology/products/oem/index.html"&gt;Oracle Enterprise Manager Grid Control&lt;/a&gt; and how they address common administration tasks and make the life of a system administrator easier. The book continues with defining and describing the main components of &lt;a href="http://www.oracle.com/technology/products/oem/index.html"&gt;Oracle Enterprise Manager Grid Control&lt;/a&gt; and how they work together to enable &lt;a href="http://www.oracle.com/technology/products/oem/index.html"&gt;Oracle Enterprise Manager Grid Control&lt;/a&gt;l to fulfill its tasks. In the subsequent chapters the book covers the main Oracle middleware components and explains how they can be managed with &lt;a href="http://www.oracle.com/technology/products/oem/index.html"&gt;Oracle Enterprise Manager Grid Control&lt;/a&gt;. The following components caught my specific attention:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Oracle BPEL Process Managers&lt;/li&gt;&lt;li&gt;Oracle Service Bus&lt;/li&gt;&lt;li&gt;Oracle Weblogic Server&lt;/li&gt;&lt;li&gt;Oracle Coherence&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Each chapter contains detailed information about how to configure and use specific &lt;a href="http://www.oracle.com/technology/products/oem/index.html"&gt;Oracle Enterprise Manager Grid Control&lt;/a&gt; features, like notification management, automatic provisioning and managing configuration inconsistencies. Additionaly the book cover topics like CAMM, AD4J and how to write your own monitoring plug-in.The book concludes with a best practice chapter.&lt;br /&gt;&lt;br /&gt;To be honest, system administration is not my main focus area. I'm more on the software development side..Therefore my main intention to read this book (Oh..I agreed to review this book..) was to learn more about the concepts, capabilities and benefits of using &lt;a href="http://www.oracle.com/technology/products/oem/index.html"&gt;Oracle Enterprise Manager Grid Control&lt;/a&gt; to manage the Middleware layer to broaden my view on middleware management (the area in which I mainly develop software). After reading the book, I can only conclude that this book really has helped me to understand the the true capabilities and benefits of &lt;a href="http://www.oracle.com/technology/products/oem/index.html"&gt;Oracle Enterprise Manager Grid Control&lt;/a&gt; and how it can be used to manage Oracle Middleware components. This book is really a good starting point for everyone who wants to learn more about Middleware Management with &lt;a href="http://www.oracle.com/technology/products/oem/index.html"&gt;Oracle Enterprise Manager Grid Control&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can find more info about the book and how to order it on the book's &lt;a href="http://www.packtpub.com/middleware-management-with-oracle-enterprise-manager-grid-control-10g-r5/book"&gt;homepage&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-2543123452196001920?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/2543123452196001920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=2543123452196001920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/2543123452196001920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/2543123452196001920'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2010/01/book-review-middleware-management-with.html' title='Book review: Middleware Management with Oracle Enterprise Manager Grid Control 10g R5'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-8245937086067663628</id><published>2010-01-13T16:07:00.002-01:00</published><updated>2010-01-13T16:09:36.045-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSB'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>How to: OSB - FMW SCA 11g interoperability supporting transaction propagation</title><content type='html'>Currently, the BPEL transport in OSB is not supporting FMW 11g. However, I just found a way, although it still is proven in theory based on my knowledge, to enable transaction propagation between OSB and FMW 11g SCA composites. The basic idea is that you have to communicate between OSB and FMW 11g SCA composites using the &lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10224/sca_sdo_ejb.htm#SOASE10863"&gt;SDO - EJB binding&lt;/a&gt; in 11g. The t3 protocol used as the communication protocol between the ejb client and the SCA (soa_infra) engine should take care of the transaction context propagation.&lt;br /&gt;&lt;br /&gt;This should do the trick until OSB gets native support for FMW 11g interoperability. One disclaimer; I still have to prove my theory by running a test, but I am quite sure that it will work so therefore I shared it already here. I also still have to elaborate on which MEPs could be supported with this solution, so any thoughts are welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-8245937086067663628?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/8245937086067663628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=8245937086067663628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/8245937086067663628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/8245937086067663628'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2010/01/possible-how-to-osb-fmw-sca-11g.html' title='How to: OSB - FMW SCA 11g interoperability supporting transaction propagation'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-5660077557396559983</id><published>2010-01-10T10:13:00.005-01:00</published><updated>2010-01-10T10:20:07.244-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='B2B'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>Oracle FMW B2B 11g: How to collect HTTP header info from inbound messages using Java Callouts</title><content type='html'>In &lt;a href="http://www.oracle.com/technology/products/soa/b2b/index.html"&gt;Oracle FMW B2B 11g&lt;/a&gt; the Java callout functionality makes it possible to add Java hooks to an inbound or oubound message flow. Callouts van be written and configured per agreement or per delivery channel (transport callouts). More info about managing callouts can be found &lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10229/callouts.htm#CHDEFBDG"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In this blog posting, I will show how you how an agreement callout can be used to collect HTTP headers from an inbound message, which is received by the default B2B transportServlet. I use an agreement callout because it is not possible to define a transport callout for an inbound http host channel.&lt;br /&gt;&lt;br /&gt;The callout implementation is rather simple:&lt;br /&gt;&lt;pre name="code" class="java"&gt;package nl.oracle.com.b2bcallout;&lt;br /&gt;&lt;br /&gt;import oracle.tip.b2b.callout.Callout;&lt;br /&gt;import oracle.tip.b2b.callout.CalloutContext;&lt;br /&gt;import oracle.tip.b2b.callout.CalloutMessage;&lt;br /&gt;import oracle.tip.b2b.callout.exception.CalloutDomainException;&lt;br /&gt;import oracle.tip.b2b.callout.exception.CalloutSystemException;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class HttpHeaderAgrCallout implements Callout {&lt;br /&gt;&lt;br /&gt;    public void execute(CalloutContext arg0, List input,&lt;br /&gt;                        List output) throws CalloutDomainException,&lt;br /&gt;                                            CalloutSystemException {&lt;br /&gt;        try {&lt;br /&gt;            CalloutMessage cm1 = (CalloutMessage)input.get(0);&lt;br /&gt;            &lt;br /&gt;            &lt;br /&gt;            System.out.println("parameters - "+cm1.getParameters().toString());&lt;br /&gt;            &lt;br /&gt;            CalloutMessage cmOut = null;&lt;br /&gt;            String msg = cm1.getBodyAsString();&lt;br /&gt;&lt;br /&gt;            String headerStr = cm1.getParameters().toString();&lt;br /&gt;            System.out.println("Print transport header ::");&lt;br /&gt;            System.out.println(headerStr);&lt;br /&gt;            &lt;br /&gt;&lt;br /&gt;            cmOut = new CalloutMessage(msg);&lt;br /&gt;            output.add(cmOut);&lt;br /&gt;&lt;br /&gt;        } catch (Exception e) {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;The &lt;i&gt;getParameters()&lt;/i&gt; methods returns all the HTTP transport header attributes in a Properties object. &lt;br /&gt;&lt;br /&gt;Compile the callout code and deploy it to a jar file. The jar file has to be copied a location that can be accessed by the B2B server (or all B2B nodes if you have a clustered environment). Have a look at the &lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10229/callouts.htm#CHDEFBDG"&gt;B2B callout documentation&lt;/a&gt; to find out how you configure the callout with your inbound agreement. &lt;br /&gt;&lt;br /&gt;It is wise to put &lt;i&gt;Agr&lt;/i&gt; or &lt;i&gt;Transport&lt;/i&gt; in the callout name to make a clear distinction between the types of callouts as they appear together in the callout selection drop down list in the B2B management console.&lt;br /&gt;&lt;br /&gt;So why do you need this anyway..well for example to extract a specific HTTP header attribute that is, for example, set by the front-end HTTP Server and enrich the message with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-5660077557396559983?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/5660077557396559983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=5660077557396559983' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/5660077557396559983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/5660077557396559983'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2010/01/oracle-fmw-b2b-11g-how-to-collect-http.html' title='Oracle FMW B2B 11g: How to collect HTTP header info from inbound messages using Java Callouts'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-2079699967699203707</id><published>2009-12-18T18:27:00.007-01:00</published><updated>2009-12-18T18:36:44.843-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='clustering'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>Some Tips on Oracle FMW 11g Clustering: deployment and configuration</title><content type='html'>In this blog-posting, I share some first tips on Oracle FMW 11g (11.1.1.2/PS1) cluster-wide deployment and cluster configuration based on my first experiences with setting up such an environment.&lt;br /&gt;&lt;br /&gt;Most tips come from these two documents:&lt;br /&gt;- &lt;a href="http://download.oracle.com/docs/cd/E15523_01/core.1111/e12036/toc.htm"&gt;Enterprise Deployment Guide for Oracle SOA Suite&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://download.oracle.com/docs/cd/E15523_01/core.1111/e10106/toc.htm"&gt;Oracle FMW 11g High-Availability Guide&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Cluster-wide deployment tips&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;More info on SCA deployment with Ant can be found through my &lt;a href="http://tomhofte.blogspot.com/2009/12/how-to-set-up-common-ant-project-for.html"&gt;previous posting&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Deploy a composite to a specific node of the cluster: the deployment coordinator in the Oracle FMW 11g cluster infrastucture will take care of the correct propagation to all the other nodes or rollback in case of a failure on a specific node. For more info on this have a look &lt;a href="http://download.oracle.com/docs/cd/E15523_01/core.1111/e10106/ha_soa.htm#CDEIEEHI"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Set up &lt;a href="http://coherence.oracle.com"&gt;Oracle Coherence&lt;/a&gt; for unicast communication during cluster-wide deployments. Have a look &lt;a href="http://download.oracle.com/docs/cd/E15523_01/core.1111/e12036/extend_soa.htm#CHDEAFJH"&gt;here&lt;/a&gt; for more details.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Configuration tips&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Make sure you set the value of the &lt;i&gt;serverURL&lt;/i&gt; and the c&lt;i&gt;allbackServerUR&lt;/i&gt;L to the front-end SOA cluster location. In most cases this will be the endpint of the front-end loadbalancer. If you have set the SOA Cluster Front-End URL in the Oracle Weblogic Server Administration Console (location: Clusters -&gt; &lt;your SOA cluster&gt;) its value will be used for the serverURL and callbackServerURL.&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; For unclear reasons, I solved cluster-wide deployment problems by setting the server- and callbackServerURL.  &lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can apply configuration changes to any specific node in the Oracle FMW 11g SOA cluster. Oracle WebLogic Clusters takes care of automatic configuration synchronization across all the nodes of the cluster.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I hope to share more tips here in the near future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-2079699967699203707?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/2079699967699203707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=2079699967699203707' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/2079699967699203707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/2079699967699203707'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/12/some-tips-on-oracle-fmw-11g-clusters.html' title='Some Tips on Oracle FMW 11g Clustering: deployment and configuration'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-877395250762828624</id><published>2009-12-07T18:52:00.008-01:00</published><updated>2009-12-07T19:26:16.809-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>Oracle Fusion Middleware 11g purge scripts available on Oracle Metalink</title><content type='html'>On &lt;a href="http://metalink.oracle.com"&gt;Oracle Metalink&lt;/a&gt; there is now a Note available that describes the usage of the FMW 11g purge scripts. &lt;a href="http://metalink.oracle.com"&gt;Note 815896.1&lt;/a&gt; contains all the details.&lt;br /&gt;&lt;br /&gt;An OPatch patch 8328187 is available for download that contains all the scripts that are required to create the purging functionality in the SOA_INFRA schema&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-877395250762828624?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/877395250762828624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=877395250762828624' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/877395250762828624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/877395250762828624'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/12/oracle-fusion-middleware-11g-purge.html' title='Oracle Fusion Middleware 11g purge scripts available on Oracle Metalink'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-3081793231034613056</id><published>2009-12-07T17:03:00.021-01:00</published><updated>2009-12-07T18:20:03.116-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ant'/><category scheme='http://www.blogger.com/atom/ns#' term='B2B'/><category scheme='http://www.blogger.com/atom/ns#' term='JDeveloper'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>How to set-up a common Ant project for using the Oracle FMW 11g B2B Ant tasks</title><content type='html'>Inspired by &lt;a href="http://biemond.blogspot.com/2009/09/deploy-soa-suite-11g-composite.html"&gt;this&lt;/a&gt; great blog posting about how to use the FMW Ant tasks to deploy a SOA composite, I started to use that example to set up my own Ant project for B2B management purposes.&lt;br /&gt;&lt;br /&gt;In this blog-posting, I will give an example project that is capable of importing and exporting CPAs to and from Oracle FMW 11g B2B.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Setup the build project&lt;/span&gt;&lt;br /&gt;In JDeveloper, create an empty project and name it &lt;span style="font-style: italic;"&gt;fmw-build&lt;/span&gt; for example. Create the following *.properties&lt;br /&gt;&lt;ul&gt;&lt;li&gt;env.properties&lt;/li&gt;&lt;li&gt;dev.jndi.properties&lt;/li&gt;&lt;li&gt;dev.cpacpp.properties&lt;/li&gt;&lt;/ul&gt;Also, import the &lt;span style="font-style: italic;"&gt;ant-b2b-util.xml&lt;/span&gt; and the &lt;span style="font-style: italic;"&gt;ant-soa-common&lt;/span&gt;.xml files that are located in&lt;span style="font-style: italic;"&gt; JDEV_HOME&lt;jdev_home&gt;\bin&lt;/jdev_home&gt;&lt;/span&gt; folder.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-style: italic;"&gt;b2bmanagement.properties&lt;/span&gt; files contains all the enviroment specific properties and I used the following contents:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;deployment.plan.environment=dev&lt;br /&gt;  &lt;br /&gt;#dev deployment server weblogic&lt;br /&gt;dev.serverURL=http://localhost:8001&lt;br /&gt;dev.overwrite=true&lt;br /&gt;dev.user=weblogic&lt;br /&gt;dev.password=welcome1&lt;br /&gt;dev.forceDefault=true&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# global&lt;br /&gt;wn.bea.home=/home/tomhofte/oracle/fmw11gr2&lt;br /&gt;oracle_home=${wn.bea.home}/Oracle_SOA1&lt;br /&gt;java.passed.home=/home/tomhofte/java/jdk1.6.0_17&lt;br /&gt;wl_home=${wn.bea.home}/wlserver_10.3&lt;br /&gt;&lt;br /&gt;libs=/home/tomhofte/libs&lt;br /&gt;path.to.antcontrib.lib=${libs}/ant-contrib/ant-contrib-1.0b3.jar&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;dev.JAVA_HOME=/home/tomhofte/java/jdk1.6.0_17&lt;br /&gt;#Empty home is enough to let it work&lt;br /&gt;dev.ANT_HOME=&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The dev.jndi.properties file contains the jndi properties of my local development environment. I used the following contents:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;java.naming.provider.url=t3://localhost:8001&lt;br /&gt;java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory&lt;br /&gt;java.naming.security.principal=weblogic&lt;br /&gt;java.naming.security.credentials=welcome1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The dev.cpacpp.properties contains the cpa/cpp import/export properties for my local development environment. Please have a look &lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10229/scrpt_imp_exp_dep.htm#sthref699"&gt;here&lt;/a&gt; for more information about this part. Please note that for importing exporting a CPA you first have to export the design repository and specify the resulting zip file as the input for the CPA/CPP export utility. The contents I used are:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;# CPP/A Output files&lt;br /&gt;oracle.tip.b2b.ebms.OutputFolder=b2b-tmp/output/&lt;br /&gt;&lt;br /&gt;# Oracle B2B Metadata File in case of CPA Export&lt;br /&gt;oracle.tip.b2b.ebms.Document=b2b-tmp/output/Paris.zip&lt;br /&gt;&lt;br /&gt;# ebXML CPA File incase of CPA Import&lt;br /&gt;#oracle.tip.b2b.ebms.Document=/tmp/input/cpa-example-2_0.xml&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Host Name&lt;br /&gt;oracle.tip.b2b.ebms.Host=Berlin&lt;br /&gt;# Host endPoint Details&lt;br /&gt;oracle.tip.b2b.ebms.HostEndPoint=http://localhost:8001/b2b/transportServlet&lt;br /&gt;# Host Certificate Alias&lt;br /&gt;oracle.tip.b2b.ebms.HostCertificateAlias=Berlin&lt;br /&gt;# Trading Partner Certificate Alias&lt;br /&gt;oracle.tip.b2b.ebms.TPCertificateAlias=Paris&lt;br /&gt;# BPSS Export&lt;br /&gt;oracle.tip.b2b.ebms.BPSSExport=false&lt;br /&gt;&lt;br /&gt;#Log config&lt;br /&gt;oracle.tip.b2b.ebms.LogFolder=b2b-tmp/output/log/&lt;br /&gt;# DEBUG|INFO|ERROR&lt;br /&gt;oracle.tip.b2b.ebms.LogLevel=DEBUG&lt;br /&gt;# text|xml&lt;br /&gt;oracle.tip.b2b.ebms.LogType=text&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now that all required property files are in place, I use an Ant wrapper script to call the tasks in the ant-b2b-util.xml file and provide the necessary properties. Just as is done in&lt;a href="http://biemond.blogspot.com/2009/09/deploy-soa-suite-11g-composite.html"&gt; this&lt;/a&gt; posting. Here are the contents of my b2b-management.xml file: &lt;br /&gt;&lt;br /&gt;(Note: for layout purposes I had to use explicit XML end tags..:()&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&lt;project name="b2bManagement" default="exportCPA"&gt;&lt;br /&gt;   &lt;property file="env.properties"&gt;&lt;/property&gt;&lt;br /&gt;   &lt;property environment="env"/&gt;&lt;/property&gt;&lt;br /&gt;   &lt;property name="env.JAVA_HOME" value="${deployment.plan.environment}.JAVA_HOME"/&gt;&lt;/property&gt;&lt;br /&gt;   &lt;property name="env.ANT_HOME" value="${deployment.plan.environment}.ANT_HOME"/&gt;&lt;/property&gt;&lt;br /&gt; &lt;br /&gt;   &lt;taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="${path.to.antcontrib.lib}"&gt;&lt;/taskdef&gt;&lt;br /&gt; &lt;br /&gt;   &lt;!--     Override the JNDI location     --&gt;&lt;br /&gt;   &lt;property name="jndi.properties" value="${deployment.plan.environment}.jndi.properties"&gt;&lt;/property&gt;&lt;br /&gt;   &lt;dirname property="jndi.prop.folder" file="${jndi.properties}"&gt;&lt;/dirname&gt;&lt;br /&gt;&lt;br /&gt;   &lt;import file="${basedir}/ant-b2b-util.xml"&gt;&lt;/import&gt;&lt;br /&gt;&lt;br /&gt;   &lt;target name="importCPA"&gt;&lt;br /&gt;      &lt;antcall target="b2bcpaimport" inheritall="true" inheritrefs="false"&gt;&lt;br /&gt;       &lt;param name="propfile" value="${deployment.plan.environment}.cpacpp.properties"&gt;&lt;/param&gt;&lt;br /&gt;      &lt;/antcall&gt;&lt;br /&gt;   &lt;/target&gt;&lt;br /&gt;&lt;br /&gt;   &lt;target name="exportCPA"&gt;&lt;br /&gt;      &lt;antcall target="b2bcpaexport" inheritall="true" inheritrefs="false"&gt;&lt;br /&gt;       &lt;param name="propfile" value="${deployment.plan.environment}.cpacpp.properties"&gt;&lt;/param&gt;&lt;br /&gt;      &lt;/antcall&gt;&lt;br /&gt;   &lt;/target&gt;  &lt;br /&gt;&lt;/project&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt; In the &lt;span style="font-style: italic;"&gt;ant-b2b-util.xml&lt;/span&gt; I had to replace the oracle.home property with a oracle_home named property to be able to use my own oracle home property. At least, this is the case when I execute the script from JDeveloper 11g. Apparently, the oracle.home property file is predefined by JDeveloper, because I get an "Override ignored" message.. I think it won't matter when you execute the script from the command line..&lt;br /&gt;&lt;br /&gt;More info about the usage of the tasks defined in the ant-b2b-util.xml can be found here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10229/scrpt_imp_exp_dep.htm#CEGBDIDB"&gt;http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10229/scrpt_imp_exp_dep.htm#CEGBDIDB&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-3081793231034613056?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/3081793231034613056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=3081793231034613056' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/3081793231034613056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/3081793231034613056'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/12/how-to-set-up-common-ant-project-for.html' title='How to set-up a common Ant project for using the Oracle FMW 11g B2B Ant tasks'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-5541315460867931775</id><published>2009-11-25T20:23:00.006-01:00</published><updated>2010-02-17T19:45:14.185-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>How to change BPEL 11g preference values during deployment time</title><content type='html'>How you can set BPEL preferences in 11g during design time in JDeveloper and run-time in the EM console is described &lt;a href="http://orasoa.blogspot.com/2009/08/soa-11g-preferences.html"&gt;here&lt;/a&gt; (for the latter look in the comments for a reference).&lt;br /&gt;&lt;br /&gt;Sometimes it is useful to change the preference values during deployment time, because preferences hold environment specific values. Actually, this is pretty easy by using composite deployment configuration plan(s). One for each target environment.&lt;br /&gt;&lt;br /&gt;Right-click on the composite file and generate a deployment configuration plan for your composite. When you open the file, you will find a search/replace construction for the preference.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;component name="orderProcessor"&gt;&lt;br /&gt;&lt;property name="bpel.preference.somePreference"&gt;&lt;br /&gt;&lt;replace&gt;someValue&lt;/replace&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;/component&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now change the value to the environment specific value, save the config plan and use the config plan during deployment to a specifc environment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-5541315460867931775?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/5541315460867931775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=5541315460867931775' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/5541315460867931775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/5541315460867931775'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/11/how-to-change-bpel-11g-preference.html' title='How to change BPEL 11g preference values during deployment time'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-9045995045631794776</id><published>2009-11-23T19:24:00.009-01:00</published><updated>2009-11-25T20:38:53.822-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='B2B'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>Oracle Fusion Middleware 11g end-to-end tracking using the ECID</title><content type='html'>In a previous &lt;a href="http://tomhofte.blogspot.com/2009/10/how-to-use-composite-sensors-to-enable.html"&gt;posting&lt;/a&gt; I described how you could use composite sensors to enable end-to-end tracking for messages that move through the Oracle Fusion Middleware SCA engine and the B2B engine.&lt;br /&gt;&lt;br /&gt;Today, I discovered that you can also use ECID for end-to-end tracking. The B2B application message contains all the tracking properties that are originated from the SCA composite that submitted the message to the B2B engine. With the B2B Report console you are able to search for messages using the ECID. To enable searching on ECID, you have to add the ECID search field to the search panel (use the &lt;span style="font-style: italic;"&gt;Add fields&lt;/span&gt; button ):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uIvcRKK_dew/Swrx5k1DskI/AAAAAAAADLE/teSqaboZ8gA/s1600/b2b_console_app-message-details.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 191px;" src="http://2.bp.blogspot.com/_uIvcRKK_dew/Swrx5k1DskI/AAAAAAAADLE/teSqaboZ8gA/s400/b2b_console_app-message-details.png" alt="" id="BLOGGER_PHOTO_ID_5407400274052756034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So, the ECID also enables end-to-end message tracking in Oracle Fusion Middleware 11g when message move through the B2B engine. This time completely out-of-the-box.&lt;br /&gt;&lt;br /&gt;UPDATE 25-11-2O09: The application message holds the fabric data for in and outbound message from the SCA FMW11g fabric [OLD Disclaimer: I only tested it for outbound communication using the native B2B adapter. Still have to test it for inbound communication and AQ and JMS interfacing with the B2B engine.]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-9045995045631794776?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/9045995045631794776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=9045995045631794776' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/9045995045631794776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/9045995045631794776'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/11/oracle-fusion-middleware-11g-end-to-end.html' title='Oracle Fusion Middleware 11g end-to-end tracking using the ECID'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uIvcRKK_dew/Swrx5k1DskI/AAAAAAAADLE/teSqaboZ8gA/s72-c/b2b_console_app-message-details.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-3682491893813196171</id><published>2009-11-23T18:00:00.015-01:00</published><updated>2009-11-23T20:24:30.013-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='B2B'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>How to configure an ebXML communication in Oracle Fusion Middleware B2B 11g</title><content type='html'>Oracle Fusion Middleware (OFM) B2B 11g supports many business document and messaging standards. &lt;a href="http://www.ebxml.org/geninfo.htm"&gt;ebXML (Electronic Business using Extensible Markup Language&lt;/a&gt; is a B2B messaging standard that is also supported by OFM B2B 11g. Shortly described ebXML enables XML messaging over the Electronic Business messaging Service (basically a SOAP extension), abbreviated as ebMS.&lt;br /&gt;&lt;br /&gt;This posting describes how to set-up ebXML messaging using two local OFM B2B 11g (PS1) domains. For simplicity, I will extend my previous &lt;a href="http://tomhofte.blogspot.com/2009/10/how-to-set-up-xml-document-exchange.html"&gt;B2B example&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Please refer to my previous postings for more info about specific B2B 11g configuration concepts:&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://tomhofte.blogspot.com/2009/10/how-to-set-up-xml-document-exchange.html"&gt;http://tomhofte.blogspot.com/2009/10/how-to-set-up-xml-document-exchange.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://tomhofte.blogspot.com/2009/10/easy-binding-of-oracle-fusion.html"&gt;http://tomhofte.blogspot.com/2009/10/easy-binding-of-oracle-fusion.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note&lt;/span&gt;&lt;br /&gt;You have to configure both Paris and Berlin. Both configurations are mirrored. Normally, you would use the CPA/CPP import functionality of OFM B2B 11g for this. Unfortunately, I don't have a CPA availabe for this simple demo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Trading Partners&lt;/span&gt;&lt;br /&gt;Configure the hosts and TP in both B2B installations:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Paris (receiving role)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Berlin (sending role)&lt;/li&gt;&lt;/ul&gt;(Just use all the defaults, including the TP identification type 'Name')&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configure the document&lt;/span&gt;&lt;br /&gt;An ebXML document is defined as a Custom document protocol in OFM B2B 11g. For simplicity, I have used my &lt;a href="http://tomhofte.blogspot.com/2009/10/how-to-set-up-xml-document-exchange.html"&gt;previous Order document example&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;. &lt;/span&gt;I only have to change the document type and definition to resp. configure the ebMS specific properties&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Action&lt;/li&gt;&lt;li&gt;Service&lt;/li&gt;&lt;li&gt;ServiceType&lt;/li&gt;&lt;li&gt;From role&lt;/li&gt;&lt;li&gt;To role&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uIvcRKK_dew/SwrisswsUPI/AAAAAAAADKs/qwwjlJJliwE/s1600/b2b-console_documenttype_ebms.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 199px;" src="http://3.bp.blogspot.com/_uIvcRKK_dew/SwrisswsUPI/AAAAAAAADKs/qwwjlJJliwE/s400/b2b-console_documenttype_ebms.png" alt="" id="BLOGGER_PHOTO_ID_5407383560169214194" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;and to configure the inbound document identification. I used the XPATH Identification Expression for identifying inbound documents. Also specify a document routing id in the routing tab (I used Berlin_Order). The routing id can be used to route inbound messages to specific applications.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uIvcRKK_dew/SwriyBpJtjI/AAAAAAAADK0/dJouffXl6po/s1600/b2b-console_documenttypedef_ebms.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 164px;" src="http://2.bp.blogspot.com/_uIvcRKK_dew/SwriyBpJtjI/AAAAAAAADK0/dJouffXl6po/s400/b2b-console_documenttypedef_ebms.png" alt="" id="BLOGGER_PHOTO_ID_5407383651674076722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Delivery Channels&lt;/span&gt;&lt;br /&gt;For both Berlin and Paris, I have specified&lt;span style="font-style: italic;"&gt; Delivery Channels&lt;/span&gt; that uses the &lt;span style="font-style: italic;"&gt;ebMS 2.0&lt;/span&gt; protocol (I could use ebMS 1.0..but I prefer newest versions :)). Configuring an ebMS 2.0 delivery channel requires some specific settings. Here are the transport protocol settings that I have used:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;url&lt;/span&gt;: http://host:&lt;port&gt;port/b2b/transportServlet for receiving messages over http&lt;/port&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Ack mode&lt;/span&gt;: async&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Response mode&lt;/span&gt;: none&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Retry count&lt;/span&gt;: 4&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Retry interval&lt;/span&gt;: 2&lt;/li&gt;&lt;li&gt; -- Leave all the other setting to their default&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Deployment and testing&lt;/span&gt;&lt;br /&gt;Deploy the agreements (make sure you configure the capabilities correctly: Berlin is the sender and Paris the receiver in this scenario) on both sides (look &lt;a href="http://tomhofte.blogspot.com/2009/10/how-to-set-up-xml-document-exchange.html"&gt;here&lt;/a&gt; how to configure capabilities and agreements). To test the ebXML configuration, I have used my previous &lt;a href="http://tomhofte.blogspot.com/2009/10/easy-binding-of-oracle-fusion.html"&gt;SCA example&lt;/a&gt; and modified it for this example. The modifications are in the mediator component, because I have to specify extra B2B adapter properties to allow the B2B engine to identify the agreement. For outbound communication there are two ways to identify an agreement using the B2B adapter in a OFM composite:&lt;br /&gt;&lt;br /&gt;1. To and From party + document type and revision. B2B properties:&lt;br /&gt;- b2b.documentTypeName&lt;br /&gt;- b2b.documentProtocolRevision&lt;br /&gt;- b2b.fromTradingPartnerId&lt;br /&gt;- b2b.toTradingPartnerId&lt;br /&gt;&lt;br /&gt;2. To and From party + ebMS Action, Service and Service Type:&lt;br /&gt;- b2b.ebms.Service*&lt;br /&gt;- b2b.ebms.ServiceType*&lt;br /&gt;- b2b.ebms.action*&lt;br /&gt;- b2b.fromTradingPartnerId&lt;br /&gt;- b2b.toTradingPartnerId&lt;br /&gt;&lt;br /&gt;(*) Those properties are not defined in the JDeveloper Assign activity wizard. You have to manually type in the names in the property selection panel&lt;br /&gt;&lt;br /&gt;I used the second option with the following values:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;action = Order_Action&lt;/li&gt;&lt;li&gt;Service = Order_Service&lt;/li&gt;&lt;li&gt;Service Type = Order_Service_Type&lt;/li&gt;&lt;li&gt;To party = Paris&lt;/li&gt;&lt;li&gt;From party = Berlin&lt;/li&gt;&lt;/ul&gt;Deploy the SCA composite and use the Test functionality of the EM console to run a test case. You can see the exact ebMS message when you click the &lt;span style="font-style: italic;"&gt;packed message &lt;/span&gt;link in the &lt;span style="font-style: italic;"&gt;wire message&lt;/span&gt; details screen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-3682491893813196171?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/3682491893813196171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=3682491893813196171' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/3682491893813196171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/3682491893813196171'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/11/how-to-configure-ebxml-communication-in.html' title='How to configure an ebXML communication in Oracle Fusion Middleware B2B 11g'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uIvcRKK_dew/SwrisswsUPI/AAAAAAAADKs/qwwjlJJliwE/s72-c/b2b-console_documenttype_ebms.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-6498888673259619840</id><published>2009-11-14T19:11:00.011-01:00</published><updated>2009-11-19T20:45:01.135-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JDeveloper'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>Installing Oracle Fusion Middleware 11.1.1.2: Tips based on my experience with installing on Kubuntu 9.10</title><content type='html'>I have installed Oracle Fusion Middleware 11.1.1.2  on my local Kubuntu 9.10 (64bit). This posting contains some tips based on my experience.&lt;br /&gt;&lt;br /&gt;Please have a look &lt;a href="http://orasoa.blogspot.com/2009/11/new-version-of-wls-soa-available.html"&gt;here&lt;/a&gt; to find more details about where to find the new Oracle Fusion Middleware Release.&lt;br /&gt;&lt;br /&gt;To install the new release you have to upgrade WLS to 10.3.2 and install the new SOA component again. I decided to throw everything away, download the complete new release including the new RCU and JDeveloper release (don't forget this component!) and install everything again..&lt;br /&gt;&lt;br /&gt;Required software:&lt;br /&gt;- &lt;a href="http://www.oracle.com/technology/software/products/ias/htdocs/wls_main.html"&gt;Weblogic Server 10.3.2 generic (I have a 64 bit config)&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.oracle.com/technology/software/products/jdev/index.html"&gt;JDeveloper 11.1.1.2&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.oracle.com/technology/software/products/middleware/htdocs/fmw_11_download.html"&gt;SOA Suite 11.1.1.2&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.oracle.com/technology/software/products/middleware/htdocs/fmw_11_download.html"&gt;RCU &lt;/a&gt;(See additional software section)&lt;br /&gt;&lt;br /&gt;Please follow the installation instructions, which can be found &lt;a href="http://http//download.oracle.com/docs/cd/E12839_01/doc.1111/e13925/toc.htm"&gt;here&lt;/a&gt;, to install the components in the correct order.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JDK issues&lt;/span&gt;&lt;br /&gt;With my default OpenJDK version (build#16) I encountered problems with the WLS installer and with starting the installer of the SOA Suite component.&lt;br /&gt;&lt;br /&gt;The WLS installer only started in console mode:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;tomhofte@tomhofte-laptop:~/downloads$ java -jar wls1032_generic.jar&lt;br /&gt;Unable to instantiate GUI, defaulting to console mode.     &lt;br /&gt;Extracting 0%....................................................................................................100%                                                                                       &lt;br /&gt;&lt;br /&gt;&lt;-------------------- Oracle Installer - WebLogic 10.3.2.0 -------------------&gt;&lt;br /&gt;&lt;br /&gt;Welcome:&lt;br /&gt;--------&lt;br /&gt;&lt;br /&gt;This installer will guide you through the installation of WebLogic 10.3.2.0.&lt;br /&gt;Type "Next" or enter to proceed to the next prompt.  If you want to change data entered previously, type "Previous".  You may quit the installer at any time by typing "Exit".                              &lt;br /&gt;&lt;br /&gt;Enter [Exit][Next]&gt;&lt;br /&gt;&lt;br /&gt;&lt;-------------------- Oracle Installer - WebLogic 10.3.2.0 -------------------&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Not really convenient...&lt;br /&gt;&lt;br /&gt;When I tried to start the SOA Suite installer using my OpenJDK as the java runtime the following problem showed up in the console and the installer UI did not show up.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Starting Oracle Universal Installer...&lt;br /&gt;                                               &lt;br /&gt;&lt;br /&gt;Checking if CPU speed is above 300 MHz.    Actual 800 MHz    Passed&lt;br /&gt;Checking Temp space: must be greater than 150 MB.   Actual 47087 MB    Passed&lt;br /&gt;Checking swap space: must be greater than 500 MB.   Actual 9507 MB    Passed&lt;br /&gt;Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed&lt;br /&gt;Preparing to launch Oracle Universal Installer from /tmp/OraInstall2009-11-14_08-16-57PM. Please wait ...&lt;br /&gt;Please specify JRE/JDK location ( Ex. /home/jre ), &lt;location&gt;/bin/java should exist :/usr/lib/jvm/java-6-openjdk                                                                                            &lt;br /&gt;tomhofte@tomhofte-laptop:~/downloads/soa_11112/Disk1$ Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/xawt/libmawt.so&lt;br /&gt;&lt;/location&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I assumed that something was wrong with my JDK version so I decided to install JRockit Realtime JVM version 6. After installing JRockit Realtime JVM version 6 and using this Java distribution for installing WLS and SOA Suite everything was able to install without any problems. The JRockit version I used is available from &lt;a href="http://www.oracle.com/technology/software/products/jrockit/index.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Note: this will definitely not mean that FMW 11.1.1.2 will only install with JRockit Realtime JVM version 6! It is only that this made it work for me and in case you hit the same issue you now how I solved it :)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Configuring JDeveloper&lt;/span&gt;&lt;br /&gt;After I had installed JDeveloper, I noticed that the SOA Composite editor extension is not part of the JDeveloper 11.1.1.2 bundle as it was with the previous version...so...Go to Help -&gt; Check for Updates and select the SOA Composite editor extension:&lt;br /&gt;&lt;pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uIvcRKK_dew/Sv8Uv1tIOtI/AAAAAAAADKk/6h4bJrm0748/s1600-h/soa_composite_extension.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_uIvcRKK_dew/Sv8Uv1tIOtI/AAAAAAAADKk/6h4bJrm0748/s400/soa_composite_extension.png" alt="" id="BLOGGER_PHOTO_ID_5404060889970653906" border="0" /&gt;&lt;/a&gt;&lt;/pre&gt; Install the extension and restart JDeveloper to activate the update.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Activate the Preview Spring component designer&lt;/span&gt;&lt;br /&gt;(Thanks to this &lt;a href="http://blogs.oracle.com/soabpm/2009/11/preview_feature_sca_spring_ci.html"&gt;posting&lt;/a&gt;)&lt;br /&gt;To activate the Spring component in the Component palette of the Composite editor in JDeveloper, you have to change the &lt;span style="font-style: italic;"&gt;soa-config.xml&lt;/span&gt; file that can be found in &lt;span style="font-style: italic;"&gt;&lt;jdev_home&gt;JDEV_HOME/integration/seed/soa/configuration&lt;/jdev_home&gt;&lt;/span&gt;. Uncomment the following the part and restart JDeveloper&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&lt;!-- uncomment for preview_mode --&gt;&lt;br /&gt;&lt;componenttype resourcebundle="oracle.tip.tools.ide.spring.sca.SpringStringResourceBundle"&gt;&lt;br /&gt;&lt;name&gt;${SPRING_COMPONENT_NAME_L}&lt;/name&gt;&lt;br /&gt;&lt;foldername&gt;${SPRING_COMPONENT_FOLDER_NAME_L}&lt;/foldername&gt;&lt;br /&gt;&lt;implementationtype&gt;spring&lt;/implementationtype&gt;&lt;br /&gt;&lt;implementationfileext&gt;.xml&lt;/implementationfileext&gt;&lt;br /&gt;&lt;implementationclass&gt;oracle.tip.tools.ide.spring.sca.SCAComponentSpring&lt;/implementationclass&gt;&lt;br /&gt;&lt;description&gt;${SPRING_COMPONENT_DESC}&lt;/description&gt;&lt;br /&gt;&lt;tooltip&gt;${SPRING_COMPONENT_DESC}&lt;/tooltip&gt;&lt;br /&gt;&lt;icon16x16&gt;/oracle/tip/tools/ide/spring/sca/images/springcomponent.png&lt;/icon16x16&gt;&lt;br /&gt;&lt;icon20x20&gt;/oracle/tip/tools/ide/spring/sca/images/springcomponenticon_dia.png&lt;/icon20x20&gt;&lt;br /&gt;&lt;br /&gt;&lt;topsectionicon&gt;/oracle/tip/tools/ide/spring/sca/images/springTop.png&lt;/topsectionicon&gt;&lt;br /&gt;&lt;middlesectionicon&gt;/oracle/tip/tools/ide/spring/sca/images/springMiddle.png&lt;/middlesectionicon&gt;&lt;br /&gt;&lt;middlesectionshorticon&gt;/oracle/tip/tools/ide/spring/sca/images/springMiddleShort.png&lt;/middlesectionshorticon&gt;&lt;br /&gt;&lt;bottomsectionicon&gt;/oracle/tip/tools/ide/spring/sca/images/springBottom.png&lt;/bottomsectionicon&gt;&lt;br /&gt;&lt;lightbackgroundcolor&gt;231,231,234&lt;/lightbackgroundcolor&gt;&lt;br /&gt;&lt;darkbackgroundcolor&gt;192,194,203&lt;/darkbackgroundcolor&gt;&lt;br /&gt;&lt;/componenttype&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;All of the above did the job for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-6498888673259619840?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/6498888673259619840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=6498888673259619840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/6498888673259619840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/6498888673259619840'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/11/installing-oracl-fusion-middleware.html' title='Installing Oracle Fusion Middleware 11.1.1.2: Tips based on my experience with installing on Kubuntu 9.10'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_uIvcRKK_dew/Sv8Uv1tIOtI/AAAAAAAADKk/6h4bJrm0748/s72-c/soa_composite_extension.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-4241396915232200720</id><published>2009-11-10T19:11:00.006-01:00</published><updated>2009-11-11T05:40:06.256-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OEM'/><category scheme='http://www.blogger.com/atom/ns#' term='AQ'/><title type='text'>Monitoring Oracle AQ message systems with SQL based User defined Metrics in Oracle Enterprise Manager</title><content type='html'>By default Oracle Advanced Queueing (AQ) provides &lt;a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14257/aq_views.htm"&gt;monitoring views&lt;/a&gt; (in this posting we use the V_$AQ view) to monitor things like&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Number of waiting messages per queue&lt;/li&gt;&lt;li&gt;Number of expired messages per queue&lt;/li&gt;&lt;li&gt;Number of messages on status ready per queue&lt;/li&gt;&lt;li&gt;Average waiting time per queue&lt;/li&gt;&lt;li&gt;Total waiting time per queue&lt;/li&gt;&lt;/ul&gt;In large messaging systems it is important to detect possible delays and bottlenecks at an early stage. The above metrics can help you with this. Of course it is possible to write a custom monitoring application to make monitoring information accessible, but in most large environments it makes more sense to use a dedicated monitoring product that is able to monitor your complete application environment and provides a single monitoring console.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/products/oem/index.html"&gt;Oracle Enterprise Manager&lt;/a&gt; (OEM)  is such a tool. OEM provides functionality to specify &lt;a href="http://download.oracle.com/docs/cd/B16240_01/doc/em.102/e14586/udm.htm#CGDBEFHH"&gt;User-defined SQL-based metrics&lt;/a&gt; that allows you to easily integrate your own SQL monitoring scripts in OEM together with defined thresholds on the metrics, OEM will trigger alert notifications.  The SQL queries below can be used for creating SQL based User-defined metrics in OEM to monitor specific queues on specific aspects:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;-- Average wait metric&lt;br /&gt;select dbaq.name, vaq.average_wait from sys.dba_queues dbaq, sys.V_$AQ vaq where dbaq.name in ('SOME_Q_A', 'SOME_Q_B') and dbaq.qid = vaq.qid&lt;br /&gt;&lt;br /&gt;-- Total wait metric&lt;br /&gt;select dbaq.name, vaq.total_wait from sys.dba_queues dbaq, sys.V_$AQ vaq where dbaq.name in ('SOME_Q_A', 'SOME_Q_B') and dbaq.qid = vaq.qid&lt;br /&gt;&lt;br /&gt;-- Expired messages metric&lt;br /&gt;select dbaq.name, vaq.expired from sys.dba_queues dbaq, sys.V_$AQ vaq where dbaq.name in ('SOME_Q_A', 'SOME_Q_B') and dbaq.qid = vaq.qid&lt;br /&gt;&lt;br /&gt;-- Ready messages metric&lt;br /&gt;select dbaq.name, vaq.ready from sys.dba_queues dbaq, sys.V_$AQ vaq where dbaq.name in ('SOME_Q_A', 'SOME_Q_B') and dbaq.qid = vaq.qid;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The queries are Two-Column queries and the Metric type is Number&lt;/li&gt;&lt;li&gt;Determine a correct value for     &lt;i&gt;Consecutive Occurrences Preceding Notification &lt;/i&gt;option to prevent false positives&lt;/li&gt;&lt;li&gt;Set a correct interval. Keep in mind that monitoring causes some minor overhead...so don't set the interval too small.. 30 minutes should be sufficient in most scenario's&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-4241396915232200720?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/4241396915232200720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=4241396915232200720' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/4241396915232200720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/4241396915232200720'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/11/monitoring-oracle-aq-message-systems.html' title='Monitoring Oracle AQ message systems with SQL based User defined Metrics in Oracle Enterprise Manager'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-2233699142814948583</id><published>2009-11-10T16:45:00.017-01:00</published><updated>2009-11-11T05:39:30.309-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic'/><title type='text'>Set up a Weblogic Server 11g (10.3.1)  JMS Store and Forward demo</title><content type='html'>Weblogic Server (supported from 9.x) contains&lt;a href="http://download.oracle.com/docs/cd/E12839_01/web.1111/e13742/toc.htm"&gt; JMS Store-and-Forward&lt;/a&gt; (JMS SAF) functionality. Basically this functionality makes it possible to receive messages on a specific server instance (proxy), forward the messages to different Weblogic server instances and process them on those 'hidden' instances or forward them again...In case the processing server is unavailable the message will be automatically redelivered when the server is available again..You can think about many use cases in which JMS SAF can be very useful. For example, in the situation in which you don't want to stop the message communication when an update of  'processing logic/functionality is needed, JMS SAF can increase the high-availability of your messaging solution. Also it can be used to off-load complex message processing to dedicated servers.&lt;br /&gt;&lt;br /&gt;In this posting I will describe how you can set up JMS SAF using Weblogic Server 11g (10.3.1) with a domain configuration consisting out of 1 AdminServer and 2 non-clustered Managed Servers serve in the roles of sender (or actually the forwarder)  and receiver.&lt;br /&gt;&lt;br /&gt;I skip the domain set up and assume you are familiar with it. To define the JMS SAF resources the best thing to do is to follow the steps that are described  &lt;a href="http://download.oracle.com/docs/cd/E12839_01/web.1111/e13742/config_jms.htm#i1133084"&gt;Oracle Fusion Middleware 11g SAF guide&lt;/a&gt;.  I will a not repeat them in this blog.. In its place, I will give additional explanation about specific configuration steps and things you have to do but which are not covered completely in the guide.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Receiving Side&lt;/span&gt; - &lt;span style="font-weight: bold;"&gt;Extra&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a JMS Server&lt;/li&gt;&lt;li&gt;Create a Subdeployment in the receiving JMS module and target it to the JMS Server&lt;/li&gt;&lt;li&gt;Create a destination queue and remember the JNDI name that you choose. We need it when the sending side will be configured. Target the queue to the JMS module's Subdeployment &lt;/li&gt;&lt;li&gt;Create also Connection factory at the receiving side (At least I did it. However, you could try not to create a connection factory, because the sending side never uses it..). In the picture below you can see the configuration of the JMS resources at the receiving side that I have used in my demo:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uIvcRKK_dew/Svm46qLuYDI/AAAAAAAADKc/ylp9Llt0eoM/s1600-h/jmssaf_receiving_module.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 209px;" src="http://4.bp.blogspot.com/_uIvcRKK_dew/Svm46qLuYDI/AAAAAAAADKc/ylp9Llt0eoM/s400/jmssaf_receiving_module.png" alt="" id="BLOGGER_PHOTO_ID_5402552545903009842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sending Side&lt;/span&gt; - &lt;span style="font-weight: bold;"&gt;Extra&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a JMS Connection Factory in the sender JMS module. Use the default settings and and choose a easy-to-remember JNDI name. We need it in the Java client to test the JMS SAF configuration.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sending Side - Additional notes&lt;br /&gt;&lt;/span&gt;- I simply used the default settings for&lt;ul&gt;&lt;li&gt;the persistent store of the SAF agent&lt;/li&gt;&lt;li&gt;targeting and subdeployment&lt;br /&gt;&lt;/li&gt;&lt;li&gt;the type of error handling (log). If you decide to use an Error destination, make sure that the queue is targeted to same JMS server/Subdeployment as used for the SAF queue. Most probably, this will mean that you have to create a Subdeployment instead of using the default as I did :)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;- For the SAF queue you have to use the JNDI name that you have chosen during the configuration of the destination queue at the receiving side for the remote JNDI location. For simplicity, you can use the same for the local JNDI name&lt;br /&gt;- The  JNDI name of the SAF Remote Destination will serve as the prefix of the local JNDI name that you defined for your SAF queue. Keep that in mind when you try to connect to the SAF remote queue (see further on in this posting for in the Java example)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's the overview of the JMS SAF resources in the JMS module, which is targeted to the sending server, that I have used in my demo set up:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uIvcRKK_dew/Svm191au_RI/AAAAAAAADKU/9SrKQCBBOh4/s1600-h/jmssaf_sending_module.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 209px;" src="http://1.bp.blogspot.com/_uIvcRKK_dew/Svm191au_RI/AAAAAAAADKU/9SrKQCBBOh4/s400/jmssaf_sending_module.png" alt="" id="BLOGGER_PHOTO_ID_5402549301923478802" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;JMS SAF remote Java client&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Now that we have finished the Weblogic Server 11g JMS SAF configuration&lt;span style="font-weight: bold;"&gt;, &lt;/span&gt;we can test it by using a simple Java client. The code fragment below shows the code that you can use to test your configuration. Please note:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;Import the &lt;span style="font-style: italic;"&gt;J2EE 1.5&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;Weblogic Remote client&lt;/span&gt; libraries in JDeveloper 11g&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;If you are not sure about the exact JNDI binding names for the Connection Factory and JMS destination, you can browse the JNDI tree of the sending server (Admin Console -&gt; Environment -&gt; servers -&gt; &lt;managed server="" name=""&gt; -&gt; Configuration/General tab&lt;/managed&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;You can either use '.' or '/' as the separator in your JNDI name &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;   String CFName = "jms/ConnectionFactorySending";&lt;br /&gt;   String destName = "jmssaf.RemoteDestjms.Queue_Receiving";&lt;br /&gt;&lt;br /&gt;   Connection conn = null;&lt;br /&gt;   Session session = null;&lt;br /&gt;   MessageProducer prod = null;&lt;br /&gt;   try{&lt;br /&gt;       //Set the Initial Context properties&lt;br /&gt;       Properties env = new Properties( );&lt;br /&gt;       env.put(Context.SECURITY_PRINCIPAL, "weblogic");&lt;br /&gt;       env.put(Context.SECURITY_CREDENTIALS, "welcome1");&lt;br /&gt;       env.put(Context.INITIAL_CONTEXT_FACTORY,&lt;br /&gt;      "weblogic.jndi.WLInitialContextFactory");&lt;br /&gt;       env.put(Context.PROVIDER_URL,&lt;br /&gt;      "t3://localhost:7004");&lt;br /&gt;&lt;br /&gt;   InitialContext context = new InitialContext(env);  &lt;br /&gt;&lt;br /&gt;   //Lookup connection factory&lt;br /&gt;   QueueConnectionFactory queueConnectionFactory =&lt;br /&gt;    (QueueConnectionFactory) context.lookup(CFName);&lt;br /&gt; &lt;br /&gt;   //Create a connection and session&lt;br /&gt;   conn = queueConnectionFactory.createConnection();&lt;br /&gt;  session = conn.createSession(false, 0);&lt;br /&gt;&lt;br /&gt;   //Lookup queue&lt;br /&gt;   Queue q = (Queue) context.lookup(destName);&lt;br /&gt;&lt;br /&gt;   //Send message&lt;br /&gt;   prod = session.createProducer(q);&lt;br /&gt;   TextMessage msg = session.createTextMessage();&lt;br /&gt;   msg.setJMSMessageID(Guid.newInstance().toString());&lt;br /&gt;   msg.setText("SAF Test message");&lt;br /&gt;   prod.send(msg);&lt;br /&gt; &lt;br /&gt;   }&lt;br /&gt;   catch(NamingException ne){&lt;br /&gt;       System.out.println("NamingException: "+ne.toString());&lt;br /&gt;   }&lt;br /&gt;   catch(JMSException jmse){&lt;br /&gt;       System.out.println("NamingException: "+jmse.toString());&lt;br /&gt;   }&lt;br /&gt;   finally{&lt;br /&gt;       try{&lt;br /&gt;       prod.close();&lt;br /&gt;       session.close();&lt;br /&gt;       conn.close();&lt;br /&gt;       }&lt;br /&gt;       catch(Exception e){&lt;br /&gt;           System.out.println("Excepion in finally branch: "+e.toString());&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Run your program to send a message to the sending server. Before you do this make sure the receiving server is not running to check if SAF is working as expected. When the message is submitted, check the &lt;span style="font-style: italic;"&gt;Monitoring&lt;/span&gt; tab in the Sending SAF agent configuration screen to check if the message is stored and waits for redelivery (from here you are able to perform more management tasks, like pausing forwarding etc.). When you start the receiving server the message will be redelivered automatically to the receiving server..&lt;br /&gt;&lt;br /&gt;This blog serves as a starting point for using JMS SAF. More info about all the specific configuration options and monitoring/management options can be found &lt;a href="http://download.oracle.com/docs/cd/E12839_01/web.1111/e13742/toc.htm"&gt;here&lt;/a&gt;.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-2233699142814948583?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/2233699142814948583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=2233699142814948583' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/2233699142814948583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/2233699142814948583'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/11/set-up-weblogic-server-11g-1031-jms.html' title='Set up a Weblogic Server 11g (10.3.1)  JMS Store and Forward demo'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uIvcRKK_dew/Svm46qLuYDI/AAAAAAAADKc/ylp9Llt0eoM/s72-c/jmssaf_receiving_module.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-7573111880115799001</id><published>2009-11-05T04:37:00.004-01:00</published><updated>2009-11-05T04:43:40.748-01:00</updated><title type='text'>SOA Suite 10.3.5.1 released: certified with Weblogic Server 10.3.1</title><content type='html'>SOA Suite 10.1.3.5.1 (aka Oracle Fusion Middleware 1ogr3) has been released. Finally,  Oracle BPEL Manager, Oracle ESB, Oracle Rules, OWSM components and all versioned 10.1.3.5.1 are certified with WLS 10.3.1.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/technology/software/products/ias/htdocs/101310.html"&gt;Downloads&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/technology/software/products/ias/files/oracle_soa_certification_r3_10.1.3_matrix.xls"&gt;Certification matrix&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-7573111880115799001?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/7573111880115799001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=7573111880115799001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/7573111880115799001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/7573111880115799001'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/11/soa-suite-10351-released-includes.html' title='SOA Suite 10.3.5.1 released: certified with Weblogic Server 10.3.1'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-7052564273313474595</id><published>2009-11-03T19:45:00.010-01:00</published><updated>2009-11-04T18:44:30.068-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><category scheme='http://www.blogger.com/atom/ns#' term='Coherence'/><title type='text'>Oracle Coherence*Web: easy in-memory session management in a clustered environment</title><content type='html'>&lt;a href="http://coherence.oracle.com/"&gt;Oracle Coherence&lt;/a&gt; contains the &lt;a href="http://coherence.oracle.com/display/COH35UG/Coherence*Web+Session+Management+Module"&gt;Oracle Coherence*Web session management module&lt;/a&gt;.  Oracle Coherence*Web provides in-memory session data management that allows your website to benefit from the high-performance, reliable, high available and scalable data grid solution provided by Oracle Coherence to easily share and manage session data in an application server cluster&lt;br /&gt;&lt;br /&gt;In this blog posting, I will use a simple JSF web application deployed on a Weblogic Server 11g instance to show you how easy it is to set-up Oracle Coherence*Web to store session data in a Oracle Coherence data grid.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Coherence and Weblogic 11g configuration&lt;/span&gt;&lt;br /&gt;I have used Coherence 3.5.2 and Weblogic 11g (10.3.1) to set up this demo. Coherence 3.5.2 can be downloaded from &lt;a href="http://www.oracle.com/technology/software/products/ias/htdocs/coherence.html"&gt;here&lt;/a&gt; and Weblogic Server 11g (10.3.1) from &lt;a href="http://www.oracle.com/technology/software/products/middleware/index.html"&gt;here&lt;/a&gt;. Make sure  you have patched your weblogic server with patch &lt;span style="font-style: italic;"&gt;6W2W&lt;/span&gt; if you use Weblogic Server 10.3&lt;br /&gt;&lt;br /&gt;Deploy the &lt;span style="font-style: italic;"&gt;coherence-web-spi.war&lt;/span&gt; as a shared library to your Weblogic server instance. To start a Oracle Coherence web-session cache server, create a &lt;span style="font-style: italic;"&gt;cache-websession-server.sh&lt;/span&gt; in the root of your COHERENCE_HOME. Copy/paste the following contents to &lt;span style="font-style: italic;"&gt;cache-websession-server.sh&lt;/span&gt;:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;# This will start a cache server&lt;br /&gt;&lt;br /&gt;# specify the Coherence installation directory&lt;br /&gt;COHERENCE_HOME=.&lt;br /&gt;&lt;br /&gt;# specify the JVM heap size&lt;br /&gt;MEMORY=512m&lt;br /&gt;&lt;br /&gt;if [ ! -f ${COHERENCE_HOME}/bin/cache-server.sh ]; then&lt;br /&gt;echo "coherence.sh: must be run from the Coherence installation directory."&lt;br /&gt;exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ -f $JAVA_HOME/bin/java ]; then&lt;br /&gt;JAVAEXEC=$JAVA_HOME/bin/java&lt;br /&gt;else&lt;br /&gt;JAVAEXEC=java&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;JAVA_OPTS="-Xms$MEMORY -Xmx$MEMORY"&lt;br /&gt;&lt;br /&gt;$JAVAEXEC -server -showversion $JAVA_OPTS -cp "$COHERENCE_HOME/lib/coherence.jar:$COHERENCE_HOME/lib/coherence-web-spi.war" -Dtangosol.coherence.management.remote=true -Dtangosol.coherence.cacheconfig=WEB-INF/classes/session-cache-config.xml -Dtangosol.coherence.session.localstorage=true com.tangosol.net.DefaultCacheServer&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;That's all what's needed to set up your test environment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JSF &lt;/span&gt;&lt;br /&gt;The web application is a JSF web application consisting of a simple JSF page that displays a button to increase a counter. The counter value is stored in a JSF managed bean (session-scoped) attribute. The managed bean is session scoped to ensure that the counter is saved in the Coherence data grid. Storing the complete managed bean is not a must-have requirement, but it is an easy way and suitable for this simple case. Oracle Coherence provides functionality to determine which objects have to be stored in the Oracle Coherence data grid and which not. This is explained later in this posting.&lt;br /&gt;&lt;br /&gt;I assume you know how to make such a simple JSF application so I will skip that. The only thing you have to make sure is that you add the coherence.jar library to your project.&lt;br /&gt;&lt;br /&gt;To enable Coherence*Web for in-memory session management, the only thing you have to add is a &lt;i&gt;weblogic.xml&lt;/i&gt; file and add the following library reference to it:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;library-ref&amp;gt;&lt;br /&gt;   &amp;lt;library-name&amp;gt;coherence-web-spi&amp;lt;/library-name&amp;gt;&lt;br /&gt;   &amp;lt;specification-version&amp;gt;1.0.0.0&amp;lt;/specification-version&amp;gt;&lt;br /&gt;   &amp;lt;implementation-version&amp;gt;1.0.0.0&amp;lt;/implementation-version&amp;gt;&lt;br /&gt;   &amp;lt;exact-match&amp;gt;false&amp;lt;/exact-match&amp;gt;&lt;br /&gt; &lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;/library-ref&amp;gt;&lt;br /&gt; &amp;lt;library-ref&amp;gt;&lt;br /&gt;   &amp;lt;library-name&amp;gt;jsf&amp;lt;/library-name&amp;gt;&lt;br /&gt;   &amp;lt;specification-version&amp;gt;1.2&amp;lt;/specification-version&amp;gt;&lt;br /&gt;   &amp;lt;implementation-version&amp;gt;1.2.3.2&amp;lt;/implementation-version&amp;gt;&lt;br /&gt;   &amp;lt;exact-match&amp;gt;false&amp;lt;/exact-match&amp;gt;&lt;br /&gt; &amp;lt;/library-ref&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;(The JSF reference makes the JSF libraries available to web application)&lt;br /&gt;&lt;br /&gt;Bundle the application in a &lt;span style="font-style: italic;"&gt;war&lt;/span&gt; file and deploy it to the Weblogic Server Domain in the same server in which you have deployed the &lt;span style="font-style: italic;"&gt;coherence-web-spi.war&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Note: The JSF application makes use of WAR-scoped Coherence session management. Other variants are EAR-scoped and application server scoped. The last two variant allows you to share session data between web applications...but be careful with this feature!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test&lt;/span&gt;&lt;br /&gt;Start 1 or more Coherence web-session-cache instances to create a Oracle Coherence data-grid by executing the &lt;span style="font-style: italic;"&gt;cache-websession-server.sh&lt;/span&gt; several times...(notice how easy it is to create a Oracle Coherence cluster and check the logging output to see the Coherence actions to manage the cluster) . Now we have a data grid to store the session data in, you can browse to your web application and hit the button several times to set the counter value. As a final test: shutdown the Weblogic server....wait a second...start the server again and open your web application...the previous counter value is still there!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other features &amp;amp; benefits&lt;/span&gt;&lt;br /&gt;- &lt;a href="http://coherence.oracle.com/display/COH35UG/Coherence*Web+Session+Models"&gt;Session management models&lt;/a&gt;&lt;br /&gt;Oracle Coherence*Web supports three different session management models to support different types of web applications:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The traditional model -&gt; suitable for small applications with small session objects&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The monolithic model -&gt; same as traditional model but without object sharing issues&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The split model -&gt; suitable for web applications with large session object&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;- &lt;a href="http://coherence.oracle.com/display/COH35UG/Coherence*Web+Session+Distribution+Controller"&gt;Distribution controller&lt;/a&gt;&lt;br /&gt;The Coherence*Web distributed controller functionality allows you to manage which objects has to be stored locally in the server heap (only local accessible) or distributed (shared across multiple servers) in the Coherence data grid and at what moment in the life-cycle of a user session a object should be stored in a Coherence data grid. This feature has several useful &lt;a href="http://coherence.oracle.com/display/COH35UG/Coherence*Web+Session+Distribution+Controller"&gt;use cases&lt;/a&gt;,  for example to reduce the migration effort to migrate a non-distributed application to a distributed one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-7052564273313474595?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/7052564273313474595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=7052564273313474595' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/7052564273313474595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/7052564273313474595'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/11/oracle-coherenceweb-easy-in-memory.html' title='Oracle Coherence*Web: easy in-memory session management in a clustered environment'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-3420840069200536251</id><published>2009-10-31T10:33:00.001-01:00</published><updated>2009-10-31T10:34:16.135-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='B2B'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>How to use composite sensors to enable end-to-end tracking of B2B messages in SOA Suite 11g</title><content type='html'>Prior to the 11g release of the SOA Suite end-to-end trackig&amp;amp;tracing of messages send out from OESB or BPEL via Oracle Integration B2B 10g, was not supported out-of-the box, because Oracle Integration B2B 10g was/is not part of the 10.1.3.x SOA Suite Suite. You always had to build custom code to enable end-to-end tracking &amp;amp; tracing of messages in such environments.&lt;br /&gt;&lt;br /&gt;Because B2B is now fully integrated into the SOA Suite, it becomes possible to easily end-to-end B2B messages using &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/sca_compsensors.htm#SOASE20704"&gt;composite sensors&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;How to use composite sensors in common is described &lt;a href="http://blogs.oracle.com/SOA/2009/07/"&gt;here&lt;/a&gt; by the Oracle SOA Suite PM team. Ok..but how can you use this feature to end-to-end track B2B messages that are submitted from a composite to Oracle B2B or vice-versa? Actually, it's quite simple. Below I will describe what you have to do at design-time and run-time to track B2B messages using the B2B message id as an example.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Design-time&lt;/b&gt;&lt;br /&gt;At the B2B adapter in JDeveloper composite editor we define a composite sensor named &lt;i&gt;order_msgid&lt;/i&gt; (assuming you are using the example that I have given in a &lt;a href="http://tomhofte.blogspot.com/2009/10/easy-binding-of-oracle-fusion.html"&gt;previous posting&lt;/a&gt; on this blog) and assign it the value of the b2b property b2b.messageId.&amp;nbsp; In my example I use an outbound scenario, so to make it work I have to set the message id in the composite instead of delegating the creation of the message id to B2B. In the mediator component I set the value of the&lt;i&gt; b2b.messageId&lt;/i&gt; to the &lt;i&gt;compositeInstanceId&lt;/i&gt;. At design time, we are finished now..so deploy your sensorized composite to the server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Run-time&lt;/b&gt;&lt;br /&gt;At run-time we have to add a search field for the defined sensor to be able to search on message ids in the composite instances tab. Go to the instances tab of the composite and click on 'Add fields' and select 'order_msgid'. It will be added to the search form. Note that the SOA engine automatically detects composite sensors! The instances tab should look as follows:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_uIvcRKK_dew/Suwbgti1DkI/AAAAAAAADJc/09tcYIDGecU/s1600-h/em-console-instances.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_uIvcRKK_dew/Suwbgti1DkI/AAAAAAAADJc/09tcYIDGecU/s640/em-console-instances.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Test the composite by using the EM test screen. Select the new instance and open the instance flow. Unfold the payload of the B2B adapter message and verify that the b2b.messageId property has been set in the properties header:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_uIvcRKK_dew/SuwcbxMP1qI/AAAAAAAADJk/X_0hX2dwjik/s1600-h/em-console-instances-flow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_uIvcRKK_dew/SuwcbxMP1qI/AAAAAAAADJk/X_0hX2dwjik/s640/em-console-instances-flow.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Log in to the b2b management console (&lt;host&gt;my B2B url: http://localhost:8001/b2b) and open the reports tab and select the business message tab. Select the details of the corresponding B2B message and discover that it has used the message id that has been set by the composite :)&lt;/host&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_uIvcRKK_dew/SuwdaqnMDAI/AAAAAAAADJs/rNEwVk1QP2M/s1600-h/b2b_console_message-details.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_uIvcRKK_dew/SuwdaqnMDAI/AAAAAAAADJs/rNEwVk1QP2M/s640/b2b_console_message-details.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You now can search in the EM composite instances tab for a specific instance using the B2B message id. This becomes very useful when the number of composite instances becomes very large in a production environment and maintenance team quickly wants to track down the flow of a specific B2B message in case of issues with that message..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-3420840069200536251?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/3420840069200536251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=3420840069200536251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/3420840069200536251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/3420840069200536251'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/10/how-to-use-composite-sensors-to-enable.html' title='How to use composite sensors to enable end-to-end tracking of B2B messages in SOA Suite 11g'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uIvcRKK_dew/Suwbgti1DkI/AAAAAAAADJc/09tcYIDGecU/s72-c/em-console-instances.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-4350607859607264676</id><published>2009-10-27T19:12:00.002-01:00</published><updated>2009-10-27T19:14:52.957-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='B2B'/><category scheme='http://www.blogger.com/atom/ns#' term='mediator'/><category scheme='http://www.blogger.com/atom/ns#' term='JDeveloper'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>Easy binding of Oracle Fusion Middleware B2B 11g with a SCA composite using the B2B adapter</title><content type='html'>In my previous &lt;a href="http://tomhofte.blogspot.com/2009/10/how-to-set-up-xml-document-exchange.html"&gt;posting&lt;/a&gt;,I have described how to set up a simple XML document exchange configuratation in Oracle Fusion Middleware B2B 11g. In this posting I will show how to use the new B2B adapter part of SOA Suite 11g to easily send out XML orders from a SCA composite.&lt;br /&gt;&lt;br /&gt;The SCA that we are going to build will consist of a simple SOAP interface that accepts new orders. A mediator component will route the order directly to Oracle Fusion Middleware B2B using the B2B adapter. For simplicity, we will use the same XSD structures.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JDeveloper Project and the mediator component&lt;/b&gt;&lt;br /&gt;The first step is to create a new JDeveloper SOA project. Start with an empty composite. Drag and drop a new mediator component from the component onto the component panel of the composite diagram. Name the component &lt;i&gt;ProcessOrder&lt;/i&gt;. Select the one-way interface type and use the same XSD input structure for the order as used in the B2B document definition configuration. Also create a composite service with SOAP bindings (checkbox). Click on 'Ok' to create the mediator component. In a later step we will specify the necessary assign and transformation actions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;B2B adapter&lt;/b&gt;&lt;br /&gt;In Oracle Fusion Middleware 11g the B2B adapter is introduced to make the&amp;nbsp; binding of the B2B component with a SCA composite more native. The B2B adapter wizard allows the developer to browse the B2B document repository to easily select the right document type for inbound or outbound messaging with a trading partner.&lt;br /&gt;&lt;b&gt; &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Drag a B2B adapter from the component palette and drop it onto the reference service swimlane. A wizard will automatically pop up. Name the service &lt;i&gt;B2B_Order_Gateway&lt;/i&gt;. Click 'next' and choose default as the integration type. The integration type specifies how SCA will communicate with B2B. Default means that a WSDL file with a native B2B binding will be constructed. AQ means that a JCA AQ WSDL file will be constructed. Click next and select the Fusion middleware server connection for browsing the B2B repository and click next. Choose for the option 'Send', because the composite is going to send out orders and click on next and again on next in the following screen (we use the defaults in that screen :)). In the wizard-screen &lt;i&gt;Document Definition&lt;/i&gt; you have to browse to the &lt;i&gt;ComplexOrder_Def&lt;/i&gt; and select it as the document definition. Click on next and on finish to complete the wizard. The B2B binding reference service will now be created and added to the SCA composite and the required artifacts will be generated.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_uIvcRKK_dew/SudLIOYRqhI/AAAAAAAADJE/em6LExC7AqA/s1600-h/JDeveloper_B3B_documenttype_selection.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_uIvcRKK_dew/SudLIOYRqhI/AAAAAAAADJE/em6LExC7AqA/s640/JDeveloper_B3B_documenttype_selection.png" /&gt;&lt;/a&gt;Figure 1&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Wiring everything together&lt;/b&gt;&lt;br /&gt;As one of the last steps, we need to wire the mediator component to the B2B binding reference. You can do this by selecting the orange arrow (will pop-up when you hover over the Mediator component) of the mediator component and hold the left mouse button pressed, drag the mouse to the B2B binding reference service and drop the line on the orange arrow of the B2B binding component. Figure 2 shows the end result.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_uIvcRKK_dew/SudQTPrE6FI/AAAAAAAADJU/0WaS2sJGhLg/s1600-h/jdeveloper_overview_composite.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_uIvcRKK_dew/SudQTPrE6FI/AAAAAAAADJU/0WaS2sJGhLg/s640/jdeveloper_overview_composite.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Figure 2&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Double click the mediator component and generate a standard XSLT transformation to transform the input order structure to the expected order structure of the B2B reference service (Note: that JDeveloper recognises that the B2B binding reference expects a specific XML structure. Magic, isn't it? :)). Instead of using XSLT, we could also use an Assign action here. &lt;br /&gt;The last thing we have to do is to inform the B2B binding reference service that we want to send an order to Acme from the host MyComposite. We use the Assign values option of the mediator component and two of the available B2B properties for this. Assign:&lt;br /&gt;&lt;br /&gt;Acme -&amp;gt; b2b.toTradingPartnerId&lt;br /&gt;MyCompany -&amp;gt; b2b.fromTradingPartnerId&lt;br /&gt;&lt;br /&gt;(See Figure 3 for assigning properties)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_uIvcRKK_dew/SudO0wpGnRI/AAAAAAAADJM/Oh8OD65oHx8/s1600-h/jdeveloper_overview_assignb2bproperties.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_uIvcRKK_dew/SudO0wpGnRI/AAAAAAAADJM/Oh8OD65oHx8/s400/jdeveloper_overview_assignb2bproperties.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Figure 3&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Save your project and deploy it to your Oracle Fusion Middleware server and use the built-in composite test functionality of the EM console to test your SCA composite. If you have implemented the composite correctly and configured B2B correctly as well (as described in my previous &lt;a href="http://tomhofte.blogspot.com/2009/10/how-to-set-up-xml-document-exchange.html"&gt;posting&lt;/a&gt;) you will see an order in the Acme outbound file directory that you have chosen during B2B configuration after you have executed test.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;'A child can do the laundry'&lt;/i&gt; as we name easy procedures like this in my country :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-4350607859607264676?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/4350607859607264676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=4350607859607264676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/4350607859607264676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/4350607859607264676'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/10/easy-binding-of-oracle-fusion.html' title='Easy binding of Oracle Fusion Middleware B2B 11g with a SCA composite using the B2B adapter'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uIvcRKK_dew/SudLIOYRqhI/AAAAAAAADJE/em6LExC7AqA/s72-c/JDeveloper_B3B_documenttype_selection.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-1452182181699364147</id><published>2009-10-25T13:00:00.008-01:00</published><updated>2009-10-27T11:43:12.017-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='B2B'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>How to set up a XML document exchange configuration in Oracle Fusion Middleware B2B 11g</title><content type='html'>In the new 11g release of the Oracle SOA Suite,&amp;nbsp; B2B is fully integrated in Oracle's SOA stack. The engine and the UI console are enhanced and improved on several parts compared to the 10g release of Oracle Integration B2B.&lt;br /&gt;&lt;br /&gt;In this blog posting, I show you how to set up a XML document exchange configuration. It will also let you experience the renewed B2B Console based on ADF Faces technology. The case will consist of a custom XML document (Order), a single trading partner Acme and an agreement that specifies that MyCompany (the default host) is capable of sending out XML orders to Acme.&lt;br /&gt;&lt;br /&gt;Log on to the B2B console. If you are familiar with the 10g console, you will immediately notice the new look-and-feel and the way things are organized (see figure 1).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_uIvcRKK_dew/SuRIYPv0KOI/AAAAAAAADIk/lRQad1adxJI/s1600-h/b2b-console.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_uIvcRKK_dew/SuRIYPv0KOI/AAAAAAAADIk/lRQad1adxJI/s640/b2b-console.png" /&gt;&lt;/a&gt;Figure 1&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Trading Partner&lt;/b&gt;&lt;br /&gt;First we have to create a new trading partner. Click on the green plus sign on top of the Trading Partner (TP) panel on the left side of the screen.&amp;nbsp; Name the new TP &lt;i&gt;Acme&lt;/i&gt; and click on ok. The next thing we have to configure is the type of document that we want to exchange with Acme.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Document definition &lt;/b&gt;&lt;br /&gt;Documents are managed in the Administration window. So click on the &lt;b&gt;Adminstration&lt;/b&gt; link at the top of the screen and open the &lt;b&gt;Documents&lt;/b&gt; tab on new page. The left panel shows the supported document protocols. Select the Custom protocol and click on the green plus sign to add a new Custom&lt;i&gt; &lt;/i&gt;Revision. In the form set the name to &lt;span id="adminPanelPage:primaryDecoration:secondaryDecoration:mainDecoration:adminDocumentVersionName::content" style="width: 40em;"&gt;&lt;i&gt;Custom_1.0&lt;/i&gt; and click on save. Select the Custom_1.0 revision in the left panel and again click on green sign to add a document type. In the form set the name to &lt;/span&gt;&lt;i&gt;&lt;span id="adminPanelPage:primaryDecoration:secondaryDecoration:mainDecoration:documentTypeName::content" style="width: 40em;"&gt;XMLDocumentType &lt;/span&gt;&lt;/i&gt;&lt;span id="adminPanelPage:primaryDecoration:secondaryDecoration:mainDecoration:documentTypeName::content" style="width: 40em;"&gt;and click on save. In the left panel select the XMLDocumentType and click on the plus sign to add a document definition. In the form set the name to &lt;/span&gt;&lt;span id="adminPanelPage:primaryDecoration:secondaryDecoration:mainDecoration:documentDefinitionName::content"&gt;&lt;i&gt;ComplexOrder_Def&lt;/i&gt;, the Identification Type to XML. In the Definition field you have to the set the xsd structure of the complexOrder. Can be anything and I assume you know how to define a XSD structure. Leave all the other fields untouched, because we don't need them for this simple case.&amp;nbsp; See figure 3 for an example of the protocol tree in the left panel and the completed Document definition form.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_uIvcRKK_dew/SuRLaojGqrI/AAAAAAAADIs/D0keJ3l8zuc/s1600-h/b4b-console_documentdefinition.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_uIvcRKK_dew/SuRLaojGqrI/AAAAAAAADIs/D0keJ3l8zuc/s640/b4b-console_documentdefinition.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;Figure2&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Ok, by know you have probably experienced the usability of the renewed B2B console. In my opinion the new Oracle Integration B2B 11g console enables you to keep a better overview of what you have configured and where you are in a specific configuration part, e.g. setting up new documents.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Document capability &lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now we have to add a capability to the TP Acme to inform the B2B engine that Acme is capable of receiving XML orders from our side. Go back to the Partner page (Partner link at the top of the page). Select Acme in the trading partner and in the right panel select the &lt;b&gt;Document&lt;/b&gt; tab and click on the green plus sign at the Documents overview to add new a document capability. In the Select document definition pop-up screen unfold the Custom tree and select the &lt;span id="adminPanelPage:primaryDecoration:secondaryDecoration:mainDecoration:documentDefinitionName::content"&gt;&lt;i&gt;ComplexOrder_Def &lt;/i&gt;definition and click on Add. Make sure that only the receiver checkbox is checked; we are only going to send orders to Acme. Click on save to save the capability. B2B automatically adds a dual capability to MyCompany for the same document definition and the dual direction that you have specified at the trading partner side. Check it. Figure 3 shows the Trading Partner document screen&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span id="adminPanelPage:primaryDecoration:secondaryDecoration:mainDecoration:documentDefinitionName::content"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_uIvcRKK_dew/SuRQRI14MEI/AAAAAAAADI0/g1c9bmQRZXs/s1600-h/b9b-console_acmedocument_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_uIvcRKK_dew/SuRQRI14MEI/AAAAAAAADI0/g1c9bmQRZXs/s640/b9b-console_acmedocument_2.png" /&gt;&lt;/a&gt;Figure 3&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Delivery Channel&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The next thing that we need to configure is the channel on which Acme wants to receive the orders. For simplicity, we use the file system as the transport protocol. Oracle B2B also supports e.g. FTP, JMS, Email, HTTP. Click on the channels tab in the right panel of Trading Partner Acme. Click on the green plus sign and set the protocol to file and the name to&lt;b&gt; Acme_File_Channel&lt;/b&gt;. At the bottom of the page set the transport protocol parameters and the channel parameters to your own need. Note: you can use placeholders in the filename format field. I used this format:&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;order_%MSG_ID%.xml&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;More available placeholder can be found &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10229/bb_listen_chan.htm#BAJJBAJI"&gt;here&lt;/a&gt;.&amp;nbsp; Click on save when you are done.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Agreement and deployment &lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;At this point we have set uo the exchange document type, TP capabilities and the Acme delivery channel. We are now ready to create an agreement. On the Partner page click on the green plus sign to add a new agreement. Figure 4 shows you how to fill in all the fields in the Agreement form.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_uIvcRKK_dew/SuRVvtVeXZI/AAAAAAAADI8/WnVqajBN_Ek/s1600-h/b9b-console_agreement.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_uIvcRKK_dew/SuRVvtVeXZI/AAAAAAAADI8/WnVqajBN_Ek/s640/b9b-console_agreement.png" /&gt;&lt;/a&gt;Figure 4&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;After you have completed the form, save the agreement. Before we can deploy the agreement we first have to validate it; click on validate and finally on deploy to make the agreement active. We are now ready to send out orders to Acme :)&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;This blog has shown how to setup a simple document exchange configuration in Oracle Fusion Middleware B2B 11g. In a next posting I will describe how the new B2B adapter in 11g can be used to construct and send out orders from a composite using a BPEL or Mediator component.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Link: &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10229/toc.htm"&gt;Oracle Fusion Middleware B2B 11g developer guide&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-1452182181699364147?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/1452182181699364147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=1452182181699364147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/1452182181699364147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/1452182181699364147'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/10/how-to-set-up-xml-document-exchange.html' title='How to set up a XML document exchange configuration in Oracle Fusion Middleware B2B 11g'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uIvcRKK_dew/SuRIYPv0KOI/AAAAAAAADIk/lRQad1adxJI/s72-c/b2b-console.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-1451640694590128750</id><published>2009-10-22T17:08:00.005-01:00</published><updated>2009-10-22T17:12:21.588-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Coherence'/><title type='text'>Oracle Coherence 3.5.2 available</title><content type='html'>Last week Oracle released Oracle Coherence 3.5.2. The version contains several improvements and enhancements for Oracle Coherence 3.5. The improvements and enhancements are listed &lt;a href="http://download.oracle.com/docs/cd/E14526_01/coh.350/e15884/toc.htm"&gt;here&lt;/a&gt;. You can download the new version from &lt;a href="http://www.oracle.com/technology/software/products/ias/htdocs/coherence.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;More info about Oracle Coherence 3.5, user guides etc, can be found on the &lt;a href="http://coherence.oracle.com/display/COH/Oracle+Coherence+Knowledge+Base+Home"&gt;Oracle Coherence wiki&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-1451640694590128750?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/1451640694590128750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=1451640694590128750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/1451640694590128750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/1451640694590128750'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/10/coherence-352-available.html' title='Oracle Coherence 3.5.2 available'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-9172852584180577572</id><published>2009-10-21T19:34:00.001-01:00</published><updated>2009-10-22T05:54:09.829-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><category scheme='http://www.blogger.com/atom/ns#' term='11G'/><title type='text'>SOA Suite 11g: Coordination between two BPEL processes</title><content type='html'>While scanning the &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/toc.htm"&gt;FMW 11g SOA Suite developer guide&lt;/a&gt;, I noticed the feature that &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/bp_master_detail.htm"&gt;enables coordination between master and detail BPEL processes&lt;/a&gt; by using so- called signals.&lt;br /&gt;&lt;br /&gt;As far as I know, this feature is introduced in 11g and is very useful in situations where a parent process has to control the processing of the child processes. And, vice versa, where child processes has to notify their parent process when a specific task is completed. Most of the time a signal is enough and no additional information has to be sent along. Therefore, for example, a BPEL invoke activity with correlation might be a bit too complex for this purpose.&lt;br /&gt;&lt;br /&gt;Ok how does it work? The&lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/bp_master_detail.htm"&gt; tutorial&lt;/a&gt; gives you a clear explanation how to use signaling in Oracle BPEL so I will describe the rough details about how you can use signaling and also some limitations that I discovered while praticing with this feature.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;How-to&lt;/i&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create a BPEL master detail proces in the composite.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Use the process type asynchronous for the master process and the the type one-way for the detail&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Add an Invoke activity to the master process to invoke the detail process&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Open the source view of the BPEL editor and add the following property to the invoke activity: &lt;br /&gt;&lt;br /&gt;&lt;pre class="oac_no_warn" xml:space="preserve"&gt;bpelx:invokeAsDetail="true"&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Add a Wait activity to the master process for demo purposes &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add a Signal activity to the master process&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Remember the Label value&lt;/li&gt;&lt;li&gt;Set the To value to details&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&amp;nbsp;Add a Receive Signal activity to the master process&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Remember the Label value&lt;/li&gt;&lt;li&gt;Set the From value to details&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&amp;nbsp;Add a Receive Signal activity to the detail process&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Use the Label value used in step 4 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Set the From value to master&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Add a Wait activity to the detail process for demo purposes&amp;nbsp;&lt;/li&gt;&lt;li&gt;Add a Signal activity to the detail process&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Use the Label value used in step 5 &lt;/li&gt;&lt;li&gt;Set the To value to master&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;You're done! Deploy the composite to the server and test your composite.&lt;/li&gt;&lt;/ol&gt;The signaling feature also supports &lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/bp_master_detail.htm"&gt;correlation&lt;/a&gt; to correlate signals between the master and different detail process types. It seems that correlation of signals between different composite master/detail instances are correlated automagically.&lt;br /&gt;&lt;br /&gt;Unfortunately, the coordination functionality has some limitations:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Labels can not be set dynamically using XPath&lt;/li&gt;&lt;li&gt;Correlation labels can not be set dynamically using XPath&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Only a single signal pair (signal/receive signal) can be used for a unique label&lt;/li&gt;&lt;/ul&gt;These limitations make it, for example, not possible to coordinate by using signals between a master and multiple detail instances of the same BPEL process type which are invoked in parallel or even sequential..&lt;br /&gt;&lt;br /&gt;Oh..I still have to figure out how signaling is implemented 'under the hood'.. However, happy signaling...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-9172852584180577572?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/9172852584180577572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=9172852584180577572' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/9172852584180577572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/9172852584180577572'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/10/soa-suite-11g-coordination-between-two.html' title='SOA Suite 11g: Coordination between two BPEL processes'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-8578602218529444928</id><published>2009-10-20T18:47:00.009-01:00</published><updated>2009-10-22T05:53:24.955-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCA'/><category scheme='http://www.blogger.com/atom/ns#' term='JDeveloper'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>Oracle SOA Suite 11g: Manipulate the SCA composite name at design time</title><content type='html'>By default no composite name is set when a SCA composite is executed. For runtime monitoring and tracking purposes it might be useful to set a custom name at design time for your SCA composite.&amp;nbsp; Especially, when the number of instances increases in production.&lt;br /&gt;&lt;br /&gt;By using embedded Java for BPEL components and XPath for Mediator components you are able to manipulate the title of a SCA composite during design time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;XPath for Mediator components:&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;Use the the following XPath expression in an Assign value dialog when you define a routing rule.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;med:setCompositeInstanceTitle(title string)&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;and use the following target &lt;b&gt;tracking.compositeInstanceTitle&lt;/b&gt;.&lt;br /&gt;&lt;i style="font-family: inherit;"&gt;Note: this property will not appear in the property selection dialog, but can be used though.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i style="color: black;"&gt;Java for BPEL components&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;Add an Embedded Java activity inside your process flow and add the following function to it:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; setCompositeInstanceTitle(title string);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(Ok..here it is my first real blog-posting. Any comments on the layout are welcome) &lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-8578602218529444928?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/8578602218529444928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=8578602218529444928' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/8578602218529444928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/8578602218529444928'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/10/setting-sca-composite-or-bpel-component.html' title='Oracle SOA Suite 11g: Manipulate the SCA composite name at design time'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-7469532432849249390</id><published>2009-10-20T17:54:00.002-01:00</published><updated>2009-10-20T17:54:45.712-01:00</updated><title type='text'>Restart blogging</title><content type='html'>Hi all,&lt;br /&gt;&lt;br /&gt;I recently have decided to start blogging again. I don't no exactly why, but most probably it's due to the fact that I want to share my enthusiasm for SOA and Java technology with you. Especially those with an Oracle flavor..&lt;br /&gt;&lt;br /&gt;The main topics of this blog will be:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Oracle Service Bus&lt;/li&gt;&lt;li&gt;Oracle Fusion Middleware 11g&lt;/li&gt;&lt;li&gt;Oracle Coherence&lt;/li&gt;&lt;li&gt;other SOA and Java topics &lt;br /&gt;&lt;/li&gt;&lt;li&gt;and best practices on all of the above named topics&lt;/li&gt;&lt;/ul&gt;Enjoy reading and don't forget to add this blog to your RSS reader :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-7469532432849249390?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/7469532432849249390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=7469532432849249390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/7469532432849249390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/7469532432849249390'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2009/10/res.html' title='Restart blogging'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-4332036073355414640</id><published>2007-07-01T12:59:00.000-01:00</published><updated>2007-07-01T13:00:49.368-01:00</updated><title type='text'>SOA Best Practice:  Integrate early</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;For a traditional homogeneous application it is sufficient to test the application with unit tests and system tests. &lt;o:p&gt;&lt;/o:p&gt;The application is tested in isolations on several aspects like security, availability and functional correctness. A SOA landscape is heterogamous in which applications cooperate through services to support a specific business process. Testing applications in isolation will not be sufficient for SOA landscapes, so another test procedure will be needed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;Testing all the services in a SOA landscape in isolation will not ensure that the services will work correctly in composition. Compositional problems can be caused by incorrect assumptions between services. Integration tests can be used to filter out these incorrect assumptions. I recommend adapting integration tests in a early phase in the development cycle to prevent situations in which the cause detection is time consuming and the problem solving even more.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;The use of mock-up services will help you to build the integrations tests. I also advice to add the integration tests in the build proces, so that possible problems are detected in an early stage.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-4332036073355414640?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/4332036073355414640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/4332036073355414640'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2007/07/soa-best-practice-integrate-early.html' title='SOA Best Practice:  Integrate early'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-8770688263601080337</id><published>2007-05-10T11:29:00.001-01:00</published><updated>2007-05-10T14:24:34.437-01:00</updated><title type='text'>JavaFX: Sun announces Java RIA extension</title><content type='html'>There is a lot of rumour and development in the RIA world. Microsoft recently released &lt;a href="http://www.microsoft.com/silverlight/default01.aspx"&gt;SilverLight&lt;/a&gt; and &lt;a href="http://www.adobe.com/products/flex/"&gt;Adobe Flex&lt;/a&gt; is nowadays an established and popular RIA development environment.&lt;br /&gt;&lt;br /&gt;Today, I read that Sun roles out it's own RIA development product. &lt;a href="http://www.sun.com/software/javafx/index.jsp"&gt;JavaFX&lt;/a&gt; is Sun's answer on &lt;a href="http://www.adobe.com/products/flex/"&gt;Adobe Flex&lt;/a&gt; and &lt;a href="http://www.microsoft.com/silverlight/default01.aspx"&gt;Microsoft Silverlight&lt;/a&gt;. JavaFX is a product-line that can be used for building RIAs rich web/desktop apps all the way down to to handheld device applications. FX script will become the tool to for creating your RIAs. The first product that will be releaded is JavaFX mobile, the kit for developing RIAs for mobile devices&lt;br /&gt;&lt;br /&gt;FX script is the tool for content-authoring with a main focus on UI experience and making the RIAs highly animated. FX script make is possible to use every library in SE or ME. No bridging-code is needed. FX script will deal with this. To use FX Script you only need to install one library with the standard SE or ME installation.&lt;br /&gt;&lt;br /&gt;With JavaFX, Sun now has its own Java-based RIA platform to compete with Adobe and Microsoft on the RIA market. According to this, there are three main players now on the RIA market: .Net, Adobe and Sun. Forget to mention AJAX, but in my opinion this is more a technology than a product for building RIAs. Also, &lt;a href="http://grails.codehaus.org/"&gt;Grails&lt;/a&gt; and &lt;a href="http://www.rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt; in combination with AJAX are very usefull frameworks for building RIAs.&lt;br /&gt;&lt;br /&gt;I believe that accessing, displaying and more important sharing non-structured data, like sound images and video on any platform is now very important and will become more important in the near future. So the RIA market will also emerge in the near future. The more players enter the RIA market the more choices we will have to develop RIA applications. I do not have an appropriate answer on the question which product is best. Maybe, there isn't and will the choice depends on your situation and project demands.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-8770688263601080337?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/8770688263601080337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=8770688263601080337' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/8770688263601080337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/8770688263601080337'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2007/05/javafx-sun-announces-java-ria-extension_10.html' title='JavaFX: Sun announces Java RIA extension'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-113493827044705716</id><published>2005-12-18T19:32:00.000-01:00</published><updated>2005-12-18T19:37:50.456-01:00</updated><title type='text'>Use processScope in ADF faces</title><content type='html'>Today, I read a good article about how to use the &lt;a href="http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf/doc/devguide/communicatingBetweenPages.html"&gt;processScope feature &lt;/a&gt;in Oracle JSF implementation: ADF faces.&lt;br /&gt;&lt;br /&gt;The processScope is not a standard feature in of JSF, but is added by Oracle to overcome the problems with using the request or session objects to pass data between pages.&lt;br /&gt;&lt;br /&gt;Currently, I'm playing with EJB3.0 and JSF and I certainly going to use the processScope to implement master-detail pages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-113493827044705716?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/113493827044705716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=113493827044705716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/113493827044705716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/113493827044705716'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2005/12/use-processscope-in-adf-faces.html' title='Use processScope in ADF faces'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-113483630978170397</id><published>2005-12-17T15:03:00.000-01:00</published><updated>2005-12-17T15:36:14.093-01:00</updated><title type='text'>Resource Injection in Servlet 2.5</title><content type='html'>In a posting on&lt;a href="http://http//weblogs.java.net/blog/meeraj/archive/2005/12/resource_inject.html"&gt; Meeraj Kunnumpurath's weblog&lt;/a&gt; , I read that the Java Servlet specification 2.5 (still in maintaince version) will have the ability to inject dependencies to classes whose lifecycle are maintained by the container. This means that you can just inject and use resources, like EJBs and DataSources, in the same way as you can do now in the EJB3.o specification (still in beta-version).&lt;br /&gt;&lt;br /&gt;Currently, I'm experimenting with Oracle's EJB3.o implemention and I have to say my first impressions are quite hopefull. Especially the simple way of using resources in an EJB, like an EntityManager or another EJB, is a feature I really like as a  J2ee developer.  I think dependency Injection, and IoC in general, is really a great feature that increases the flexibillity and development speed of a Web Application Framework (WAF)..For example look at how popular Spring is these days...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-113483630978170397?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/113483630978170397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=113483630978170397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/113483630978170397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/113483630978170397'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2005/12/resource-injection-in-servlet-25.html' title='Resource Injection in Servlet 2.5'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-113433322270123311</id><published>2005-12-11T19:20:00.000-01:00</published><updated>2005-12-11T19:35:06.693-01:00</updated><title type='text'>Downloading with 150 gigabits per second..</title><content type='html'>Today, I read on  &lt;a href="http://www.fnal.gov/pub/presspass/press_releases/network_prize_release.html"&gt;Fermilab&lt;/a&gt; the news that the California Institute of Technology as won SC|05 Bandwidth Challenge in Seatlte last November.  The team of high energy physicists, computer scientists and network engineers led by the California Institute of Technology transferred physics data at a rate of over 150 gigabits per second--equivalent to downloading over 130 DVD movies in one minute.&lt;br /&gt;&lt;br /&gt;The entry by the team is part of the preparation for a new  particle accelerator, called the Large Hadron Collider, which will begin operating in 2007 at the CERN in Geneva, Switzerland.  Data provided by the LHC shall be accessed by thousands of scientist around the world to help finding answers at questions concerning (e.g. ) the universe. The processing, distribution and analysis of the data will be completed using high-speed optical networks, software to monitor and manage the data flows across the networks, and grid computing.&lt;br /&gt;&lt;br /&gt;I wonder when I as a internet user will see my bandwith increased due to these kinds of developments in the world of network technology..;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-113433322270123311?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/113433322270123311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=113433322270123311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/113433322270123311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/113433322270123311'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2005/12/downloading-with-150-gigabits-per.html' title='Downloading with 150 gigabits per second..'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-113398637960608838</id><published>2005-12-07T18:50:00.000-01:00</published><updated>2005-12-08T06:49:15.930-01:00</updated><title type='text'>First experience JSF in Java Studio Creator</title><content type='html'>In a previous post, I noticed that Sun made several of its development tools free. I have downloaded the free Sun Java Studio Creator tool and started to play around with it.&lt;br /&gt;&lt;br /&gt;I started to build a simple JSF application and I immediately noticed how easy it is to set things up and to add JSF components to your page. I also noticed that this tool is optimized for the development of web GUIs and it is clearly not meant to build EJB modules with it. (however you can import them and use them in your webapp as the model.)&lt;br /&gt;&lt;br /&gt;I also like the rich property palettes, which appear at the side of your screen when you drag a JSF component on your page. They gave the ability to the programmer to easily manage the page layout.&lt;br /&gt;&lt;br /&gt;As an experienced user of Oracle's JDeveloper, I more or less compared both tools while playing around with this new (for me) developement tool. I noticed that JDeveloper nowadays still offers more options (e.g. like automatically generation of import-statements) than JSC, for so far I can judge now. It also includes more vendor-plugins than JSC. However, I already noticed that, for my feeling, JSC performs much better than JDev ( 1GB of memory is the minimum for proper use of JDev).&lt;br /&gt;&lt;br /&gt;My first impression of JSC is that JSC is certainly a nice to tool for building webapps in JSF, but there are other tools in the area of IDEs, which are much more completer...like JDeveloper..&lt;br /&gt;&lt;br /&gt;But wait.. there is more from Sun..As I have said before JSC is optimized for building front-ends in JSF. Sun Java Creator Enterprise is a more complete tool, which you can use to build EJB modules..So left with a positive feeling about JSC, I wonder what my experiences with JCE will be..&lt;br /&gt;&lt;br /&gt;I'll keep you posted..for now try JSC yourself&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-113398637960608838?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/113398637960608838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=113398637960608838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/113398637960608838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/113398637960608838'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2005/12/first-experience-jsf-in-java-studio.html' title='First experience JSF in Java Studio Creator'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-113381286689714658</id><published>2005-12-05T18:53:00.000-01:00</published><updated>2005-12-05T19:01:15.193-01:00</updated><title type='text'>Sun made award-winning Java tools  free!</title><content type='html'>Today, I read on &lt;a href="http://java.sun.com/"&gt;Sun's java homepage&lt;/a&gt; that Sun provides free-downloads of it's award winning development tools:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sun Java Studio Creator 2004Q2 (full license), &lt;/li&gt;&lt;li&gt;Sun  Java Studio Enterprise 8 (full license)&lt;/li&gt;&lt;li&gt;Sun Studio 11 (full-license) software&lt;/li&gt;&lt;/ul&gt;Sun's follows Microsoft (with their express editions) to make their tools available for free-download. This is a great sign for developers like me, who want to try new technologies but do not have the money (or do not want to pay for it ;)) to buy all the handy development tools..They can now easily choose the right tool for their job!&lt;br /&gt;&lt;br /&gt;Thank's a lot Sun and Microsoft&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-113381286689714658?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/113381286689714658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=113381286689714658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/113381286689714658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/113381286689714658'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2005/12/sun-made-award-winning-java-tools-free.html' title='Sun made award-winning Java tools  free!'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19569500.post-113371576431964361</id><published>2005-12-04T15:57:00.000-01:00</published><updated>2005-12-04T16:59:37.676-01:00</updated><title type='text'>First message</title><content type='html'>Hi all,&lt;br /&gt;&lt;br /&gt;this is my first posting on my new weblog. In the future, I will post messages at a regular base on this blog. The main subject of the postings will be about my life on this planet..&lt;br /&gt;&lt;br /&gt;Hope to see you back at my blog soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19569500-113371576431964361?l=tomhofte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomhofte.blogspot.com/feeds/113371576431964361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19569500&amp;postID=113371576431964361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/113371576431964361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19569500/posts/default/113371576431964361'/><link rel='alternate' type='text/html' href='http://tomhofte.blogspot.com/2005/12/first-message_04.html' title='First message'/><author><name>Tom Hofte</name><uri>http://www.blogger.com/profile/11228605775527929516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/83/8894/320/Afbeelding%20083.0.jpg'/></author><thr:total>0</thr:total></entry></feed>
