<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>David Diab, auteur/autrice sur dbi Blog</title>
	<atom:link href="https://www.dbi-services.com/blog/author/david-diab/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbi-services.com/blog/author/david-diab/</link>
	<description></description>
	<lastBuildDate>Tue, 03 Nov 2026 08:19:12 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/05/cropped-favicon_512x512px-min-32x32.png</url>
	<title>David Diab, auteur/autrice sur dbi Blog</title>
	<link>https://www.dbi-services.com/blog/author/david-diab/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Oracle Fusion Middleware 12c to 14c: 6 Critical Lessons</title>
		<link>https://www.dbi-services.com/blog/oracle-fusion-middleware-12c-to-14c-6-critical-lessons/</link>
					<comments>https://www.dbi-services.com/blog/oracle-fusion-middleware-12c-to-14c-6-critical-lessons/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Tue, 27 Oct 2026 15:26:53 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[JBoss EAP]]></category>
		<category><![CDATA[Oracle Fusion Middleware]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=47959</guid>

					<description><![CDATA[<p>Upgrading Oracle Fusion Middleware from 12c to 14c is not simply about installing new binaries and running the Upgrade Assistant. After working on several Oracle Fusion Middleware upgrades, involving WebLogic Server, ADF, Oracle Forms, Oracle Reports, Oracle HTTP Server, and Identity Management components, I have noticed that the most challenging issues rarely come from the [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-fusion-middleware-12c-to-14c-6-critical-lessons/">Oracle Fusion Middleware 12c to 14c: 6 Critical Lessons</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Upgrading Oracle Fusion Middleware from 12c to 14c is not simply about installing new binaries and running the Upgrade Assistant.</p>



<p class="wp-block-paragraph">After working on several Oracle Fusion Middleware upgrades, involving WebLogic Server, ADF, Oracle Forms, Oracle Reports, Oracle HTTP Server, and Identity Management components, I have noticed that the most challenging issues rarely come from the installation itself.</p>



<span id="more-47959"></span>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="576" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/Futuristic-12c-to-14c-Migration-1024x576.png" alt="" class="wp-image-47960" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/Futuristic-12c-to-14c-Migration-1024x576.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/Futuristic-12c-to-14c-Migration-300x169.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/Futuristic-12c-to-14c-Migration-768x432.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/Futuristic-12c-to-14c-Migration-1536x864.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/Futuristic-12c-to-14c-Migration.png 1672w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">They usually come from existing configurations, dependencies, database schemas, or assumptions inherited from the previous environment.</p>



<p class="wp-block-paragraph">Oracle provides comprehensive upgrade documentation, but every environment has its own history and technical constraints.</p>



<p class="wp-block-paragraph">Here are six areas I now pay particular attention to when preparing and executing an Oracle Fusion Middleware 12c to 14c upgrade.</p>



<h2 id="h-1-compatibility-is-more-than-an-operating-system-check" class="wp-block-heading">1. Compatibility is more than an Operating System check</h2>



<p class="wp-block-paragraph">Before starting an upgrade, the first challenge is understanding the full compatibility matrix.</p>



<p class="wp-block-paragraph">Oracle FMW 14.1.2 introduces a new technology baseline, including Java 17, which can expose dependencies that worked perfectly under 12c.</p>



<p class="wp-block-paragraph">Operating system certification is only one part of the equation.</p>



<p class="wp-block-paragraph">The complete assessment should cover:</p>



<ul class="wp-block-list">
<li>Operating system and database versions</li>



<li>JDK certification and compatibility</li>



<li>Middleware component versions and interoperability</li>



<li>Third-party libraries and custom Java applications</li>



<li>JDBC drivers, authentication providers, and external integrations</li>
</ul>



<p class="wp-block-paragraph">A particularly important point is to inspect custom Java code for dependencies on internal WebLogic APIs or libraries whose behavior may have changed.</p>



<p class="wp-block-paragraph"><strong>My recommendation:</strong> Do not limit your compatibility assessment to Oracle&#8217;s certification matrix. Include the applications and integrations that depend on the middleware.</p>



<p class="wp-block-paragraph">A supported platform does not automatically mean a compatible application.</p>



<h2 id="h-2-database-schemas-small-configuration-differences-major-consequences" class="wp-block-heading">2. Database schemas: Small configuration differences, major consequences</h2>



<p class="wp-block-paragraph">One of the most important lessons concerns the relationship between WebLogic domains and their RCU schemas.</p>



<p class="wp-block-paragraph">For example, Oracle FMW 14c introduces an important distinction between the following database users:</p>



<ul class="wp-block-list">
<li><code>&lt;PREFIX&gt;_WLS</code></li>



<li><code>&lt;PREFIX&gt;_WLS_RUNTIME</code></li>
</ul>



<p class="wp-block-paragraph">In environments where <code>WLSSchemaDataSource</code> still uses the runtime schema, the configuration must be reviewed before upgrading.</p>



<p class="wp-block-paragraph">The Upgrade Assistant expects the appropriate WLS schema owner. A mismatch can prevent the schema upgrade from completing successfully.</p>



<p class="wp-block-paragraph">Oracle explicitly <a href="https://docs.oracle.com/en/middleware/fusion-middleware/14.1.2/fupim/upgrade-requirements.html" target="_blank" rel="noreferrer noopener">documents this requirement</a>, but it is easy to overlook when working with multiple domains and different RCU prefixes.</p>



<p class="wp-block-paragraph">Beyond this specific example, I systematically verify schema ownership, registry versions, database connectivity, account status, and the consistency between configured data sources and database metadata.</p>



<p class="wp-block-paragraph"><strong>My recommendation:</strong> Treat database schema validation as an independent upgrade workstream, not merely a preliminary check performed by the Upgrade Assistant.</p>



<h2 id="h-3-readiness-checks-are-essential-but-they-are-not-a-guarantee" class="wp-block-heading">3. Readiness checks are essential, but they are not a guarantee</h2>



<p class="wp-block-paragraph">Oracle&#8217;s Upgrade Assistant provides readiness checks to identify potential upgrade problems.</p>



<p class="wp-block-paragraph">They are extremely valuable and should be executed before the actual migration.</p>



<p class="wp-block-paragraph">However, a successful readiness check does not guarantee that the upgrade will succeed.</p>



<p class="wp-block-paragraph">Some issues only appear during schema modification, domain reconfiguration, server startup, or application initialization.</p>



<p class="wp-block-paragraph">For this reason, I distinguish between three levels of validation:</p>



<ul class="wp-block-list">
<li><strong>Pre-upgrade readiness:</strong> Are the schemas and configurations eligible for upgrade?</li>



<li><strong>Technical upgrade validation:</strong> Have the schemas and domains been successfully upgraded?</li>



<li><strong>Functional validation:</strong> Do applications, integrations, security services, and business processes actually work?</li>
</ul>



<p class="wp-block-paragraph"><strong>My recommendation:</strong> Never interpret a successful readiness check, or even a successful domain reconfiguration, as proof that the environment is operational. The real validation begins when the applications start communicating with their dependencies.</p>



<h2 id="h-4-domain-reconfiguration-deserves-its-own-risk-assessment" class="wp-block-heading">4. Domain reconfiguration deserves its own risk assessment</h2>



<p class="wp-block-paragraph">Domain reconfiguration is one of the most sensitive phases of an Oracle FMW upgrade.</p>



<p class="wp-block-paragraph">The Reconfiguration Wizard modifies existing domain configurations to align them with the target middleware version. These changes can affect security settings, JDBC resources, deployment configurations, and product-specific components. The challenge becomes greater in environments containing multiple domains, custom configurations, or legacy integrations.</p>



<p class="wp-block-paragraph">One important consideration is that domain reconfiguration cannot simply be reversed. Oracle explicitly recommends restoring the original domain from a backup if reconfiguration fails.</p>



<p class="wp-block-paragraph"><strong>My recommendation:</strong> Take complete, verified backups of the Domain Homes and document custom configurations before starting reconfiguration. More importantly, treat schema upgrade and domain reconfiguration as coordinated operations, with clearly defined recovery points. Rollback must be designed before the upgrade begins, not after something goes wrong.</p>



<h2 id="h-5-patch-strategy-matters-as-much-as-the-target-version" class="wp-block-heading">5. Patch strategy matters as much as the target version</h2>



<p class="wp-block-paragraph">Installing Oracle FMW 14c does not necessarily mean the environment is ready to be upgraded. Depending on the products involved, additional Bundle Patches, Stack Patch Bundles, or product-specific fixes may be required or recommended.</p>



<p class="wp-block-paragraph">This is particularly important in environments combining components such as:</p>



<ul class="wp-block-list">
<li>WebLogic Server and ADF</li>



<li>Oracle Access Management</li>



<li>Oracle Internet Directory</li>



<li>Oracle HTTP Server</li>



<li>Oracle Reports</li>
</ul>



<p class="wp-block-paragraph">The objective is not simply to install the latest available patch. It is to establish a <strong>consistent, certified, and supportable patch baseline</strong> across all Oracle Homes. An incomplete or inconsistent patch strategy can introduce unnecessary complexity into an already sensitive migration.</p>



<p class="wp-block-paragraph"><strong>My recommendation:</strong> Define and validate the target patch inventory before executing the upgrade. Keep installation, patching, schema upgrade, and domain reconfiguration as distinct, controlled phases.</p>



<h2 id="h-6-the-most-important-upgrade-test-is-not-whether-weblogic-starts" class="wp-block-heading">6. The most important upgrade test is not whether WebLogic starts</h2>



<p class="wp-block-paragraph">A running AdminServer is encouraging, but it proves very little about the overall application platform. The same applies to Managed Servers reporting a <code>RUNNING</code> state.</p>



<p class="wp-block-paragraph">A complete post-upgrade validation must consider the entire application chain:</p>



<ul class="wp-block-list">
<li>JDBC connectivity and database transactions</li>



<li>Authentication, authorization, and identity integrations</li>



<li>Application deployments and critical business transactions</li>



<li>HTTP routing, SSL/TLS, and reverse proxy integration</li>



<li>Scheduled processes, reporting services, and external dependencies</li>
</ul>



<p class="wp-block-paragraph">This is particularly relevant in environments where ADF applications, Oracle Reports, and Identity Management components depend on one another. It is entirely possible to have a technically healthy WebLogic domain while critical application functionality remains unavailable.</p>



<p class="wp-block-paragraph"><strong>My recommendation:</strong> Define application-level acceptance criteria with the customer before scheduling the upgrade. The upgrade is complete when the expected business services have been validated, not when the last Managed Server reaches the <code>RUNNING</code> state.</p>



<h2 id="h-final-thoughts" class="wp-block-heading">Final Thoughts</h2>



<p class="wp-block-paragraph">After several Oracle Fusion Middleware upgrade projects, one conclusion has become clear to me: <strong>the actual upgrade commands are rarely the most difficult part of the job.</strong></p>



<p class="wp-block-paragraph">The real complexity lies in understanding the existing architecture, identifying hidden dependencies, anticipating compatibility issues, and controlling the sequence of changes.</p>



<p class="wp-block-paragraph">Oracle&#8217;s documentation provides the technical foundation. Experience helps identify where additional verification is necessary.</p>



<p class="wp-block-paragraph">A successful migration from 12c to 14c is not measured only by the absence of errors during the upgrade. It is measured by the ability to deliver a stable, supportable, and fully functional platform with a controlled operational impact.</p>



<p class="wp-block-paragraph"><a href="https://www.dbi-services.com/blog/tag/oracle-fusion-middleware/" target="_blank" rel="noreferrer noopener">Related blogs</a></p>



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-fusion-middleware-12c-to-14c-6-critical-lessons/">Oracle Fusion Middleware 12c to 14c: 6 Critical Lessons</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/oracle-fusion-middleware-12c-to-14c-6-critical-lessons/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle OHS 14.1.2 Upgrade: Cache Broke Authentication</title>
		<link>https://www.dbi-services.com/blog/oracle-ohs-14-1-2-upgrade-cache-broke-authentication/</link>
					<comments>https://www.dbi-services.com/blog/oracle-ohs-14-1-2-upgrade-cache-broke-authentication/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Fri, 23 Oct 2026 14:16:11 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[WebLogic]]></category>
		<category><![CDATA[Oracle Fusion Middleware]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=48082</guid>

					<description><![CDATA[<p>During a recent Oracle Fusion Middleware upgrade from 12.2.1.4 to 14.1.2, I encountered an interesting issue with Oracle HTTP Server (OHS) and WebGate. The upgraded components were running, but WebGate initialization failed and the application was inaccessible. The root cause was not an incorrect OAM registration or a missing configuration file. It was a stale [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-ohs-14-1-2-upgrade-cache-broke-authentication/">Oracle OHS 14.1.2 Upgrade: Cache Broke Authentication</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">During a recent Oracle Fusion Middleware upgrade from <strong>12.2.1.4 to 14.1.2</strong>, I encountered an interesting issue with <a href="https://docs.oracle.com/en/middleware/fusion-middleware/14.1.2/wgins/configuring-oracle-http-server-webgate-oracle-access-manager.html" target="_blank" rel="noreferrer noopener">Oracle HTTP Server (OHS) and WebGate</a>. The upgraded components were running, but WebGate initialization failed and the application was inaccessible.</p>



<span id="more-48082"></span>



<p class="wp-block-paragraph">The root cause was not an incorrect OAM registration or a missing configuration file. It was a stale <code>ObAccessClient.xml</code> in the OHS/WebGate runtime cache.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="160" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/image-86-1024x160.png" alt="" class="wp-image-48087" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/image-86-1024x160.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/image-86-300x47.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/image-86-768x120.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/image-86.png 1321w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 id="h-webgate-initialization-failure-after-upgrade" class="wp-block-heading">WebGate Initialization Failure After Upgrade</h2>



<p class="wp-block-paragraph">After upgrading OHS and WebGate to 14.1.2, the application returned HTTP 500 errors. The WebGate logs reported:</p>



<pre class="wp-block-code"><code>Exception thrown during WebGate initialization

The Access Server has returned a fatal error with no detailed information.</code></pre>



<p class="wp-block-paragraph">Additional errors included:</p>



<pre class="wp-block-code"><code>OAP over REST libcurl operation failed</code></pre>



<p class="wp-block-paragraph">These messages initially suggested an OAM connectivity or agent configuration issue.</p>



<p class="wp-block-paragraph">However, the OAM endpoint was reachable:</p>



<pre class="wp-block-code"><code>curl -sv \
  http://&lt;oam-host&gt;:14100/iam/access/binding/api/v10/oap \
  -o /dev/null</code></pre>



<p class="wp-block-paragraph">Response:</p>



<pre class="wp-block-code"><code>HTTP/1.1 405 Method Not Allowed</code></pre>



<p class="wp-block-paragraph">This confirmed HTTP connectivity to the endpoint, although it did not validate the complete OAP authentication exchange.</p>



<p class="wp-block-paragraph">The next step was to verify whether WebGate was using the expected configuration.</p>



<h2 id="h-root-cause-analysis-active-configuration-vs-runtime-cache" class="wp-block-heading">Root Cause Analysis: Active Configuration vs. Runtime Cache</h2>



<p class="wp-block-paragraph">WebGate uses <code>ObAccessClient.xml</code> and wallet files for its OAM agent configuration. I identified three relevant locations:</p>



<pre class="wp-block-code"><code># OAM-generated configuration
$IDM_DOMAIN/output/&lt;agent_name&gt;/

# Active WebGate configuration
$ADF_DOMAIN/config/fmwconfig/components/OHS/instances/ohs1/webgate/config/

# WebGate runtime cache
$ADF_DOMAIN/servers/ohs1/cache/</code></pre>



<p class="wp-block-paragraph">First, I compared the SHA-256 checksums of the OAM-generated files against the active OHS configuration.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>File</th><th>OAM-generated</th><th>OHS active</th><th>Result</th></tr><tr><td><code>ObAccessClient.xml</code></td><td><code>b110e7f0...3f07</code></td><td><code>b110e7f0...3f07</code></td><td>MATCH</td></tr><tr><td><code>cwallet.sso</code></td><td><code>d3c1aacb...5ba4</code></td><td><code>d3c1aacb...5ba4</code></td><td>MATCH</td></tr><tr><td><code>wallet/cwallet.sso</code></td><td><code>5650892e...35a5</code></td><td><code>5650892e...35a5</code></td><td>MATCH</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">All three files were identical between the OAM-generated configuration and the active OHS configuration.</p>



<p class="wp-block-paragraph">This was important: <strong>the deployed WebGate configuration and wallets were consistent with OAM.</strong></p>



<p class="wp-block-paragraph">I then compared the active <code>ObAccessClient.xml</code> with the cached version.</p>



<pre class="wp-block-code"><code>sha256sum \
  $ADF_DOMAIN/servers/ohs1/cache/ObAccessClient.xml \
  $ADF_DOMAIN/config/fmwconfig/components/OHS/instances/ohs1/webgate/config/ObAccessClient.xml</code></pre>



<p class="wp-block-paragraph">Actual output:</p>



<pre class="wp-block-code"><code>a1a5932a32b1c178461ab4cb373a14ff88446a6ad0cd9d2cdade90e5aecd4800  cache/ObAccessClient.xml
b110e7f0c8b153c1d17b7b79d4fc8273623fdb42dabafe0054d7c13e025d3f07  webgate/config/ObAccessClient.xml</code></pre>



<p class="wp-block-paragraph">The checksums are different. The cache directory also contained:</p>



<pre class="wp-block-code"><code>-rw-r----- 7618 Oct 20 16:26 ObAccessClient.xml
-rw-r-----    0 May 25  2021 ObAccessClient.xml.lck
-rw-r-----    0 May 25  2021 polltracking.lck</code></pre>



<p class="wp-block-paragraph">While different checksums do not automatically indicate corruption, the cached configuration was inconsistent with the verified active configuration. This became my primary suspect.</p>



<h2 id="h-resolution-removing-the-stale-webgate-cache" class="wp-block-heading">Resolution: Removing the Stale WebGate Cache</h2>



<p class="wp-block-paragraph">I stopped OHS using the domain management script:</p>



<pre class="wp-block-code"><code>$ADF_DOMAIN/bin/stopComponent.sh ohs1</code></pre>



<p class="wp-block-paragraph">Output:</p>



<pre class="wp-block-code"><code>Successfully Connected to Node Manager.
Killing server ohs1 ...
Successfully killed server ohs1</code></pre>



<p class="wp-block-paragraph">I confirmed that no OHS HTTP processes remained:</p>



<pre class="wp-block-code"><code>ps -ef | grep '&#091;h]ttpd'</code></pre>



<p class="wp-block-paragraph">No processes were returned. Next, I preserved the existing cached configuration:</p>



<pre class="wp-block-code"><code>cd $ADF_DOMAIN/servers/ohs1/cache/
cp -p ObAccessClient.xml \
  ObAccessClient.xml.pre14c_20261023</code></pre>



<p class="wp-block-paragraph">I removed only the cached configuration and its associated lock file:</p>



<pre class="wp-block-code"><code>rm -f ObAccessClient.xml ObAccessClient.xml.lck</code></pre>



<p class="wp-block-paragraph">The active WebGate configuration and wallets were left untouched. I then restarted OHS:</p>



<pre class="wp-block-code"><code>$ADF_DOMAIN/bin/startComponent.sh ohs1</code></pre>



<p class="wp-block-paragraph">Output:</p>



<pre class="wp-block-code"><code>Successfully Connected to Node Manager.
Starting server ohs1 ...
Successfully started server ohs1 ...</code></pre>



<p class="wp-block-paragraph">An interesting observation occurred immediately after the restart. The initial directory listing showed that <code>ObAccessClient.xml</code> had not yet been recreated:</p>



<pre class="wp-block-code"><code>ObAccessClient.xml.pre14c_20261023
polltracking.lck</code></pre>



<p class="wp-block-paragraph">A subsequent check showed that WebGate had automatically regenerated its runtime cache:</p>



<pre class="wp-block-code"><code>-rw-r----- 7618 Oct 23 10:39 ObAccessClient.xml
-rw-r-----    0 Oct 23 10:39 ObAccessClient.xml.lck
-rw-r----- 7618 Oct 20 16:26 ObAccessClient.xml.pre14c_20261023</code></pre>



<p class="wp-block-paragraph">The newly generated files had fresh timestamps, while the backup preserved the original cached configuration.</p>



<p class="wp-block-paragraph">Following this operation, WebGate initialized successfully and the protected application became accessible again through the expected authentication flow.</p>



<p class="wp-block-paragraph">No modification to the active configuration, wallet replacement, agent re-registration or WebGate reinstallation was necessary.</p>



<h2 id="h-conclusion" class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">This case demonstrates an important troubleshooting consideration after upgrading Oracle HTTP Server and WebGate.</p>



<p class="wp-block-paragraph">Even when the active <code>ObAccessClient.xml</code> and wallet files match the configuration generated by OAM, an outdated WebGate runtime cache can still interfere with initialization.</p>



<p class="wp-block-paragraph">For future Oracle FMW upgrades, comparing the active and cached WebGate configurations is a valuable diagnostic step when authentication fails despite apparently correct OAM integration.</p>



<p class="wp-block-paragraph"><a href="https://www.dbi-services.com/blog/tag/oracle-fusion-middleware/" target="_blank" rel="noreferrer noopener">Related blogs.</a></p>



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-ohs-14-1-2-upgrade-cache-broke-authentication/">Oracle OHS 14.1.2 Upgrade: Cache Broke Authentication</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/oracle-ohs-14-1-2-upgrade-cache-broke-authentication/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle Reports 14.1.2 REP-50125 &#8211; A Hidden REPORTS_JVM_OPTIONS Requirement</title>
		<link>https://www.dbi-services.com/blog/oracle-reports-14-1-2-rep-50125-a-hidden-reports_jvm_options-requirement/</link>
					<comments>https://www.dbi-services.com/blog/oracle-reports-14-1-2-rep-50125-a-hidden-reports_jvm_options-requirement/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 21:39:52 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[WebLogic]]></category>
		<category><![CDATA[Oracle Fusion Middleware]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=48023</guid>

					<description><![CDATA[<p>How bytecode analysis exposed an ORB initialization defect during an Oracle Fusion Middleware upgrade! Context During a recent Oracle Fusion Middleware upgrade from 12.2.1.4 to 14.1.2, I encountered an unexpected startup failure affecting Oracle Reports Server. The installation, domain upgrade and reconfiguration had completed successfully. The following components were operational: However, the standalone Reports Server [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-reports-14-1-2-rep-50125-a-hidden-reports_jvm_options-requirement/">Oracle Reports 14.1.2 REP-50125 &#8211; A Hidden REPORTS_JVM_OPTIONS Requirement</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">How bytecode analysis exposed an ORB initialization defect during an Oracle Fusion Middleware upgrade!</p>



<span id="more-48023"></span>



<h2 id="h-context" class="wp-block-heading">Context</h2>



<p class="wp-block-paragraph">During a recent Oracle Fusion Middleware upgrade from 12.2.1.4 to 14.1.2, I encountered an unexpected startup failure affecting Oracle Reports Server.</p>



<p class="wp-block-paragraph">The installation, domain upgrade and reconfiguration had completed successfully. The following components were operational:</p>



<ul class="wp-block-list">
<li>WebLogic AdminServer</li>



<li>ReportsTools</li>



<li>WLS_REPORTS</li>



<li>Node Manager</li>
</ul>



<p class="wp-block-paragraph">However, the standalone Reports Server components, <code>RptSvr_1</code> and <code>RptSvr_2</code>, failed to initialize.</p>



<p class="wp-block-paragraph">The underlying exception was reported as: REP-50125.</p>



<p class="wp-block-paragraph">Oracle documents <code>REP-50125</code> as a generic internal exception. The error code alone does not identify the failing subsystem.</p>



<p class="wp-block-paragraph">In this case, the root cause was neither a WebLogic configuration problem nor a database connectivity issue.</p>



<p class="wp-block-paragraph">It was caused by an unexpected interaction between <code>REPORTS_JVM_OPTIONS</code> and the internal Oracle Reports CORBA ORB initialization code.</p>



<h2 id="h-identifying-the-real-exception" class="wp-block-heading">Identifying the real exception</h2>



<p class="wp-block-paragraph">The Reports Server diagnostic logs exposed the following execution path:</p>



<pre class="wp-block-code"><code>java.lang.NullPointerException
    at java.util.concurrent.ConcurrentHashMap.putVal(
        ConcurrentHashMap.java:1011)
    at java.util.concurrent.ConcurrentHashMap.put(
        ConcurrentHashMap.java:1006)
    at java.util.Properties.put(
        Properties.java:1301)
    at oracle.reports.utility.Utility.getOrbProperties(
        Utility.java:2561)
    at oracle.reports.utility.Utility.createORB(
        Utility.java:2490)
    at oracle.reports.server.RWServer.startServer(
        RWServer.java:912)
    at oracle.reports.server.RWServer.jniMain(
        RWServer.java:289)</code></pre>



<p class="wp-block-paragraph">The important frame is:</p>



<pre class="wp-block-code"><code>oracle.reports.utility.Utility.getOrbProperties(
    Utility.java:2561)
</code></pre>



<p class="wp-block-paragraph">The failure occurs when Oracle Reports initializes its ORB properties, before the Reports Server becomes operational.<br><br>A NullPointerException inside ConcurrentHashMap.putVal() strongly suggests that a null key or value is being inserted into a map that does not accept null entries.<br><br>The question was therefore straightforward:<br><strong>Which ORB property was receiving a null value, and where did that value originate?</strong></p>



<h2 id="h-investigating-oracle-s-implementation-with-javap" class="wp-block-heading">Investigating Oracle&#8217;s implementation with <code>javap</code></h2>



<p class="wp-block-paragraph">To investigate the issue beyond the available log messages, I inspected the compiled Oracle Reports classes using the JDK <code>javap</code> utility.</p>



<p class="wp-block-paragraph">The objective was to identify the implementation behind:</p>



<pre class="wp-block-code"><code>oracle.reports.utility.Utility.getOrbProperties()</code></pre>



<p class="wp-block-paragraph">The relevant commands were:</p>



<pre class="wp-block-code"><code># Locate the Oracle Reports class
find "$ORACLE_HOME" -type f -name "*.jar" \
  -exec sh -c '
    for jarfile do
      jar tf "$jarfile" 2&gt;/dev/null |
        grep -q "^oracle/reports/utility/Utility.class$" &amp;&amp;
        printf "%s\n" "$jarfile"
    done
  ' sh {} +</code></pre>



<p class="wp-block-paragraph">Once the corresponding JAR is identified:</p>



<pre class="wp-block-code"><code>javap -c -p -l \
  -classpath /path/to/oracle-reports.jar \
  oracle.reports.utility.Utility</code></pre>



<p class="wp-block-paragraph">To focus on the relevant methods:</p>



<pre class="wp-block-code"><code>javap -c -p -l \
  -classpath /path/to/oracle-reports.jar \
  oracle.reports.utility.Utility |
grep -A 100 -E \
  'getOrbProperties|extractOrbWaitTimeout'
</code></pre>



<p class="wp-block-paragraph">The bytecode inspection revealed that <code>getOrbProperties()</code> reads the environment variable: REPORTS_JVM_OPTIONS</p>



<p class="wp-block-paragraph">It then calls an internal method: extractOrbWaitTimeout(&#8230;)</p>



<p class="wp-block-paragraph">The extracted value is subsequently assigned to the CORBA property:</p>



<pre class="wp-block-code"><code>com.sun.corba.ee.transport.ORBWaitForResponseTimeout</code></pre>



<p class="wp-block-paragraph">This provided the missing link between a JVM configuration variable and the ORB initialization exception.</p>



<h2 id="h-the-hidden-behavior" class="wp-block-heading">The hidden behavior</h2>



<p class="wp-block-paragraph">The investigation exposed two different execution paths.</p>



<h3 class="wp-block-heading">Case A: <code>REPORTS_JVM_OPTIONS</code> is not defined</h3>



<p class="wp-block-paragraph">When the environment variable is absent, Oracle Reports assigns a hardcoded fallback value: &#8220;999999999&#8221;</p>



<p class="wp-block-paragraph">This behavior prevents a null timeout value from being inserted into the ORB properties.</p>



<h3 class="wp-block-heading">Case B: <code>REPORTS_JVM_OPTIONS</code> is defined without the timeout parameter</h3>



<p class="wp-block-paragraph">Consider this configuration:</p>



<pre class="wp-block-code"><code>REPORTS_JVM_OPTIONS="-Xmx1024M"
export REPORTS_JVM_OPTIONS</code></pre>



<p class="wp-block-paragraph">The variable exists, so the fallback branch is not used.</p>



<p class="wp-block-paragraph">Oracle Reports invokes <code>extractOrbWaitTimeout()</code> to search for: -DORBWaitForResponseTimeout=</p>



<p class="wp-block-paragraph">However, that parameter is missing.</p>



<p class="wp-block-paragraph">The method returns <code>null</code>.</p>



<p class="wp-block-paragraph">The resulting behavior is equivalent to:</p>



<pre class="wp-block-code"><code>Properties properties = new Properties();

String timeout = null;

properties.put(
    "com.sun.corba.ee.transport.ORBWaitForResponseTimeout",
    timeout
);</code></pre>



<p class="wp-block-paragraph">This triggers the <code>NullPointerException</code> observed during ORB initialization.</p>



<p class="wp-block-paragraph">The significant finding is that a variable containing valid JVM options can introduce an ORB initialization failure simply because one additional property is missing. It is an internal Oracle Reports configuration-parsing behavior.</p>



<p class="wp-block-paragraph">These conclusions are based on the inspected Oracle Reports 14.1.2 implementation and should not be generalized to every Oracle Reports release or patch level without verification.</p>



<h2 id="h-implementing-the-correction" class="wp-block-heading">Implementing the correction</h2>



<p class="wp-block-paragraph">The correction was applied to the Oracle Reports environment configuration:</p>



<pre class="wp-block-code"><code>$ORACLE_HOME/reports/bin/reports.sh</code></pre>



<p class="wp-block-paragraph">The JVM options were updated as follows:</p>



<pre class="wp-block-code"><code>REPORTS_JVM_OPTIONS="-Xmx1024M -DORBWaitForResponseTimeout=999999999"
export REPORTS_JVM_OPTIONS
</code></pre>



<p class="wp-block-paragraph">The timeout value was not chosen arbitrarily. It corresponds to the hardcoded fallback identified in Oracle&#8217;s bytecode.</p>



<p class="wp-block-paragraph">The property value is expressed in milliseconds: 999999999 ms ≈ 11.57 days</p>



<p class="wp-block-paragraph">This is a technical reproduction of the implementation&#8217;s fallback, not a general recommendation to configure such a long timeout for every environment.</p>



<p class="wp-block-paragraph">Before restarting Reports Server, the configuration can be verified using:</p>



<pre class="wp-block-code"><code>grep -n "REPORTS_JVM_OPTIONS" \
  "$ORACLE_HOME/reports/bin/reports.sh"</code></pre>



<p class="wp-block-paragraph">Expected configuration:</p>



<pre class="wp-block-code"><code>REPORTS_JVM_OPTIONS="-Xmx1024M -DORBWaitForResponseTimeout=999999999"
export REPORTS_JVM_OPTIONS</code></pre>



<p class="wp-block-paragraph">The Reports Server was then restarted through Node Manager.</p>



<p class="wp-block-paragraph">Result: <code>RptSvr_1</code> started successfully after the correction.</p>



<p class="wp-block-paragraph">This confirmed that the configuration change resolved the observed ORB initialization failure on that instance. The separate application-level report-generation tests and second-instance validation remain distinct checks.</p>



<h2 id="h-verifying-the-runtime-configuration" class="wp-block-heading">Verifying the runtime configuration</h2>



<p class="wp-block-paragraph">After the restart, the effective environment should be checked against the actual Reports Server process.</p>



<p class="wp-block-paragraph">First, identify the process:</p>



<pre class="wp-block-code"><code>ps -ef | grep -E 'rwserver|RWServer' | grep -v grep</code></pre>



<p class="wp-block-paragraph">Then inspect the inherited environment:</p>



<pre class="wp-block-code"><code>tr '\0' '\n' &lt; /proc/&lt;PID&gt;/environ |
grep -E '^(REPORTS_JVM_OPTIONS|ORACLE_HOME|JAVA_HOME)='</code></pre>



<p class="wp-block-paragraph">Expected value:</p>



<pre class="wp-block-code"><code>REPORTS_JVM_OPTIONS=-Xmx1024M -DORBWaitForResponseTimeout=999999999</code></pre>



<p class="wp-block-paragraph">his check is important because the Node Manager startup environment may differ from an interactive shell.</p>



<p class="wp-block-paragraph">A successful restart should also be followed by:</p>



<ul class="wp-block-list">
<li>Confirmation that the Reports Server remains running.</li>



<li>Verification that the original exception no longer appears in new diagnostic entries.</li>



<li>Validation of all Reports Server instances.</li>



<li>Execution of representative report-generation requests.</li>
</ul>



<h2 id="h-conclusion" class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">This issue illustrates why troubleshooting Oracle Fusion Middleware upgrades sometimes requires going beyond configuration files and diagnostic logs.</p>



<p class="wp-block-paragraph">The visible symptom was a generic <code>REP-50125</code>. The underlying failure was a <code>NullPointerException</code> in <code>Utility.getOrbProperties()</code>, caused by the interaction between <code>REPORTS_JVM_OPTIONS</code> and Oracle Reports&#8217; internal ORB timeout extraction.</p>



<p class="wp-block-paragraph">Oracle <a href="https://docs.oracle.com/middleware/12213/formsandreports/use-reports/pbr_rfap001.htm" target="_blank" rel="noreferrer noopener">documentation </a>describes the precedence of <code>jvmOptions</code> in <code>rwserver.conf</code> over the environment variable for Reports Engine startup. However, the implementation detail identified during this investigation is different. The <code>getOrbProperties()</code> method also consumes <code>REPORTS_JVM_OPTIONS</code> while constructing ORB configuration properties.</p>



<p class="wp-block-paragraph">Bytecode inspection established the missing connection and identified the hardcoded fallback used by Oracle.</p>



<p class="wp-block-paragraph">Adding the corresponding JVM property restored successful startup of the affected Reports Server instance.</p>



<p class="wp-block-paragraph"><a href="https://www.dbi-services.com/blog/tag/oracle-fusion-middleware/" target="_blank" rel="noreferrer noopener">Related blogs.</a></p>



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-reports-14-1-2-rep-50125-a-hidden-reports_jvm_options-requirement/">Oracle Reports 14.1.2 REP-50125 &#8211; A Hidden REPORTS_JVM_OPTIONS Requirement</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/oracle-reports-14-1-2-rep-50125-a-hidden-reports_jvm_options-requirement/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle WebLogic Configuration Wizard Freezes on Linux</title>
		<link>https://www.dbi-services.com/blog/oracle-weblogic-configuration-wizard-freezes-on-linux/</link>
					<comments>https://www.dbi-services.com/blog/oracle-weblogic-configuration-wizard-freezes-on-linux/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Wed, 21 Oct 2026 10:11:14 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[WebLogic]]></category>
		<category><![CDATA[Oracle Fusion Middleware]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=47947</guid>

					<description><![CDATA[<p>During an Oracle Fusion Middleware 14.1.2 upgrade, I encountered an issue while reconfiguring an existing Oracle ADF domain. The WebLogic Configuration Wizard launched successfully through SSH X11 forwarding, but the graphical interface became unresponsive during the reconfiguration. There was no obvious error message, and the wizard could not proceed. The solution turned out to be [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-weblogic-configuration-wizard-freezes-on-linux/">Oracle WebLogic Configuration Wizard Freezes on Linux</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">During an Oracle Fusion Middleware 14.1.2 upgrade, I encountered an issue while reconfiguring an existing Oracle ADF domain. The WebLogic Configuration Wizard launched successfully through SSH X11 forwarding, but the graphical interface became unresponsive during the reconfiguration.</p>



<span id="more-47947"></span>



<p class="wp-block-paragraph">There was no obvious error message, and the wizard could not proceed.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="215" height="236" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/image-73.png" alt="" class="wp-image-47948" /></figure>



<p class="wp-block-paragraph">The solution turned out to be a single Java parameter.</p>



<h2 id="h-the-fix" class="wp-block-heading">The Fix</h2>



<p class="wp-block-paragraph">Before launching the Configuration Wizard, disable the Java 2D XRender pipeline:</p>



<pre class="wp-block-code"><code>export _JAVA_OPTIONS="-Dsun.java2d.xrender=false"</code></pre>



<p class="wp-block-paragraph">Then launch the wizard:</p>



<pre class="wp-block-code"><code>$ORACLE_HOME/oracle_common/common/bin/config.sh -log=/u00/app/oracle/product/14c/reconfig_logs/oid_domain_20261019/reconfig_oid_domain_20261019.log -log_priority=ALL</code></pre>



<p class="wp-block-paragraph">In my environment, this resolved the issue immediately.</p>



<h2 id="h-why-does-it-work" class="wp-block-heading">Why Does It Work?</h2>



<p class="wp-block-paragraph">Java graphical applications use different rendering pipelines on Linux, including X11 and XRender.</p>



<p class="wp-block-paragraph"><strong>XRender</strong> is a Java 2D rendering pipeline that uses the X Render extension to accelerate certain graphical operations.</p>



<p class="wp-block-paragraph">However, in remote graphical environments using SSH X11 forwarding, compatibility problems between the JVM, XRender, and the X server can sometimes cause graphical applications to freeze or become unresponsive.</p>



<p class="wp-block-paragraph">Setting:</p>



<pre class="wp-block-code"><code>-Dsun.java2d.xrender=false</code></pre>



<p class="wp-block-paragraph">disables the XRender pipeline, allowing Java 2D to fall back to the traditional X11 rendering pipeline.</p>



<p class="wp-block-paragraph">This avoids the problematic rendering path without modifying the Oracle installation or domain configuration.</p>



<h2 id="h-confirming-the-fix" class="wp-block-heading">Confirming the Fix</h2>



<p class="wp-block-paragraph">Initially, I tested two Java parameters together:</p>



<pre class="wp-block-code"><code>export _JAVA_OPTIONS="-Dsun.java2d.xrender=false -Dsun.java2d.opengl=false"</code></pre>



<p class="wp-block-paragraph">The wizard worked, but it was unclear which parameter made the difference.</p>



<p class="wp-block-paragraph">During the reconfiguration of another domain, I repeated the test using <strong>only</strong> <code><strong>-Dsun.java2d.xrender=false</strong></code>.</p>



<p class="wp-block-paragraph">The Configuration Wizard worked correctly again.</p>



<p class="wp-block-paragraph">This confirmed that disabling XRender alone was sufficient in this environment. Disabling OpenGL was unnecessary.</p>



<h2 id="h-oracle-already-documents-this-behavior" class="wp-block-heading">Oracle Already Documents This Behavior</h2>



<p class="wp-block-paragraph">After resolving the issue, I checked Oracle&#8217;s official Java documentation and found that this behavior is already documented.</p>



<p class="wp-block-paragraph">In its <a href="https://docs.oracle.com/en/java/javase/25/troubleshoot/java-2d-properties.html" target="_blank" rel="noreferrer noopener">Java 2D Properties</a> on Linux documentation, Oracle describes the sun.java2d.xrender property and explains that setting it to false disables the XRender pipeline and falls back to the basic X11 pipeline.</p>



<p class="wp-block-paragraph">This is exactly the behavior we wanted to achieve:</p>



<pre class="wp-block-code"><code>-Dsun.java2d.xrender=false</code></pre>



<p class="wp-block-paragraph">Oracle does not specifically associate this parameter with the WebLogic Configuration Wizard freezing during domain reconfiguration. However, the documented rendering mechanism explains why this workaround can help in an environment using remote X11 forwarding.</p>



<h2 id="h-conclusion" class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">If the Oracle WebLogic Configuration Wizard freezes when running through X11 forwarding on Linux, try disabling the Java 2D XRender pipeline before investigating more complex causes.</p>



<p class="wp-block-paragraph">A single JVM parameter is enough:</p>



<pre class="wp-block-code"><code>export _JAVA_OPTIONS="-Dsun.java2d.xrender=false"</code></pre>



<p class="wp-block-paragraph">This workaround was successfully validated during two domain reconfigurations.</p>



<p class="wp-block-paragraph">It does not prove the exact underlying XRender incompatibility, but it demonstrates that the rendering pipeline was a contributing factor.</p>



<p class="wp-block-paragraph">After completing the configuration, remove the temporary setting:</p>



<pre class="wp-block-code"><code>unset _JAVA_OPTIONS</code></pre>



<p class="wp-block-paragraph"><a href="https://www.dbi-services.com/blog/tag/oracle-fusion-middleware/" target="_blank" rel="noreferrer noopener">Related blogs</a></p>



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-weblogic-configuration-wizard-freezes-on-linux/">Oracle WebLogic Configuration Wizard Freezes on Linux</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/oracle-weblogic-configuration-wizard-freezes-on-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle FMW Upgrade &#8211; ADF Failed (INVALID_WLS_COMPONENT_SCHEMA_OWNER)</title>
		<link>https://www.dbi-services.com/blog/oracle-fmw-upgrade-adf-failed-invalid_wls_component_schema_owner/</link>
					<comments>https://www.dbi-services.com/blog/oracle-fmw-upgrade-adf-failed-invalid_wls_component_schema_owner/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Sun, 18 Oct 2026 19:20:57 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[WebLogic]]></category>
		<category><![CDATA[FMW]]></category>
		<category><![CDATA[Oracle Fusion Middleware]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=47883</guid>

					<description><![CDATA[<p>During the preparation of an Oracle Fusion Middleware upgrade from 12.2.1.4 to 14.1.2, the Upgrade Assistant readiness check flagged the WebLogic schema in an ADF domain. The error identified during the investigation was INVALID_WLS_COMPONENT_SCHEMA_OWNER. I was already aware of the documented change to WLSSchemaDataSource in 14.1.2. Before modifying the existing domain, however, I wanted to [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-fmw-upgrade-adf-failed-invalid_wls_component_schema_owner/">Oracle FMW Upgrade &#8211; ADF Failed (INVALID_WLS_COMPONENT_SCHEMA_OWNER)</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">During the preparation of an Oracle Fusion Middleware upgrade from 12.2.1.4 to 14.1.2, the Upgrade Assistant readiness check flagged the WebLogic schema in an ADF domain. The error identified during the investigation was <code>INVALID_WLS_COMPONENT_SCHEMA_OWNER</code>.</p>



<span id="more-47883"></span>



<p class="wp-block-paragraph">I was already aware of the documented change to <code>WLSSchemaDataSource</code> in 14.1.2. Before modifying the existing domain, however, I wanted to establish whether the failure matched that prerequisite and whether the readiness checks exposed anything else that needed attention.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="797" height="630" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/image-51.png" alt="" class="wp-image-47884" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/image-51.png 797w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/image-51-300x237.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/image-51-768x607.png 768w" sizes="auto, (max-width: 797px) 100vw, 797px" /></figure>



<p class="wp-block-paragraph">I am sharing the findings because the same message can appear in other Fusion Middleware environments. The useful part is connecting what the assistant selected, what the database actually contains, and what Oracle expects for the upgrade.</p>



<p class="wp-block-paragraph">The findings below were collected before changing the data sources, upgrading the schemas, or reconfiguring the domains. Schema prefixes are retained to make the evidence readable; database hosts and connection strings are omitted.</p>



<h2 id="h-the-oracle-requirement" class="wp-block-heading">The Oracle requirement</h2>



<p class="wp-block-paragraph">Oracle documents this prerequisite in <em>Upgrading to the Oracle Fusion Middleware Infrastructure 14c</em>, under <a href="https://docs.oracle.com/en/middleware/fusion-middleware/14.1.2/infup/upgrade-requirements.html" target="_blank" rel="noreferrer noopener">Verify the Database User for the WLSSchemaDataSource Data Source</a>.</p>



<p class="wp-block-paragraph">For a domain-based schema upgrade, Upgrade Assistant uses <code>WLSSchemaDataSource</code> to obtain schema information. If it references <code>&lt;PREFIX&gt;_WLS_RUNTIME</code>, Oracle requires changing the user to <code>&lt;PREFIX&gt;_WLS</code>. The WLS schema page must also identify the correct owner.</p>



<p class="wp-block-paragraph">Oracle recommends making the data source change through the existing 12c Administration Console so that subsequent upgrade and reconfiguration screens receive the appropriate values. In 14.1.2, the runtime account has a separate data source, <code>WLSRuntimeSchemaDataSource</code>, created during domain reconfiguration.</p>



<p class="wp-block-paragraph">The intended mapping is therefore:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Data source</th><th>Database user</th></tr></thead><tbody><tr><td><code>WLSSchemaDataSource</code></td><td><code>&lt;PREFIX&gt;_WLS</code></td></tr><tr><td><code>WLSRuntimeSchemaDataSource</code></td><td><code>&lt;PREFIX&gt;_WLS_RUNTIME</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Knowing this requirement gave me a strong starting point. I still wanted evidence from the environment before applying it.</p>



<h2 id="h-what-the-adf-readiness-screen-actually-showed" class="wp-block-heading">What the ADF readiness screen actually showed</h2>



<p class="wp-block-paragraph">The readiness check reached 100%, with the WebLogic schema marked as failed. OPSS, MDS, IAU and STB were marked ready for upgrade.</p>



<p class="wp-block-paragraph">The failed WebLogic entry referenced <code>DEVADF_WLS_RUNTIME</code>. That was the first useful clue: the account selected for the check was the runtime account.</p>



<p class="wp-block-paragraph">The screen did not establish an ADF application defect or a failed schema migration. It showed a failed readiness check for a shared infrastructure component. That distinction matters when deciding where to investigate.</p>



<h2 id="h-checking-the-database-before-changing-the-configuration" class="wp-block-heading">Checking the database before changing the configuration</h2>



<p class="wp-block-paragraph">The database checks established the following:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Check</th><th>Observed result</th></tr></thead><tbody><tr><td>Database version</td><td>Oracle Database 19c, 19.24</td></tr><tr><td><code>DEVADF_WLS</code> account</td><td><code>OPEN</code></td></tr><tr><td><code>DEVADF_WLS_RUNTIME</code> account</td><td><code>OPEN</code></td></tr><tr><td>Registered owner for component <code>WLS</code></td><td><code>DEVADF_WLS</code></td></tr><tr><td>Registered WLS schema version</td><td><code>12.2.1.0.0</code></td></tr><tr><td>Registered WLS schema status</td><td><code>VALID</code></td></tr><tr><td>User configured in <code>WLSSchemaDataSource</code></td><td><code>DEVADF_WLS_RUNTIME</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">For readers reproducing these checks, the following read-only queries show the relevant account and registry information. Execute them with an appropriately privileged account in the database service or container used by the domain:</p>



<pre class="wp-block-code"><code>SELECT username, account_status
FROM dba_users
WHERE username IN ('DEVADF_WLS', 'DEVADF_WLS_RUNTIME')
ORDER BY username;

SELECT comp_id, owner, version, status
FROM schema_version_registry
WHERE comp_id = 'WLS'
AND owner IN ('DEVADF_WLS', 'DEVADF_WLS_RUNTIME');</code></pre>



<p class="wp-block-paragraph">These queries are provided as a reproducible check; the table above summarizes the observed findings rather than reproducing a terminal transcript.</p>



<p class="wp-block-paragraph">The registered component owner and the data source user differed in exactly the way described by Oracle. Both accounts existed and were open, so a missing or locked account did not explain the observed state. An <code>OPEN</code> account does not, by itself, prove that its configured password is correct or that a JDBC connection succeeds. Similarly, <code>VALID</code> in the registry is not a complete object-integrity or application-health check.</p>



<p class="wp-block-paragraph">Those limits matter: the evidence supported the documented owner mismatch without justifying broader claims about the entire environment.</p>



<h2 id="h-applying-the-correction" class="wp-block-heading">Applying the correction</h2>



<p class="wp-block-paragraph">The following steps describe the correction to apply to the existing 12c domain before continuing with the upgrade.</p>



<ol start="1" class="wp-block-list">
<li>Open the existing WebLogic 12c Administration Console. Navigate to Services → Data Sources → WLSSchemaDataSource. If configuration locking is enabled, select Lock &amp; Edit.</li>



<li>Update the database user. Under Configuration → Connection Pool, change the <code>user</code> property from <code>DEVADF_WLS_RUNTIME</code> to <code>DEVADF_WLS</code>. Keep the existing JDBC URL unless a separate connection issue requires changing it.</li>



<li>Set the corresponding credentials. Enter and confirm the password for <code>DEVADF_WLS</code>. Do not assume that the component owner and runtime account share the same password.</li>



<li>Save and activate the change. Click Save, then Activate Changes where applicable. Follow any restart requirement displayed by the console. With the target server running, use Monitoring → Testing to test the data source connection on its target. A successful connection validates connectivity and authentication; readiness still needs to be checked separately.</li>



<li>Rerun Upgrade Assistant in readiness mode. Start the tool from the new 14.1.2 Oracle Home:<code>"$ORACLE_HOME/oracle_common/upgrade/bin/ua" -readiness</code> Here, <code>ORACLE_HOME</code> must point to the target 14.1.2 installation. Select the same domain and check that the WLS Schema page identifies <code>DEVADF_WLS</code>. Review the new report and resolve any remaining failures before proceeding with the schema upgrade.</li>
</ol>



<p class="wp-block-paragraph">This change applies to <code>WLSSchemaDataSource</code>. Keep the <code>DEVADF_WLS_RUNTIME</code> database account: Oracle uses it with the separate <code>WLSRuntimeSchemaDataSource</code> introduced in 14.1.2.</p>



<h2 id="h-conclusion" class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">The findings were consistent with the prerequisite I had already identified in Oracle’s documentation. Checking the database and domain configuration first gave me a clear basis for applying the change. The next step was to update <code>WLSSchemaDataSource</code> to use <code>DEVADF_WLS</code> with the corresponding credentials, then rerun readiness before proceeding with the upgrade.</p>



<p class="wp-block-paragraph">If you encounter the same error, comparing the selected schema user, the data source configuration and the registered component owner is a useful starting point. It helps establish whether the documented change applies to your environment before you modify it.</p>



<p class="wp-block-paragraph"><a href="https://www.dbi-services.com/blog/category/application-integration-middleware/weblogic/" target="_blank" rel="noreferrer noopener">See related blogs</a></p>



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-fmw-upgrade-adf-failed-invalid_wls_component_schema_owner/">Oracle FMW Upgrade &#8211; ADF Failed (INVALID_WLS_COMPONENT_SCHEMA_OWNER)</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/oracle-fmw-upgrade-adf-failed-invalid_wls_component_schema_owner/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle Reports: REP-50125: An internal exception occurred</title>
		<link>https://www.dbi-services.com/blog/oracle-reports-rep-50125-an-internal-exception-occurred/</link>
					<comments>https://www.dbi-services.com/blog/oracle-reports-rep-50125-an-internal-exception-occurred/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Fri, 02 Oct 2026 08:13:45 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[WebLogic]]></category>
		<category><![CDATA[Oracle Fusion Middleware]]></category>
		<category><![CDATA[Oracle Reports]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=47367</guid>

					<description><![CDATA[<p>A client contacted me after an operating system upgrade and the restart of an Oracle Fusion Middleware environment. The application servers were running. The ADF applications appeared healthy. Both Oracle Reports Server processes were also reported as running. Yet report generation failed. Even a simple request to display the Reports job list returned an error: [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-reports-rep-50125-an-internal-exception-occurred/">Oracle Reports: REP-50125: An internal exception occurred</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">A client contacted me after an operating system upgrade and the restart of an <a href="https://www.oracle.com/middleware/" target="_blank" rel="noreferrer noopener">Oracle Fusion Middleware</a> environment. The application servers were running. The ADF applications appeared healthy. Both Oracle Reports Server processes were also reported as running.</p>



<p class="wp-block-paragraph">Yet report generation failed.</p>



<span id="more-47367"></span>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="701" height="401" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/image-8.png" alt="" class="wp-image-47369" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/image-8.png 701w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/image-8-300x172.png 300w" sizes="auto, (max-width: 701px) 100vw, 701px" /></figure>



<p class="wp-block-paragraph">Even a simple request to display the Reports job list returned an error:</p>



<pre class="wp-block-code"><code>REP-50125: An internal exception occurred:
java.security.PrivilegedActionException:
javax.security.auth.login.LoginException:
java.lang.NoClassDefFoundError:
Could not initialize class
oracle.security.jps.service.policystore.info.BuiltInFunctionsHandler
</code></pre>



<p class="wp-block-paragraph">The investigation led somewhere else: a Reports Server JVM running with a maximum heap of only <strong>256 MiB</strong>, while the equivalent environment used <strong>1 GiB</strong>.</p>



<p class="wp-block-paragraph">Here is how we moved from a misleading symptom to an evidence-based diagnosis.</p>



<h2 id="h-separate-process-availability-from-application-health" class="wp-block-heading">Separate process availability from application health</h2>



<p class="wp-block-paragraph">The initial service check showed every component as running:</p>



<pre class="wp-block-code"><code>AdminServer             is running.
WLS_REPORTS             is running.
RptSvr_app-dev_1         is running.
RptSvr_app-dev_2         is running.</code></pre>



<p class="wp-block-paragraph">This established that the processes existed. It did not establish that they could authenticate requests, evaluate security policies, or execute reports.</p>



<p class="wp-block-paragraph">The failing <code>showjobs</code> request provided a more useful functional check. It showed that Reports could receive a request but failed while processing it.</p>



<p class="wp-block-paragraph">The first lesson is straightforward:</p>



<p class="wp-block-paragraph"><strong>A running process is an infrastructure observation, not an application health check.</strong></p>



<h2 id="h-find-the-first-exception-not-the-most-frequently-repeated-one" class="wp-block-heading">Find the first exception, not the most frequently repeated one</h2>



<p class="wp-block-paragraph">The browser displayed:</p>



<pre class="wp-block-code"><code>NoClassDefFoundError: Could not initialize class ...</code></pre>



<p class="wp-block-paragraph">The wording matters. A class that cannot initialize is not necessarily a missing class.</p>



<p class="wp-block-paragraph">I searched the Reports Server diagnostic logs for the first occurrence and the exceptions preceding it:</p>



<pre class="wp-block-code"><code>grep -n -B 30 -A 70 -E \
  'BuiltInFunctionsHandler|ExceptionInInitializerError|OutOfMemoryError|Caused by:' \
  rwserver_diagnostic.log</code></pre>



<p class="wp-block-paragraph">Earlier in the same process lifetime, the log contained:</p>



<pre class="wp-block-code"><code>ava.lang.OutOfMemoryError: GC overhead limit exceeded
...
oracle.security.jps.service.policystore.info.BuiltInFunctionsHandler.&lt;clinit&gt;</code></pre>



<p class="wp-block-paragraph">The sequence was now clear:</p>



<ul class="wp-block-list">
<li>The JVM encountered memory exhaustion during initialization of a security class.</li>



<li>That initialization failed.</li>



<li>Subsequent requests reported that the class could not initialize.</li>
</ul>



<p class="wp-block-paragraph">The security error was therefore a consequence of the earlier memory failure.</p>



<p class="wp-block-paragraph"><strong>The first exception explained the incident; the later exceptions described its persistent symptoms.</strong></p>



<h2 id="h-identify-the-jvm-that-actually-failed" class="wp-block-heading">Identify the JVM that actually failed</h2>



<p class="wp-block-paragraph">An Oracle Reports installation involves several processes with different responsibilities:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Component</strong></td><td><strong>Role</strong></td></tr><tr><td><code>WLS_REPORTS</code></td><td>Hosts the Reports web application</td></tr><tr><td><code>rwserver</code></td><td>Handles Reports Server requests and job management</td></tr><tr><td><code>rwEng</code></td><td>Executes report jobs</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Each can have its own JVM configuration.</p>



<p class="wp-block-paragraph">Increasing the heap of <code>WLS_REPORTS</code> would not necessarily help a failure occurring inside the standalone <code>rwserver</code> process.</p>



<p class="wp-block-paragraph">I first mapped the processes:</p>



<pre class="wp-block-code"><code>ps -ww -eo pid,user,rss,args |
  grep -E '&#091;b]in/rwserver|&#091;w]eblogic.Name=WLS_REPORTS|&#091;o]racle.reports.engine.RWEngine'</code></pre>



<p class="wp-block-paragraph">Then I checked which JVM library the affected native <code>rwserver</code> process had loaded:</p>



<pre class="wp-block-code"><code>grep 'libjvm.so' /proc/&lt;REPORTS_PID&gt;/maps</code></pre>



<p class="wp-block-paragraph">This revealed another useful detail: the JVM loaded from the Oracle home differed from the JDK referenced by <code>JAVA_HOME</code>.</p>



<p class="wp-block-paragraph">The Reports startup script populated <code>LD_LIBRARY_PATH</code> with the bundled JVM location.</p>



<p class="wp-block-paragraph">That distinction did not prove a Java compatibility problem. It established which JDK tools we should use and prevented us from diagnosing the wrong runtime.</p>



<p class="wp-block-paragraph"><strong>For a running process, inspect what is loaded not just what the shell environment suggests.</strong></p>



<h2 id="h-measure-the-heap-instead-of-inferring-it-from-available-ram" class="wp-block-heading">Measure the heap instead of inferring it from available RAM</h2>



<p class="wp-block-paragraph">The operating system reported more than <strong>20 GiB of available memory</strong>.</p>



<p class="wp-block-paragraph">That did not contradict the Java memory error. A JVM can exhaust its configured heap while the host still has substantial free RAM.</p>



<p class="wp-block-paragraph">Using the matching JDK, I inspected the effective JVM flags:</p>



<pre class="wp-block-code"><code>"$REPORTS_JDK/bin/jcmd" &lt;REPORTS_PID&gt; VM.flags</code></pre>



<p class="wp-block-paragraph">The relevant output was:</p>



<pre class="wp-block-code"><code>-XX:InitialHeapSize=268435456
-XX:MaxHeapSize=268435456</code></pre>



<p class="wp-block-paragraph">The maximum heap was <strong>256 MiB</strong>.</p>



<p class="wp-block-paragraph">Next, I sampled garbage collection statistics:</p>



<pre class="wp-block-code"><code>"$REPORTS_JDK/bin/jstat" -gcutil &lt;REPORTS_PID&gt; 1000 10</code></pre>



<p class="wp-block-paragraph">The affected process showed:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Metric</strong></td><td><strong>Observation</strong></td></tr><tr><td>Old generation occupancy</td><td>99.85%</td></tr><tr><td>Eden occupancy</td><td>Approximately 98%</td></tr><tr><td>Full GC count since startup</td><td>185</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">The Full GC counter did not increase during that short sample. However, the nearly full heap, accumulated collection activity, and recorded <code>OutOfMemoryError</code> together provided strong evidence of heap exhaustion.</p>



<p class="wp-block-paragraph">A single memory percentage would have been insufficient. The diagnosis came from combining the logs, effective configuration, and runtime measurements.</p>



<h2 id="h-compare-with-a-working-environment" class="wp-block-heading">Compare with a working environment</h2>



<p class="wp-block-paragraph">I inspected the environment inherited by the working process:</p>



<pre class="wp-block-code"><code>tr '\0' '\n' &lt; /proc/&lt;REPORTS_PID&gt;/environ |
  grep -E '^(REPORTS_JVM_OPTIONS|JAVA_TOOL_OPTIONS|_JAVA_OPTIONS)='</code></pre>



<p class="wp-block-paragraph">The reference environment contained:</p>



<pre class="wp-block-code"><code>REPORTS_JVM_OPTIONS= -Xmx1024M</code></pre>



<p class="wp-block-paragraph">Comparing the Reports environment scripts then revealed the missing lines in the affected domain’s <code>reports/bin/reports.sh</code>:</p>



<pre class="wp-block-code"><code>REPORTS_JVM_OPTIONS=" -Xmx1024M"
export REPORTS_JVM_OPTIONS</code></pre>



<h2 id="h-validate-the-correction" class="wp-block-heading">Validate the correction</h2>



<p class="wp-block-paragraph">The client aligned the Reports memory configuration with the reference environment and subsequently confirmed that report generation and application checks worked again.</p>



<p class="wp-block-paragraph">A separate question remained: why had the problem become visible after this particular operating system upgrade and restart?</p>



<p class="wp-block-paragraph">We did not have the previous process’s effective heap settings or a historical memory profile. We therefore could not prove whether the restart changed the inherited environment, whether memory demand had increased, or whether another condition exposed an existing limitation.</p>



<p class="wp-block-paragraph">The timing made the OS upgrade a reasonable starting hypothesis. It did not make it the demonstrated root cause.</p>



<h2 id="h-conclusion" class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">This incident followed a useful progression. The most valuable habit was to follow the evidence backward, from the visible error to the first failure, and then forward again, from the configuration difference to a verified recovery.</p>



<p class="wp-block-paragraph">When critical applications stop working, you need more than a restart&#8230; You need a team that understands the platform. At <strong>dbi services</strong>, our Service Desk combines responsive support with deep technical expertise to investigate incidents, identify their causes, and guide recovery with clear, evidence-based recommendations.</p>



<p class="wp-block-paragraph"><strong>Looking for expert support for your Oracle Fusion Middleware environment? Contact us to discuss how we can help.</strong></p>



<p class="wp-block-paragraph"><a href="https://www.dbi-services.com/blog/category/application-integration-middleware/weblogic/" target="_blank" rel="noreferrer noopener">More related blogs</a></p>



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-reports-rep-50125-an-internal-exception-occurred/">Oracle Reports: REP-50125: An internal exception occurred</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/oracle-reports-rep-50125-an-internal-exception-occurred/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle Fusion Middleware to the Cloud</title>
		<link>https://www.dbi-services.com/blog/oracle-fusion-middleware-to-the-cloud/</link>
					<comments>https://www.dbi-services.com/blog/oracle-fusion-middleware-to-the-cloud/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Thu, 01 Oct 2026 07:02:26 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Oracle Fusion Middleware]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=45506</guid>

					<description><![CDATA[<p>More and more often, we are contacted to assess, challenge, and advise on the migration of Oracle Fusion Middleware platforms to the cloud. These discussions usually involve critical environments based on Oracle WebLogic Server, Oracle Forms, and sometimes Oracle Reports. The objective is rarely just to “move to the cloud”. It is about understanding what [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-fusion-middleware-to-the-cloud/">Oracle Fusion Middleware to the Cloud</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">More and more often, we are contacted to assess, challenge, and advise on the migration of Oracle Fusion Middleware platforms to the cloud.</p>



<p class="wp-block-paragraph">These discussions usually involve critical environments based on Oracle WebLogic Server, Oracle Forms, and sometimes Oracle Reports. The objective is rarely just to “move to the cloud”. It is about understanding what can realistically be migrated, what should be modernized, what must be validated, and where the main technical, operational, and licensing risks are.</p>



<span id="more-45506"></span>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/09/FMW-to-Cloud-1024x576.png" alt="" class="wp-image-46947" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/09/FMW-to-Cloud-1024x576.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/09/FMW-to-Cloud-300x169.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/09/FMW-to-Cloud-768x432.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/09/FMW-to-Cloud-1536x864.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/09/FMW-to-Cloud.png 1672w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Based on these discussions, I would like to share a few practical considerations that may be useful when evaluating a cloud migration strategy for Oracle Fusion Middleware workloads.</p>



<h2 id="h-lift-and-shift-is-not-a-shortcut-it-is-a-controlled-migration-strategy" class="wp-block-heading">Lift and shift is not a shortcut, it is a controlled migration strategy</h2>



<p class="wp-block-paragraph">For Oracle WebLogic, Forms and Reports platforms, a cloud migration should not automatically be presented as an application modernization project.</p>



<p class="wp-block-paragraph">In many cases, the first realistic step is a <strong>lift-and-shift migration</strong>. The goal is not to rewrite Forms modules, redesign the full application, or replace every legacy component immediately. The goal is to rebuild a controlled target platform in the cloud while preserving the application behavior as much as possible.</p>



<p class="wp-block-paragraph">However, lift and shift does not mean copying virtual machines and hoping that everything will work.</p>



<p class="wp-block-paragraph">A serious migration requires a detailed comparison between the existing platform and the target one: WebLogic domain configuration, Managed Servers, Datasources, Wallets, Certificates, JVM version, Patch level, Forms runtime configuration, Reports configuration, File system dependencies, Fonts, Printers, Batch jobs, Monitoring, Backup, Restart procedures, and Operational scripts.</p>



<p class="wp-block-paragraph">Oracle documents several WebLogic migration approaches to <a href="https://www.oracle.com/cloud/" target="_blank" rel="noreferrer noopener">OCI</a>, including manual deployment, WebLogic Deploy Tooling, and WLST-based deployment scripts targeted to a new domain. Oracle also describes WebLogic Server for OCI as a way to provision a WebLogic domain in OCI more quickly than a traditional on-premises setup.</p>



<p class="wp-block-paragraph">This is why lift and shift should be seen as an engineering exercise, not as a low-effort infrastructure move.</p>



<h2 id="h-why-oci-is-naturally-aligned-with-oracle-fusion-middleware" class="wp-block-heading">Why OCI is naturally aligned with Oracle Fusion Middleware</h2>



<p class="wp-block-paragraph">It would not be accurate to say that Oracle Fusion Middleware can only run on OCI. Oracle’s own cloud licensing policy lists AWS, Azure, and Google Cloud Platform as &#8220;Authorized Cloud Environments&#8221; for specific Oracle software licensing rules. The same policy also explains how vCPUs must be counted in these environments and states that the Oracle Processor Core Factor Table is not applicable there.</p>



<p class="wp-block-paragraph">So the real point is not that other clouds are impossible. The point is that <strong>OCI is naturally aligned with Oracle Fusion Middleware workloads</strong>.</p>



<p class="wp-block-paragraph">For WebLogic, Oracle provides OCI-specific deployment models, Marketplace-based options, and documented migration patterns. For Kubernetes-based deployments, Oracle also documents WebLogic Server for OKE using a Marketplace stack, including lifecycle-management components such as Jenkins and the WebLogic Kubernetes Operator.</p>



<p class="wp-block-paragraph">From an operational and licensing perspective, OCI also gives Oracle customers options such as BYOL and Universal Credits-based models. Oracle’s Support Rewards FAQ states that BYOL services on the Universal Credits Model rate card are eligible for the Support Rewards program.</p>



<p class="wp-block-paragraph">This does not remove the need for a proper license review. But it does mean that for Oracle middleware workloads, OCI often provides a more Oracle-native discussion: infrastructure, middleware, licensing, support model, and target architecture can be addressed within the same ecosystem.</p>



<p class="wp-block-paragraph"></p>



<h2 id="h-oracle-reports-must-be-treated-as-a-specific-risk" class="wp-block-heading">Oracle Reports must be treated as a specific risk</h2>



<p class="wp-block-paragraph">For Oracle Forms and WebLogic, a structured lift-and-shift approach to OCI can be a realistic option. For Oracle Reports, the discussion must be more careful.</p>



<p class="wp-block-paragraph">Oracle Reports is still present in many enterprise Forms platforms, but it has technical characteristics that must be validated before any cloud migration. Reports cluster members or clients use multicast to discover other nodes, and that there is no workaround for using multicast in that context.</p>



<p class="wp-block-paragraph">This is a critical point because multicast is generally not available in all cloud network architectures.</p>



<p class="wp-block-paragraph">In practical terms, Oracle Reports should not be treated as a simple checkbox in the migration plan. It requires a dedicated technical validation: Reports Server configuration, naming service, generated output, cache behavior, fonts, printers, file paths, batch execution, restart behavior, and integration with the Forms application.</p>



<h2 id="h-conclusion" class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">The conclusion is therefore simple: WebLogic and Forms can be good candidates for a controlled lift-and-shift migration to OCI. Oracle Reports must be assessed separately, tested carefully, and challenged architecturally.</p>



<p class="wp-block-paragraph">OCI can reduce complexity for Oracle Fusion Middleware migrations, but it does not remove the need for deep product expertise. A successful migration is not only a cloud project, it is a WebLogic, Forms, Reports, licensing, operations, and validation project.</p>



<p class="wp-block-paragraph">If you are planning to migrate an Oracle Fusion Middleware platform to the cloud, or if you simply want to assess whether such a migration is realistic for your environment, feel free to contact me. I would be happy to help you challenge the architecture, identify the risks, and define a pragmatic migration approach.</p>



<p class="wp-block-paragraph">More related blogs <a href="https://www.dbi-services.com/blog/category/application-integration-middleware/weblogic/" target="_blank" rel="noreferrer noopener">here</a>.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-fusion-middleware-to-the-cloud/">Oracle Fusion Middleware to the Cloud</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/oracle-fusion-middleware-to-the-cloud/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>JBoss EAP: From Traditional Application Server to Modern Enterprise Runtime</title>
		<link>https://www.dbi-services.com/blog/jboss-eap-from-traditional-application-server-to-modern-enterprise-runtime/</link>
					<comments>https://www.dbi-services.com/blog/jboss-eap-from-traditional-application-server-to-modern-enterprise-runtime/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Thu, 01 Oct 2026 06:49:06 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[JBoss EAP]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=45513</guid>

					<description><![CDATA[<p>When discussing modern application platforms, JBoss EAP is rarely the technology that creates the most excitement. Today, the attention is more often on Kubernetes, OpenShift, Quarkus, serverless platforms, service meshes, GitOps, and event-driven architectures. In this context, the question is not simply: “Should we replace JBoss EAP?” The real question is: “How can we modernize [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-from-traditional-application-server-to-modern-enterprise-runtime/">JBoss EAP: From Traditional Application Server to Modern Enterprise Runtime</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When discussing modern application platforms, JBoss EAP is rarely the technology that creates the most excitement. Today, the attention is more often on <a href="https://kubernetes.io/" target="_blank" rel="noreferrer noopener">Kubernetes</a>, <a href="https://www.redhat.com/en/technologies/cloud-computing/openshift" target="_blank" rel="noreferrer noopener">OpenShift</a>, Quarkus, serverless platforms, service meshes, GitOps, and event-driven architectures.</p>



<span id="more-45513"></span>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/JBoss-EAP-modern-1024x576.png" alt="" class="wp-image-47300" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/JBoss-EAP-modern-1024x576.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/JBoss-EAP-modern-300x169.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/JBoss-EAP-modern-768x432.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/JBoss-EAP-modern-1536x864.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/10/JBoss-EAP-modern.png 1672w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">In this context, the question is not simply: “Should we replace JBoss EAP?”</p>



<p class="wp-block-paragraph">The real question is: “How can we modernize these workloads without creating unnecessary risk?”</p>



<p class="wp-block-paragraph">JBoss EAP still has a future, but its role is changing. It should no longer be seen only as a traditional application server running on long-living virtual machines. Its future is as a supported enterprise Java runtime that can help customers modernize progressively, especially when moving toward OpenShift.</p>



<p class="wp-block-paragraph">But in large enterprise environments, technology relevance is not measured only by hype. It is measured by stability, supportability, lifecycle, risk, operational maturity, and the ability to run critical workloads for many years.</p>



<p class="wp-block-paragraph">From that perspective, JBoss EAP still has a future!</p>



<p class="wp-block-paragraph">Not because every new Java application should be deployed on a traditional application server. That would not be realistic. Its future is different: JBoss EAP remains a strategic runtime for enterprise Java systems that require continuity, long-term support, and controlled modernization.</p>



<h2 id="h-the-future-of-eap-is-linked-to-application-lifecycle-not-hype" class="wp-block-heading">The future of EAP is linked to application lifecycle, not hype</h2>



<p class="wp-block-paragraph">Many enterprise applications are not replaced every three years. They live for ten, fifteen, sometimes twenty years. They support billing, public administration, banking processes, insurance workflows, logistics, healthcare platforms, or internal business systems.</p>



<p class="wp-block-paragraph">For these applications, the most important question is not whether the runtime is fashionable. The question is whether the platform remains supportable, secure, upgradeable, and aligned with the enterprise roadmap.</p>



<p class="wp-block-paragraph">This is where JBoss EAP has value.</p>



<p class="wp-block-paragraph">Its future will be driven by customers who need a stable enterprise Java platform for existing workloads, not by teams looking for the lightest runtime for a new microservice.</p>



<h2 id="h-red-hat-s-direction-continuity-with-modernization" class="wp-block-heading"><br>Red Hat’s direction: continuity with modernization</h2>



<p class="wp-block-paragraph">Red Hat’s strategy around JBoss EAP is not to freeze the platform in the past. The move to EAP 8 and Jakarta EE 10 shows that the product continues to follow the evolution of enterprise Java.</p>



<p class="wp-block-paragraph">This is a major point. Jakarta EE 10 is not just a cosmetic version change. For many customers, it forces a real application review, especially because of the namespace migration from <code>javax.*</code> to <code>jakarta.*</code>, dependency updates, library compatibility, and testing effort.</p>



<p class="wp-block-paragraph">That means the future of JBoss EAP is not passive. Customers will still need migration projects, compatibility assessments, application testing, dependency cleanup, and platform upgrades.</p>



<p class="wp-block-paragraph">In parallel, Red Hat also positions EAP in the OpenShift ecosystem, with supported container images and deployment approaches for OpenShift. This confirms that EAP is not limited to the traditional VM model anymore.</p>



<p class="wp-block-paragraph">The message is clear: JBoss EAP is evolving, but in an enterprise way. It does not try to become Quarkus. It keeps its role as a supported Jakarta EE application platform while becoming more compatible with modern operational models.</p>



<h2 id="h-the-real-challenge-reducing-dependency-on-the-application-server" class="wp-block-heading">The real challenge: reducing dependency on the application server</h2>



<p class="wp-block-paragraph">Some applications depend too much on the application server. Over the years, many systems have accumulated runtime-specific assumptions:</p>



<ul class="wp-block-list">
<li>server-specific modules,</li>



<li>configuration hidden in the application server,</li>



<li>hardcoded JNDI names,</li>



<li>deployment scripts known only by operations teams,</li>



<li>local filesystem dependencies,</li>



<li>legacy security mechanisms,</li>



<li>clustering assumptions,</li>



<li>old libraries bundled with the application.</li>
</ul>



<p class="wp-block-paragraph">These are not only technical details. They are modernization blockers.</p>



<p class="wp-block-paragraph">A good EAP strategy should therefore not only be &#8220;upgrade the server.&#8221; It should also reduce unnecessary coupling between the application and the runtime.</p>



<p class="wp-block-paragraph">The objective is not to leave EAP. The objective is to make the application more portable, more testable, easier to deploy, and less dependent on hidden server configuration.</p>



<p class="wp-block-paragraph">This is where consulting expertise brings value: identifying which dependencies are legitimate enterprise platform usage, and which ones are accidental complexity created by years of operations.</p>



<h2 id="h-conclusion" class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">The future of JBoss EAP is not about competing with every modern Java runtime.</p>



<p class="wp-block-paragraph">Its future is to remain a reliable enterprise platform for applications that still need the Jakarta EE model, long-term support, and controlled modernization.</p>



<p class="wp-block-paragraph">At the same time, customers should not ignore Quarkus, Spring Boot, or other modern runtimes. But Quarkus does not replace JBoss EAP in all cases. The right strategy is not to force a single runtime everywhere. The right strategy is to understand the application lifecycle, reduce unnecessary runtime coupling, and choose the platform that matches the workload.</p>



<p class="wp-block-paragraph">In the future, JBoss EAP will remain strategic wherever enterprise Java continuity, supportability, and risk control matter.</p>



<p class="wp-block-paragraph"><a href="https://www.dbi-services.com/blog/category/application-integration-middleware/jboss-eap/" target="_blank" rel="noreferrer noopener">JBoss EAP Blogs</a></p>



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-from-traditional-application-server-to-modern-enterprise-runtime/">JBoss EAP: From Traditional Application Server to Modern Enterprise Runtime</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/jboss-eap-from-traditional-application-server-to-modern-enterprise-runtime/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Observability vs Monitoring</title>
		<link>https://www.dbi-services.com/blog/observability-vs-monitoring-2/</link>
					<comments>https://www.dbi-services.com/blog/observability-vs-monitoring-2/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 07:43:12 +0000</pubDate>
				<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[observability]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=42989</guid>

					<description><![CDATA[<p>As engineers, we’ve all built dashboards, tuned alerts, and fought noisy monitoring systems. Tools like Elastic, Prometheus, Grafana, Zabbix, or Nagios have shaped how we operate infrastructure for years. Yet modern distributed systems introduced a shift in mindset: monitoring is no longer enough. Enter observability, not as a buzzword, but as an operational necessity. This [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/observability-vs-monitoring-2/">Observability vs Monitoring</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">As engineers, we’ve all built dashboards, tuned alerts, and fought noisy monitoring systems. Tools like <a href="https://www.elastic.co/" target="_blank" rel="noreferrer noopener">Elastic</a>, <a href="https://prometheus.io/" target="_blank" rel="noreferrer noopener">Prometheus</a>, <a href="https://grafana.com" target="_blank" rel="noreferrer noopener">Grafana</a>, <a href="https://www.zabbix.com/" target="_blank" rel="noreferrer noopener">Zabbix</a>, or <a href="https://www.nagios.org/" target="_blank" rel="noreferrer noopener">Nagios </a>have shaped how we operate infrastructure for years.</p>



<p class="wp-block-paragraph">Yet modern distributed systems introduced a shift in mindset: monitoring is no longer enough. Enter observability, not as a buzzword, but as an operational necessity.</p>



<p class="wp-block-paragraph">This blog explains the difference clearly, with practical engineering examples and a real-world perspective.</p>



<span id="more-42989"></span>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="631" height="513" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/02/observability-vs-monitoring.png" alt="" class="wp-image-42990" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/02/observability-vs-monitoring.png 631w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/02/observability-vs-monitoring-300x244.png 300w" sizes="auto, (max-width: 631px) 100vw, 631px" /></figure>



<h2 id="h-monitoring-knowing-when-something-is-wrong" class="wp-block-heading">Monitoring: Knowing <em>When</em> Something Is Wrong</h2>



<p class="wp-block-paragraph">Traditional monitoring answers a very specific set of questions:</p>



<ul class="wp-block-list">
<li>Is the service up?</li>



<li>Are resources within acceptable limits?</li>



<li>Are error rates crossing thresholds?</li>



<li>Are we respecting SLAs?</li>
</ul>



<p class="wp-block-paragraph">Monitoring is fundamentally about predefined signals.</p>



<h3 id="h-what-monitoring-does-well" class="wp-block-heading">What Monitoring Does Well</h3>



<p class="wp-block-paragraph">Monitoring excels at:</p>



<ul class="wp-block-list">
<li>Incident detection</li>



<li>Alerting and operational response</li>



<li>Capacity tracking and trend analysis</li>



<li>Infrastructure health visibility</li>
</ul>



<p class="wp-block-paragraph"><strong>Example: Classic Monitoring Workflow</strong></p>



<p class="wp-block-paragraph">You monitor an API using:</p>



<ul class="wp-block-list">
<li>Prometheus metrics (<code>http_requests_total</code>, latency histograms)</li>



<li>Grafana dashboards</li>



<li>Alert rule: 5xx error rate &gt; 2% for 5 minutes</li>
</ul>



<p class="wp-block-paragraph">You immediately know something is wrong. But the next question appears: Why is it wrong?</p>



<p class="wp-block-paragraph">And this is where traditional monitoring starts to hit limits.</p>



<h3 id="h-the-core-limitation" class="wp-block-heading">The core limitation</h3>



<p class="wp-block-paragraph">Monitoring depends on:</p>



<ul class="wp-block-list">
<li>Metrics you anticipated</li>



<li>Thresholds you defined in advance</li>



<li>Scenarios you already imagined</li>
</ul>



<p class="wp-block-paragraph">When failures fall outside those assumptions, which is common in distributed systems, troubleshooting becomes exploratory and slow.</p>



<h2 id="h-observability-understanding-why-something-is-wrong" class="wp-block-heading">Observability: Understanding Why Something Is Wrong</h2>



<p class="wp-block-paragraph">Observability is not just more dashboards. It is the ability to <strong>understand internal system behavior from external outputs</strong>, even when you don’t already know what to look for.</p>



<p class="wp-block-paragraph">Instead of asking: “Is the system healthy?”</p>



<p class="wp-block-paragraph">Observability lets you ask:</p>



<ul class="wp-block-list">
<li>Why are users experiencing latency?</li>



<li>Which service introduced the regression?</li>



<li>What changed right before the incident?</li>



<li>Which request path is affected?</li>
</ul>



<p class="wp-block-paragraph">This is a fundamentally different operational capability.</p>



<p class="wp-block-paragraph">Modern observability relies on correlated telemetry:</p>



<ul class="wp-block-list">
<li>Metrics &#8211; aggregated system behavior</li>



<li>Logs &#8211; detailed contextual events</li>



<li>Traces &#8211; end-to-end request journeys</li>
</ul>



<p class="wp-block-paragraph">Individually, they are useful. Together, they provide causal understanding.</p>



<h2 id="h-practical-evolution-from-monitoring-to-observability" class="wp-block-heading">Practical Evolution: From Monitoring to Observability</h2>



<p class="wp-block-paragraph">You don’t replace monitoring, you evolve it. A pragmatic path:</p>



<ol class="wp-block-list">
<li>Define meaningful metrics<br>Focus on user-centric signals: latency, traffic, errors, saturation.</li>



<li>Structure logs properly<br>Include fields like <code>service</code>, <code>environment</code>, <code>trace_id</code>, <code>deployment_version</code>.</li>



<li>Instrument distributed tracing<br>Start with critical journeys (checkout, authentication, search).</li>



<li>Enable cross-linking<br>Alert -&gt; metric -&gt; trace -&gt; logs must be one flow.</li>



<li>Shift toward SLO-based thinking<br>Alert on user impact, not raw CPU.</li>
</ol>



<h2 id="h-conclusion" class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">Observability isn’t about collecting more data, it’s about turning telemetry into understanding.</p>



<p class="wp-block-paragraph">And that is where mature engineering organizations truly differentiate themselves: not by how much they monitor, but by how quickly and confidently they can understand, diagnose, and resolve complex system behaviors in production.</p>



<p class="wp-block-paragraph">If your organization is starting this journey or aiming to accelerate its maturity, we would be happy to help. From strategy and tooling selection to implementation and operational enablement, feel free to reach out and connect with us.</p>



<p class="wp-block-paragraph">Related blogs : <a href="https://www.dbi-services.com/blog/tag/zabbix/" target="_blank" rel="noreferrer noopener">Zabbix</a>, <a href="https://www.dbi-services.com/blog/tag/monitoring/">monitoring</a>, <a href="https://www.dbi-services.com/blog/tag/elastic-stack/">Elastic</a></p>



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/observability-vs-monitoring-2/">Observability vs Monitoring</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/observability-vs-monitoring-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Moving JBoss EAP Workloads to OpenShift</title>
		<link>https://www.dbi-services.com/blog/moving-jboss-eap-workloads-to-openshift/</link>
					<comments>https://www.dbi-services.com/blog/moving-jboss-eap-workloads-to-openshift/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Thu, 17 Sep 2026 07:59:25 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[JBoss EAP]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[redhat]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=45508</guid>

					<description><![CDATA[<p>More and more customers running traditional Java EE or Jakarta EE workloads are asking the same question: “We already use JBoss EAP. Should we move to Kubernetes or OpenShift, and do we need to replace the application server?” The answer is not to rush into a rewrite. In many cases, the most realistic and valuable [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/moving-jboss-eap-workloads-to-openshift/">Moving JBoss EAP Workloads to OpenShift</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">More and more customers running traditional Java EE or Jakarta EE workloads are asking the same question: “We already use JBoss EAP. Should we move to Kubernetes or OpenShift, and do we need to replace the application server?”</p>



<span id="more-45508"></span>



<p class="wp-block-paragraph">The answer is not to rush into a rewrite. In many cases, the most realistic and valuable first step is to move the existing JBoss EAP workloads to OpenShift, while modernizing the way they are built, configured, deployed, monitored, and operated.</p>



<p class="wp-block-paragraph">This is not a simple lift-and-shift. It is a controlled modernization of the runtime and operating model.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/09/JBoss-EAP-Openshift-1024x576.png" alt="" class="wp-image-46944" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/09/JBoss-EAP-Openshift-1024x576.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/09/JBoss-EAP-Openshift-300x169.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/09/JBoss-EAP-Openshift-768x432.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/09/JBoss-EAP-Openshift-1536x864.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/09/JBoss-EAP-Openshift.png 1672w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 id="h-the-customer-scenario-existing-jboss-eap-new-platform-expectations" class="wp-block-heading">The customer scenario: existing JBoss EAP, new platform expectations</h2>



<p class="wp-block-paragraph">A typical customer already has several applications running on JBoss EAP. Some are packaged as WAR files, others as EAR files. They use datasources, JNDI names, security realms or Elytron, JMS, transactions, batch jobs, custom modules, shared libraries, and sometimes clustering or HTTP session replication.</p>



<p class="wp-block-paragraph">At the same time, the infrastructure team wants to move to Kubernetes or OpenShift to standardize deployments, improve automation, reduce manual operations, and align with a container-based platform strategy.</p>



<p class="wp-block-paragraph">In this situation, recommending an immediate migration to another runtime such as Quarkus would often be too aggressive. The customer would have to manage two major changes at the same time: a platform migration and an application architecture migration.</p>



<p class="wp-block-paragraph">A better approach is to keep JBoss EAP as the first target runtime and move to OpenShift.</p>



<p class="wp-block-paragraph">Red Hat provides specific documentation for using JBoss EAP on OpenShift, including build and deployment approaches based on Helm charts for EAP 8.x. This matters because the customer is not moving to an unsupported or exotic model. They are moving an existing Red Hat middleware platform into a Red Hat container platform.</p>



<h2 id="h-why-jboss-eap-still-makes-sense-on-openshift" class="wp-block-heading">Why JBoss EAP still makes sense on OpenShift</h2>



<p class="wp-block-paragraph">JBoss EAP remains a strong choice when the application already depends on enterprise Java capabilities. For existing applications, EAP provides continuity. The customer can keep familiar application patterns which reduce risk compared to a full rewrite.</p>



<p class="wp-block-paragraph">The real value of OpenShift is not simply “running EAP in a container”. The value comes from changing the operational model.</p>



<p class="wp-block-paragraph">Instead of manually maintaining application servers on virtual machines, the target model should be:</p>



<ul class="wp-block-list">
<li>One application image per application or application group,</li>



<li>Configuration externalized through ConfigMaps, Secrets, and environment variables,</li>



<li>Immutable deployments,</li>



<li>Health checks and probes,</li>



<li>Centralized logs,</li>



<li>Controlled resource requests and limits,</li>



<li>Automated deployments through CI/CD or GitOps,</li>



<li>Rolling updates and rollback capability,</li>



<li>Platform-level security and image governance.</li>
</ul>



<p class="wp-block-paragraph">Red Hat documents that EAP applications can be built from compiled WAR or EAR archives and deployed onto a JBoss EAP runtime stack for OpenShift. That is important for real-world migration projects because many customers cannot rewrite their packaging model immediately.</p>



<p class="wp-block-paragraph">For EAP 7.4 customers, there are also Red Hat-provided OpenShift runtime images, such as the JBoss EAP 7.4 OpenJDK 11 runtime image, described as a base image to run an EAP server and application.</p>



<p class="wp-block-paragraph">The recommendation should therefore be clear: do not reproduce the old VM model inside Kubernetes. Use the move to OpenShift to clean up the runtime model.</p>



<p class="wp-block-paragraph">A good migration should review:</p>



<ul class="wp-block-list">
<li>EAP and Java versions,</li>



<li>WAR/EAR packaging,</li>



<li>Standalone.xml or domain configuration,</li>



<li>Datasources and JDBC drivers,</li>



<li>JMS usage and MDBs,</li>



<li>Security integration,</li>



<li>Filesystem dependencies,</li>



<li>Clustering and session handling,</li>



<li>JVM tuning,</li>



<li>Startup and shutdown behavior,</li>



<li>Logging format;monitoring and alerting,</li>



<li>CI/CD pipeline,</li>



<li>Backup and recovery constraints.</li>
</ul>



<p class="wp-block-paragraph">Some applications will be easy to containerize. Others will need technical adaptation. A few may not be good candidates without refactoring.</p>



<h2 id="h-recommended-approach" class="wp-block-heading">Recommended approach</h2>



<p class="wp-block-paragraph">For a customer already using JBoss EAP, my recommendation is:</p>



<p class="wp-block-paragraph">Start with JBoss EAP on OpenShift. Stabilize the container model. Then identify which applications or components deserve deeper modernization.</p>



<p class="wp-block-paragraph">This approach avoids unnecessary risk. It gives the customer a supported and realistic path to Kubernetes while preserving the value of the existing EAP investment.</p>



<p class="wp-block-paragraph">OpenShift does not automatically make an application cloud-native. The right approach is to understand the existing EAP landscape, modernize the operating model first, and only then decide where a lighter, Kubernetes-native runtime brings measurable value.</p>



<h2 id="h-conclusion" class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">In the end, the decision should not be driven by trends, but by application reality: architecture, dependencies, operational constraints, risk, and business value.</p>



<p class="wp-block-paragraph">If you would like more information or need support with JBoss EAP, from troubleshooting and performance optimization to upgrades and patching, feel free to contact me. I can also support you in assessing and planning the migration of your JBoss workloads to OpenShift or Kubernetes.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/moving-jboss-eap-workloads-to-openshift/">Moving JBoss EAP Workloads to OpenShift</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/moving-jboss-eap-workloads-to-openshift/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Lazy Loading (feed)

Served from: www.dbi-services.com @ 2026-11-07 17:48:11 by W3 Total Cache
-->