<?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:blogger='http://schemas.google.com/blogger/2008' 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-3112417624037390631</id><updated>2026-09-28T12:04:40.708+03:00</updated><category term="Oracle"/><category term="Java"/><category term="Fusion Middleware"/><category term="Architecture"/><category term="IBM"/><category term="Java EE"/><category term="SOA"/><category term="EAI"/><category term="ESB"/><category term="Technical Support"/><category term="Performance Tuning"/><category term="Troubleshooting"/><category term="SOA Suite"/><category term="WebLogic Server"/><category term="WebSphere Liberty Profile"/><category term="Design Patterns"/><category term="Oracle Service Bus"/><category term="Web Services"/><category term="WebSphere Application Server"/><category term="z Systems"/><category term="z/OS"/><category term="Cloud"/><category term="Concurrent Programming"/><category term="Docker"/><category term="Service design"/><category term="Spring Framework"/><category term="Success Story"/><category term="Apache Maven"/><category term="C++"/><category term="DevOps"/><category term="IBM Cloud"/><category term="JBoss"/><category term="Kubernetes"/><category term="REST"/><category term="About me"/><category term="Agile Development"/><category term="Ansible"/><category term="Apache Camel"/><category term="BPM Suite"/><category term="Coherence"/><category term="Compiler"/><category term="Functional Programming"/><category term="JBoss Fuse"/><category term="LLVM Infrastructure"/><category term="MSVC"/><category term="MicroProfile"/><category term="Microsoft"/><category term="OpenJ9"/><category term="WebLogic Clustering"/><title type='text'>Pavel Samolysov&#39;s Website</title><subtitle type='html'>it&#39;s not what you know and who you know but who knows that you know.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-7390353882582863533</id><published>2018-09-11T09:21:00.000+03:00</published><updated>2018-09-11T09:21:05.802+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="MSVC"/><title type='text'>[C++] What warning C4291 is and how to deal with it</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;After Java, C++ impresses me with his manual memory management and the idea of how many surprises a developer may meet on his/her way. For example, if you define your own operator &lt;i&gt;new&lt;/i&gt; with custom arguments (it is called &amp;quot;&lt;i&gt;&lt;a href=&quot;https://en.cppreference.com/w/cpp/memory/new/operator_new&quot;&gt;class-specific placement allocation functions&lt;/a&gt;&lt;/i&gt;&amp;quot;), a placement form of operator &lt;i&gt;delete&lt;/i&gt; that matches the placement form of operator &lt;i&gt;new&lt;/i&gt; has to be defined (the corresponding form of the &lt;i&gt;delete&lt;/i&gt; operator must have the signature &lt;i&gt;void operator delete(void *ptr, user-defined-args...)&lt;/i&gt;). When an exception is thrown in a class constructor the placement form of operator &lt;i&gt;delete&lt;/i&gt; will be invoked and take care of the memory reclaimation. If there is no the placement form of the operator, no one will be able to take care of the memory and a memory leak occurs. &lt;br&gt;
&lt;br&gt;
&lt;h3&gt;Warning C4291&lt;/h3&gt;&lt;br&gt;
Fortunately, the &lt;i&gt;MSVC&lt;/i&gt; compiler lets us know about the dangerous using warning &lt;b&gt;C4291&lt;/b&gt; &lt;i&gt;no matching operator delete found; memory will not be freed if initialization throws an exception&lt;/i&gt; (please, compile the code with &lt;i&gt;/EHsc /W1&lt;/i&gt;). Let&amp;#39;s have a look:&lt;br&gt;
&lt;br&gt;
[1/2] Building CXX object src\memory\CMakeFiles\placement-new-delete.dir\PlacementNewDelete.cpp.obj&lt;br&gt;
..\src\memory\PlacementNewDelete.cpp(67): warning C4291: &amp;#39;void *MyClassA::operator new(size_t,MyAllocator &amp;)&amp;#39;: no matching operator delete found; memory will not be freed if initialization throws an exception&lt;br&gt;
..\src\memory\PlacementNewDelete.cpp(32): note: see declaration of &amp;#39;MyClassA::operator new&amp;#39;&lt;br&gt;
[2/2] Linking CXX executable src\memory\placement-new-delete.exe&lt;br&gt;
&lt;br&gt;
The warning is described in detail there: &lt;a href=&quot;https://msdn.microsoft.com/en-us/library/cxdxz3x6.aspx&quot;&gt;Compiler Warning (level 1) C4291&lt;/a&gt; (&lt;i&gt;MSDN&lt;/i&gt;).&lt;br&gt;
&lt;br&gt;
The problem you can be faced is the following: in some cases, it&amp;#39;s not so easy to implement the placement form of operator &lt;i&gt;delete&lt;/i&gt;. Operator &lt;i&gt;new&lt;/i&gt; forewer takes the &lt;i&gt;size&lt;/i&gt; argument - the ammount of memory required for the object while operator &lt;i&gt;delete&lt;/i&gt; doesn&amp;#39;t but the argument may be necessary to allocate the memory and return it to the operating system then.&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;Writing your own allocator&lt;/h3&gt;&lt;br&gt;
Let&amp;#39;s consider the following pattern: a third-party memory allocator is used to allocate memory for objects, the allocator has two methods: &lt;i&gt;allocate&lt;/i&gt; and &lt;i&gt;deallocate&lt;/i&gt; and each method takes a &lt;i&gt;size_t size&lt;/i&gt; parameter. I see this code very often through the &lt;i&gt;&lt;a href=&quot;https://github.com/eclipse/omr&quot;&gt;Eclipse OMR&lt;/a&gt;&lt;/i&gt; JIT compiler, so I believe the pattern is quite popular. &lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2018/09/c-what-warning-c4291-is-and-how-to-deal.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/7390353882582863533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2018/09/c-what-warning-c4291-is-and-how-to-deal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/7390353882582863533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/7390353882582863533'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2018/09/c-what-warning-c4291-is-and-how-to-deal.html' title='[C++] What warning C4291 is and how to deal with it'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-8731075346557359180</id><published>2018-05-23T10:26:00.000+03:00</published><updated>2018-06-20T22:13:40.130+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="Compiler"/><category scheme="http://www.blogger.com/atom/ns#" term="LLVM Infrastructure"/><title type='text'>Build Custom Passes as a Part of the LLVM Build Environment</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;There is no dynamic linking on Windows (this is OS weirdness) so we cannot use the plugins at all, unfortunately. In this post, I would like to share a how-to about building your own LLVM pass as a part of the LLVM build tree (&lt;i&gt;&lt;a href=&quot;https://github.com/samolisov/llvm-experiments/tree/master/llvm-ir-custom-passes/LLVMExperimentPasses&quot;&gt;LLVMExperimentPasses&lt;/a&gt;&lt;/i&gt; and the demo pass &lt;i&gt;&lt;a href=&quot;https://github.com/samolisov/llvm-experiments/tree/master/llvm-ir-custom-passes&quot;&gt;FunctionArgumentCount&lt;/a&gt;&lt;/i&gt; can be found on &lt;b&gt;GitHub&lt;/b&gt;).&lt;br /&gt;
&lt;br /&gt;
To build the pass, do the following:&lt;br /&gt;
&lt;br /&gt;
1. Copy the &lt;i&gt;LLVMExperimentPasses&lt;/i&gt; pass directory in the &lt;i&gt;lib/Transforms&lt;/i&gt; one. Here and throughout, all paths are given at the root of the LLVM source directory.&lt;br /&gt;
&lt;br /&gt;
2. Add the &lt;i&gt;add_subdirectory(LLVMExperimentPasses)&lt;/i&gt; line into &lt;i&gt;lib/Transforms/CMakeLists.txt&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
3. For each implemented pass, add a function named &lt;i&gt;initialize${THE_NAME_OF_THE_PASS}Pass(PassRegistry &amp;);&lt;/i&gt; into the &lt;i&gt;include/llvm/InitializePasses.h&lt;/i&gt; header file. Also add the funtion &lt;i&gt;void initializeLLVMExperimentPasses(PassRegistry &amp;);&lt;/i&gt; there. For example, for the &lt;i&gt;FunctionArgumentCount&lt;/i&gt; pass add the following lines:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;// my experiment passes
void initializeLLVMExperimentPasses(PassRegistry &amp;);
void initializeFunctionArgumentCountPass(PassRegistry &amp;);
} // end namespace llvm
&lt;/pre&gt;(the functions must be defined inside the llvm namespace).&lt;br /&gt;
&lt;br /&gt;
4. Add the &lt;i&gt;LLVMExperimentPasses&lt;/i&gt; library to the &lt;i&gt;LLVM_LINK_COMPONENTS&lt;/i&gt; list in the &lt;i&gt;tools/opt/CMakeLists.txt&lt;/i&gt; file:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;set(LLVM_LINK_COMPONENTS
    ${LLVM_TARGETS_TO_BUILD}
    AggressiveInstCombine
    ...
    ExperimentPasses
)
&lt;/pre&gt;&lt;b&gt;Note&lt;/b&gt;: The form of &lt;i&gt;ExperimentPasses&lt;/i&gt;, not &lt;i&gt;LLVMExperimentPasses&lt;/i&gt; is used here.&lt;br /&gt;
&lt;br /&gt;
5. Register the passes into the &lt;i&gt;opt&lt;/i&gt; tool by adding an invocation of the &lt;i&gt;initializeLLVMExperimentPasses&lt;/i&gt; function to the &lt;i&gt;main&lt;/i&gt; method of the tool (file &lt;i&gt;tools/opt/opt.cpp&lt;/i&gt;):&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;// Initialize passes
PassRegistry &amp;Registry = *PassRegistry::getPassRegistry();
initializeCore(Registry);
...
initializeLLVMExperimentPasses(Registry);
// For codegen passes, only passes that do IR to IR transformation are
// supported.
&lt;/pre&gt;6. Rebuild LLVM (&lt;i&gt;YOUR_LLVM_BUILDTREE&lt;/i&gt; is the directory where you build LLVM) and install the new output files:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;cd YOUR_LLVM_BUILDTREE

cmake -DCMAKE_CXX_COMPILER=YOUR_FAVOURITE_COMPILER \
-DCMAKE_C_COMPILER=YOUR_FAVOURITE_COMPILER \
-DCMAKE_LINKER=YOUR_FAVOURITE_LINKER .. -G&quot;Ninja&quot;

cmake --build .

cmake --build . --target install
&lt;/pre&gt;The passes are ready. For instance, the &lt;i&gt;FunctionArgumentCount&lt;/i&gt; pass is registered as &lt;i&gt;fnargcnt&lt;/i&gt; in the &lt;i&gt;opt&lt;/i&gt; tool and can be invoked using the following command line:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;opt.exe -fnargcnt &lt; sum.bc &gt; sum-out.bc&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Would you like to give a &#39;Like&#39;? Please follow me on &lt;b&gt;&lt;a href=&quot;https://twitter.com/psamolysov&quot;&gt;Twitter&lt;/a&gt;&lt;/b&gt;! &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/8731075346557359180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2018/05/build-custom-passes-as-part-of-llvm.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/8731075346557359180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/8731075346557359180'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2018/05/build-custom-passes-as-part-of-llvm.html' title='Build Custom Passes as a Part of the LLVM Build Environment'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-4946543263944117256</id><published>2018-02-21T08:17:00.001+03:00</published><updated>2018-07-10T07:16:59.004+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ansible"/><category scheme="http://www.blogger.com/atom/ns#" term="Docker"/><category scheme="http://www.blogger.com/atom/ns#" term="IBM"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenJ9"/><title type='text'>IBM OpenSources Itself: Build the OpenJ9 JVM into Docker Image from Sources Using Ansible</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;IBM has opened their products to the open source community. Today I wish to tell you about two of that products:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;a href=&quot;https://github.com/OpenLiberty/open-liberty&quot;&gt;OpenLiberty&lt;/a&gt;&lt;/i&gt; - open sourced &lt;i&gt;Java EE&lt;/i&gt; application server &lt;i&gt;WebSphere Liberty Profile&lt;/i&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;a href=&quot;https://github.com/eclipse/openj9&quot;&gt;OpenJ9&lt;/a&gt;&lt;/i&gt; - open sourced JVM based on &lt;i&gt;OpenJDK&lt;/i&gt; and another open source project &lt;i&gt;&lt;a href=&quot;https://github.com/eclipse/omr&quot;&gt;OMR&lt;/a&gt;&lt;/i&gt; that contains cross platform components for building reliable, high performance language runtimes (so, not only the Java runtime but runtimes for Python, Ruby and other languages). &lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;
&lt;i&gt;OpenJ9&lt;/i&gt; and &lt;i&gt;OMR&lt;/i&gt; are opened under the umbrella of &lt;i&gt;&lt;a href=&quot;https://www.eclipse.org/&quot;&gt;Eclipse Foundation&lt;/a&gt;&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
Let&amp;#39;s try to build the JVM. Thanks to the developers, there is a full instruction how to build the project using &lt;i&gt;&lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt;&lt;/i&gt; and the Make utility. The instruction for JDK 8 can be found here: &lt;a href=&quot;https://github.com/eclipse/openj9/blob/master/buildenv/Build_Instructions_V8.md&quot;&gt;Build_Instructions_V8.md&lt;/a&gt; while the instruction for JDK 9 is here: &lt;a href=&quot;https://github.com/eclipse/openj9/blob/master/buildenv/Build_Instructions_V9.md&quot;&gt;Build_Istructions_V9.md&lt;/a&gt;. Both instructions contain a part for a build process based on Docker. Really, this is very usable just build a Docker-container which contains all required dependencies: C and C++ libraries, python libraries, a compiler collection, and tools don&amp;#39;t have to be installed on the host environment, we can just to isolate them within a container.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2018/02/how-to-build-openj9-jdk-from-sources-docker-ansible.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/4946543263944117256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2018/02/how-to-build-openj9-jdk-from-sources-docker-ansible.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/4946543263944117256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/4946543263944117256'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2018/02/how-to-build-openj9-jdk-from-sources-docker-ansible.html' title='IBM OpenSources Itself: Build the OpenJ9 JVM into Docker Image from Sources Using Ansible'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-tMSc3q22VwC_-rlIvGwxPyfYzpLTT3JeD5QBLdf55kSxmjxfnvDpkttwJ9x5wkRM45kJ80mncl8ZQls2WBXzLQlr_gT3jPwH3LV6rNKN3Sq6WK3XVGOAuHg6-BCKoFdcWixzpnbEu4VA/s72-c/openlibery-on-openj9-java9.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-5993690793290505156</id><published>2017-12-22T15:49:00.000+03:00</published><updated>2017-12-22T16:14:08.290+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache Maven"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="DevOps"/><category scheme="http://www.blogger.com/atom/ns#" term="Docker"/><category scheme="http://www.blogger.com/atom/ns#" term="IBM"/><category scheme="http://www.blogger.com/atom/ns#" term="Java EE"/><category scheme="http://www.blogger.com/atom/ns#" term="JBoss"/><category scheme="http://www.blogger.com/atom/ns#" term="Kubernetes"/><category scheme="http://www.blogger.com/atom/ns#" term="WebSphere Liberty Profile"/><title type='text'>Integration Testing a Java EE Application in the Containerized World Using Kubernetes and the Fabric8 Maven Plugin</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;&lt;div style=&quot;margin-bottom: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG4AFXoCg2cBwDLXunqsVGyM0LTNCtRqlqq6ZjN5GsRylo3L037G5d8f4dhi4gbBe52iNY0HKAplzIPwwHaqqcLDFqQGazViLJN4QcBHRFc4ez7tXIWUzkfMqxBMNLOIE6cbwiQRBC1RG8/s1600/fabric8-logos.png&quot; data-original-width=&quot;400&quot; data-original-height=&quot;113&quot;&gt;&lt;/div&gt;&lt;b&gt;&lt;a href=&quot;https://kubernetes.io/&quot;&gt;Kubernetes&lt;/a&gt;&lt;/b&gt; is an open-source system for automating deployment, scaling, and management of containerized applications. With Kubernetes, you are able to quickly and efficiently respond to customer demand:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;Deploy your applications quickly and predictably&lt;/li&gt;
&lt;li&gt;Scale your applications on the fly&lt;/li&gt;
&lt;li&gt;Roll out new features seamlessly&lt;/li&gt;
&lt;li&gt;Limit hardware usage to required resources only&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;
&lt;b&gt;&lt;a href=&quot;https://maven.fabric8.io/&quot;&gt;Fabric8 Maven plugin&lt;/a&gt;&lt;/b&gt; is a one-stop-shop for building and deploying Java applications for &lt;i&gt;&lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt;&lt;/i&gt;, &lt;i&gt;&lt;a href=&quot;https://kubernetes.io/&quot;&gt;Kubernetes&lt;/a&gt;&lt;/i&gt; and &lt;i&gt;&lt;a href=&quot;https://www.openshift.com/&quot;&gt;OpenShift&lt;/a&gt;&lt;/i&gt;. It brings your Java applications on to Kubernetes and OpenShift. It provides a tight integration into Maven and benefits from the build configuration already provided. It focuses on three tasks:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;Building Docker images&lt;/li&gt;
&lt;li&gt;Creating OpenShift and Kubernetes resources&lt;/li&gt;
&lt;li&gt;Deploy application on Kubernetes and OpenShift&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;
My demo Java EE application uses the &lt;i&gt;Fabric8 Maven plugin&lt;/i&gt; as an access point to Kubernetes: the application can be deployed on a &lt;a href=&quot;https://hub.docker.com/_/websphere-liberty/&quot;&gt;WebSphere Liberty-based docker container&lt;/a&gt; running inside a Kubernetes cluster and the integration tests run dependent on the containerized application. Since the environment is containerized, any databases, messaging providers or other infrastructure components can be taken into account in the future also using appropriate containers.&lt;br&gt;
&lt;br&gt;
The &lt;i&gt;fabric8-maven-plugin&lt;/i&gt; configuration for the application:&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/12/integration-testing-java-ee-application-in-kubernetes-by-fabric8.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/5993690793290505156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/12/integration-testing-java-ee-application-in-kubernetes-by-fabric8.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/5993690793290505156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/5993690793290505156'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/12/integration-testing-java-ee-application-in-kubernetes-by-fabric8.html' title='Integration Testing a Java EE Application in the Containerized World Using Kubernetes and the Fabric8 Maven Plugin'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG4AFXoCg2cBwDLXunqsVGyM0LTNCtRqlqq6ZjN5GsRylo3L037G5d8f4dhi4gbBe52iNY0HKAplzIPwwHaqqcLDFqQGazViLJN4QcBHRFc4ez7tXIWUzkfMqxBMNLOIE6cbwiQRBC1RG8/s72-c/fabric8-logos.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-385766294879837672</id><published>2017-12-11T12:57:00.001+03:00</published><updated>2017-12-11T13:12:53.647+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="Docker"/><category scheme="http://www.blogger.com/atom/ns#" term="IBM"/><category scheme="http://www.blogger.com/atom/ns#" term="IBM Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="Kubernetes"/><title type='text'>IBM Cloud Private Café in Moscow</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;I would like to thank my ex-colleagues from the IBM Russia/CIS office from Moscow for a chance to attend an amazing event - IBM Cloud Private Café - and meet a new cloud offering from IBM.&lt;br /&gt;
&lt;br /&gt;
In this post, I wish to say a couple of words about this new product from the Big Blue.&lt;br /&gt;
&lt;br /&gt;
So, &lt;i&gt;IBM Cloud Private&lt;/i&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Software defined, not an appliance (as, for example, &lt;i&gt;Oracle Private Cloud Applience&lt;/i&gt;), positioned as a pure software defined solution which can be installed upon x86-64, Power or z Systems.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Container-based, &lt;i&gt;Kubernetes&lt;/i&gt; is the heart of the product.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;IBM provides the catalog of modernized and containerized &lt;i&gt;IBM Middleware&lt;/i&gt; and data services (so, you can run your IBM WebSphere Liberty or Node.js based microservice in a Kubernetes-managed Docker container).&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;IBM extends Kubernetes by the following capabilities: &lt;i&gt;Intelligent Scheduling&lt;/i&gt;, &lt;i&gt;Self-healing&lt;/i&gt;, &lt;i&gt;Horizontal scaling&lt;/i&gt;, &lt;i&gt;Simplified cluster management&lt;/i&gt;, &lt;i&gt;Container &lt;b&gt;security &amp; isolation&lt;/b&gt;&lt;/i&gt;, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Cloud Foundry for application development and deployment is accessible out of the box.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Integrated DevOps toolchain may be interesting for developers.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;IBM Cloud Private may be your secure access point to public cloud services (Blockchain, AI - Watson, etc.)&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;The cloud is running on existing IaaS: &lt;i&gt;wmware&lt;/i&gt;, &lt;i&gt;openstack&lt;/i&gt;, &lt;i&gt;Power Systems&lt;/i&gt;, &lt;i&gt;System z&lt;/i&gt;, &lt;i&gt;&lt;a href=&quot;https://www.ibm.com/storage/spectrum&quot;&gt;IBM Spectrum&lt;/a&gt;&lt;/i&gt;, etc.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
There are three versions of &lt;i&gt;IBM Cloud Private&lt;/i&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Community Edition (exactly one master + one cluster,  can be &lt;a href=&quot;https://www.ibm.com/support/knowledgecenter/SSBS6K_2.1.0/installing/install_containers_CE.html&quot;&gt;installed for free by downloading images from Docker Hub&lt;/a&gt; but, as you understand, no support is provided. The large list of IBM software with the suffix &quot;for Developers&quot; is also available.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Cloud Native (the fault-tolerant master, the support is provided, Community Edition + Cloud Foundry (optional) + IBM Enterprise Software (Microservice Builder, WebSphere Liberty, IBM SDK for Node.js, Cloud Automation Manager, etc.) &lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Enterprise (the fault-tolerant master, the support is provided, Cloud Native + WAS ND + MQ Advanced + API Connect Professional + Db2 Direct Advanced (sep. PN) + UrbanCode Deploy (sep. PN)).&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;i&gt;IBM Cloud Private&lt;/i&gt; addresses the following enterprise use cases:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Case 1&lt;/b&gt;: Modernize and optimize existing applications (monolithic WebSphere or WebLogic based applications, existing WAS, MQ, DB2 infrastructure) + DevOps initiatives.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Case 2&lt;/b&gt;: Opening up enterprise data centres to work with public cloud services (e.g., IBM Watson, Blockchain and others).&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Case 3&lt;/b&gt;: Create new cloud-native applications and push them to a namespace in the private cloud: addressing new use cases, IoT, Blockchain, Machine Learning, Data science experience, building MicroServices.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
To have access to &lt;i&gt;&lt;a href=&quot;https://www.ibm.com/cloud/container-service&quot;&gt;IBM Cloud Container Service&lt;/a&gt;&lt;/i&gt;, only an &lt;a href=&quot;https://console.bluemix.net/&quot;&gt;IBM Bluemix&lt;/a&gt; account is needed. The service is a container-based public cloud and can be used as a production environment as well as a place where environments are created by demand for development and testing before pushing images to your private cloud.&lt;br /&gt;
&lt;br /&gt;
Would you like to give a &#39;Like&#39;? Please follow me on &lt;b&gt;&lt;a href=&quot;https://twitter.com/psamolysov&quot;&gt;Twitter&lt;/a&gt;&lt;/b&gt;! &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/385766294879837672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/12/ibm-cloud-private-cafe-in-moscow.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/385766294879837672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/385766294879837672'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/12/ibm-cloud-private-cafe-in-moscow.html' title='IBM Cloud Private Café in Moscow'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-7521443276579774001</id><published>2017-11-23T16:53:00.001+03:00</published><updated>2017-12-11T13:16:59.803+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="IBM"/><category scheme="http://www.blogger.com/atom/ns#" term="IBM Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="Java EE"/><category scheme="http://www.blogger.com/atom/ns#" term="MicroProfile"/><category scheme="http://www.blogger.com/atom/ns#" term="WebSphere Liberty Profile"/><title type='text'>Deploy a Custom WebSphere Liberty Runtime with the MicroProfile 1.2 Feature in IBM Cloud</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;&lt;b&gt;WebSphere Liberty&lt;/b&gt; is a fast, dynamic, and easy-to-use Java application server, built on the open source &lt;i&gt;&lt;a href=&quot;http://openliberty.io/&quot;&gt;Open Liberty&lt;/a&gt;&lt;/i&gt; project. Ideal for developers but also ready for production, on-premise or &lt;a href=&quot;https://console.bluemix.net/&quot;&gt;in the cloud&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;IBM Bluemix&lt;/b&gt; (is now &lt;b&gt;IBM Cloud&lt;/b&gt;) is &lt;a href=&quot;https://console.bluemix.net/&quot;&gt;the latest cloud offering&lt;/a&gt; from IBM. It enables organizations and developers to quickly and easily create, deploy, and manage applications on the cloud. Bluemix is an implementation of IBM&amp;#39;s Open Cloud Architecture based on &lt;b&gt;Cloud Foundry&lt;/b&gt;, an open source Platform as a Service (PaaS). IBM Cloud Foundry includes runtimes for Java, Node.js, PHP, Python, Ruby, Swift and Go; Cloud Foundry community build packs are also available.&lt;br&gt;
&lt;br&gt;
Although IBM Cloud has already provided a runtime engine for WebSphere Liberty, sometimes this isn&amp;#39;t enough and developers may need their own version of the platform, i.e. a lightweight version based on Liberty Kernel, or an old version to ensure backward compatibility, or the version of WebSphere Liberty armed with a set of features specific for the developed application.&lt;br&gt;
&lt;br&gt;
The blog post provides a demonstration of how to deploy your own installation of WebSphere Liberty to IBM Cloud as a usual Java application. The deployed installation is armed with the latest version of &lt;b&gt;&lt;a href=&quot;https://projects.eclipse.org/projects/technology.microprofile&quot;&gt;MicroProfile&lt;/a&gt;&lt;/b&gt;, an open forum to collaborate on Enterprise Java Microservices, issued on October 3, 2017.&lt;br&gt;
&lt;br&gt;
&lt;i&gt;Eclipse MicroProfile 1.2&lt;/i&gt; is built on the 1.1 version and updates the config API and adds the health check, fault tolerance, metrics, and JWT propagation APIs. As stated on the official page of the project, the goal of MicroProfile is to iterate and innovate in short cycles, get community approval, release, and repeat. Eventually, the output of this project could be submitted to the JCP for possible future inclusion in a Java JSR (or some other standards body). The WebSphere Liberty application server implements Microprofile 1.2, just the corresponding feature -&lt;br&gt;
&lt;i&gt;microprofile-1.2&lt;/i&gt; - must be included in the &lt;i&gt;server.xml&lt;/i&gt; configuration file.&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/11/deploy-custom-websphere-liberty-runtime-in-bluemix.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/7521443276579774001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/11/deploy-custom-websphere-liberty-runtime-in-bluemix.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/7521443276579774001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/7521443276579774001'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/11/deploy-custom-websphere-liberty-runtime-in-bluemix.html' title='Deploy a Custom WebSphere Liberty Runtime with the MicroProfile 1.2 Feature in IBM Cloud'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHpu57Zp49_Pq6jE5zhXQfBg-rl-6WmWrr-b3dE5K1eKkwwOkF1lsQQ_XIeNhyphenhyphenSPPk8gj5QVGTV7BCyXXnJK5G6ZULm7IB9h0DiWz6wlmb94a7G9AJnf3_4xXFSBInBvWSTnudiu3lcdLh/s72-c/wlp-install-bluemix-ibm.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-770636219158099945</id><published>2017-10-13T16:46:00.002+03:00</published><updated>2017-10-13T16:51:21.920+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="EAI"/><category scheme="http://www.blogger.com/atom/ns#" term="ESB"/><category scheme="http://www.blogger.com/atom/ns#" term="Service design"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA"/><title type='text'>ESB vs EAI: &quot;Universal Service&quot;, What is Wrong with This Pattern</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;Some technical people do understand the &lt;i&gt;Enterprise Service Bus (ESB)&lt;/i&gt; concept as a universal channel designed just to enable some XML messages encoded as plain string transmission among enterprise applications. The channel should provide no validation/enrichment/monitoring capabilities, the channel is considered only as a dumb message router that also provides message transformation into an accessible for the enterprise applications format. A powerful and expensive integration middleware, like &lt;i&gt;Oracle Service Bus&lt;/i&gt;, &lt;i&gt;Oracle SOA Suite&lt;/i&gt;, &lt;i&gt;IBM Integration Bus&lt;/i&gt;, or &lt;i&gt;SAP PI/XI&lt;/i&gt;, is chosen as a platform for the integration solution. Usually, it&amp;#39;s required that the IT team should be able to configure new or existing routes just by edit a few records in the configuration database.&lt;br&gt;
&lt;br&gt;
The developers of such &amp;quot;universal solution&amp;quot; believe that a new application can be connected to the solution just by design an appropriate adapter and insert a few records into the configuration database.&lt;br&gt;
&lt;br&gt;
In fact, the developers have to implement a number of integration patterns and, optionally, a canonical data model using a small subset of the capabilities provided by the integration platform.&lt;br&gt;
&lt;br&gt;
The focus of the article is to explain why the above approach is not effective and why developers have to leverage as many capabilities of their preferable middleware platform as possible.&lt;br&gt;
&lt;br&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdcrlKPqRBWhKT1DWmpv6qXv10b4hlkP_-9oewr5WJ0UofBYy7FmuSwIEk2nJmN_5qr0Cyd_Fc1wo-xzN7xdyDWyiEydDJvqZxc_RIHqKE0A4Ic43uLN-Ajno-xIV6bkrS8xWK-SYa0cA/s1600/Universal+Service.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdcrlKPqRBWhKT1DWmpv6qXv10b4hlkP_-9oewr5WJ0UofBYy7FmuSwIEk2nJmN_5qr0Cyd_Fc1wo-xzN7xdyDWyiEydDJvqZxc_RIHqKE0A4Ic43uLN-Ajno-xIV6bkrS8xWK-SYa0cA/s320/Universal+Service.png&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/10/esb-vs-eai-universal-service-what-is.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/770636219158099945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/10/esb-vs-eai-universal-service-what-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/770636219158099945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/770636219158099945'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/10/esb-vs-eai-universal-service-what-is.html' title='ESB vs EAI: &quot;Universal Service&quot;, What is Wrong with This Pattern'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdcrlKPqRBWhKT1DWmpv6qXv10b4hlkP_-9oewr5WJ0UofBYy7FmuSwIEk2nJmN_5qr0Cyd_Fc1wo-xzN7xdyDWyiEydDJvqZxc_RIHqKE0A4Ic43uLN-Ajno-xIV6bkrS8xWK-SYa0cA/s72-c/Universal+Service.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-8596828110444133229</id><published>2017-10-03T12:07:00.001+03:00</published><updated>2017-11-27T11:38:33.117+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="Concurrent Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Fusion Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Performance Tuning"/><category scheme="http://www.blogger.com/atom/ns#" term="WebLogic Server"/><title type='text'>Threads in Managed Environments. Work Managers</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;We pay for modern application servers since they provide a managed environment for our applications. An application server implements some APIs, for example &lt;i&gt;Java EE 7&lt;/i&gt; or &lt;i&gt;Java EE 8&lt;/i&gt;, as well as provides some capabilities such as application life-cycle management, transaction management, resource access and thread management.&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/10/threads-in-managed-environments-work.html#thread-pool&quot;&gt;Thread pool&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/10/threads-in-managed-environments-work.html#configuring-wm-pool&quot;&gt;Configuring the WebLogic thread pool&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/10/threads-in-managed-environments-work.html#use-wm-in-code&quot;&gt;How to use a Work manager in application code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/10/threads-in-managed-environments-work.html#wm-for-servlet&quot;&gt;How to set up a Work manager for a Servlet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/10/threads-in-managed-environments-work.html#wm-for-ejb&quot;&gt;How to set up a Work manager for a Session EJB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/10/threads-in-managed-environments-work.html#wm-for-mdb&quot;&gt;How to set up a Work manager for a Message-Driven Bean (MDB)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/10/threads-in-managed-environments-work.html#wm-for-mdpojo&quot;&gt;How to set up a Work manager for a Message-Driven POJO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/10/threads-in-managed-environments-work.html#workmanagers-tuning&quot;&gt;Why our Work Managers may need some tuning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/10/threads-in-managed-environments-work.html#conclusions&quot;&gt;Conclusions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/10/threads-in-managed-environments-work.html#references&quot;&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;
&lt;h3 id=&quot;thread-pool&quot;&gt;Thread pool&lt;/h3&gt;&lt;br&gt;
An application server uses a thread pool to provide the thread management capability. While an application deployed on the server works, an application thread isn&amp;#39;t created when a new request is accepted but taken from the pool. This approach protects the server from creating a lot of threads and overwhelming the operating system by the duty to process too many threads. The goal has been pursued through blocking accepted requests if there are no threads in the pool.&lt;br&gt;
&lt;br&gt;
The IT team can specify the following parameters of the thread pool:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;&lt;i&gt;thread priority&lt;/i&gt; - ranges threads created by a number of pools by priority. A user request to a business critical application hangs other threads in the system.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;i&gt;number of threads&lt;/i&gt; - limits the number of concurrent threads executing requests. Modern application servers, for example &lt;i&gt;Oracle WebLogic&lt;/i&gt;, let us set up the limit not only as a constant value but also as a reference to a data source so the maximum number of thread would be equal to the capacity of the connection pool related to the data source. On thread gets a connection to the database.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;
The application server takes into account the above parameters in cooperation with some inner optimizations by analyzing the current workload, the number of available processors and the amount of free memory.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/10/threads-in-managed-environments-work.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/8596828110444133229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/10/threads-in-managed-environments-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/8596828110444133229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/8596828110444133229'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/10/threads-in-managed-environments-work.html' title='Threads in Managed Environments. Work Managers'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLApsU1NFN4XITDWHxFR1-DBhKkA_yuw6UoWMBgidwR8iSou5uHyqR4uS6wqnnwBcP0QnwGwff9FzaSeYhXHavI1bZF4GJunBiQD8gYBDd4n1p6PTyz9Gv2AWnWtbg358Hqw_VkJcswPk/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-2783994293998983377</id><published>2017-09-08T11:17:00.000+03:00</published><updated>2017-09-08T11:33:42.477+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IBM"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Java EE"/><category scheme="http://www.blogger.com/atom/ns#" term="REST"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Services"/><category scheme="http://www.blogger.com/atom/ns#" term="WebSphere Liberty Profile"/><title type='text'>Exposing Servlet- and JAX-RS-based WebSphere Liberty REST APIs with Swagger</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;An amazing article &lt;i&gt;&lt;a href=&quot;https://developer.ibm.com/wasdev/docs/developing-swagger-enabled-rest-api-using-websphere-developer-tools/&quot;&gt;Developing a Swagger-enabled REST API using WebSphere Developer Tools&lt;/a&gt;&lt;/i&gt; demonstrates how to expose a usual servlet as a REST API using a new feature of &lt;i&gt;&lt;a href=&quot;https://developer.ibm.com/wasdev/websphere-liberty/&quot;&gt;WebSphere Liberty&lt;/a&gt;&lt;/i&gt; called &lt;i&gt;&lt;a href=&quot;https://www.ibm.com/support/knowledgecenter/SS7K4U_8.5.5/com.ibm.websphere.wlp.zseries.doc/ae/twlp_api_discovery.html&quot;&gt;apiDiscovery-1.0&lt;/a&gt;&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggKk5x1I-6J2vHLXDfU0OuCik2tMGos3QpgYv7l3V33bhAhOhNjAqQpWhIPnO0Ft0dwjBtbQwQayTIpbAbo1AQZSBc1BMWB65oLx4zkDuYhY-OnJmcOFC1D2ZZ6vXNicB9LgCEk5_ngeI/s1600/liberty-swagger-gui.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggKk5x1I-6J2vHLXDfU0OuCik2tMGos3QpgYv7l3V33bhAhOhNjAqQpWhIPnO0Ft0dwjBtbQwQayTIpbAbo1AQZSBc1BMWB65oLx4zkDuYhY-OnJmcOFC1D2ZZ6vXNicB9LgCEk5_ngeI/s400/liberty-swagger-gui.png&quot; width=&quot;400&quot; height=&quot;167&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;
I&amp;#39;ve rewritten a bit the code of the servlet taking the &lt;i&gt;&lt;a href=&quot;https://docs.oracle.com/javaee/7/tutorial/jsonp002.htm&quot;&gt;JSR 353/JSON-P API&lt;/a&gt;&lt;/i&gt; into account and eliminated all WebSphere-related code, so the demonstration project can be built using &lt;i&gt;Apache Maven&lt;/i&gt;: just put the &lt;i&gt;&amp;#39;javax.json:javax.json-api:jar&amp;#39;&lt;/i&gt; dependency into your &lt;i&gt;pom.xml&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
&lt;script src=&quot;https://gist.github.com/samolisov/f5b90a297f871fd96dfd8fee889b67b8.js&quot;&gt;&lt;/script&gt;&lt;br&gt;
&lt;br&gt;
Including a &lt;i&gt;swagger.json&lt;/i&gt; or &lt;i&gt;swagger.yaml&lt;/i&gt; file inside the corresponding &lt;i&gt;META-INF&lt;/i&gt; folder is the easiest way to expose the documentation of web modules, but not the only one. If the web application does not provide a &lt;i&gt;swagger.json&lt;/i&gt; or &lt;i&gt;swagger.yaml&lt;/i&gt; file and the application contains &lt;i&gt;JAX-RS&lt;/i&gt; annotated resources, the &lt;i&gt;Swagger&lt;/i&gt; document would be automatically generated. As mentioned in the official documentation, the server configuration must have the &lt;i&gt;apiDiscovery-1.0&lt;/i&gt; feature and the &lt;i&gt;jaxrs-1.1&lt;/i&gt; or &lt;i&gt;jaxrs-2.0&lt;/i&gt; feature; for example:&lt;br&gt;
&lt;br&gt;
&lt;script src=&quot;https://gist.github.com/samolisov/cc6cf9320304127c25741747ac604e0b.js&quot;&gt;&lt;/script&gt;&lt;br&gt;
&lt;br&gt;
The product scans all classes in the web application for &lt;i&gt;JAX-RS&lt;/i&gt; and &lt;i&gt;Swagger&lt;/i&gt; annotations, searching for classes with &lt;i&gt;@Path&lt;/i&gt;, &lt;i&gt;@Api&lt;/i&gt;, and &lt;i&gt;@SwaggerDefinition&lt;/i&gt; annotations. The &lt;i&gt;apiDiscovery-1.0&lt;/i&gt; feature automatically generates a corresponding &lt;i&gt;Swagger&lt;/i&gt; document and makes it available at the following URIs: &lt;i&gt;http://host:port/context-root/swagger.json&lt;/i&gt; and &lt;i&gt;http://host:port/context-root/swagger.yaml&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
For example, if the following &lt;i&gt;JAX-RS&lt;/i&gt; resource is deployed on the server:&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/09/exposing-servlet-and-jax-rs-based.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/2783994293998983377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/09/exposing-servlet-and-jax-rs-based.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/2783994293998983377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/2783994293998983377'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/09/exposing-servlet-and-jax-rs-based.html' title='Exposing Servlet- and JAX-RS-based WebSphere Liberty REST APIs with Swagger'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggKk5x1I-6J2vHLXDfU0OuCik2tMGos3QpgYv7l3V33bhAhOhNjAqQpWhIPnO0Ft0dwjBtbQwQayTIpbAbo1AQZSBc1BMWB65oLx4zkDuYhY-OnJmcOFC1D2ZZ6vXNicB9LgCEk5_ngeI/s72-c/liberty-swagger-gui.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-3678071082484192057</id><published>2017-08-31T15:22:00.001+03:00</published><updated>2017-12-28T11:05:15.925+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fusion Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Performance Tuning"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA Suite"/><title type='text'>Oracle SOA Suite Performance Monitoring</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;&lt;i&gt;Oracle Enterprise Manager Fusion Middleware Control Console&lt;/i&gt; (&lt;i&gt;EM&lt;/i&gt;) - ensures runtime governance through composite application modelling and monitoring as well as comprehensive Service and infrastructure management functionality to help organizations maximize the return on investment. Let&amp;#39;s consider capabilities for performance management provided by this instrument.&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;Monitoring the performance of the Oracle SOA Suite runtime&lt;/h3&gt;&lt;br&gt;
The &lt;i&gt;Request Processing&lt;/i&gt; tab uses three grid views to present performance information. The tab is available under the &lt;i&gt;Monitoring -&gt; Request Processing&lt;/i&gt; item of the context menu &lt;i&gt;SOA -&gt; soa-infra&lt;/i&gt;. The displayed information is layered by:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;service engine (BPEL, BPMN, Mediator, Human Workflow, Business Rule, Spring):&lt;br&gt;
&lt;ul&gt;&lt;li&gt;average request processing time - synchronous&lt;/li&gt;
&lt;li&gt;average request processing time - asynchronous&lt;/li&gt;
&lt;li&gt;active request count&lt;/li&gt;
&lt;li&gt;processed requst count&lt;/li&gt;
&lt;li&gt;fault count&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;the summary about service infrastructure:&lt;br&gt;
&lt;ul&gt;&lt;li&gt;average request processing time - synchronous&lt;/li&gt;
&lt;li&gt;average request processing time - asynchronous&lt;/li&gt;
&lt;li&gt;active request count&lt;/li&gt;
&lt;li&gt;processed request count&lt;/li&gt;
&lt;li&gt;fault count&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;binding components:&lt;br&gt;
&lt;ul&gt;&lt;li&gt;web-service (WS) inbound&lt;/li&gt;
&lt;li&gt;web-service (WS) outbound&lt;/li&gt;
&lt;li&gt;Java EE Connector Architecture (J2CA) inbound&lt;/li&gt;
&lt;li&gt;Java EE Connector Architecture (J2CA) outbound&lt;/li&gt;
&lt;/ul&gt;The following metrics are available:&lt;br&gt;
&lt;ul&gt;&lt;li&gt;average request processing time&lt;/li&gt;
&lt;li&gt;processed request count&lt;/li&gt;
&lt;li&gt;error count&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;
&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcrGs5zm5rmWzH4cEk6b3xcDYPqjDN_910UGkxnk3zDPEhXbs14YOSJ5r1btUEvypr6qVVL6jbJwXhvyUGJyvYbcmpCV-q7PEMdpTYUudUHp1s2BVpnPhAkTce_L28fldgEQ5CLQVARd6f/s1600/1.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 193px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcrGs5zm5rmWzH4cEk6b3xcDYPqjDN_910UGkxnk3zDPEhXbs14YOSJ5r1btUEvypr6qVVL6jbJwXhvyUGJyvYbcmpCV-q7PEMdpTYUudUHp1s2BVpnPhAkTce_L28fldgEQ5CLQVARd6f/s400/1.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5682348165187217250&quot;&gt;&lt;/a&gt;&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/08/oracle-soa-suite-performance-monitoring.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/3678071082484192057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/08/oracle-soa-suite-performance-monitoring.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/3678071082484192057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/3678071082484192057'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/08/oracle-soa-suite-performance-monitoring.html' title='Oracle SOA Suite Performance Monitoring'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcrGs5zm5rmWzH4cEk6b3xcDYPqjDN_910UGkxnk3zDPEhXbs14YOSJ5r1btUEvypr6qVVL6jbJwXhvyUGJyvYbcmpCV-q7PEMdpTYUudUHp1s2BVpnPhAkTce_L28fldgEQ5CLQVARd6f/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-3630054704925553108</id><published>2017-08-23T18:17:00.000+03:00</published><updated>2017-08-31T17:57:55.536+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fusion Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Performance Tuning"/><category scheme="http://www.blogger.com/atom/ns#" term="Technical Support"/><category scheme="http://www.blogger.com/atom/ns#" term="Troubleshooting"/><category scheme="http://www.blogger.com/atom/ns#" term="WebLogic Clustering"/><category scheme="http://www.blogger.com/atom/ns#" term="WebLogic Server"/><title type='text'>Oracle WebLogic Cluster Causes Network Storm When a Problem Happens</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;Not every system administrator is aware of such &lt;i&gt;WebLogic Server&lt;/i&gt; capability as &lt;i&gt;Message Forwarding to Domain Logs&lt;/i&gt;. In addition to writing messages to the server log file, each server instance forwards a subset of its messages to a domain-wide log file. This domain-wide log file certainly helps to the system administrator understand the situation on a large domain, for instance, when several dozen servers belong to the domain, it is very helpful having all server logs sit in one place. But the convenience comes at a price.&lt;br&gt;
&lt;br&gt;
If there are some problems caused by applications deployed on the server, the server log tends to get stuck by diagnostic messages and large stack traces. The problem is these messages and traces are being written not only to the server log file but also being forwarded to the administration server via the network and causes network storm. The administration server, as a result, might become inaccessible.&lt;br&gt;
&lt;br&gt;
For a medium domain (4 - 8 &lt;i&gt;WebLogic Server&lt;/i&gt; instances belong to) the idea just to disable the message forwarding capability can be considered. The &lt;i&gt;Domain log broadcaster:, Severity level&lt;/i&gt; property value on the &lt;i&gt;Environment -&gt; Servers -&gt; SERVER -&gt; Logging -&gt; General, Advanced&lt;/i&gt; page for every managed server must be set to &lt;i&gt;Critical&lt;/i&gt; or higher.&lt;br&gt;
&lt;br&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnvw-qVTlWpeg9qBJjNKcUk4FoRVjeibnatr-PUpCQSRYOmIz0lqOkHdLiNHvcM-9IoCsmEThg6snUTYLphS8cHV8gVE_ZttN6Z9g60EGKbIhm27rPEplT0oVMDU8D1Iih9K70SltzSdI/s1600/logsoff.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnvw-qVTlWpeg9qBJjNKcUk4FoRVjeibnatr-PUpCQSRYOmIz0lqOkHdLiNHvcM-9IoCsmEThg6snUTYLphS8cHV8gVE_ZttN6Z9g60EGKbIhm27rPEplT0oVMDU8D1Iih9K70SltzSdI/s320/logsoff.png&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/08/oracle-weblogic-cluster-causes-network.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/3630054704925553108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/08/oracle-weblogic-cluster-causes-network.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/3630054704925553108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/3630054704925553108'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/08/oracle-weblogic-cluster-causes-network.html' title='Oracle WebLogic Cluster Causes Network Storm When a Problem Happens'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnvw-qVTlWpeg9qBJjNKcUk4FoRVjeibnatr-PUpCQSRYOmIz0lqOkHdLiNHvcM-9IoCsmEThg6snUTYLphS8cHV8gVE_ZttN6Z9g60EGKbIhm27rPEplT0oVMDU8D1Iih9K70SltzSdI/s72-c/logsoff.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-1336528382090792617</id><published>2017-08-01T11:28:00.000+03:00</published><updated>2017-08-22T14:42:30.107+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Concurrent Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="EAI"/><category scheme="http://www.blogger.com/atom/ns#" term="ESB"/><category scheme="http://www.blogger.com/atom/ns#" term="Fusion Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA Suite"/><title type='text'>How to Ensure Message Ordering on a Cluster Environment Using JCA Adapters in Oracle SOA Suite</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;&lt;i&gt;The right configuration of Oracle SOA Suite JCA-adapters for ensuring message ordering on a cluster is presented in the article.&lt;/i&gt;&lt;br&gt;
&lt;br&gt;
During an integration project especially if some involved information systems are legacy, a database is often employed. &lt;i&gt;Oracle SOA Suite&lt;/i&gt; contains a number of adapters built on the &lt;i&gt;JCA&lt;/i&gt; technology which provides the database polling capability. The examples are the &lt;i&gt;DB-&lt;/i&gt; and &lt;i&gt;AQ-&lt;/i&gt;adapters.&lt;br&gt;
&lt;br&gt;
And sometimes the order messages are processing in must be the same as the messages were generated inside a source application and, therefore were written to the database. Let me illustrate the sentence by the following: an information system creates an object, e.g. a consumer&amp;#39;s bill. Then the object is modified and in some time deleted at all (so, the bill was generated by mistake). Obviously, the message about the object removal cannot reach the destination before the message about the creation. Otherwise, data integrity could be compromised.&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/08/message-ordering-on-soa-suite.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/1336528382090792617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/08/message-ordering-on-soa-suite.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/1336528382090792617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/1336528382090792617'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/08/message-ordering-on-soa-suite.html' title='How to Ensure Message Ordering on a Cluster Environment Using JCA Adapters in Oracle SOA Suite'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHH5SG6abRYJG8EVgttkqaUoqTReclUq2XVyxf_JqTtvyoihpAEM8eehc90xtIiAlL4brrbqdnyKgR8vV1HWAXIkJfgQ7GCMnVsTb8lTcIqYbHT1m_lXE2wSdaIYbklA356PujMIwUnrY/s72-c/4.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-1224001918466752806</id><published>2017-07-25T11:34:00.000+03:00</published><updated>2017-07-25T11:56:10.044+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache Maven"/><category scheme="http://www.blogger.com/atom/ns#" term="Coherence"/><category scheme="http://www.blogger.com/atom/ns#" term="Fusion Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Java EE"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Troubleshooting"/><category scheme="http://www.blogger.com/atom/ns#" term="WebLogic Server"/><title type='text'>Building a Real Java EE + Oracle Coherence Application with Maven</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;There is an amazing &lt;i&gt;&lt;a href=&quot;https://docs.oracle.com/middleware/1221/core/MAVEN/real_app.htm#MAVEN8917&quot;&gt;Building a Real Application with Maven&lt;/a&gt;&lt;/i&gt; story published within a new book, &lt;i&gt;&lt;a href=&quot;https://docs.oracle.com/middleware/1221/core/MAVEN/toc.htm&quot;&gt;Fusion Middleware Developing Applications Using Continuous Integration&lt;/a&gt;&lt;/i&gt;. The story tells of building a web-application which uses &lt;i&gt;Oracle Coherence&lt;/i&gt; as a data store and a servlet as a data accessor. &lt;i&gt;Apache Maven&lt;/i&gt; is used for compilation and building, the appropriate &amp;#39;pom.xml&amp;#39; files are presented. &lt;br&gt;
&lt;br&gt;
If we look deeply into the &lt;i&gt;web-module&amp;#39;s&lt;/i&gt; &amp;#39;pom.xml&amp;#39; file, the following dependency (the &lt;i&gt;gar-module&lt;/i&gt;) may be found:&lt;br&gt;
&lt;br&gt;
&lt;script src=&quot;https://gist.github.com/samolisov/438eac85658575ac750aa6807eb9e1e7.js&quot;&gt;&lt;/script&gt;&lt;br&gt;
A very interesting fact is there isn&amp;#39;t any &lt;i&gt;type&lt;/i&gt; declaration, so the &lt;i&gt;gar-module&lt;/i&gt; is used as a &lt;b&gt;usual &amp;#39;jar&amp;#39; dependency&lt;/b&gt;. If  a real application contains more &lt;i&gt;gar-modules&lt;/i&gt; and dependencies, the best-practice for Maven users is to define the dependencies in the &amp;#39;dependencyManagement&amp;#39; section inside the parent &amp;#39;pom.xml&amp;#39; file. And the &lt;i&gt;&amp;lt;type&amp;gt;gar&amp;lt;/type&amp;gt;&lt;/i&gt; stanza &lt;b&gt;must exist&lt;/b&gt; in this section since the dependency has to be used as the &lt;i&gt;gar-type&lt;/i&gt; inside the &lt;i&gt;ear-module&amp;#39;s&lt;/i&gt; &amp;#39;pom.xml&amp;#39; file.&lt;br&gt;
&lt;br&gt;
&lt;script src=&quot;https://gist.github.com/samolisov/71c68ab12f068f7dc9c29493e083ecbc.js&quot;&gt;&lt;/script&gt;&lt;br&gt;
Ok, we can say, let&amp;#39;s define the dependencies inside the parent &amp;#39;pom.xml&amp;#39; file and add the references on these dependencies into the &amp;#39;pom.xml&amp;#39; files of the &lt;i&gt;war-&lt;/i&gt; and &lt;i&gt;ear-modules&lt;/i&gt;. &lt;b&gt;Note!&lt;/b&gt; The &amp;#39;groupId&amp;#39; and &amp;#39;artifactId&amp;#39; attributes are modified.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/07/building-real-java-ee-oracle-coherence-maven.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/1224001918466752806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/07/building-real-java-ee-oracle-coherence-maven.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/1224001918466752806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/1224001918466752806'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/07/building-real-java-ee-oracle-coherence-maven.html' title='Building a Real Java EE + Oracle Coherence Application with Maven'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-2229025074655847854</id><published>2017-07-12T15:28:00.000+03:00</published><updated>2017-07-13T09:46:15.272+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agile Development"/><category scheme="http://www.blogger.com/atom/ns#" term="DevOps"/><category scheme="http://www.blogger.com/atom/ns#" term="ESB"/><category scheme="http://www.blogger.com/atom/ns#" term="Fusion Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Service Bus"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA"/><category scheme="http://www.blogger.com/atom/ns#" term="Success Story"/><title type='text'>How We Added a Spoon of Agility to a Large Oracle Service Bus Project</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;Several months ago I already shared how to &lt;a href=&quot;http://psamolysov.blogspot.ru/2016/03/5000000-messages-per-day-handled-by.html&quot;&gt;ensure guaranteed delivery for 5.000.000 messages handled per day&lt;/a&gt; by &lt;i&gt;Oracle Service Bus (OSB)&lt;/i&gt;. In the case, OSB is heavy used to integrate a customer relationship management application (the &lt;i&gt;CRM&lt;/i&gt;) in a solid environment with many regional billing systems, provisioning, &lt;i&gt;ERP&lt;/i&gt; and ordering management system (&lt;i&gt;OMS&lt;/i&gt;), etc. Also, the integration solution is deployed across four ex-standalone corporations, each of which has its own IT infrastructure, and this circumstance makes the project more and more interesting.&lt;br&gt;
&lt;br&gt;
The common problem from a manager&amp;#39;s point of view is to provide consistency among services deployed on the bus, the main client application (the &lt;i&gt;CRM&lt;/i&gt;), and numerous 3rd party applications. Also, there is a time lag in development and end up to production these parts of the infrastructure. And the development team forever must have guaranteed &lt;b&gt;stable and ready to deploy&lt;/b&gt; code of the service bus.&lt;br&gt;
&lt;br&gt;
The situation is usual for almost all integration projects in the World. The releases of an enterprise service bus must be delivered in a reliable way, no one integration flow (neither the client -&gt; service bus nor the service bus -&gt; 3rd party application communication) must fail after the release is deployed to the production environment. &lt;br&gt;
&lt;br&gt;
Let me explain the features of our project.&lt;br&gt;
&lt;ol&gt;&lt;li&gt;A one pizza size development team, not more than 5 developers are there.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;Hovewer, the team has developed and delivered 13 services and 46 adapters to a wide range of enterprise applications. The services provide very different business logic - from just wrapping a stored procedure into a &lt;i&gt;SOAP&lt;/i&gt;-based web service till a complex orchestration employing the &lt;i&gt;Splig-Join&lt;/i&gt; component of &lt;i&gt;Oracle Service Bus&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;SVN is utilized as a source code management tool.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Oracle Service Bus&lt;/i&gt; out of the box provides no capability for service versioning, so it&amp;#39;s impossible to expose numerous versions of the same service simultaneously. Although the main service client, CRM application, is developed by a team working for the same company, we are able to deliver releases of the service bus regardless of this capability.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The development process is based on Agile. Sometimes it becomes a reason of inconsistent builds. In fact, this article is about how to eliminate the impact of any agile methodology on the consistency of the enterprise service bus.&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/07/agile-oracle-service-bus-large-project.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/2229025074655847854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/07/agile-oracle-service-bus-large-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/2229025074655847854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/2229025074655847854'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/07/agile-oracle-service-bus-large-project.html' title='How We Added a Spoon of Agility to a Large Oracle Service Bus Project'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-8821597839727301491</id><published>2017-07-03T10:00:00.000+03:00</published><updated>2017-07-19T10:49:23.340+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache Camel"/><category scheme="http://www.blogger.com/atom/ns#" term="EAI"/><category scheme="http://www.blogger.com/atom/ns#" term="ESB"/><category scheme="http://www.blogger.com/atom/ns#" term="JBoss"/><category scheme="http://www.blogger.com/atom/ns#" term="JBoss Fuse"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Services"/><title type='text'>The First Look at Red Hat JBoss Fuse</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;Hello everyone!&lt;br&gt;
&lt;br&gt;
Today I wish to share an absolutely new thing in my blog, my impressions from using &lt;b&gt;&lt;i&gt;&lt;a href=&quot;https://developers.redhat.com/products/fuse/overview/&quot;&gt;Red Hat JBoss Fuse&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;. &lt;br&gt;
&lt;br&gt;
What exactly is &lt;i&gt;Red Hat JBoss Fuse&lt;/i&gt;? It is a runtime environment for an implementation of &lt;i&gt;&lt;a href=&quot;http://www.enterpriseintegrationpatterns.com/&quot;&gt;Enterprise Application Integration Patterns (EIP)&lt;/a&gt;&lt;/i&gt; - &lt;b&gt;&lt;i&gt;&lt;a href=&quot;http://camel.apache.org/&quot;&gt;Apache Camel&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;.&lt;br&gt;
&lt;br&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://camel.apache.org/images/camel-box-small.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://camel.apache.org/images/camel-box-small.png&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;
There are two available forms of the runtime environment:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;a href=&quot;http://karaf.apache.org/&quot;&gt;Apache Karaf&lt;/a&gt;&lt;/i&gt; - a production ready implementation of the &lt;i&gt;OSGi&lt;/i&gt; standard.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;a href=&quot;https://developers.redhat.com/products/eap/overview/&quot;&gt;Red Hat JBoss Enterprise Application Platform&lt;/a&gt;&lt;/i&gt; - a well known open source &lt;i&gt;Java EE&lt;/i&gt; application server with commercial support. Unfortunately, &lt;i&gt;Red Hat JBoss Fuse&lt;/i&gt; can be installed only on top of the &lt;b&gt;6.4.0&lt;/b&gt; version of the application server; this version implements &lt;i&gt;Java EE 6&lt;/i&gt; only and this fact makes some problems discussed below.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/07/the-first-look-at-red-hat-jboss-fuse.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/8821597839727301491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/07/the-first-look-at-red-hat-jboss-fuse.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/8821597839727301491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/8821597839727301491'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/07/the-first-look-at-red-hat-jboss-fuse.html' title='The First Look at Red Hat JBoss Fuse'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUj7_quSC0Y4GN2drcyqCsOBcWTRkT4at5Moj44oNU3KSlsp7YFAmZS34FiANQpWuoyn2ii1OV5AojH1iRleX7-EEvwpS_epYZDttOpa29XV1crIl9bsSV1ZbsSKptMBTw-aY4exCtyZs/s72-c/jboss-integration-stack.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-695365701372974103</id><published>2017-06-29T15:11:00.004+03:00</published><updated>2017-06-29T15:26:39.854+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fusion Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA Suite"/><category scheme="http://www.blogger.com/atom/ns#" term="Technical Support"/><category scheme="http://www.blogger.com/atom/ns#" term="WebLogic Server"/><title type='text'>How to Deploy Oracle SOA Suite JMS Resources on a Separate Cluster</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;Sometimes it&#39;s strong needed to deploy JMS resources within an SOA domain, for example, to speed up the server startup, on a different non-SOA cluster. Today I wish to share a short article to explain how to do it.&lt;br /&gt;
&lt;br /&gt;
The starting point is the following set of WebLogic instances: &lt;i&gt;AdminServer&lt;/i&gt;, two SOA servers combined in the &lt;i&gt;soa_cluster&lt;/i&gt;, and two JMS servers combined in the &lt;i&gt;jms_cluster&lt;/i&gt; as well.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioNJvsyo42bXT6XtEidGS2RadauvseYFxI5cvQzKy-siPSzlp_k_Wtj6LBLVZkWifQfsy_9s43mBBniHajgGwGP6m6YkqPn13rzsWoOhzpYHxCREbdMGbSibJ7qaoexS5IBPjxQfnb9Avq/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioNJvsyo42bXT6XtEidGS2RadauvseYFxI5cvQzKy-siPSzlp_k_Wtj6LBLVZkWifQfsy_9s43mBBniHajgGwGP6m6YkqPn13rzsWoOhzpYHxCREbdMGbSibJ7qaoexS5IBPjxQfnb9Avq/s320/1.png&quot; width=&quot;320&quot; height=&quot;99&quot; data-original-width=&quot;1060&quot; data-original-height=&quot;328&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
In order to demonstrate the approach, a persistent store and JMS Server must be created on every member of the &lt;i&gt;jms_cluster&lt;/i&gt;. Our JMS resources will be hosted here.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZWiM5Z5_NYlY4Lu8xGZ-CfmfihuEXbAj_tqBN3vGvyUI9id5UepEquWzRsbJ9qMOfLaiLyOatacGFWiGMfsLB2hiGWLFKm9jy-uxX9ZGsa1N1VBKr9JzTUpVrZOv8TaMz7QcZJlEQg2Ba/s1600/13.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZWiM5Z5_NYlY4Lu8xGZ-CfmfihuEXbAj_tqBN3vGvyUI9id5UepEquWzRsbJ9qMOfLaiLyOatacGFWiGMfsLB2hiGWLFKm9jy-uxX9ZGsa1N1VBKr9JzTUpVrZOv8TaMz7QcZJlEQg2Ba/s320/13.png&quot; width=&quot;320&quot; height=&quot;155&quot; data-original-width=&quot;1079&quot; data-original-height=&quot;524&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
A JMS Module, which will contain JMS resource definitions, must be created and targeted to the entire &lt;i&gt;jms_cluster&lt;/i&gt;. A subdeployment for resource targeting management has to be defined for the module.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyvnKrQf_uHerSuNDUPrlj1iNv4_h4VyQEZnUA88GVwqHufNfYjc7gPI9AVemShGL_ee073ThRUEZLPRr8XhS9-MD9-2n-aYRiswHUiLtxDmDv7Ld_DNZg_JnWkgFEx5rgCflIZNLrI_Xv/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyvnKrQf_uHerSuNDUPrlj1iNv4_h4VyQEZnUA88GVwqHufNfYjc7gPI9AVemShGL_ee073ThRUEZLPRr8XhS9-MD9-2n-aYRiswHUiLtxDmDv7Ld_DNZg_JnWkgFEx5rgCflIZNLrI_Xv/s320/2.png&quot; width=&quot;320&quot; height=&quot;104&quot; data-original-width=&quot;1082&quot; data-original-height=&quot;353&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Let&#39;s define a uniform distributed queue as well as a connection factory inside the module.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2i8w6EDvEPQxmtl8LJgZ5g6WgtZthAPtKnqRobKhCQbg9qBQM10Sj3IXCV4YCcrcDkRjBktI-_YTWfaT-yV8X7tfnNvDp7halb910HrmTdzy69Aa2YrIVm1qplyTVWrnXb80kSdo5-abQ/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2i8w6EDvEPQxmtl8LJgZ5g6WgtZthAPtKnqRobKhCQbg9qBQM10Sj3IXCV4YCcrcDkRjBktI-_YTWfaT-yV8X7tfnNvDp7halb910HrmTdzy69Aa2YrIVm1qplyTVWrnXb80kSdo5-abQ/s320/3.png&quot; width=&quot;320&quot; height=&quot;54&quot; data-original-width=&quot;1058&quot; data-original-height=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The truth is Oracle SOA Suite isn&#39;t able to look up any JNDI name defined on another cluster, so the defined before JMS resources aren&#39;t available for &lt;i&gt;soa_server1&lt;/i&gt; and &lt;i&gt;soa_server2&lt;/i&gt;. &lt;b&gt;The solution is to define a foreign server on the &lt;i&gt;soa_cluster&lt;/i&gt;&lt;/b&gt;. This server will open access to the JNDI tree of the &lt;i&gt;jms_cluster&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJzW2OZUfTx5Ez24Tt77kcYeapRoc6INKJ8T_4ceRbzIASn2MzHlx7ZJWFL-uRLpOBuVJQCdUsaLU3erIVyRg5o7V3AICnQ4MVtX7G3pgF6BT9UCdUMmspXFzAk_MEhw5AIbHP0QiSnV37/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJzW2OZUfTx5Ez24Tt77kcYeapRoc6INKJ8T_4ceRbzIASn2MzHlx7ZJWFL-uRLpOBuVJQCdUsaLU3erIVyRg5o7V3AICnQ4MVtX7G3pgF6BT9UCdUMmspXFzAk_MEhw5AIbHP0QiSnV37/s320/4.png&quot; width=&quot;320&quot; height=&quot;46&quot; data-original-width=&quot;1062&quot; data-original-height=&quot;153&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The foreign server must be defined within a JMS Module targeted to the &lt;i&gt;soa_cluster&lt;/i&gt;. A connection string to the &lt;i&gt;jms_cluster&lt;/i&gt; (&lt;i&gt;t3://server1-host:server1-port,server2-host:server2-port,etc&lt;/i&gt;) has to be assigned as the value of the &lt;i&gt;JNDI Connection URL&lt;/i&gt; parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMssZGaoVNUslhMG2rFUegyycWqW5KzMIdphqFFOK9vLEB6T5wjEi4R1fs5O80kuixQNYXL-ILRM4TIn3hDzvFd1xNoW7MOpRreC9ByzJGXZ-owlgX0EH4idWWNpQ4uCU2lKZ2_beFcTbC/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMssZGaoVNUslhMG2rFUegyycWqW5KzMIdphqFFOK9vLEB6T5wjEi4R1fs5O80kuixQNYXL-ILRM4TIn3hDzvFd1xNoW7MOpRreC9ByzJGXZ-owlgX0EH4idWWNpQ4uCU2lKZ2_beFcTbC/s320/5.png&quot; width=&quot;320&quot; height=&quot;159&quot; data-original-width=&quot;1065&quot; data-original-height=&quot;528&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The foreign server must contain a pointer on the defined before JMS queue as well as connection factory.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkw2pIiLp6Mo7pqi-DUgvCOlduo-i1pILqiSODbe2cN2jjT7dNmk1pPXyo7zPD7XISQez0_1paYaAHfQtSqkYMKisXF7rIfGZxMrTwCSdqjCtMKTI3Xvllm5kCO0xiNR_JME1pa6hTZLmR/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkw2pIiLp6Mo7pqi-DUgvCOlduo-i1pILqiSODbe2cN2jjT7dNmk1pPXyo7zPD7XISQez0_1paYaAHfQtSqkYMKisXF7rIfGZxMrTwCSdqjCtMKTI3Xvllm5kCO0xiNR_JME1pa6hTZLmR/s320/6.png&quot; width=&quot;320&quot; height=&quot;47&quot; data-original-width=&quot;1059&quot; data-original-height=&quot;154&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqZskuLzT_VQTM7J1a41pnVyhuu8LKcSxGAbBAvtp_fetITu6TAOdyMOELeCTvTOHL3nTvaGruhwHuWPDbRoDh2CjIk-sCgCzA8_AyODTksG-zGjrq5Mv91vcEx9JxtfyVxz6URPfUD71x/s1600/7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqZskuLzT_VQTM7J1a41pnVyhuu8LKcSxGAbBAvtp_fetITu6TAOdyMOELeCTvTOHL3nTvaGruhwHuWPDbRoDh2CjIk-sCgCzA8_AyODTksG-zGjrq5Mv91vcEx9JxtfyVxz6URPfUD71x/s320/7.png&quot; width=&quot;320&quot; height=&quot;46&quot; data-original-width=&quot;1059&quot; data-original-height=&quot;153&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Composite application developers should pick up in JDeveloper a queue, created on the JMS servers &lt;i&gt;JMSServer_1&lt;/i&gt; and &lt;i&gt;JMSServer_2&lt;/i&gt;, as they did before. Since the adapter definition file &lt;i&gt;...JMSAdapter_jms.jca&lt;/i&gt; contains only the JNDI name of the queue, and the &lt;i&gt;Local JNDI Name&lt;/i&gt; of the defined &lt;i&gt;Foreign Destination&lt;/i&gt; is exactly the same as the &lt;i&gt;Remote JNDI Name&lt;/i&gt;, developed composite applications still work fine. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj02bnw5n4Gh-HcEK2iS48FOksxS_O7uWVBmL7gzshlPAYwk7lb7xZTVEP434llDht0USc1xlZbP4YezTgz_wgNRx_g3mSIBNVqRvtP1gGQZBWMEJ2hxZwU-Blj4u0IgNpOBzVun3NMyE0z/s1600/8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj02bnw5n4Gh-HcEK2iS48FOksxS_O7uWVBmL7gzshlPAYwk7lb7xZTVEP434llDht0USc1xlZbP4YezTgz_wgNRx_g3mSIBNVqRvtP1gGQZBWMEJ2hxZwU-Blj4u0IgNpOBzVun3NMyE0z/s320/8.png&quot; width=&quot;267&quot; height=&quot;320&quot; data-original-width=&quot;500&quot; data-original-height=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
In order to get access to the JNDI tree of a different cluster, any composite application must use the defined before connection factory exposed via the foreign server. So, the default JNDI name for the JMS Connection must be replaced. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjviPLUZTANxUYnvwvH9J7jBEReLbsvRmiN5IOn3nR41xg-KjuRN0WI4AEI1ZsK-54cDF0OKyDRrW2Y_M1yt74-Fawoh3xHgO3ta_4_NeAlVUbmV9qLro8KuC8yG9HPtfpI-sQ679kFA6Kv/s1600/9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjviPLUZTANxUYnvwvH9J7jBEReLbsvRmiN5IOn3nR41xg-KjuRN0WI4AEI1ZsK-54cDF0OKyDRrW2Y_M1yt74-Fawoh3xHgO3ta_4_NeAlVUbmV9qLro8KuC8yG9HPtfpI-sQ679kFA6Kv/s320/9.png&quot; width=&quot;320&quot; height=&quot;267&quot; data-original-width=&quot;600&quot; data-original-height=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The JMS JCA adapter, deployed on the SOA cluster, must contain an outbound connection pool with the same name as specified for the JMS Connection in the composite application.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4cFw2foAyRoqQBmEOatm7iZWjK_oJu2oijX3OtT1FvjcZBSuhOsHYa0iGoIroN3eFL2Cxcz3JwqPm8oORDq5NEACw2ZrhhnaTeE6wJq6dnGFVAf_3gGU6gnEoe3p1f1HIqACpTpKe-p0h/s1600/10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4cFw2foAyRoqQBmEOatm7iZWjK_oJu2oijX3OtT1FvjcZBSuhOsHYa0iGoIroN3eFL2Cxcz3JwqPm8oORDq5NEACw2ZrhhnaTeE6wJq6dnGFVAf_3gGU6gnEoe3p1f1HIqACpTpKe-p0h/s320/10.png&quot; width=&quot;320&quot; height=&quot;157&quot; data-original-width=&quot;1058&quot; data-original-height=&quot;518&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
And the JNDI name of the defined before connection factory must be assigned as the value of its &lt;i&gt;ConnectionFactoryLocation&lt;/i&gt; attribute.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHfKh9KQoQkAE63GkaF_4Vw6p7XFnWdikSPtkT07CzuGFAVYggnuCm1zL60t1X2rcMs5f26F-FzS1gbQ04iprDpmp5xXNB7wbrQeySzV1oYWW_pYOJbn4gqyeCYhvEQPh96JasoBSZ3Bvn/s1600/11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHfKh9KQoQkAE63GkaF_4Vw6p7XFnWdikSPtkT07CzuGFAVYggnuCm1zL60t1X2rcMs5f26F-FzS1gbQ04iprDpmp5xXNB7wbrQeySzV1oYWW_pYOJbn4gqyeCYhvEQPh96JasoBSZ3Bvn/s320/11.png&quot; width=&quot;320&quot; height=&quot;122&quot; data-original-width=&quot;1079&quot; data-original-height=&quot;412&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The testing composite application should be deployed on the SOA Suite cluster. If anyone touches the application, a test instance will be created and successfully executed. A new JMS message will appear in a queue instance of the uniform distributed queue. If send &lt;i&gt;kill -9&lt;/i&gt; to a member of the &lt;i&gt;jms_cluster&lt;/i&gt;, messages arrive to another half of the queue.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1nLwdSc75X6ezh-g8YklgtyiJ1J7tYbJVB_WVgLTt34uBtcCrqwEB6RUIk0P2bjN96NZbPSAamqSYwz2w7gWQCzAX5WEC2BGBy0DRrSuc_x14Mca60mv2xeXMHFeb4MSS8yL3QVsz_lHa/s1600/12.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1nLwdSc75X6ezh-g8YklgtyiJ1J7tYbJVB_WVgLTt34uBtcCrqwEB6RUIk0P2bjN96NZbPSAamqSYwz2w7gWQCzAX5WEC2BGBy0DRrSuc_x14Mca60mv2xeXMHFeb4MSS8yL3QVsz_lHa/s320/12.png&quot; width=&quot;320&quot; height=&quot;115&quot; data-original-width=&quot;1082&quot; data-original-height=&quot;389&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Well, as we have seen, the SOA Suite domain can be broken into two different parts: processing and message store. If your SOA Suite cluster takes too much time to start, this approach may be considered and implemented.&lt;br /&gt;
&lt;br /&gt;
Would you like to give a &#39;Like&#39;? Please follow me on &lt;b&gt;&lt;a href=&quot;https://twitter.com/psamolysov&quot;&gt;Twitter&lt;/a&gt;&lt;/b&gt;! &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/695365701372974103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/06/oracle-soa-suite-jms-resources-on-separate-cluster.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/695365701372974103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/695365701372974103'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/06/oracle-soa-suite-jms-resources-on-separate-cluster.html' title='How to Deploy Oracle SOA Suite JMS Resources on a Separate Cluster'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioNJvsyo42bXT6XtEidGS2RadauvseYFxI5cvQzKy-siPSzlp_k_Wtj6LBLVZkWifQfsy_9s43mBBniHajgGwGP6m6YkqPn13rzsWoOhzpYHxCREbdMGbSibJ7qaoexS5IBPjxQfnb9Avq/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-4742512365493159008</id><published>2017-06-19T14:39:00.001+03:00</published><updated>2017-06-19T14:43:17.206+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BPM Suite"/><category scheme="http://www.blogger.com/atom/ns#" term="Fusion Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA"/><title type='text'>Oracle BPM Suite 12.2.1.2 Quick Start: Installation, Configuration, BPMN 2.0 Business Process Deployment and Testing</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;&lt;b&gt;&lt;i&gt;Oracle BPM Suite&lt;/i&gt;&lt;/b&gt; - a solution from &lt;i&gt;Oracle&lt;/i&gt; for Enterprise Business Processes modeling with leveraging the &lt;i&gt;&lt;a href=&quot;http://www.omg.org/spec/BPMN/2.0/&quot;&gt;BPMN 2.0&lt;/a&gt;&lt;/i&gt; notation. Integrated development environment - &lt;i&gt;JDeveloper&lt;/i&gt; is used for the modeling process. Oracle provides a special distributive of the solution for developers - &lt;i&gt;Quick Start&lt;/i&gt; - which contains the &lt;i&gt;Oracle WebLogic&lt;/i&gt; application server, &lt;i&gt;BPM Suite&lt;/i&gt;, and &lt;i&gt;JDeveloper&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6vwNxgtRh-hokemhcAJAne938C9bAULiWuE_Pz4ZIP3r3YnaoVMrn2xvc7pgSimTRspRQNXPz8Ot2nNk9QEiGSv81hzaOO8YGWo5h5yqMo_pkQi0QdJ-lfgZ_ToopqNXkdPKutph3TLE/s1600/prc.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;387&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6vwNxgtRh-hokemhcAJAne938C9bAULiWuE_Pz4ZIP3r3YnaoVMrn2xvc7pgSimTRspRQNXPz8Ot2nNk9QEiGSv81hzaOO8YGWo5h5yqMo_pkQi0QdJ-lfgZ_ToopqNXkdPKutph3TLE/s640/prc.png&quot; width=&quot;640&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;
This article highlights how to download &lt;i&gt;Oracle BPM Suite 12.2.1.2 Quick Start&lt;/i&gt; from the &lt;b&gt;&lt;a href=&quot;http://edelivery.oracle.com/&quot;&gt;edelivery.oracle.com&lt;/a&gt;&lt;/b&gt; web-site, install that on a developer&amp;#39;s PC, create the first business process using &lt;i&gt;JDeveloper&lt;/i&gt;, configure the integrated WebLogic domain (&lt;i&gt;BPM Suite&lt;/i&gt;, &lt;i&gt;SOA Suite&lt;/i&gt;, and &lt;i&gt;Oracle Service Bus&lt;/i&gt; are included, and &lt;i&gt;Apache Derby&lt;/i&gt; is here for database management), deploy the business process on this domain and start a test instance of the process.&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/06/oracle-bpm-suite-12212-quick-start.html#installation&quot;&gt;Oracle BPM Suite Quick Start installation&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/06/oracle-bpm-suite-12212-quick-start.html#newapplication&quot;&gt;Creation of a new BPM application using JDeveloper&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/06/oracle-bpm-suite-12212-quick-start.html#integrationdomain&quot;&gt;Integrated WebLogic Server: creation of a new domain and server launching&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/06/oracle-bpm-suite-12212-quick-start.html#deployment&quot;&gt;Business process deployment&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/06/oracle-bpm-suite-12212-quick-start.html#emtesting&quot;&gt;Business process testing using Oracle Enterprise Manager Fusion Middleware Control&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/06/oracle-bpm-suite-12212-quick-start.html#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/06/oracle-bpm-suite-12212-quick-start.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/4742512365493159008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/06/oracle-bpm-suite-12212-quick-start.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/4742512365493159008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/4742512365493159008'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/06/oracle-bpm-suite-12212-quick-start.html' title='Oracle BPM Suite 12.2.1.2 Quick Start: Installation, Configuration, BPMN 2.0 Business Process Deployment and Testing'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6vwNxgtRh-hokemhcAJAne938C9bAULiWuE_Pz4ZIP3r3YnaoVMrn2xvc7pgSimTRspRQNXPz8Ot2nNk9QEiGSv81hzaOO8YGWo5h5yqMo_pkQi0QdJ-lfgZ_ToopqNXkdPKutph3TLE/s72-c/prc.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-2677786090268016941</id><published>2017-06-09T18:06:00.000+03:00</published><updated>2017-06-14T18:14:16.854+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fusion Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA Suite"/><category scheme="http://www.blogger.com/atom/ns#" term="Technical Support"/><category scheme="http://www.blogger.com/atom/ns#" term="WebLogic Server"/><title type='text'>DVM Validation on a SOA Suite Domain Causes High CPU Utilization: Analysis and Solution</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/06/dvm-cpu-oracle-patch.html#problem&quot;&gt;Problem statement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/06/dvm-cpu-oracle-patch.html#analysis&quot;&gt;Analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/06/dvm-cpu-oracle-patch.html#solution&quot;&gt;Solution&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;
&lt;h3 id=&quot;problem&quot;&gt;Problem statement&lt;/h3&gt;&lt;br&gt;
Once upon a time, my colleagues asked me an interesting question. After each update of the &lt;i&gt;MDS&lt;/i&gt; on a large production environment, a significant performance degradation is observed. CPU load on the SOA Suite servers is increased, respectively. &lt;br&gt;
&lt;br&gt;
The system automated leveraging &lt;i&gt;Oracle SOA Suite&lt;/i&gt; makes extensive use of &lt;i&gt;&lt;a href=&quot;http://docs.oracle.com/cd/E28271_01/dev.1111/e10224/med_dvm.htm&quot;&gt;Domain Value Maps (DVM)&lt;/a&gt;&lt;/i&gt;, which is intended to map from one vocabulary used in a given domain to another vocabulary used in a different domain. For example, one domain may represent Russian rubles as &amp;#39;RUR&amp;#39;, while another domain may represent those as &amp;#39;810&amp;#39; (see &lt;i&gt;&lt;a href=&quot;https://www.iso.org/iso-4217-currency-codes.html&quot;&gt;ISO 4217&lt;/a&gt;&lt;/i&gt;). Business users can edit DVMs at runtime &lt;i&gt;&lt;a href=&quot;http://docs.oracle.com/cd/E15586_01/integration.1111/e10224/med_dvm_ui.htm&quot;&gt;using Oracle SOA Composer&lt;/a&gt;&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
And while DVMs are not so large everything works fine, but if there are some large DVM files (&gt; 200-300 KB), the above strange behaviour may be observed.&lt;br&gt;
&lt;br&gt;
Let&amp;#39;s have a look at the thread dump collected during the observation.&lt;br&gt;
&lt;i&gt;&lt;br&gt;
&amp;quot;[ACTIVE] ExecuteThread: &amp;#39;57&amp;#39; for queue: &amp;#39;weblogic.kernel.Default (self-tuning)&amp;#39;&amp;quot; #159 daemon prio=9 os_prio=2 tid=0x0000000066bbd800 nid=0x28ac runnable [0x0000000079188000]&lt;br&gt;
java.lang.Thread.State: RUNNABLE&lt;br&gt;
at oracle.xml.xpath.XPathChildAxis.getNodeList(XPathAxis.java:600)&lt;br&gt;
at oracle.xml.xpath.XPathStep.evaluate(XPathStep.java:1102)&lt;br&gt;
at oracle.xml.xpath.PathExpr.evaluate(PathExpr.java:808)&lt;br&gt;
at oracle.xml.xpath.ComparisonExpr.evaluate(XSLExpr.java:1743)&lt;br&gt;
at oracle.xml.xpath.XSLExprBase.testBooleanExpr(XSLExprBase.java:514)&lt;br&gt;
at oracle.xml.xpath.AndExpr.evaluate(XSLExpr.java:524)&lt;br&gt;
at oracle.xml.xpath.XSLExprBase.testBooleanExpr(XSLExprBase.java:514)&lt;br&gt;
at oracle.xml.xpath.AndExpr.evaluate(XSLExpr.java:524)&lt;br&gt;
at oracle.xml.xpath.XSLExprBase.testBooleanExpr(XSLExprBase.java:514)&lt;br&gt;
at oracle.xml.xpath.AndExpr.evaluate(XSLExpr.java:524)&lt;br&gt;
at oracle.xml.xpath.XPathPredicate.filter(XPathPredicate.java:349)&lt;br&gt;
at oracle.xml.xpath.XPathChildAxis.getNodeList(XPathAxis.java:627)&lt;br&gt;
at oracle.xml.xpath.XPathStep.evaluate(XPathStep.java:1102)&lt;br&gt;
at oracle.xml.xpath.PathExpr.evaluate(PathExpr.java:808)&lt;br&gt;
at oracle.xml.parser.v2.XMLNode.selectNodes(XMLNode.java:2762)&lt;br&gt;
at oracle.xml.parser.v2.XMLNode.selectNodes(XMLNode.java:2722)&lt;br&gt;
at oracle.tip.dvm.sdk.util.XMLUtil.isDVMDocumentValid(XMLUtil.java:211)&lt;br&gt;
&lt;b&gt;at oracle.tip.dvm.entity.DVMRTObject.validateDVM(DVMRTObject.java:202)&lt;/b&gt;&lt;br&gt;
at oracle.tip.dvm.entity.DVMRTObject.&lt;init&gt;(DVMRTObject.java:130)&lt;br&gt;
at oracle.tip.dvm.DVMManagerImpl.getDVMRTObject(DVMManagerImpl.java:217)&lt;br&gt;
&lt;b&gt;at oracle.tip.dvm.DVMManagerImpl.lookupValue(DVMManagerImpl.java:133)&lt;/b&gt;&lt;br&gt;
&lt;b&gt;at oracle.tip.dvm.LookupValue.lookupValue(LookupValue.java:95)&lt;/b&gt;&lt;br&gt;
at oracle.tip.dvm.LookupValue.lookupValue(LookupValue.java:252)&lt;br&gt;
at sun.reflect.GeneratedMethodAccessor1815.invoke(Unknown Source)&lt;br&gt;
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br&gt;
at java.lang.reflect.Method.invoke(Method.java:498)&lt;br&gt;
at oracle.xml.xpath.XSLExtFunctions.callStaticMethod(XSLExtFunctions.java:115)&lt;br&gt;
at oracle.xml.xpath.XPathExtFunction.evaluateMethod(XPathExtFunction.java:422)&lt;br&gt;
at oracle.xml.xpath.XPathExtFunction.evaluate(XPathExtFunction.java:347)&lt;br&gt;
at oracle.xml.xslt.XSLValueOf.processAction(XSLValueOf.java:152)&lt;br&gt;
at oracle.xml.xslt.XSLNode.processChildren(XSLNode.java:559)&lt;br&gt;
at oracle.xml.xslt.XSLTemplate.processAction(XSLTemplate.java:278)&lt;br&gt;
at oracle.xml.xslt.XSLStylesheet.execute(XSLStylesheet.java:706)&lt;br&gt;
at oracle.xml.xslt.XSLStylesheet.execute(XSLStylesheet.java:665)&lt;br&gt;
at oracle.xml.xslt.XSLProcessor.processXSL(XSLProcessor.java:401)&lt;br&gt;
at oracle.xml.jaxp.JXTransformer.transform(JXTransformer.java:578)&lt;br&gt;
at ...&lt;br&gt;
&lt;br&gt;
&lt;/init&gt;&lt;/i&gt;&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/06/dvm-cpu-oracle-patch.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/2677786090268016941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/06/dvm-cpu-oracle-patch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/2677786090268016941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/2677786090268016941'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/06/dvm-cpu-oracle-patch.html' title='DVM Validation on a SOA Suite Domain Causes High CPU Utilization: Analysis and Solution'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG1gMLNj_F1qDwdXI7ELnTsGwYUogCnlmxiGV_VzylapfIp1FxA-Bmt1CiQ9GVZoQ8wz7n8jhdWm6R2n38272uA6V83_3B6YFc76fbcJ5ImJQO4aW6iPNWSIhwgw43bnY1eu79yYbZkjk/s72-c/pic2.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-7398867642894142804</id><published>2017-04-21T13:18:00.003+03:00</published><updated>2017-04-28T08:53:30.802+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="EAI"/><category scheme="http://www.blogger.com/atom/ns#" term="ESB"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA"/><category scheme="http://www.blogger.com/atom/ns#" term="Success Story"/><title type='text'>About Service Oriented Architecture on an Enterprise</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;In my opinion, one of the main, if not most important, goals of SOA deployment on an Enterprise is to let to the Enterprise&amp;#39;s information systems the ability to make continues improvement and to align technology and business via the application of service-orientation. Ideally, the systems have to be maintained by the IT division of the Enterprise, not by the developers, it&amp;#39;s not a normal situation when a new application can be connected to the Enterprise&amp;#39;s IT landscape only by a set of consultants who work for the developer of the deployed SOA solution.&lt;br&gt;
&lt;br&gt;
The following four conditions may ensure the achievement of stated goals:&lt;br&gt;
&lt;br&gt;
&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/04/about-service-oriented-architecture-on.html#esb-intro&quot;&gt;Changing the integration strategy from point-to-point to enterprise service bus (&lt;i&gt;ESB&lt;/i&gt;).&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/04/about-service-oriented-architecture-on.html#message-formats&quot;&gt;Ensuring the independence from message formats.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/04/about-service-oriented-architecture-on.html#documentation&quot;&gt;Writing documentation well enough.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/04/about-service-oriented-architecture-on.html#monitoring&quot;&gt;Technical and business monitoring of every message lifecycle.&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/04/about-service-oriented-architecture-on.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/7398867642894142804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/04/about-service-oriented-architecture-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/7398867642894142804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/7398867642894142804'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/04/about-service-oriented-architecture-on.html' title='About Service Oriented Architecture on an Enterprise'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-6064424214123865394</id><published>2017-03-28T14:04:00.000+03:00</published><updated>2017-06-21T10:27:44.991+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fusion Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Service design"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA Suite"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Services"/><title type='text'>Asynchronous Web Services with Oracle SOA Suite</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;&lt;i&gt;The top web services based approaches for asynchronous interactions among enterprise applications are described in the article. The common used during Oracle SOA Suite leveraging method that based on a callback service and the WS-Addressing specification is shown. A number of examples of asynchronous web service creation and client generation using the JDeveloper IDE are considered&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/03/asynchronous-web-services-with-oracle.html#introduction&quot;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/03/asynchronous-web-services-with-oracle.html#wsaddressing&quot;&gt;WS-Addressing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/03/asynchronous-web-services-with-oracle.html#creating&quot;&gt;Creating an asynchronous web service with Oracle SOA Suite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/03/asynchronous-web-services-with-oracle.html#consumer&quot;&gt;Generating a consumer to an asynchronous web service using &lt;i&gt;Oracle JDeveloper&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/03/asynchronous-web-services-with-oracle.html#mediator&quot;&gt;Adding a new web service operation. Mediator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2017/03/asynchronous-web-services-with-oracle.html#conclusions&quot;&gt;Conclusions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;
&lt;h3 id=&quot;introduction&quot;&gt;Introduction&lt;/h3&gt;&lt;br&gt;
Time to time, when we as architects integrate some enterprise applications, asynchronous communication has to be taken into account. Asynchronous communication means a service consumer isn&amp;#39;t blocked for a response from a service provider, it just gets an acknowledge and continue doing its work. There are two popular approaches to implementing asynchronous communication among web services:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;polling&lt;/b&gt; refers to actively sampling the status of a being processed request by a service consumer as a synchronous activity.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;callback&lt;/b&gt; refers to a method provided by a service consumer. When the service provider have accomplished the operation processing, it calls the consumer. In this approach, the service consumer simultaneously works like a callback methods service provider as well.&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;
Oracle SOA Suite supports the second approach. An implemented leveraging the suite service, returns a &lt;i&gt;202 Accepted&lt;/i&gt; HTTP response on each request from a consumer. This response means the request is accepted and the service is going to handle it. A new instance of the composite application is created. The instance can be in the Running state during a very long time, it is usual even some human reactions are involved in the process. A callback method provided by the service consumer is invoked at the end of the process.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2017/03/asynchronous-web-services-with-oracle.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/6064424214123865394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2017/03/asynchronous-web-services-with-oracle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/6064424214123865394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/6064424214123865394'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2017/03/asynchronous-web-services-with-oracle.html' title='Asynchronous Web Services with Oracle SOA Suite'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqBiEBSiMA0f1w1JlnEwPGaTxc7wm0rwq4Bkw3ETASVQKjYMpXt6Bx2r5dbybH0r3D37OWiI-JP-9viMJCxG1OUQOePC9jwp5zGPRzdN8UhDsjj9kgiCR5fT11vPwFfr7GMZjQJS57OazX/s72-c/s1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-8358716653471308851</id><published>2016-10-17T10:00:00.000+03:00</published><updated>2017-05-05T14:54:48.060+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="EAI"/><category scheme="http://www.blogger.com/atom/ns#" term="ESB"/><category scheme="http://www.blogger.com/atom/ns#" term="Fusion Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Service Bus"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA"/><title type='text'>Message transformation in Oracle Service Bus using XSLT and XQuery</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;You can only feel the main power of Oracle Service Bus by leveraging its message transformation capability. Today we will have a look at this capability and how to configure an XML-to-XML mapping based on XSLT or XQuery. Let&amp;#39;s upgrade the example described within the &lt;a href=&quot;http://psamolysov.blogspot.ru/2016/09/using-dynamic-routing-in-oracle-service.html&quot;&gt;previous entry&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2016/10/message-transformation-in-oracle-service-bus.html#replace&quot;&gt;The &lt;i&gt;Replace&lt;/i&gt; action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2016/10/message-transformation-in-oracle-service-bus.html#xquery&quot;&gt;Using &lt;i&gt;XQuery&lt;/i&gt; transformations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2016/10/message-transformation-in-oracle-service-bus.html#xslt&quot;&gt;Using &lt;i&gt;XSLT&lt;/i&gt; transformations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.ru/2016/10/message-transformation-in-oracle-service-bus.html#testing&quot;&gt;Transformation testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2016/10/message-transformation-in-oracle-service-bus.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/8358716653471308851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2016/10/message-transformation-in-oracle-service-bus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/8358716653471308851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/8358716653471308851'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2016/10/message-transformation-in-oracle-service-bus.html' title='Message transformation in Oracle Service Bus using XSLT and XQuery'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1Qws5x8cXdBoJ_VaHvKUDiNhajqKN2rTiOKPqO0PCy20Xox2TCFXXbpRHqCm229BXvYT4KoFMvtThFJeOp56gBNWKt31wX84_05-tMmv1fDvuaRSlGOTe0JwjO1WQxMhF-7iv3Jottae8/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-6396984388280871451</id><published>2016-09-14T13:00:00.000+03:00</published><updated>2017-04-28T11:15:05.812+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="EAI"/><category scheme="http://www.blogger.com/atom/ns#" term="ESB"/><category scheme="http://www.blogger.com/atom/ns#" term="Fusion Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Service Bus"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA"/><title type='text'>Using Dynamic Routing in Oracle Service Bus</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;Oracle&amp;#39;s flagship Enteprise Service Bus - &lt;i&gt;Oracle Service Bus (OSB)&lt;/i&gt; - is based on the following conceptions:&lt;br&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Business Service&lt;/b&gt; wires a service provider to the bus&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Proxy Service&lt;/b&gt; wires a service consumer to the bus&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Message Flow&lt;/b&gt; connects a &lt;i&gt;ProxyService&lt;/i&gt; to a single or multiple business services. Some &lt;i&gt;message flows&lt;/i&gt; may be very complicated and contain routing, transformation, parallel execution and other actions. Physically a &lt;i&gt;message flow&lt;/i&gt; is specified inside a proxy service.&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;
&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgjj6K2u7ZClP7F5kBsulQ32cAMZcG4ZKq8V9TkR2nIFQwWzFS-9BillVNktPSwc9j7wJsSuEMoCcLmsPoobziq9wfmDltOGVMvigtDAgl-fApNlykUyI4WNYzJMAR83mnNPAYdiq07SOe/s1600/osb_serviceflow.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 122px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgjj6K2u7ZClP7F5kBsulQ32cAMZcG4ZKq8V9TkR2nIFQwWzFS-9BillVNktPSwc9j7wJsSuEMoCcLmsPoobziq9wfmDltOGVMvigtDAgl-fApNlykUyI4WNYzJMAR83mnNPAYdiq07SOe/s400/osb_serviceflow.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5626110844641551826&quot;&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
Let&amp;#39;s learn how to configure the &lt;i&gt;Dynamic Routing&lt;/i&gt; action. Dynamic routing is a kind of the &lt;i&gt;Content-based Routing&lt;/i&gt; pattern, which is used when the BusinessService endpoint is required to be determined at run time, an alternative to &lt;i&gt;Static Routing&lt;/i&gt;, which is used when the BusinessService endpoint is established during design time.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2016/09/using-dynamic-routing-in-oracle-service.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/6396984388280871451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2016/09/using-dynamic-routing-in-oracle-service.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/6396984388280871451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/6396984388280871451'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2016/09/using-dynamic-routing-in-oracle-service.html' title='Using Dynamic Routing in Oracle Service Bus'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgjj6K2u7ZClP7F5kBsulQ32cAMZcG4ZKq8V9TkR2nIFQwWzFS-9BillVNktPSwc9j7wJsSuEMoCcLmsPoobziq9wfmDltOGVMvigtDAgl-fApNlykUyI4WNYzJMAR83mnNPAYdiq07SOe/s72-c/osb_serviceflow.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-111925238077806831</id><published>2016-08-18T12:31:00.002+03:00</published><updated>2017-04-28T14:19:45.810+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="IBM"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Java EE"/><category scheme="http://www.blogger.com/atom/ns#" term="Performance Tuning"/><category scheme="http://www.blogger.com/atom/ns#" term="WebSphere Liberty Profile"/><category scheme="http://www.blogger.com/atom/ns#" term="z Systems"/><category scheme="http://www.blogger.com/atom/ns#" term="z/OS"/><title type='text'>Why Co-location Does Matter to Gain High-Performance Java EE</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;&lt;h3&gt;Introduction&lt;/h3&gt;&lt;br&gt;
Various types of JDBC drivers are implemented by various coders, it means the JDBC specification designed by the JCP team only defines the various interfaces, referenced as JDBC API, but each coder/implementer can implement these interfaces in their own ways.&lt;br&gt;
&lt;br&gt;
Based on the ways, we can classify the implementations into four types.&lt;br&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;JDBC Driver - Type 1&lt;/b&gt; (JDBC ODBC Bridge)&lt;br&gt;
&lt;br&gt;
This is an approach wherein the implemented class in Java makes calls to the code written in Microsoft languages (native), which speaks directly to the database.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JDBC Driver - Type 2&lt;/b&gt; (Part Native Driver)&lt;br&gt;
&lt;br&gt;
This is an approach wherein the implemented class in Java makes calls to the code written by the database provider (native), which speaks directly to the database.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JDBC Driver - Type 3&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
This is an approach wherein the implemented class in Java makes calls to the code written from application server providers, which speaks directly to the database. More exploration on the way the Java Driver interacts with the Middleware is required here. This kind of driver is extremely flexible since it requires no code installed on the client and a single driver can actually provide access to multiple databases.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JDBC Driver - Type 4&lt;/b&gt; (Thin Driver)&lt;br&gt;
&lt;br&gt;
This is an approach wherein the implemented by the database provider class in Java speaks directly to the database. In other words, it is a pure Java library that translates a JDBC request directly to a Database specific protocol.&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;br&gt;
The most used in the distributed world is the JDBC Type 4 driver, but in the &lt;i&gt;z Systems&lt;/i&gt; world - the different point is. The purpose of the article is to show how significant the performance of a Java EE application can be improved just by enabling the right JDBC driver.&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/08/why-collocation-does-matter-to-gain.html#benchmark&quot;&gt;Benchmark&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/08/why-collocation-does-matter-to-gain.html#workload&quot;&gt;Workload&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/08/why-collocation-does-matter-to-gain.html#data&quot;&gt;Data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/08/why-collocation-does-matter-to-gain.html#analysis&quot;&gt;Analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/08/why-collocation-does-matter-to-gain.html#cpu-consumption&quot;&gt;CPU consumption&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/08/why-collocation-does-matter-to-gain.html#plain&quot;&gt;Plain data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/08/why-collocation-does-matter-to-gain.html#conclusions&quot;&gt;Conclusions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2016/08/why-collocation-does-matter-to-gain.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/111925238077806831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2016/08/why-collocation-does-matter-to-gain.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/111925238077806831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/111925238077806831'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2016/08/why-collocation-does-matter-to-gain.html' title='Why Co-location Does Matter to Gain High-Performance Java EE'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh0KFqfyOEdAQbYv-6JhZWY6K9XD_bE9ljaJRDHHe7elmzZAjk-TVi0JsfemeElTNm58qz1AxnIWIAGv2RMr0G1oNCKAOZvg1YBgp929rXdtf1O1b6AMnZQ-Th1bImsn02My2cC4xae4Xj/s72-c/JDBCT2vsT4.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-7871366292347119774</id><published>2016-07-20T18:03:00.000+03:00</published><updated>2017-11-27T12:53:53.992+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IBM"/><category scheme="http://www.blogger.com/atom/ns#" term="Java EE"/><category scheme="http://www.blogger.com/atom/ns#" term="WebSphere Liberty Profile"/><category scheme="http://www.blogger.com/atom/ns#" term="z Systems"/><category scheme="http://www.blogger.com/atom/ns#" term="z/OS"/><title type='text'>WebSphere Liberty Profile 9 for z/OS: Java EE 7 on the Big Iron - up to 141 Processors and 10 TB of Memory </title><content type='html'>&lt;div align=&quot;justify&quot;&gt;&lt;h3&gt;Abstract&lt;/h3&gt;&lt;br&gt;
In the article, I wish to tell you how to implement all &lt;b&gt;&lt;i&gt;Java EE 7&lt;/i&gt;&lt;/b&gt; capabilities on the Big Iron, &lt;i&gt;&lt;a href=&quot;http://www-03.ibm.com/systems/z/hardware/z13.html&quot;&gt;IBM Mainframes&lt;/a&gt;&lt;/i&gt; and &lt;i&gt;&lt;a href=&quot;https://developer.ibm.com/wasdev/websphere-liberty/&quot;&gt;WebSphere Liberty Profile&lt;/a&gt;&lt;/i&gt; work together providing up to 141 5 GHz processors an 10 TB of the main memory for your Java EE based applications.&lt;br&gt;
&lt;br&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXospsJj0pNnvxoVUnP0DfJSTFYD8O2ZvnqiBDn1Lqg3sMYhSLiaJJ48mkBWWU98Q72K4bvgyWsE_RFwQO1V9vBNth3-L5JxplYEgh19ZnVA6__PjRKh-8Ar2nafs71fIHwN8gw2-vUXg/s1600/z13-Front.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXospsJj0pNnvxoVUnP0DfJSTFYD8O2ZvnqiBDn1Lqg3sMYhSLiaJJ48mkBWWU98Q72K4bvgyWsE_RFwQO1V9vBNth3-L5JxplYEgh19ZnVA6__PjRKh-8Ar2nafs71fIHwN8gw2-vUXg/s320/z13-Front.jpg&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/07/websphere-liberty-profile-9-for-zos.html#installation&quot;&gt;WebSphere Liberty Profile for z/OS installation&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/07/websphere-liberty-profile-9-for-zos.html#proclib&quot;&gt;Using JCL procedures to start WLP on z/OS&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/07/websphere-liberty-profile-9-for-zos.html#zos-authorized&quot;&gt;Enabling z/OS authorized services on Liberty for z/OS&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/07/websphere-liberty-profile-9-for-zos.html#db2-jdbc-type2&quot;&gt;Using the JDBC Type 2 driver&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/07/websphere-liberty-profile-9-for-zos.html#mq-bindings&quot;&gt;JMS 2.0 and IBM MQ BINDINGS&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/07/websphere-liberty-profile-9-for-zos.html#security&quot;&gt;Accessing z/OS security resources from Java EE applications&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/07/websphere-liberty-profile-9-for-zos.html#sync-to-os-thread&quot;&gt;Java thread identity to z/OS and DB2 threads identity propagation&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/07/websphere-liberty-profile-9-for-zos.html#wlm&quot;&gt;Native z/OS workload management (WLM) services for your applications&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/07/websphere-liberty-profile-9-for-zos.html#javaee7&quot;&gt;Java EE 7&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://psamolysov.blogspot.co.uk/2016/07/websphere-liberty-profile-9-for-zos.html#summary&quot;&gt;Summary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2016/07/websphere-liberty-profile-9-for-zos.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/7871366292347119774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2016/07/websphere-liberty-profile-9-for-zos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/7871366292347119774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/7871366292347119774'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2016/07/websphere-liberty-profile-9-for-zos.html' title='WebSphere Liberty Profile 9 for z/OS: Java EE 7 on the Big Iron - up to 141 Processors and 10 TB of Memory '/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXospsJj0pNnvxoVUnP0DfJSTFYD8O2ZvnqiBDn1Lqg3sMYhSLiaJJ48mkBWWU98Q72K4bvgyWsE_RFwQO1V9vBNth3-L5JxplYEgh19ZnVA6__PjRKh-8Ar2nafs71fIHwN8gw2-vUXg/s72-c/z13-Front.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3112417624037390631.post-6496406412801665062</id><published>2016-07-11T16:56:00.000+03:00</published><updated>2017-03-21T09:41:59.303+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fusion Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Service design"/><category scheme="http://www.blogger.com/atom/ns#" term="SOA Suite"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring Framework"/><title type='text'>Contract-First Service Design Leveraging Oracle SOA Suite and the Spring Framework</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;Hello, my dear guests. In this post I would like to show how create a web-service basing on his contract. &lt;i&gt;Oracle SOA Suite&lt;/i&gt; and &lt;i&gt;Spring Framework&lt;/i&gt; are chosen as a service technological platform.&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;Service contract design&lt;/h3&gt;&lt;br&gt;
The first step for every solution implementation is just right describe the problem. For the demonstration, let&amp;#39;s choose an easy task, a well-known four arithmetic operation calculator. This case is very well because it lets us show how to provide as syntax (only natural number can be assigned) as well semantic (the division by zero exception) data validation and verification. &lt;br&gt;
&lt;/div&gt;&lt;a href=&quot;http://psamolysov.blogspot.com/2016/07/contract-first-service-design.html#more&quot;&gt;Read more »&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://psamolysov.blogspot.com/feeds/6496406412801665062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psamolysov.blogspot.com/2016/07/contract-first-service-design.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/6496406412801665062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3112417624037390631/posts/default/6496406412801665062'/><link rel='alternate' type='text/html' href='http://psamolysov.blogspot.com/2016/07/contract-first-service-design.html' title='Contract-First Service Design Leveraging Oracle SOA Suite and the Spring Framework'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01750290513262602192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDmZktCpxi9UlVGHNCbleqEn7DUzwKLJD-oHq_y3WPDAJm-XpJ7cGr9u07uBOWaKg6ZPBwDHV5QreC_zqhSFnLBxxx4CV1b-VnRo6yTeZwO0xbI9x-mvRaLWSvQg62mRO4G-JJUcseqys/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>