Repository files navigation

ClientRating

Microservices minimal proof of concept

This sample application is meant to demonstrate the development of a Java EE based Microservices application and deployment on WebLogic application server. For that purpose we have created a very minimalistic application demonstrating the scenario of a number of services cooperating in order to calculate a banking customer's rating for the purpose of risk assessment.

The application is composed of four services. Customer service is the service initiating the call, asking for the rating of all customers in the system. It exposes a REST endpoint through JAX-RS using Jersey and MOXy, returning the result in plain text. The EJB implementing the business functionality performs a JPA query to retrieve all customers and performs a REST call to RatingService to retrieve the customer rating.

RatingService initially performs a REST call to BlacklistService to verify that the customer has not been blacklisted. The latter performs a JPA query to its own database and returns the status for the customers who are stored there (a subset of the customers requested). Then a call to FinancialRecordsService is performed in order to retrieve the customer's financial history rating from a public authority. A stub is used in the example application to represent this remote call.

Configuration of the REST endpoints for each service is performed using WebLogic server's Deployment Plans. This feature will be detrimental in implementing the more complex scenarios. The second and third scenarios are about migrating one service to a new dynamic cluster for the purpose of scaling. For that purpose we are also using HttpClusterServlet as a load balancer for the second scenario and Oracle Traffic Director for the third scenario. Fourth scenario demonstrates the ease of migrating the domain partitions to another domain. The fifth scenario explores using Docker for running the WebLogic server.

Requirements

The application can be built and deployed to a single WebLogic domain using domain partitioning for services separation. Prerequisites for running this example is having a Unix based operating system with JDK 8 and Maven installed, and a WebLogic 12.2.1 Fusion Middleware Infrastructure installation.

The following variables can be used to control the setup:

  • ORACLE_HOME (default: /opt/wls/Oracle_Home)
  • WL_HOME (default: $ORACLE_HOME/wlserver)
  • DOMAIN_HOME (default: /opt/wls)
  • DOMAIN_NAME (default: domain)

Running the third scenario will also require a collocated installation of Oracle Traffic Director.

It should be pointed out that due to the nature of OTD it may not be compatible with all platforms.

The fifth scenario will require an existing Docker installation.

The following variables will additionally be needed to run the fifth scenario:

  • JDK_ARCHIVE The full path to a JDK installation tar.gz archive for Linux x64
  • WLS_ARCHIVE The full path to the quick installer jar for WebLogic 12.2.1
  • PROXY_URL (Optional) An HTTP proxy URL if running the example behind a proxy
  • DOCKER_VM (Optional) The name of the Docker VM if using boot2docker

Executing simple scenario

simple scenario

Executing bash script 1.execute_single_server.sh will build the example, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain scenario

clustered scenario

Executing bash script 2.execute_dynamic_cluster.sh will build the example, create the Weblogic domain, configure the dynamic cluster, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain using Oracle Traffic Director scenario

clustered scenario with OTD

Executing bash script 3.execute_dynamic_cluster_otd.sh will build the example, create the Weblogic domain, configure the dynamic cluster and OTD instance, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing simple scenario with partition migration

partition migration

Executing bash script 4.execute_single_server_t2p.sh will build the example, create and configure two WebLogic domains, deploy the example into partitions to the test domain, display the simple text output of CustomerService on both domains (production domain will fail), export test domain partitions and import them to the production domain, display the output of CustomerService on production domain and finally shut down the domains.

Executing simple scenario on Docker

Executing bash script 5.execute_single_server_docker.sh will build the example, create an Oracle Linux + JDK8 + WebLogic image, start a Docker container using that image, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and stop the Docker container.

About

Microservices minimal proof of concept

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

ClientRating

Microservices minimal proof of concept

This sample application is meant to demonstrate the development of a Java EE based Microservices application and deployment on WebLogic application server. For that purpose we have created a very minimalistic application demonstrating the scenario of a number of services cooperating in order to calculate a banking customer's rating for the purpose of risk assessment.

The application is composed of four services. Customer service is the service initiating the call, asking for the rating of all customers in the system. It exposes a REST endpoint through JAX-RS using Jersey and MOXy, returning the result in plain text. The EJB implementing the business functionality performs a JPA query to retrieve all customers and performs a REST call to RatingService to retrieve the customer rating.

RatingService initially performs a REST call to BlacklistService to verify that the customer has not been blacklisted. The latter performs a JPA query to its own database and returns the status for the customers who are stored there (a subset of the customers requested). Then a call to FinancialRecordsService is performed in order to retrieve the customer's financial history rating from a public authority. A stub is used in the example application to represent this remote call.

Configuration of the REST endpoints for each service is performed using WebLogic server's Deployment Plans. This feature will be detrimental in implementing the more complex scenarios. The second and third scenarios are about migrating one service to a new dynamic cluster for the purpose of scaling. For that purpose we are also using HttpClusterServlet as a load balancer for the second scenario and Oracle Traffic Director for the third scenario. Fourth scenario demonstrates the ease of migrating the domain partitions to another domain. The fifth scenario explores using Docker for running the WebLogic server.

Requirements

The application can be built and deployed to a single WebLogic domain using domain partitioning for services separation. Prerequisites for running this example is having a Unix based operating system with JDK 8 and Maven installed, and a WebLogic 12.2.1 Fusion Middleware Infrastructure installation.

The following variables can be used to control the setup:

  • ORACLE_HOME (default: /opt/wls/Oracle_Home)
  • WL_HOME (default: $ORACLE_HOME/wlserver)
  • DOMAIN_HOME (default: /opt/wls)
  • DOMAIN_NAME (default: domain)

Running the third scenario will also require a collocated installation of Oracle Traffic Director.

It should be pointed out that due to the nature of OTD it may not be compatible with all platforms.

The fifth scenario will require an existing Docker installation.

The following variables will additionally be needed to run the fifth scenario:

  • JDK_ARCHIVE The full path to a JDK installation tar.gz archive for Linux x64
  • WLS_ARCHIVE The full path to the quick installer jar for WebLogic 12.2.1
  • PROXY_URL (Optional) An HTTP proxy URL if running the example behind a proxy
  • DOCKER_VM (Optional) The name of the Docker VM if using boot2docker

Executing simple scenario

simple scenario

Executing bash script 1.execute_single_server.sh will build the example, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain scenario

clustered scenario

Executing bash script 2.execute_dynamic_cluster.sh will build the example, create the Weblogic domain, configure the dynamic cluster, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain using Oracle Traffic Director scenario

clustered scenario with OTD

Executing bash script 3.execute_dynamic_cluster_otd.sh will build the example, create the Weblogic domain, configure the dynamic cluster and OTD instance, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing simple scenario with partition migration

partition migration

Executing bash script 4.execute_single_server_t2p.sh will build the example, create and configure two WebLogic domains, deploy the example into partitions to the test domain, display the simple text output of CustomerService on both domains (production domain will fail), export test domain partitions and import them to the production domain, display the output of CustomerService on production domain and finally shut down the domains.

Executing simple scenario on Docker

Executing bash script 5.execute_single_server_docker.sh will build the example, create an Oracle Linux + JDK8 + WebLogic image, start a Docker container using that image, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and stop the Docker container.

About

Microservices minimal proof of concept

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ClientRating

Microservices minimal proof of concept

This sample application is meant to demonstrate the development of a Java EE based Microservices application and deployment on WebLogic application server. For that purpose we have created a very minimalistic application demonstrating the scenario of a number of services cooperating in order to calculate a banking customer's rating for the purpose of risk assessment.

The application is composed of four services. Customer service is the service initiating the call, asking for the rating of all customers in the system. It exposes a REST endpoint through JAX-RS using Jersey and MOXy, returning the result in plain text. The EJB implementing the business functionality performs a JPA query to retrieve all customers and performs a REST call to RatingService to retrieve the customer rating.

RatingService initially performs a REST call to BlacklistService to verify that the customer has not been blacklisted. The latter performs a JPA query to its own database and returns the status for the customers who are stored there (a subset of the customers requested). Then a call to FinancialRecordsService is performed in order to retrieve the customer's financial history rating from a public authority. A stub is used in the example application to represent this remote call.

Configuration of the REST endpoints for each service is performed using WebLogic server's Deployment Plans. This feature will be detrimental in implementing the more complex scenarios. The second and third scenarios are about migrating one service to a new dynamic cluster for the purpose of scaling. For that purpose we are also using HttpClusterServlet as a load balancer for the second scenario and Oracle Traffic Director for the third scenario. Fourth scenario demonstrates the ease of migrating the domain partitions to another domain. The fifth scenario explores using Docker for running the WebLogic server.

Requirements

The application can be built and deployed to a single WebLogic domain using domain partitioning for services separation. Prerequisites for running this example is having a Unix based operating system with JDK 8 and Maven installed, and a WebLogic 12.2.1 Fusion Middleware Infrastructure installation.

The following variables can be used to control the setup:

  • ORACLE_HOME (default: /opt/wls/Oracle_Home)
  • WL_HOME (default: $ORACLE_HOME/wlserver)
  • DOMAIN_HOME (default: /opt/wls)
  • DOMAIN_NAME (default: domain)

Running the third scenario will also require a collocated installation of Oracle Traffic Director.

It should be pointed out that due to the nature of OTD it may not be compatible with all platforms.

The fifth scenario will require an existing Docker installation.

The following variables will additionally be needed to run the fifth scenario:

  • JDK_ARCHIVE The full path to a JDK installation tar.gz archive for Linux x64
  • WLS_ARCHIVE The full path to the quick installer jar for WebLogic 12.2.1
  • PROXY_URL (Optional) An HTTP proxy URL if running the example behind a proxy
  • DOCKER_VM (Optional) The name of the Docker VM if using boot2docker

Executing simple scenario

simple scenario

Executing bash script 1.execute_single_server.sh will build the example, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain scenario

clustered scenario

Executing bash script 2.execute_dynamic_cluster.sh will build the example, create the Weblogic domain, configure the dynamic cluster, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain using Oracle Traffic Director scenario

clustered scenario with OTD

Executing bash script 3.execute_dynamic_cluster_otd.sh will build the example, create the Weblogic domain, configure the dynamic cluster and OTD instance, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing simple scenario with partition migration

partition migration

Executing bash script 4.execute_single_server_t2p.sh will build the example, create and configure two WebLogic domains, deploy the example into partitions to the test domain, display the simple text output of CustomerService on both domains (production domain will fail), export test domain partitions and import them to the production domain, display the output of CustomerService on production domain and finally shut down the domains.

Executing simple scenario on Docker

Executing bash script 5.execute_single_server_docker.sh will build the example, create an Oracle Linux + JDK8 + WebLogic image, start a Docker container using that image, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and stop the Docker container.

About

Microservices minimal proof of concept

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ClientRating

Microservices minimal proof of concept

This sample application is meant to demonstrate the development of a Java EE based Microservices application and deployment on WebLogic application server. For that purpose we have created a very minimalistic application demonstrating the scenario of a number of services cooperating in order to calculate a banking customer's rating for the purpose of risk assessment.

The application is composed of four services. Customer service is the service initiating the call, asking for the rating of all customers in the system. It exposes a REST endpoint through JAX-RS using Jersey and MOXy, returning the result in plain text. The EJB implementing the business functionality performs a JPA query to retrieve all customers and performs a REST call to RatingService to retrieve the customer rating.

RatingService initially performs a REST call to BlacklistService to verify that the customer has not been blacklisted. The latter performs a JPA query to its own database and returns the status for the customers who are stored there (a subset of the customers requested). Then a call to FinancialRecordsService is performed in order to retrieve the customer's financial history rating from a public authority. A stub is used in the example application to represent this remote call.

Configuration of the REST endpoints for each service is performed using WebLogic server's Deployment Plans. This feature will be detrimental in implementing the more complex scenarios. The second and third scenarios are about migrating one service to a new dynamic cluster for the purpose of scaling. For that purpose we are also using HttpClusterServlet as a load balancer for the second scenario and Oracle Traffic Director for the third scenario. Fourth scenario demonstrates the ease of migrating the domain partitions to another domain. The fifth scenario explores using Docker for running the WebLogic server.

Requirements

The application can be built and deployed to a single WebLogic domain using domain partitioning for services separation. Prerequisites for running this example is having a Unix based operating system with JDK 8 and Maven installed, and a WebLogic 12.2.1 Fusion Middleware Infrastructure installation.

The following variables can be used to control the setup:

  • ORACLE_HOME (default: /opt/wls/Oracle_Home)
  • WL_HOME (default: $ORACLE_HOME/wlserver)
  • DOMAIN_HOME (default: /opt/wls)
  • DOMAIN_NAME (default: domain)

Running the third scenario will also require a collocated installation of Oracle Traffic Director.

It should be pointed out that due to the nature of OTD it may not be compatible with all platforms.

The fifth scenario will require an existing Docker installation.

The following variables will additionally be needed to run the fifth scenario:

  • JDK_ARCHIVE The full path to a JDK installation tar.gz archive for Linux x64
  • WLS_ARCHIVE The full path to the quick installer jar for WebLogic 12.2.1
  • PROXY_URL (Optional) An HTTP proxy URL if running the example behind a proxy
  • DOCKER_VM (Optional) The name of the Docker VM if using boot2docker

Executing simple scenario

simple scenario

Executing bash script 1.execute_single_server.sh will build the example, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain scenario

clustered scenario

Executing bash script 2.execute_dynamic_cluster.sh will build the example, create the Weblogic domain, configure the dynamic cluster, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain using Oracle Traffic Director scenario

clustered scenario with OTD

Executing bash script 3.execute_dynamic_cluster_otd.sh will build the example, create the Weblogic domain, configure the dynamic cluster and OTD instance, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing simple scenario with partition migration

partition migration

Executing bash script 4.execute_single_server_t2p.sh will build the example, create and configure two WebLogic domains, deploy the example into partitions to the test domain, display the simple text output of CustomerService on both domains (production domain will fail), export test domain partitions and import them to the production domain, display the output of CustomerService on production domain and finally shut down the domains.

Executing simple scenario on Docker

Executing bash script 5.execute_single_server_docker.sh will build the example, create an Oracle Linux + JDK8 + WebLogic image, start a Docker container using that image, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and stop the Docker container.

About

Microservices minimal proof of concept

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

ClientRating

Microservices minimal proof of concept

This sample application is meant to demonstrate the development of a Java EE based Microservices application and deployment on WebLogic application server. For that purpose we have created a very minimalistic application demonstrating the scenario of a number of services cooperating in order to calculate a banking customer's rating for the purpose of risk assessment.

The application is composed of four services. Customer service is the service initiating the call, asking for the rating of all customers in the system. It exposes a REST endpoint through JAX-RS using Jersey and MOXy, returning the result in plain text. The EJB implementing the business functionality performs a JPA query to retrieve all customers and performs a REST call to RatingService to retrieve the customer rating.

RatingService initially performs a REST call to BlacklistService to verify that the customer has not been blacklisted. The latter performs a JPA query to its own database and returns the status for the customers who are stored there (a subset of the customers requested). Then a call to FinancialRecordsService is performed in order to retrieve the customer's financial history rating from a public authority. A stub is used in the example application to represent this remote call.

Configuration of the REST endpoints for each service is performed using WebLogic server's Deployment Plans. This feature will be detrimental in implementing the more complex scenarios. The second and third scenarios are about migrating one service to a new dynamic cluster for the purpose of scaling. For that purpose we are also using HttpClusterServlet as a load balancer for the second scenario and Oracle Traffic Director for the third scenario. Fourth scenario demonstrates the ease of migrating the domain partitions to another domain. The fifth scenario explores using Docker for running the WebLogic server.

Requirements

The application can be built and deployed to a single WebLogic domain using domain partitioning for services separation. Prerequisites for running this example is having a Unix based operating system with JDK 8 and Maven installed, and a WebLogic 12.2.1 Fusion Middleware Infrastructure installation.

The following variables can be used to control the setup:

  • ORACLE_HOME (default: /opt/wls/Oracle_Home)
  • WL_HOME (default: $ORACLE_HOME/wlserver)
  • DOMAIN_HOME (default: /opt/wls)
  • DOMAIN_NAME (default: domain)

Running the third scenario will also require a collocated installation of Oracle Traffic Director.

It should be pointed out that due to the nature of OTD it may not be compatible with all platforms.

The fifth scenario will require an existing Docker installation.

The following variables will additionally be needed to run the fifth scenario:

  • JDK_ARCHIVE The full path to a JDK installation tar.gz archive for Linux x64
  • WLS_ARCHIVE The full path to the quick installer jar for WebLogic 12.2.1
  • PROXY_URL (Optional) An HTTP proxy URL if running the example behind a proxy
  • DOCKER_VM (Optional) The name of the Docker VM if using boot2docker

Executing simple scenario

simple scenario

Executing bash script 1.execute_single_server.sh will build the example, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain scenario

clustered scenario

Executing bash script 2.execute_dynamic_cluster.sh will build the example, create the Weblogic domain, configure the dynamic cluster, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain using Oracle Traffic Director scenario

clustered scenario with OTD

Executing bash script 3.execute_dynamic_cluster_otd.sh will build the example, create the Weblogic domain, configure the dynamic cluster and OTD instance, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing simple scenario with partition migration

partition migration

Executing bash script 4.execute_single_server_t2p.sh will build the example, create and configure two WebLogic domains, deploy the example into partitions to the test domain, display the simple text output of CustomerService on both domains (production domain will fail), export test domain partitions and import them to the production domain, display the output of CustomerService on production domain and finally shut down the domains.

Executing simple scenario on Docker

Executing bash script 5.execute_single_server_docker.sh will build the example, create an Oracle Linux + JDK8 + WebLogic image, start a Docker container using that image, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and stop the Docker container.

About

Microservices minimal proof of concept

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ClientRating

Microservices minimal proof of concept

This sample application is meant to demonstrate the development of a Java EE based Microservices application and deployment on WebLogic application server. For that purpose we have created a very minimalistic application demonstrating the scenario of a number of services cooperating in order to calculate a banking customer's rating for the purpose of risk assessment.

The application is composed of four services. Customer service is the service initiating the call, asking for the rating of all customers in the system. It exposes a REST endpoint through JAX-RS using Jersey and MOXy, returning the result in plain text. The EJB implementing the business functionality performs a JPA query to retrieve all customers and performs a REST call to RatingService to retrieve the customer rating.

RatingService initially performs a REST call to BlacklistService to verify that the customer has not been blacklisted. The latter performs a JPA query to its own database and returns the status for the customers who are stored there (a subset of the customers requested). Then a call to FinancialRecordsService is performed in order to retrieve the customer's financial history rating from a public authority. A stub is used in the example application to represent this remote call.

Configuration of the REST endpoints for each service is performed using WebLogic server's Deployment Plans. This feature will be detrimental in implementing the more complex scenarios. The second and third scenarios are about migrating one service to a new dynamic cluster for the purpose of scaling. For that purpose we are also using HttpClusterServlet as a load balancer for the second scenario and Oracle Traffic Director for the third scenario. Fourth scenario demonstrates the ease of migrating the domain partitions to another domain. The fifth scenario explores using Docker for running the WebLogic server.

Requirements

The application can be built and deployed to a single WebLogic domain using domain partitioning for services separation. Prerequisites for running this example is having a Unix based operating system with JDK 8 and Maven installed, and a WebLogic 12.2.1 Fusion Middleware Infrastructure installation.

The following variables can be used to control the setup:

  • ORACLE_HOME (default: /opt/wls/Oracle_Home)
  • WL_HOME (default: $ORACLE_HOME/wlserver)
  • DOMAIN_HOME (default: /opt/wls)
  • DOMAIN_NAME (default: domain)

Running the third scenario will also require a collocated installation of Oracle Traffic Director.

It should be pointed out that due to the nature of OTD it may not be compatible with all platforms.

The fifth scenario will require an existing Docker installation.

The following variables will additionally be needed to run the fifth scenario:

  • JDK_ARCHIVE The full path to a JDK installation tar.gz archive for Linux x64
  • WLS_ARCHIVE The full path to the quick installer jar for WebLogic 12.2.1
  • PROXY_URL (Optional) An HTTP proxy URL if running the example behind a proxy
  • DOCKER_VM (Optional) The name of the Docker VM if using boot2docker

Executing simple scenario

simple scenario

Executing bash script 1.execute_single_server.sh will build the example, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain scenario

clustered scenario

Executing bash script 2.execute_dynamic_cluster.sh will build the example, create the Weblogic domain, configure the dynamic cluster, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain using Oracle Traffic Director scenario

clustered scenario with OTD

Executing bash script 3.execute_dynamic_cluster_otd.sh will build the example, create the Weblogic domain, configure the dynamic cluster and OTD instance, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing simple scenario with partition migration

partition migration

Executing bash script 4.execute_single_server_t2p.sh will build the example, create and configure two WebLogic domains, deploy the example into partitions to the test domain, display the simple text output of CustomerService on both domains (production domain will fail), export test domain partitions and import them to the production domain, display the output of CustomerService on production domain and finally shut down the domains.

Executing simple scenario on Docker

Executing bash script 5.execute_single_server_docker.sh will build the example, create an Oracle Linux + JDK8 + WebLogic image, start a Docker container using that image, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and stop the Docker container.

About

Microservices minimal proof of concept

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ClientRating

Microservices minimal proof of concept

This sample application is meant to demonstrate the development of a Java EE based Microservices application and deployment on WebLogic application server. For that purpose we have created a very minimalistic application demonstrating the scenario of a number of services cooperating in order to calculate a banking customer's rating for the purpose of risk assessment.

The application is composed of four services. Customer service is the service initiating the call, asking for the rating of all customers in the system. It exposes a REST endpoint through JAX-RS using Jersey and MOXy, returning the result in plain text. The EJB implementing the business functionality performs a JPA query to retrieve all customers and performs a REST call to RatingService to retrieve the customer rating.

RatingService initially performs a REST call to BlacklistService to verify that the customer has not been blacklisted. The latter performs a JPA query to its own database and returns the status for the customers who are stored there (a subset of the customers requested). Then a call to FinancialRecordsService is performed in order to retrieve the customer's financial history rating from a public authority. A stub is used in the example application to represent this remote call.

Configuration of the REST endpoints for each service is performed using WebLogic server's Deployment Plans. This feature will be detrimental in implementing the more complex scenarios. The second and third scenarios are about migrating one service to a new dynamic cluster for the purpose of scaling. For that purpose we are also using HttpClusterServlet as a load balancer for the second scenario and Oracle Traffic Director for the third scenario. Fourth scenario demonstrates the ease of migrating the domain partitions to another domain. The fifth scenario explores using Docker for running the WebLogic server.

Requirements

The application can be built and deployed to a single WebLogic domain using domain partitioning for services separation. Prerequisites for running this example is having a Unix based operating system with JDK 8 and Maven installed, and a WebLogic 12.2.1 Fusion Middleware Infrastructure installation.

The following variables can be used to control the setup:

  • ORACLE_HOME (default: /opt/wls/Oracle_Home)
  • WL_HOME (default: $ORACLE_HOME/wlserver)
  • DOMAIN_HOME (default: /opt/wls)
  • DOMAIN_NAME (default: domain)

Running the third scenario will also require a collocated installation of Oracle Traffic Director.

It should be pointed out that due to the nature of OTD it may not be compatible with all platforms.

The fifth scenario will require an existing Docker installation.

The following variables will additionally be needed to run the fifth scenario:

  • JDK_ARCHIVE The full path to a JDK installation tar.gz archive for Linux x64
  • WLS_ARCHIVE The full path to the quick installer jar for WebLogic 12.2.1
  • PROXY_URL (Optional) An HTTP proxy URL if running the example behind a proxy
  • DOCKER_VM (Optional) The name of the Docker VM if using boot2docker

Executing simple scenario

simple scenario

Executing bash script 1.execute_single_server.sh will build the example, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain scenario

clustered scenario

Executing bash script 2.execute_dynamic_cluster.sh will build the example, create the Weblogic domain, configure the dynamic cluster, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain using Oracle Traffic Director scenario

clustered scenario with OTD

Executing bash script 3.execute_dynamic_cluster_otd.sh will build the example, create the Weblogic domain, configure the dynamic cluster and OTD instance, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing simple scenario with partition migration

partition migration

Executing bash script 4.execute_single_server_t2p.sh will build the example, create and configure two WebLogic domains, deploy the example into partitions to the test domain, display the simple text output of CustomerService on both domains (production domain will fail), export test domain partitions and import them to the production domain, display the output of CustomerService on production domain and finally shut down the domains.

Executing simple scenario on Docker

Executing bash script 5.execute_single_server_docker.sh will build the example, create an Oracle Linux + JDK8 + WebLogic image, start a Docker container using that image, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and stop the Docker container.

About

Microservices minimal proof of concept

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

ClientRating

Microservices minimal proof of concept

This sample application is meant to demonstrate the development of a Java EE based Microservices application and deployment on WebLogic application server. For that purpose we have created a very minimalistic application demonstrating the scenario of a number of services cooperating in order to calculate a banking customer's rating for the purpose of risk assessment.

The application is composed of four services. Customer service is the service initiating the call, asking for the rating of all customers in the system. It exposes a REST endpoint through JAX-RS using Jersey and MOXy, returning the result in plain text. The EJB implementing the business functionality performs a JPA query to retrieve all customers and performs a REST call to RatingService to retrieve the customer rating.

RatingService initially performs a REST call to BlacklistService to verify that the customer has not been blacklisted. The latter performs a JPA query to its own database and returns the status for the customers who are stored there (a subset of the customers requested). Then a call to FinancialRecordsService is performed in order to retrieve the customer's financial history rating from a public authority. A stub is used in the example application to represent this remote call.

Configuration of the REST endpoints for each service is performed using WebLogic server's Deployment Plans. This feature will be detrimental in implementing the more complex scenarios. The second and third scenarios are about migrating one service to a new dynamic cluster for the purpose of scaling. For that purpose we are also using HttpClusterServlet as a load balancer for the second scenario and Oracle Traffic Director for the third scenario. Fourth scenario demonstrates the ease of migrating the domain partitions to another domain. The fifth scenario explores using Docker for running the WebLogic server.

Requirements

The application can be built and deployed to a single WebLogic domain using domain partitioning for services separation. Prerequisites for running this example is having a Unix based operating system with JDK 8 and Maven installed, and a WebLogic 12.2.1 Fusion Middleware Infrastructure installation.

The following variables can be used to control the setup:

  • ORACLE_HOME (default: /opt/wls/Oracle_Home)
  • WL_HOME (default: $ORACLE_HOME/wlserver)
  • DOMAIN_HOME (default: /opt/wls)
  • DOMAIN_NAME (default: domain)

Running the third scenario will also require a collocated installation of Oracle Traffic Director.

It should be pointed out that due to the nature of OTD it may not be compatible with all platforms.

The fifth scenario will require an existing Docker installation.

The following variables will additionally be needed to run the fifth scenario:

  • JDK_ARCHIVE The full path to a JDK installation tar.gz archive for Linux x64
  • WLS_ARCHIVE The full path to the quick installer jar for WebLogic 12.2.1
  • PROXY_URL (Optional) An HTTP proxy URL if running the example behind a proxy
  • DOCKER_VM (Optional) The name of the Docker VM if using boot2docker

Executing simple scenario

simple scenario

Executing bash script 1.execute_single_server.sh will build the example, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain scenario

clustered scenario

Executing bash script 2.execute_dynamic_cluster.sh will build the example, create the Weblogic domain, configure the dynamic cluster, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing clustered domain using Oracle Traffic Director scenario

clustered scenario with OTD

Executing bash script 3.execute_dynamic_cluster_otd.sh will build the example, create the Weblogic domain, configure the dynamic cluster and OTD instance, start the domain, deploy the example, display the simple text output of CustomerService and shut down the domain.

Executing simple scenario with partition migration

partition migration

Executing bash script 4.execute_single_server_t2p.sh will build the example, create and configure two WebLogic domains, deploy the example into partitions to the test domain, display the simple text output of CustomerService on both domains (production domain will fail), export test domain partitions and import them to the production domain, display the output of CustomerService on production domain and finally shut down the domains.

Executing simple scenario on Docker

Executing bash script 5.execute_single_server_docker.sh will build the example, create an Oracle Linux + JDK8 + WebLogic image, start a Docker container using that image, create and configure the WebLogic domain, deploy the example into partitions, display the simple text output of CustomerService and stop the Docker container.

About

Microservices minimal proof of concept

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages