<?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>Mon, 01 Jun 2026 13:52:53 +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 Forms &#038; Reports 14.1.2 Patching Issue</title>
		<link>https://www.dbi-services.com/blog/oracle-forms-reports-14-1-2-patching-issue/</link>
					<comments>https://www.dbi-services.com/blog/oracle-forms-reports-14-1-2-patching-issue/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Mon, 01 Jun 2026 13:52:51 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[WebLogic]]></category>
		<category><![CDATA[Forms and Reports server]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[patch]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43677</guid>

					<description><![CDATA[<p>During a recent maintenance activity, I patched an Oracle Forms &#38; Reports 14.1.2 environment on Linux. The patching itself completed successfully, but immediately after the restart, Oracle Reports started failing. At first, the issue looked like a Java or JDK problem. After a full investigation, it turned out to be different. This blog explains the [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-forms-reports-14-1-2-patching-issue/">Oracle Forms &amp; Reports 14.1.2 Patching Issue</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 maintenance activity, I patched an <strong>Oracle Forms &amp; Reports 14.1.2</strong> environment on Linux. The patching itself completed successfully, but immediately after the restart, Oracle Reports started failing.</p>



<p class="wp-block-paragraph">At first, the issue looked like a Java or JDK problem. After a full investigation, it turned out to be different.</p>



<p class="wp-block-paragraph">This blog explains the full story from beginning to end.</p>



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



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="683" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ChatGPT-Image-Mar-30-2026-05_14_18-PM-1024x683.png" alt="" class="wp-image-43684" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ChatGPT-Image-Mar-30-2026-05_14_18-PM-1024x683.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ChatGPT-Image-Mar-30-2026-05_14_18-PM-300x200.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ChatGPT-Image-Mar-30-2026-05_14_18-PM-768x512.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/ChatGPT-Image-Mar-30-2026-05_14_18-PM.png 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="h-introduction">Introduction</h2>



<p class="wp-block-paragraph"><strong><span style="text-decoration: underline">Initial Objective</span></strong></p>



<p class="wp-block-paragraph">The initial goal was simple:</p>



<ul class="wp-block-list">
<li>apply the latest Oracle Fusion Middleware patch bundle</li>



<li>restart the environment</li>



<li>validate Forms and Reports services</li>
</ul>



<p class="wp-block-paragraph">The patch installation completed without any obvious errors, and patch inventory looked clean.</p>



<p class="wp-block-paragraph"><strong><span style="text-decoration: underline">Issue after patching</span></strong></p>



<p class="wp-block-paragraph">Once the environment was started again, Oracle Reports was no longer stable.</p>



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



<ul class="wp-block-list">
<li>Reports engine failed to start correctly</li>



<li>Report execution was failing</li>



<li>Oracle Reports processes were crashing shortly after startup</li>



<li>The environment became unstable after patching</li>
</ul>



<p class="wp-block-paragraph">This immediately confirmed that the issue was introduced after the Oracle patching activity.</p>



<h2 class="wp-block-heading" id="h-investigation">Investigation</h2>



<p class="wp-block-paragraph">The first checks focused on the usual areas:</p>



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



<li>Reports server startup</li>



<li>Reports engine diagnostic logs</li>



<li>process status</li>



<li>environment variables</li>



<li>classpath and Java configuration</li>
</ul>



<p class="wp-block-paragraph">At this stage, the failure appeared during Reports engine initialization.</p>



<p class="wp-block-paragraph"><strong><span style="text-decoration: underline">Crash Analysis</span></strong></p>



<p class="wp-block-paragraph">A deeper review showed <strong>JVM crash files</strong> (<code>hs_err_pid</code>) being generated.</p>



<p class="wp-block-paragraph">The important finding was that the crash was not pointing to standard Java code.<br>It was occurring in the Oracle Reports native library:</p>



<ul class="wp-block-list">
<li><code><em>librw.so</em></code></li>



<li>function around <code><em>kguinit</em></code></li>
</ul>



<p class="wp-block-paragraph">This was an important clue because it suggested the problem was not a normal Java exception, but a failure in Oracle Reports native components.</p>



<p class="wp-block-paragraph"><strong><span style="text-decoration: underline">JDK Validation</span></strong></p>



<p class="wp-block-paragraph">Because the issue started after patching, one possible explanation was a JDK problem.</p>



<p class="wp-block-paragraph">Several validations were performed:</p>



<ul class="wp-block-list">
<li>Checked active Java paths</li>



<li>Rolled back JDK version</li>



<li>Retested with the previous JDK</li>



<li>Compared behavior before and after JDK rollback</li>
</ul>



<p class="wp-block-paragraph">The same crash still happened even after JDK rollback.</p>



<p class="wp-block-paragraph">That confirmed the issue was <strong>not caused by the JDK itself</strong>.</p>



<p class="wp-block-paragraph"><strong><span style="text-decoration: underline">Rollback and Reproduction Test</span></strong></p>



<p class="wp-block-paragraph">To make sure the Oracle patch was really the trigger, I performed a controlled validation:</p>



<ul class="wp-block-list">
<li>Roll back Oracle patch</li>



<li>Start environment</li>



<li>Test Reports</li>



<li>Reapply Oracle patch</li>



<li>Retest Reports</li>
</ul>



<p class="wp-block-paragraph"><span style="text-decoration: underline">Before patch</span>: environment worked fine</p>



<p class="wp-block-paragraph"><span style="text-decoration: underline">After patch</span>: issue was reproduced again.</p>



<p class="wp-block-paragraph">This confirmed that the problem was patch-related and reproducible.</p>



<p class="wp-block-paragraph"><strong><span style="text-decoration: underline">Real Root Cause Direction</span></strong></p>



<p class="wp-block-paragraph">After further analysis, it became clear that the problem was not just a startup configuration issue.</p>



<p class="wp-block-paragraph">The patch had left the Oracle Reports native layer in an inconsistent state, and the environment needed a <strong>relink</strong> of Oracle FMW Reports and related shared libraries. I already had the case in the past with older versions (11 and 12), which normally has been solved since (<a href="https://support.oracle.com/ic/builder/rt/customer_portal/live/webApps/customer-portal/?anchorId=&amp;documentId=KB104706&amp;page=sptemplate&amp;sptemplate=km-article" target="_blank" rel="noreferrer noopener">related Oracle KB</a>)!</p>



<p class="wp-block-paragraph">That explained why:</p>



<ul class="wp-block-list">
<li>Patching succeeded</li>



<li>Startup partially worked</li>



<li>But Reports engine crashed in native code</li>
</ul>



<h2 class="wp-block-heading" id="h-final-resolution">Final Resolution</h2>



<p class="wp-block-paragraph">The final resolution was to relink Oracle FMW Reports.</p>



<p class="wp-block-paragraph">First, the Reports environment was loaded:</p>



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



<p class="wp-block-paragraph">Then the Oracle Reports libraries and binaries were rebuilt:</p>



<pre class="wp-block-code"><code>cd $ORACLE_HOME/reports/lib
make -f ins_reports.mk install</code></pre>



<p class="wp-block-paragraph">This recreated and relinked key Reports components such as:</p>



<ul class="wp-block-list">
<li><code>librw.so</code></li>



<li><code>librwu.so</code></li>



<li><code>rwserver</code></li>



<li><code>rwrun</code></li>



<li><code>rwclient</code></li>



<li><code>rwbuilder</code></li>



<li><code>rwconverter</code></li>



<li><code>rwcgi</code></li>



<li><code>rwproxy</code></li>



<li><code>rwrqv</code></li>
</ul>



<p class="wp-block-paragraph">After that, the Oracle client shared libraries were rebuilt as well:</p>



<pre class="wp-block-code"><code>cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk client_sharedlib</code></pre>



<p class="wp-block-paragraph">This regenerated the Oracle client shared libraries and symbolic links required by the middleware binaries.</p>



<p class="wp-block-paragraph">After the relink activity:</p>



<ul class="wp-block-list">
<li>Oracle Reports started correctly</li>



<li>the engine no longer crashed</li>



<li>report execution worked again</li>



<li>the patched environment became stable</li>
</ul>



<p class="wp-block-paragraph">So the environment could remain patched and operational, without needing to stay rolled back.</p>



<h2 class="wp-block-heading" id="h-lessons-learned-and-key-takeaway">Lessons Learned and key takeaway</h2>



<p class="wp-block-paragraph">This case was a good reminder that post-patching issues are not always caused by:</p>



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



<li>Classpath</li>



<li>Managed server configuration</li>



<li>OS changes</li>
</ul>



<p class="wp-block-paragraph">Sometimes the real issue is lower-level and sits in:</p>



<ul class="wp-block-list">
<li>Oracle native binaries</li>



<li>Shared libraries</li>



<li>Incomplete or inconsistent linking after patching</li>
</ul>



<p class="wp-block-paragraph">So, please note that when Oracle Reports crashes inside <code>librw.so</code> after patching, and rollback proves the patch introduced the issue, a <strong>relink of Reports and Oracle client shared libraries</strong> should be considered as a serious corrective action.</p>



<p class="wp-block-paragraph"><a href="https://www.dbi-services.com/blog/" target="_blank" rel="noreferrer noopener">Read more blogs</a></p>



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-forms-reports-14-1-2-patching-issue/">Oracle Forms &amp; Reports 14.1.2 Patching Issue</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-forms-reports-14-1-2-patching-issue/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WebLogic 14 &#038; Elastic Stack: From Metrics to Predictive Insights</title>
		<link>https://www.dbi-services.com/blog/weblogic-14-elastic-stack-from-metrics-to-predictive-insights/</link>
					<comments>https://www.dbi-services.com/blog/weblogic-14-elastic-stack-from-metrics-to-predictive-insights/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Fri, 20 Feb 2026 09:21:39 +0000</pubDate>
				<category><![CDATA[Elastic Stack]]></category>
		<category><![CDATA[WebLogic]]></category>
		<category><![CDATA[elastic Stack]]></category>
		<category><![CDATA[Monitoring]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=40353</guid>

					<description><![CDATA[<p>Oracle WebLogic Server continues to be a backbone for enterprise Java applications. With version 14, it brings improved Java compatibility, stronger security defaults, and better clustering. But while the platform is robust, monitoring it effectively remains a challenge. Introduction Within WebLogic 14, out-of-the-box tools such as the Remote Console and WLST scripts provide some visibility, [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/weblogic-14-elastic-stack-from-metrics-to-predictive-insights/">WebLogic 14 &amp; Elastic Stack: From Metrics to Predictive Insights</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">Oracle WebLogic Server continues to be a backbone for enterprise Java applications. With version 14, it brings improved Java compatibility, stronger security defaults, and better clustering. But while the platform is robust, monitoring it effectively remains a challenge.</p>



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



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="683" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/Blog-WLS14-Elastic-Stack1-1024x683.png" alt="" class="wp-image-40561" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/Blog-WLS14-Elastic-Stack1-1024x683.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/Blog-WLS14-Elastic-Stack1-300x200.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/Blog-WLS14-Elastic-Stack1-768x512.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/Blog-WLS14-Elastic-Stack1.png 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="h-introduction">Introduction</h2>



<p class="wp-block-paragraph">Within WebLogic 14, out-of-the-box tools such as the Remote Console and WLST scripts provide some visibility, but they are limited when it comes to real-time metrics, historical analysis, or predictive monitoring.</p>



<p class="wp-block-paragraph">This is where the <a href="https://www.elastic.co/">Elastic</a> Stack (Elasticsearch, Logstash, Beats, Elastic Agent, Kibana, and Elastic Machine Learning) delivers real value. By integrating WebLogic 14 logs, traces and metrics with Elastic Stack, you can build a unified platform that provides:</p>



<ul class="wp-block-list">
<li>Real-time observability of servers, threads, JDBC pools, and JVM health.</li>



<li>Powerful visualization and analysis in Kibana.</li>



<li>Predictive monitoring through anomaly detection and forecasting.</li>
</ul>



<p class="wp-block-paragraph">In this blog, we’ll walk through the integration of metrics step by step.</p>



<h2 class="wp-block-heading" id="h-step-1-export-weblogic-14-metrics">Step 1: Export WebLogic 14 Metrics</h2>



<p class="wp-block-paragraph">WebLogic does not natively expose metrics in formats suitable for Elastic or Prometheus. The solution is the WebLogic Monitoring Exporter, which translates JMX metrics into Prometheus-style output.</p>



<p class="wp-block-paragraph">Download the exporter:</p>



<pre class="wp-block-code"><code>wget https://github.com/oracle/weblogic-monitoring-exporter/releases/download/v2.3.0/weblogic-monitoring-exporter.jar
</code></pre>



<p class="wp-block-paragraph">Configure it (<code>config.yaml</code>):</p>



<pre class="wp-block-code"><code>domains:
  - name: mydomain
    url: t3://localhost:7001
    username: monitoruser
    password: XXXXXXXXXX
    metrics:
      - name: ServerHealth
      - name: ThreadPool
      - name: JDBCConnectionPool
      - name: JVMRuntime</code></pre>



<p class="wp-block-paragraph">Start the exporter:</p>



<pre class="wp-block-code"><code>java -jar weblogic-monitoring-exporter.jar --config=config.yaml</code></pre>



<p class="wp-block-paragraph">Verify metrics are exposed at:</p>



<pre class="wp-block-code"><code>http:&#047;&#047;localhost:8080/metrics</code></pre>



<h2 class="wp-block-heading" id="h-step-2-collect-metrics-with-metricbeat">Step 2: Collect Metrics with Metricbeat</h2>



<p class="wp-block-paragraph">Elastic provides Metricbeat with a Prometheus module, making it easy to scrape WebLogic exporter metrics and send them to Elasticsearch.</p>



<p class="wp-block-paragraph">Enable and configure the module:</p>



<pre class="wp-block-code"><code>metricbeat modules enable prometheus</code></pre>



<p class="wp-block-paragraph">prometheus.yml configuration:</p>



<pre class="wp-block-code"><code>- module: prometheus
  period: 10s
  hosts: &#091;"http://localhost:8080"]
  metrics_path: /metrics</code></pre>



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



<pre class="wp-block-code"><code>sudo metricbeat setup
sudo service metricbeat start</code></pre>



<p class="wp-block-paragraph">Now WebLogic metrics are flowing into Elasticsearch.</p>



<h2 class="wp-block-heading" id="h-step-3-collect-weblogic-logs-with-filebeat-or-elastic-agent">Step 3: Collect WebLogic Logs with Filebeat or Elastic Agent</h2>



<p class="wp-block-paragraph">Metrics give you system health, but logs provide context. To correlate performance issues with application errors, you should ingest WebLogic logs into Elasticsearch.</p>



<h3 class="wp-block-heading">Option A: Using Filebeat</h3>



<p class="wp-block-paragraph">Install and configure Filebeat on the WebLogic server.</p>



<p class="wp-block-paragraph">Example configuration (<code>filebeat.yml</code>):</p>



<pre class="wp-block-code"><code>filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /u02/app/weblogic/domains/mydomain/servers/*/logs/*.log
    fields:
      application: weblogic
    multiline.pattern: '^\&lt;'
    multiline.negate: true
    multiline.match: after

output.elasticsearch:
  hosts: &#091;"http://localhost:9200"]

And start Filebeat.</code></pre>



<h3 class="wp-block-heading" id="h-option-b-using-elastic-agent-recommended">Option B: Using Elastic Agent (Recommended)</h3>



<p class="wp-block-paragraph">Elastic Agent simplifies deployment by combining logs, metrics, and security data collection into a single agent managed centrally via Kibana Fleet.</p>



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



<ol class="wp-block-list">
<li>Enroll the agent from Kibana &#8211; Fleet.</li>



<li>Attach the System + Custom Log integration.</li>



<li>Configure the WebLogic log path.</li>



<li>Deploy the agent on your WebLogic server.</li>
</ol>



<p class="wp-block-paragraph">This approach reduces operational overhead and centralizes configuration.</p>



<h1 class="wp-block-heading" id="h-next-steps-amp-conclusion">Next steps &amp; Conclusion</h1>



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



<ul class="wp-block-list">
<li>Build Observability Dashboards in Kibana</li>



<li>Add APM for Transaction-Level Visibility</li>



<li>Enable Machine Learning for Predictive Monitoring</li>



<li>Configure Alerts</li>
</ul>



<p class="wp-block-paragraph">While WebLogic 14 provides essential administrative tooling, it does not offer full observability capabilities out of the box.</p>



<p class="wp-block-paragraph">By integrating it with the Elastic Stack, you gain:</p>



<ul class="wp-block-list">
<li>Real-time operational insight</li>



<li>Deep log and metric correlation</li>



<li>Predictive monitoring with machine learning</li>



<li>Actionable alerting</li>



<li>Transaction-level visibility</li>
</ul>



<p class="wp-block-paragraph">This approach scales from a single WebLogic instance to enterprise clusters and hybrid cloud deployments.</p>



<p class="wp-block-paragraph">In short: you move from reactive troubleshooting to proactive performance management.</p>



<p class="wp-block-paragraph"><a href="https://www.dbi-services.com/blog/category/elastic-stack/" target="_blank" rel="noreferrer noopener">See my Elastic blogs</a>.</p>



<p class="wp-block-paragraph"></p>
<p>L’article <a href="https://www.dbi-services.com/blog/weblogic-14-elastic-stack-from-metrics-to-predictive-insights/">WebLogic 14 &amp; Elastic Stack: From Metrics to Predictive Insights</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/weblogic-14-elastic-stack-from-metrics-to-predictive-insights/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>JBoss EAP &#8211; Credential Stores: from optional best practice to mandatory security baseline</title>
		<link>https://www.dbi-services.com/blog/jboss-eap-credential-stores-from-optional-best-practice-to-mandatory-security-baseline/</link>
					<comments>https://www.dbi-services.com/blog/jboss-eap-credential-stores-from-optional-best-practice-to-mandatory-security-baseline/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Thu, 19 Feb 2026 16:49:44 +0000</pubDate>
				<category><![CDATA[JBoss EAP]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=42501</guid>

					<description><![CDATA[<p>One of the most impactful (and often underestimated) differences between JBoss EAP 7.4 and JBoss EAP 8 is how credentials are handled. This is not just a documentation tweak or a recommendation shift. It is a hard security enforcement change driven by modern platform standards and compliance expectations from Red Hat. If you remember only [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-credential-stores-from-optional-best-practice-to-mandatory-security-baseline/">JBoss EAP &#8211; Credential Stores: from optional best practice to mandatory security baseline</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">One of the most impactful (and often underestimated) differences between JBoss EAP 7.4 and JBoss EAP 8 is how credentials are handled.</p>



<p class="wp-block-paragraph">This is not just a documentation tweak or a recommendation shift. It is a hard security enforcement change driven by modern platform standards and compliance expectations from Red Hat.</p>



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



<p class="wp-block-paragraph">If you remember only one thing from this article, remember this:</p>



<ul class="wp-block-list">
<li>JBoss EAP 7.4 allows credentials to be defined in multiple ways, including clear text.</li>



<li>JBoss EAP 8 forces the use of Credential Stores for sensitive resources such as datasources.</li>
</ul>



<h2 class="wp-block-heading" id="h-jboss-eap-7-4-credential-stores-were-optional"><strong>JBoss EAP 7.4: Credential Stores were OPTIONAL</strong></h2>



<ol class="wp-block-list">
<li></li>
</ol>



<p class="wp-block-paragraph">In EAP 7.4, Elytron credential stores were already available and recommended, but not enforced.</p>



<p class="wp-block-paragraph">All of the following were valid and supported:</p>



<ul class="wp-block-list">
<li>Clear-text passwords in standalone.xml</li>



<li>Encrypted expressions</li>



<li>Elytron credential-store</li>



<li>Legacy vault-based approaches (deprecated, but still functional)</li>
</ul>



<p class="wp-block-paragraph">A datasource like this was perfectly valid in 7.4:</p>



<pre class="wp-block-code"><code>&lt;datasource jndi-name="java:/jdbc/MyDS" pool-name="MyDS"&gt;
    &lt;connection-url&gt;jdbc:postgresql://db:5432/app&lt;/connection-url&gt;
    &lt;user-name&gt;app&lt;/user-name&gt;
    &lt;password&gt;secret123&lt;/password&gt;
&lt;/datasource&gt;</code></pre>



<h2 class="wp-block-heading" id="h-jboss-eap-8-credential-stores-are-effectively-mandatory"><strong>JBoss EAP 8: Credential Stores are EFFECTIVELY MANDATORY</strong></h2>



<p class="wp-block-paragraph">With JBoss EAP 8, Red Hat made a clear and intentional decision, sensitive credentials must no longer be stored directly in configuration files.</p>



<p class="wp-block-paragraph">What changed in practice:</p>



<ul class="wp-block-list">
<li>The element for datasources is no longer the supported approach</li>



<li>Datasources are expected to use credential-reference</li>



<li>Elytron is no longer just the default security framework, it is the only one</li>
</ul>



<p class="wp-block-paragraph">A valid datasource configuration in EAP 8 looks like this:</p>



<pre class="wp-block-code"><code>&lt;datasource jndi-name="java:/jdbc/MyDS" pool-name="MyDS"&gt;
    &lt;connection-url&gt;jdbc:postgresql://db:5432/app&lt;/connection-url&gt;
    &lt;user-name&gt;app&lt;/user-name&gt;
    &lt;credential-reference store="cs-db" alias="db-password"/&gt;
&lt;/datasource&gt;</code></pre>



<h2 class="wp-block-heading" id="h-why-this-enforcement-exists-in-eap-8">Why this enforcement exists in EAP 8</h2>



<p class="wp-block-paragraph">This change is not accidental or cosmetic. It aligns EAP with:</p>



<ul class="wp-block-list">
<li>OpenShift and container-native security expectations</li>



<li>Compliance-driven environments (CIS, ISO, regulated industries)</li>



<li>Modern “secrets management” practices</li>
</ul>



<h2 class="wp-block-heading" id="h-forced-does-not-mean-hard">“Forced” does not mean “hard”</h2>



<p class="wp-block-paragraph">A common fear when moving to EAP 8 is: “Now everything is complicated” because of security!</p>



<p class="wp-block-paragraph">In reality, the operational model becomes cleaner and more consistent.</p>



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



<ol class="wp-block-list">
<li>Create one credential store</li>



<li>Add secrets once</li>



<li>Reference them everywhere</li>
</ol>



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



<pre class="wp-block-code"><code>/subsystem=elytron/credential-store=cs-db:add(
  path=cs-db.jceks,
  relative-to=jboss.server.config.dir,
  credential-reference={clear-text=changeit}
)

/subsystem=elytron/credential-store=cs-db:add-alias(
  alias=db-password,
  secret-value=secret123
)
</code></pre>



<p class="wp-block-paragraph">From that point on:</p>



<ul class="wp-block-list">
<li>No passwords in XML</li>



<li>No passwords in Git</li>



<li>No accidental leaks</li>
</ul>



<h2 class="wp-block-heading" id="h-migration-impact-where-most-upgrades-fail">Migration impact: where most upgrades fail</h2>



<p class="wp-block-paragraph">When upgrading from EAP 7.4 to EAP 8, you must:</p>



<ul class="wp-block-list">
<li>Identify all clear-text credentials</li>



<li>Move them into credential stores</li>



<li>Replace &lt;password&gt; with &lt;credential-reference&gt;</li>
</ul>



<p class="wp-block-paragraph">This step is mandatory in EAP 8.</p>



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



<ul class="wp-block-list">
<li>If you already used credential stores in 7.4: migration is straightforward</li>



<li>If you didn’t: EAP 8 forces a long-overdue cleanup <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
</ul>



<p class="wp-block-paragraph">If you’re planning a move to JBoss EAP 8, I can help you get there safely.<br>From credential-store migration to full security hardening, I support organizations in turning a mandatory change into a controlled, successful upgrade.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-credential-stores-from-optional-best-practice-to-mandatory-security-baseline/">JBoss EAP &#8211; Credential Stores: from optional best practice to mandatory security baseline</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-credential-stores-from-optional-best-practice-to-mandatory-security-baseline/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Migrating from WildFly 26 to WildFly 38</title>
		<link>https://www.dbi-services.com/blog/migrating-from-wildfly-26-to-wildfly-38/</link>
					<comments>https://www.dbi-services.com/blog/migrating-from-wildfly-26-to-wildfly-38/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Wed, 18 Feb 2026 10:41:41 +0000</pubDate>
				<category><![CDATA[WildFly]]></category>
		<category><![CDATA[migration]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=42491</guid>

					<description><![CDATA[<p>I have been asked to migrate a customer environment from WildFly 26 to WildFly 38. That’s a meaningful upgrade, not just a version bump, because WildFly 38 represents the latest stable baseline with modern Jakarta EE support, updated security, and long-term compatibility with modern Java runtimes like OpenJDK 17&#8230; Before we dive into commands and [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/migrating-from-wildfly-26-to-wildfly-38/">Migrating from WildFly 26 to WildFly 38</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">I have been asked to migrate a customer environment from WildFly 26 to WildFly 38. That’s a meaningful upgrade, not just a version bump, because WildFly 38 represents the latest stable baseline with modern Jakarta EE support, updated security, and long-term compatibility with modern Java runtimes like OpenJDK 17&#8230;</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="683" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/01/d8277d18-12d3-4a45-97a5-6e1346f268dc-1024x683.png" alt="" class="wp-image-42492" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/01/d8277d18-12d3-4a45-97a5-6e1346f268dc-1024x683.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/01/d8277d18-12d3-4a45-97a5-6e1346f268dc-300x200.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/01/d8277d18-12d3-4a45-97a5-6e1346f268dc-768x512.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/01/d8277d18-12d3-4a45-97a5-6e1346f268dc.png 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



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



<p class="wp-block-paragraph">Before we dive into commands and configurations, let’s anchor this in version history and explain an important staging step that many teams overlook.</p>



<h2 class="wp-block-heading" id="h-wildfly-version-history">WildFly version history</h2>



<p class="wp-block-paragraph">WildFly releases follow a rapid cadence, but some versions carry particular importance for migration:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>Version</td><td>Release date</td><td>Notes</td></tr><tr><td><a href="https://www.wildfly.org/news/2021/12/16/WildFly-26-is-released/" target="_blank" rel="noreferrer noopener">WildFly 26</a></td><td>December 2021</td><td>Last in the older Java EE family with early Jakarta EE support. Many legacy configurations still present.</td></tr><tr><td><a href="https://www.wildfly.org/news/2025/04/10/WildFly-36-is-released/">WildFly 36</a></td><td>April 2025</td><td>Transitional release: consolidates Jakarta EE 9+ changes and stabilizes newer subsystems.</td></tr><tr><td><a href="https://www.wildfly.org/news/2025/11/17/WildFly-38-0-1-is-released/" target="_blank" rel="noreferrer noopener">WildFly 38</a></td><td>October 2025</td><td>Latest stable release with Jakarta EE 10 alignment, updated security policies, and official baseline for Java 17.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading" id="h-why-not-jump-directly-from-26-to-38">Why Not Jump Directly from 26 to 38?</h2>



<p class="wp-block-paragraph">In theory you could try, but in practice, this is discouraged for several reasons:</p>



<p class="wp-block-paragraph">     1. <strong>Evolving Jakarta EE Support</strong></p>



<p class="wp-block-paragraph">WildFly 26 still contains remnants of older namespace patterns from the earlier Jakarta EE transition. WildFly 38 assumes:</p>



<ul class="wp-block-list">
<li>Full Jakarta EE 10 compliance</li>



<li>Removal of deprecated subsystem elements</li>
</ul>



<p class="wp-block-paragraph">Staging through WildFly 36 means you pass through a version that:</p>



<ul class="wp-block-list">
<li>Consolidated many breaking changes</li>



<li>Served as a stepping stone for configuration syntax modernization</li>



<li>Was widely adopted and battle-tested by community users before WildFly 38</li>
</ul>



<p class="wp-block-paragraph">This reduces the “shock” of incompatible subsystems in one big jump.</p>



<p class="wp-block-paragraph">     2. <strong>Migration Tool Patching</strong></p>



<p class="wp-block-paragraph">The WildFly Migration Tool is better optimized when configurations change incrementally:</p>



<ul class="wp-block-list">
<li>From 26 to 36, the migration tool handles early syntax conversions</li>



<li>From 36 to 38, it can focus on more recent modular and namespace adjustments</li>
</ul>



<p class="wp-block-paragraph">If you try to leap directly from 26 to 38, the migration tool may:</p>



<ul class="wp-block-list">
<li>Miss subtle differences</li>



<li>Produce overly noisy reports</li>



<li>Increase your manual remediation effort</li>
</ul>



<p class="wp-block-paragraph">Staging through 36 results in cleaner migration scripts, fewer manual manual fixes, and a more predictable process.</p>



<p class="wp-block-paragraph">    3. <strong>Security and Subsystem Consistency</strong></p>



<p class="wp-block-paragraph">Between 26 and 38, several subsystems saw significant reconfiguration:</p>



<ul class="wp-block-list">
<li>Elytron security policy changes</li>



<li>Credential store formats</li>



<li>Datasource definitions (Oracle and others became stricter)</li>



<li>Logging and management interfaces</li>
</ul>



<p class="wp-block-paragraph">WildFly 36 introduced many of these changes incrementally so that:</p>



<ul class="wp-block-list">
<li>Administrators could adapt</li>



<li>Tooling could reflect real-world environments before further evolution in WildFly 38</li>
</ul>



<p class="wp-block-paragraph">This made 36 a natural “landing zone” between the older 26 semantics and the newer 38 mechanics.</p>



<h2 class="wp-block-heading" id="h-migration-flow">Migration Flow</h2>



<p class="wp-block-paragraph">The migration from WildFly 26 to WildFly 38 is intentionally performed in two controlled phases. This staged approach reduces risk, isolates problems earlier, and provides clear validation points before reaching the final production target.</p>



<h3 class="wp-block-heading" id="h-step-1-baseline-wildfly-26-current-state">Step 1 &#8211; Baseline: WildFly 26 (Current State)</h3>



<p class="wp-block-paragraph">The starting point is the existing WildFly 26 environment, typically running on Java 11 and hosting a stable, production-tested application.</p>



<p class="wp-block-paragraph">At this stage:</p>



<ul class="wp-block-list">
<li>The platform is known and stable</li>



<li>Configuration reflects historical decisions and legacy syntax</li>



<li>Security, datasources, and deployments are tightly coupled to this version</li>
</ul>



<p class="wp-block-paragraph">No changes are made here except:</p>



<ul class="wp-block-list">
<li>Full backups</li>



<li>Configuration review</li>



<li>Inventory of customizations</li>
</ul>



<p class="wp-block-paragraph">WildFly 26 remains untouched and fully rollback-capable throughout the migration.</p>



<h3 class="wp-block-heading" id="h-step-2-first-migration-wildfly-26-to-wildfly-36">Step 2 &#8211; First Migration: WildFly 26 to WildFly 36</h3>



<p class="wp-block-paragraph">The first technical migration is performed using the <strong>WildFly migration tool</strong>, targeting WildFly 36.</p>



<p class="wp-block-paragraph">This step focuses on:</p>



<ul class="wp-block-list">
<li>Converting legacy configuration syntax</li>



<li>Removing deprecated or removed subsystems</li>



<li>Preparing the configuration for newer Jakarta EE expectations</li>
</ul>



<p class="wp-block-paragraph">WildFly 36 acts as a transition platform:</p>



<ul class="wp-block-list">
<li>It supports Java 17</li>



<li>It consolidates many breaking changes introduced after WildFly 26</li>



<li>It allows configuration issues to be addressed incrementally rather than all at once</li>
</ul>



<p class="wp-block-paragraph">At this stage, the goal is not production readiness, but configuration correctness.</p>



<h3 class="wp-block-heading" id="h-step-3-staging-and-validation-on-wildfly-36">Step 3 &#8211; Staging and Validation on WildFly 36</h3>



<p class="wp-block-paragraph">Once the configuration is migrated, WildFly 36 is used as a staging environment for in-depth validation.</p>



<p class="wp-block-paragraph">Key activities include:</p>



<ul class="wp-block-list">
<li>Running WildFly on Java 17</li>



<li>Rebuilding or adjusting Elytron security components</li>



<li>Recreating credential stores</li>



<li>Validating datasource connectivity</li>



<li>Starting the application and ensuring it runs</li>



<li>Performing smoke tests and basic functional checks</li>



<li>Allowing customer or application teams to execute targeted tests</li>
</ul>



<p class="wp-block-paragraph">When all tests pass:</p>



<ul class="wp-block-list">
<li>Configuration is frozen</li>



<li>Known issues are documented</li>



<li>The environment is considered stable enough to move forward</li>
</ul>



<p class="wp-block-paragraph">This step significantly reduces uncertainty before the final upgrade.</p>



<h3 class="wp-block-heading" id="h-step-4-second-migration-wildfly-36-to-wildfly-38">Step 4 – Second Migration: WildFly 36 to WildFly 38</h3>



<p class="wp-block-paragraph">With a validated configuration on WildFly 36, the second migration step is executed toward WildFly 38.</p>



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



<ul class="wp-block-list">
<li>Uses the migration tool again</li>



<li>Applies final syntax and subsystem adjustments</li>



<li>Introduces stricter validation and enforcement present in WildFly 38</li>
</ul>



<p class="wp-block-paragraph">Because most major changes were already handled in the previous step, this migration is usually:</p>



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



<li>Cleaner</li>



<li>Easier to troubleshoot</li>
</ul>



<p class="wp-block-paragraph">WildFly 38 now represents the target platform, not just a test environment.</p>



<h3 class="wp-block-heading" id="h-step-5-final-validation-on-wildfly-38">Step 5 &#8211; Final Validation on WildFly 38</h3>



<p class="wp-block-paragraph">Before production rollout, WildFly 38 undergoes final validation:</p>



<ul class="wp-block-list">
<li>Server startup and stability checks</li>



<li>Security and datasource verification</li>



<li>Application deployment validation</li>



<li>Final smoke and regression tests</li>
</ul>



<p class="wp-block-paragraph">At this point, the platform should behave identically (or better) than WildFly 26, with the added benefits of:</p>



<ul class="wp-block-list">
<li>A modern Java runtime</li>



<li>Up-to-date Jakarta EE support</li>



<li>Improved security and maintainability</li>
</ul>



<h3 class="wp-block-heading" id="h-step-6-production-rollout-and-retirement-of-wildfly-26">Step 6 &#8211; Production Rollout and Retirement of WildFly 26</h3>



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



<ul class="wp-block-list">
<li>WildFly 38 is promoted to production</li>



<li>Traffic is switched according to the customer’s deployment strategy</li>



<li>WildFly 26 is retired in a controlled manner</li>
</ul>



<p class="wp-block-paragraph">Rollback remains trivial until decommissioning is complete, since:</p>



<ul class="wp-block-list">
<li>WildFly 26 was never modified</li>



<li>All migrations were performed side-by-side</li>
</ul>



<h2 class="wp-block-heading" id="h-summary">Summary</h2>



<p class="wp-block-paragraph">This staged migration approach ensures that:</p>



<ul class="wp-block-list">
<li>Configuration changes are isolated and understandable</li>



<li>Security and infrastructure issues are discovered early</li>



<li>Application teams have time to adapt and validate</li>



<li>Production risk is minimized</li>
</ul>



<p class="wp-block-paragraph">By treating WildFly 36 as a stabilization checkpoint, the transition to WildFly 38 becomes predictable, controlled, and repeatable.</p>



<p class="wp-block-paragraph">Don’t hesitate to reach out to discuss your WildFly or JBoss EAP migration project, we’ll be happy to help you move forward safely, efficiently, and with full transparency.</p>



<p class="wp-block-paragraph">Related interesting blog: <a href="https://www.dbi-services.com/blog/jboss-eap-vs-wildfly-whats-the-difference/">JBoss EAP vs Wildfly</a> </p>
<p>L’article <a href="https://www.dbi-services.com/blog/migrating-from-wildfly-26-to-wildfly-38/">Migrating from WildFly 26 to WildFly 38</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/migrating-from-wildfly-26-to-wildfly-38/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>From JBoss EAP 7 to 8: What Really Changed</title>
		<link>https://www.dbi-services.com/blog/from-jboss-eap-7-to-8-what-really-changed/</link>
					<comments>https://www.dbi-services.com/blog/from-jboss-eap-7-to-8-what-really-changed/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Mon, 06 Oct 2025 12:44:12 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[JBoss EAP]]></category>
		<category><![CDATA[migration]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=40762</guid>

					<description><![CDATA[<p>The arrival of JBoss EAP 8 marks a significant milestone in the evolution of Red Hat’s Enterprise Application Server. For many organizations still running on JBoss EAP 7.x, the upgrade brings not only new features but also strategic changes aligned with the modernization of the Java ecosystem.Let’s explore what really changed and what you need [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/from-jboss-eap-7-to-8-what-really-changed/">From JBoss EAP 7 to 8: What Really Changed</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">The arrival of JBoss EAP 8 marks a significant milestone in the evolution of Red Hat’s Enterprise Application Server. For many organizations still running on JBoss EAP 7.x, the upgrade brings not only new features but also strategic changes aligned with the modernization of the Java ecosystem.<br>Let’s explore what really changed and what you need to know before moving forward.</p>



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



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1225" height="817" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/Jboss-7-to-8-4.png" alt="" class="wp-image-40772" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/Jboss-7-to-8-4.png 1225w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/Jboss-7-to-8-4-300x200.png 300w" sizes="auto, (max-width: 1225px) 100vw, 1225px" /></figure>



<h2 class="wp-block-heading" id="h-a-shift-toward-jakarta-ee">A Shift Toward Jakarta EE</h2>



<p class="wp-block-paragraph">The most visible and impactful change in JBoss EAP 8 is the transition from Java EE to Jakarta EE.</p>



<ul class="wp-block-list">
<li>Namespace migration: All javax.* packages are now replaced by jakarta.*.</li>



<li>This means that even if your application compiles fine on EAP 7, it won’t deploy on EAP 8 without updating imports and dependencies.</li>



<li>While this migration can sound painful, it’s a necessary step to stay compatible with the modern Java ecosystem and future versions of Jakarta EE.</li>
</ul>



<p class="wp-block-paragraph">We can count on the Red Hat’s EAP Migration Toolkit to automatically detect and fix most of the package name changes.</p>



<h2 class="wp-block-heading" id="h-new-java-and-platform-support">New Java and Platform Support</h2>



<p class="wp-block-paragraph">JBoss EAP 8 officially supports Java 17 and later.<br>This brings performance, security, and syntax improvements, while dropping support for older Java versions (like Java 8 in many cases).</p>



<p class="wp-block-paragraph">Other platform updates include:</p>



<ul class="wp-block-list">
<li>Updated Undertow web server version for improved HTTP/2 and security.</li>



<li>Enhanced datasource and driver management via the CLI and management console.</li>



<li>Simplified configuration through YAML and CLI scripts, helping automate deployments and tuning.</li>
</ul>



<h2 class="wp-block-heading" id="h-updated-subsystems-and-architecture-improvements">Updated Subsystems and Architecture Improvements</h2>



<p class="wp-block-paragraph">EAP 8 brings a more modular, streamlined architecture:</p>



<ul class="wp-block-list">
<li>Legacy subsystems deprecated (e.g., older messaging or logging frameworks).</li>



<li>MicroProfile updates: More APIs for observability, configuration, and fault tolerance.</li>



<li>Improved clustering and domain mode management, faster startup and better node synchronization.</li>
</ul>



<p class="wp-block-paragraph">For administrators, these changes mean fewer manual tweaks and more consistent runtime behavior across environments.</p>



<h2 class="wp-block-heading" id="h-ready-for-the-cloud-for-real">Ready for the Cloud (for Real <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> )</h2>



<p class="wp-block-paragraph">Red Hat has made significant investments to make EAP 8 cloud-native:</p>



<ul class="wp-block-list">
<li>Better support for OpenShift and Kubernetes with optimized container images.</li>



<li>Smaller footprint and faster startup thanks to tuned modules and lazy loading.</li>



<li>Compatibility with Red Hat build of Quarkus for microservice migration paths.</li>
</ul>



<p class="wp-block-paragraph">In other words, JBoss EAP 8 is no longer just a traditional application server, it’s a hybrid platform that bridges the gap between legacy Java EE workloads and modern cloud architectures.</p>



<h2 class="wp-block-heading" id="h-security-and-compliance-enhancements">Security and Compliance Enhancements</h2>



<p class="wp-block-paragraph">Security was a major focus in JBoss EAP 8:</p>



<ul class="wp-block-list">
<li>Integrated Elytron 2 for modern authentication and authorization.</li>



<li>Stronger TLS configurations by default.</li>



<li>Simplified credential store management (replacing legacy vault mechanisms).</li>
</ul>



<p class="wp-block-paragraph">Administrators will appreciate the more centralized, policy-driven security model.</p>



<h2 class="wp-block-heading" id="h-my-experience-amp-recommendations">My Experience &amp; Recommendations</h2>



<p class="wp-block-paragraph">After long time working with both JBoss EAP 7 and JBoss EAP 8, I can say the migration is more about preparation than complexity.<br>The most common pitfalls I’ve seen include:</p>



<ul class="wp-block-list">
<li>Forgetting the Jakarta namespace migration.</li>



<li>Using old JDBC drivers or libraries no longer supported.</li>



<li>Missing dependencies when running in containerized environments.</li>
</ul>



<p class="wp-block-paragraph">Our best practice is always to:</p>



<ul class="wp-block-list">
<li>Test the migration in a clean environment.</li>



<li>Use automation (Ansible or CI/CD pipelines) for consistent builds.</li>



<li>Validate performance, logging, and metrics integration (especially with Zabbix or Elastic).</li>
</ul>



<p class="wp-block-paragraph">Once properly prepared, JBoss EAP 8 runs smoother, faster, and integrates much better with modern infrastructure.</p>



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



<p class="wp-block-paragraph">JBoss EAP 8 isn’t just an upgrade, it’s a modernization step.<br>It pushes Java EE into the Jakarta EE era, embraces cloud-native deployments, and simplifies operations for enterprises.<br>While the migration from EAP 7 requires careful planning, the long-term benefits in performance, maintainability, and compliance make it well worth the effort.</p>



<p class="wp-block-paragraph">If you’re planning a JBoss migration, feel free to reach out for guidance or a technical exchange.<br>Have a look at our <a href="https://www.dbi-services.com/blog/tag/jboss/" target="_blank" rel="noreferrer noopener">JBoss EAP blogs</a> for more insights.</p>



<p class="wp-block-paragraph">Happy to share,</p>



<p class="wp-block-paragraph">David</p>
<p>L’article <a href="https://www.dbi-services.com/blog/from-jboss-eap-7-to-8-what-really-changed/">From JBoss EAP 7 to 8: What Really Changed</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/from-jboss-eap-7-to-8-what-really-changed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WebLogic 14: What’s New and Why It Matters</title>
		<link>https://www.dbi-services.com/blog/weblogic-14-whats-new-and-why-it-matters/</link>
					<comments>https://www.dbi-services.com/blog/weblogic-14-whats-new-and-why-it-matters/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Mon, 29 Sep 2025 08:42:47 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[WebLogic]]></category>
		<category><![CDATA[release]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=40404</guid>

					<description><![CDATA[<p>After years working with WebLogic and other application servers (JBoss, WildFly, Tomcat, etc.), I’ve seen most of the challenges enterprises face: domains that refuse to start, clusters that behave unpredictably, and performance issues caused by poor configurations. What experience has taught me is clear: when Best Practices are applied, environments are far more stable and [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/weblogic-14-whats-new-and-why-it-matters/">WebLogic 14: What’s New and Why It Matters</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">After years working with WebLogic and other application servers (JBoss, WildFly, Tomcat, etc.), I’ve seen most of the challenges enterprises face: domains that refuse to start, clusters that behave unpredictably, and performance issues caused by poor configurations. What experience has taught me is clear: when Best Practices are applied, environments are far more stable and easier to manage.</p>



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



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="800" height="400" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1_xPL5LusRjLnv_qict4-KNA.jpg" alt="" class="wp-image-40481" style="width:631px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1_xPL5LusRjLnv_qict4-KNA.jpg 800w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1_xPL5LusRjLnv_qict4-KNA-300x150.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1_xPL5LusRjLnv_qict4-KNA-768x384.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">With the release of WebLogic 14.1.2, Oracle has introduced significant updates that directly affect stability, security, and modernization. Below is an overview of what’s new and what it means for organizations planning to upgrade.</p>



<h2 class="wp-block-heading">A Quick Stroll Through WebLogic History</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Version</th><th>Release Date</th><th>Comment</th></tr></thead><tbody><tr><td>10.3.x</td><td>2009–2012</td><td>The “legacy” version — still found in production in 2025.</td></tr><tr><td>12.1.x</td><td>2011</td><td>Added Java EE 6 support.</td></tr><tr><td>12.2.1.x</td><td>2015</td><td>Introduced multitenancy, scaling, and many incremental patches.</td></tr><tr><td>14.1.1</td><td>2020</td><td>First in the 14 series: Java EE 8, TLS defaults.</td></tr><tr><td>14.1.2</td><td>2024</td><td>Current release: JDK 17/21 support, stronger security, new tooling.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">What’s New in WebLogic 14</h2>



<h3 class="wp-block-heading">1. Modern Java Support</h3>



<p class="wp-block-paragraph">WebLogic 14.1.2 now officially supports <strong>JDK 17 and JDK 21</strong>. This provides access to performance improvements (e.g., G1GC, ZGC) and modern Java language features such as records, sealed classes, and switch expressions.</p>



<p class="wp-block-paragraph"><strong>Impact for organizations:</strong></p>



<ul class="wp-block-list">
<li>Applications gain performance and security improvements.</li>



<li>Stricter Java module system may expose hidden dependencies.</li>



<li>Legacy libraries or reflection-based solutions may fail.</li>



<li>Outdated JDBC drivers and frameworks may require upgrading.</li>
</ul>



<h3 class="wp-block-heading">2. Strengthened Security Defaults</h3>



<p class="wp-block-paragraph">Security has been significantly improved in WebLogic 14:</p>



<ul class="wp-block-list">
<li><strong>OpenID Connect</strong> support for integration with modern identity providers.</li>



<li><strong>TLS 1.0 and 1.1 removed</strong>; only strong cryptographic protocols are supported.</li>



<li><strong>Domain-specific demo certificates</strong> using PKCS12 keystores by default.</li>
</ul>



<p class="wp-block-paragraph"><strong>Impact for organizations:</strong></p>



<ul class="wp-block-list">
<li>Easier integration with enterprise authentication and identity management.</li>



<li>Legacy systems that depend on outdated SSL/TLS protocols will need upgrades.</li>
</ul>



<h3 class="wp-block-heading">3. Administration Console Evolution</h3>



<p class="wp-block-paragraph">The traditional WebLogic Admin Console has been retired and replaced with the <strong>Remote Console</strong>, a lightweight web application that communicates via REST APIs.</p>



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



<ul class="wp-block-list">
<li>Manage WebLogic securely from anywhere.</li>



<li>Console can be upgraded independently from the server.</li>
</ul>



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



<ul class="wp-block-list">
<li>Administrators must adapt to a new interface.</li>



<li>Existing procedures, documentation, and training materials will require updates.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="728" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1754382750771.jpg" alt="" class="wp-image-40480" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1754382750771.jpg 800w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1754382750771-300x273.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1754382750771-768x699.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<h3 class="wp-block-heading">4. Migration and Refactoring Tools</h3>



<p class="wp-block-paragraph">Oracle introduced two new tools to assist with upgrades:</p>



<ul class="wp-block-list">
<li><strong>Migration Analysis Tool (MAT):</strong> Scans applications and reports compatibility issues.</li>



<li><strong>OpenRewrite Recipes:</strong> Automates some application refactoring tasks.</li>
</ul>



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



<ul class="wp-block-list">
<li>These tools provide useful guidance, but results often require expert interpretation.</li>



<li>Automated refactoring may only cover part of the necessary work.</li>
</ul>



<h3 class="wp-block-heading">5. Clustering and Database Enhancements</h3>



<p class="wp-block-paragraph">Enhancements in high availability and database integration include:</p>



<ul class="wp-block-list">
<li><strong>Health-based routing:</strong> Routes requests to the healthiest available node.</li>



<li><strong>Database client modules:</strong> Simplify integration in Kubernetes and containerized environments.</li>



<li><strong>Improved failover and multi-data center support:</strong> Reduce complexity in HA deployments.</li>
</ul>



<p class="wp-block-paragraph"><strong>Impact for organizations:</strong></p>



<ul class="wp-block-list">
<li>More reliable clustering.</li>



<li>Simplified operations in cloud and hybrid environments.</li>



<li>Better resilience in multi-DC architectures.</li>
</ul>



<h2 class="wp-block-heading" id="h-should-you-upgrade">Should You Upgrade?</h2>



<p class="wp-block-paragraph">Short answer: yes. Long answer: yes, but carefully.</p>



<p class="wp-block-paragraph">Sticking with 12c in 2025 is like still using Internet Explorer &#8211; technically possible, but also technically embarrassing. At some point, Oracle’s support matrix will drop you, and then you’re one zero-day away from chaos.</p>



<p class="wp-block-paragraph">In another world, continuing to run WebLogic 12c in 2025 is increasingly difficult to justify:</p>



<ul class="wp-block-list">
<li>Security vulnerabilities accumulate as older versions leave support.</li>



<li>Integration with modern Java, Kubernetes, and identity providers becomes more challenging.</li>



<li>Oracle’s support matrix is moving forward, and legacy environments are becoming costly liabilities.</li>
</ul>



<h2 class="wp-block-heading">Final Thoughts</h2>



<p class="wp-block-paragraph">WebLogic 14 is not just an incremental update. It modernizes the platform with stronger security, cloud-native capabilities, and support for the latest Java standards. At the same time, it introduces changes that require careful planning to avoid disruption.</p>



<p class="wp-block-paragraph">This is where experienced guidance is valuable. With years of WebLogic consulting experience, I support organizations by:</p>



<ul class="wp-block-list">
<li>Auditing WebLogic installation for compatibility issues before migration.</li>



<li>Planning and executing upgrades with minimal downtime.</li>



<li>Configuring new security features and administration tools correctly.</li>



<li>Coaching development and operations teams to adapt to the changes.</li>
</ul>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> If your organization is considering upgrading to <strong>WebLogic 14</strong>, let’s discuss how to make the transition smooth, secure, and future-proof.</p>



<p class="wp-block-paragraph">Happy to share,</p>



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



<p class="wp-block-paragraph">Have a look to all <a href="https://www.dbi-services.com/blog/author/david-diab/" target="_blank" rel="noreferrer noopener">my blogs</a></p>
<p>L’article <a href="https://www.dbi-services.com/blog/weblogic-14-whats-new-and-why-it-matters/">WebLogic 14: What’s New and Why It Matters</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/weblogic-14-whats-new-and-why-it-matters/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle FMW 14 Installation &#8211; ORA-00439: feature not enabled: Fine-grained access control</title>
		<link>https://www.dbi-services.com/blog/oracle-fmw-14-installation-ora-00439-feature-not-enabled-fine-grained-access-control/</link>
					<comments>https://www.dbi-services.com/blog/oracle-fmw-14-installation-ora-00439-feature-not-enabled-fine-grained-access-control/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Tue, 23 Sep 2025 21:29:47 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[WebLogic]]></category>
		<category><![CDATA[Fusion Middleware]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[Oracle]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=39382</guid>

					<description><![CDATA[<p>This short blog is to share with you an issue we faced at a customer during Oracle Fusion Middleware 14 installation. Introduction and Symptoms An important step in the installation process is the Oracle Fusion Middleware Metadata repository creation using the RCU (Repository Creation Utility) which creates the necessary schemas for the components. But when [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-fmw-14-installation-ora-00439-feature-not-enabled-fine-grained-access-control/">Oracle FMW 14 Installation &#8211; ORA-00439: feature not enabled: Fine-grained access control</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">This short blog is to share with you an issue we faced at a customer during Oracle Fusion Middleware 14 installation.</p>



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



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="701" height="401" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1520187287514.jpg" alt="" class="wp-image-40316" style="width:573px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1520187287514.jpg 701w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1520187287514-300x172.jpg 300w" sizes="auto, (max-width: 701px) 100vw, 701px" /></figure>



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



<h2 class="wp-block-heading" id="h-introduction-and-symptoms">Introduction and Symptoms</h2>



<p class="wp-block-paragraph">An important step in the installation process is the Oracle Fusion Middleware Metadata repository creation using the RCU (Repository Creation Utility) which creates the necessary schemas for the components.</p>



<p class="wp-block-paragraph"> But when running the Repository Creation Utility (RCU) to load schemas on Oracle Database, schema creation fails with the below errors:</p>



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



<p class="wp-block-paragraph">In fact, the problem is seen as RCU tries to set up VPD stripes. In another world, RCU relies on fine-grained access control (FGAC) to manage schema creation and access within the Oracle database. </p>



<p class="wp-block-paragraph">The ORA-00439 error &#8220;feature not enabled: Fine-grained access control&#8221; in Oracle RCU (Repository Creation Utility) indicates that the database being used for RCU schema creation does not have the <strong>fine-grained access control feature enabled</strong>. This feature is only part of the <strong>Enterprise Edition</strong> of Oracle Database and is not available in Standard Edition!</p>



<p class="wp-block-paragraph">Let&#8217;s check <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="538" height="191" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/07/image-7.png" alt="" class="wp-image-39384" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/07/image-7.png 538w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/07/image-7-300x107.png 300w" sizes="auto, (max-width: 538px) 100vw, 538px" /></figure>



<p class="wp-block-paragraph">So, no way to do it with Standard Edition? No worries, there is a solution <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h2 class="wp-block-heading" id="h-solution">Solution</h2>



<p class="wp-block-paragraph">Oracle here is a patch to workaround this issue, so the steps will be:</p>



<ul class="wp-block-list">
<li>Download the patch</li>



<li>Apply the patch</li>



<li>Run the RCU to load the schemas</li>



<li>Continue with Domain configuration</li>
</ul>



<p class="wp-block-paragraph"><strong>Download the patch</strong></p>



<p class="wp-block-paragraph">Go to <a href="https://support.oracle.com/epmos/faces/ui/patch/PatchDetail.jspx?parent=DOCUMENT&amp;sourceId=3083393.1&amp;patchId=37506854" target="_blank" rel="noreferrer noopener">Patch 37506854</a> and download it, then move it to your working folder on the server.</p>



<p class="wp-block-paragraph"><strong>Apply the patch</strong></p>



<p class="wp-block-paragraph">Nothing really special here, apply the patch as any patch <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">Unzip the patch downloaded, go inside the folder 37506854, and apply the patch:</p>



<pre class="wp-block-code"><code>&#091;oracle@fmwserver working]$ cd 37506854
&#091;oracle@fmwserver 37506854]$ opatch apply
Oracle Interim Patch Installer version 13.9.4.2.17
Copyright (c) 2025, Oracle Corporation.  All rights reserved.


Oracle Home       : /u01/app/oracle/product/midw
Central Inventory : /u01/app/oracle/oraInventory
   from           : /u01/app/oracle/product/midw//oraInst.loc
OPatch version    : 13.9.4.2.17
OUI version       : 13.9.4.0.0
Log file location : /u01/app/oracle/product/midw/cfgtoollogs/opatch/opatch2025-07-10_11-22-38AM_1.log


OPatch detects the Middleware Home as "/u01/app/oracle/product/midw"

Verifying environment and performing prerequisite checks...
OPatch continues with these patches:   37506854

Do you want to proceed? &#091;y|n]
y
User Responded with: Y
All checks passed.

Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/u01/app/oracle/product/midw')


Is the local system ready for patching? &#091;y|n]
y
User Responded with: Y
Backing up files...
Applying interim patch '37506854' to OH '/u01/app/oracle/product/midw'

Patching component oracle.rcu.mds, 14.1.2.0.0...

Patching component oracle.rcu.mds, 14.1.2.0.0...
Patch 37506854 successfully applied.
Log file location: /u01/app/oracle/product/midw/cfgtoollogs/opatch/opatch2025-07-10_11-22-38AM_1.log

OPatch succeeded.</code></pre>



<p class="wp-block-paragraph"><strong>Retry the failed step</strong></p>



<p class="wp-block-paragraph">Now, the RCU should work fine and the domain creation could be done without issue.</p>



<p class="wp-block-paragraph">Have a look on all FMW <a href="https://www.dbi-services.com/blog/tag/oracle-fusion-middleware/" target="_blank" rel="noreferrer noopener">blogs</a>, more blogs to come about FMW 14 to highlight new features!</p>



<p class="wp-block-paragraph">If you have any questions don&#8217;t hesitate, please ask <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">Happy to share,</p>



<p class="wp-block-paragraph">David<br></p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-fmw-14-installation-ora-00439-feature-not-enabled-fine-grained-access-control/">Oracle FMW 14 Installation &#8211; ORA-00439: feature not enabled: Fine-grained access control</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-14-installation-ora-00439-feature-not-enabled-fine-grained-access-control/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Control-M for Kubernetes &#8211; Installation</title>
		<link>https://www.dbi-services.com/blog/control-m-for-kubernetes-installation/</link>
					<comments>https://www.dbi-services.com/blog/control-m-for-kubernetes-installation/#comments</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Mon, 30 Sep 2024 12:50:32 +0000</pubDate>
				<category><![CDATA[Control-M]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[kubernetes]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=34916</guid>

					<description><![CDATA[<p>After showing you an overview and the preparation of Control-M for Kubernetes, it is time to deep in with the installation of this solution. In fact, without the installation of Control-M for Kubernetes you can&#8217;t modernize your batch! In this blog, I will share with you how to do the installation of this solution step [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/control-m-for-kubernetes-installation/">Control-M for Kubernetes &#8211; Installation</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">After showing you an <a href="https://www.dbi-services.com/blog/control-m-for-kubernetes-overview/" target="_blank" rel="noreferrer noopener">overview</a> and the <a href="https://www.dbi-services.com/blog/control-m-for-kubernetes-preparation/" target="_blank" rel="noreferrer noopener">preparation</a> of Control-M for Kubernetes, it is time to deep in with the installation of this solution. In fact, without the installation of Control-M for Kubernetes you can&#8217;t modernize your batch!</p>



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



<p class="wp-block-paragraph">In this blog, I will share with you how to do the installation of this solution step by step. Let&#8217;s remember the architecture.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="710" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/Screenshot-2024-09-03-152037-1-1024x710.png" alt="" class="wp-image-34918" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/Screenshot-2024-09-03-152037-1-1024x710.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/Screenshot-2024-09-03-152037-1-300x208.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/Screenshot-2024-09-03-152037-1-768x533.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/Screenshot-2024-09-03-152037-1.png 1228w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="h-deploy-kubernetes-plug-in">Deploy kubernetes Plug-in</h2>



<p class="wp-block-paragraph">Firstly, download the Kubernetes Plugin, download the version 2.0.00 from the <a href="https://www.bmc.com/available/ddl.html?path=/LP/432491/432492&amp;fltk_=H1Xk4lhaAEEB4zdvEUcM1h6T8hJksIsesTplqG41Fye3juWNbvqKNjSOhPYDaNv4" target="_blank" rel="noreferrer noopener">Kubernetes plug-in download</a> page in the <a href="http://www.bmc.com/available/epd.html" target="_blank" rel="noreferrer noopener">Electronic Product Distribution</a> site.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="875" height="393" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-46.png" alt="" class="wp-image-34932" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-46.png 875w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-46-300x135.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-46-768x345.png 768w" sizes="auto, (max-width: 875px) 100vw, 875px" /></figure>



<p class="wp-block-paragraph">Once downloaded, publish the plug-in by putting the zip file in the following location: </p>



<pre class="wp-block-code"><code>$HOME_CTM/ctm_em/AUTO_DEPLOY
</code></pre>



<h2 class="wp-block-heading" id="h-generate-an-api-token">Generate an API Token</h2>



<p class="wp-block-paragraph">Basically, the API Token will be used later in the next step. In fact, we need to set up access to Control-M to register the Control-M/Agents, for sure, this step should be done by a Control-M Administrator.</p>



<p class="wp-block-paragraph">I assume that you know what is an API Token, and how to generate it, below are the steps quickly.</p>



<p class="wp-block-paragraph">To generate the API Token, go to the Control-M UI -&gt; Configuration, from the drop-down list, select API Tokens.</p>



<p class="wp-block-paragraph">The API Token tab appears, click Add Token.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="919" height="442" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-47.png" alt="" class="wp-image-34933" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-47.png 919w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-47-300x144.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-47-768x369.png 768w" sizes="auto, (max-width: 919px) 100vw, 919px" /></figure>



<p class="wp-block-paragraph">To generate the API Token, fill the following:</p>



<ul class="wp-block-list">
<li>The Token Name field.</li>



<li>The Roles field, remove or select the roles that you want to associate with the API Token (by default all roles are selected, which is not recommended).</li>



<li>Expiration Date, select Indefinitely from the drop-down list.</li>
</ul>



<p class="wp-block-paragraph">Click on Generate button.</p>



<h2 class="wp-block-heading" id="h-prepare-the-control-m-agent-deployment">Prepare the Control-M Agent deployment</h2>



<p class="wp-block-paragraph">I recommend to deploy the agent using the Helm shared by BMC! It is easy to configure and to maintain in a Kubernetes cluster.</p>



<p class="wp-block-paragraph">First of all, add a repository named controlm to contain the helm charts of the Control-M/Agent that is obtained from the Control-M Repository by running the following:</p>



<pre class="wp-block-code"><code>helm repo add controlm https://controlm-charts.s3.us-west-2.amazonaws.com/
</code></pre>



<p class="wp-block-paragraph">Then, ensure that the Control-M repository is listed as one of your repositories by running the following command line:</p>



<pre class="wp-block-code"><code>helm repo list</code></pre>



<p class="wp-block-paragraph">You can also list the charts within the new controlm repo by running the following command:</p>



<pre class="wp-block-code"><code>helm search repo controlm</code></pre>



<p class="wp-block-paragraph">Create the namespace, by executing the following:</p>



<pre class="wp-block-code"><code>kubectl create namespace ctmagt
</code></pre>



<h2 class="wp-block-heading" id="h-control-m-agent-deployment">Control-M Agent deployment</h2>



<p class="wp-block-paragraph">To deploy the Control-M Agent you should execute the Helm Install inside your kubernetes cluster:</p>



<pre class="wp-block-code"><code>helm install ctm-dbi controlm/controlm-agent --version 9.21.200 \
--set server.name=dbitest --set server.host=dbitest --set server.port=7005 --set server.ip=XX.XX.XX.XX \
--set api.endpoint=https://dbitest.x.com:8446/automation-api \
--set api.token=b2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX== \
--set pvc.storageClass=dbistorage</code></pre>



<p class="wp-block-paragraph">Adapt the command line to your environment!</p>



<p class="wp-block-paragraph">Check the pod status on the namespace (ctmagt) just created, once the agents pods are ready, check if they appear in Control-M -&gt; Configuration.</p>



<p class="wp-block-paragraph">By default, two pods should be created, two agents deployed. Sometimes agents are not available directly, don&#8217;t hesitate to disable and enable them.</p>



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



<p class="wp-block-paragraph">Finally, we have two Control-M agents deployed on Kubernetes.</p>



<p class="wp-block-paragraph">In the next blog we will see how to create the connection profile, and how to create Control-M jobs to execute Kubernetes jobs.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/control-m-for-kubernetes-installation/">Control-M for Kubernetes &#8211; Installation</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/control-m-for-kubernetes-installation/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>JBoss EAP &#8211; Credential Store</title>
		<link>https://www.dbi-services.com/blog/jboss-eap-credential-store/</link>
					<comments>https://www.dbi-services.com/blog/jboss-eap-credential-store/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Thu, 26 Sep 2024 15:45:23 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[JBoss EAP]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=34864</guid>

					<description><![CDATA[<p>In the previous blogs, I explained the difference between Credential Store and Password Vault (Credential Store vs Password Vault), and I share how to secure your sensitive strings with Password Vault. Today, one more blog to give the whole view, how to use Credential Store in JBoss EAP! What is the Credential Store? Introduced with [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-credential-store/">JBoss EAP &#8211; Credential Store</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">In the previous blogs, I explained the difference between Credential Store and Password Vault (<a href="https://www.dbi-services.com/blog/jboss-eap-credential-store-vs-password-vault/" target="_blank" rel="noreferrer noopener">Credential Store vs Password Vault</a>), and I share how to secure your sensitive strings with <a href="https://www.dbi-services.com/blog/jboss-eap-7-use-vault-to-protect-your-passwords/" target="_blank" rel="noreferrer noopener">Password Vault</a>. Today, one more blog to give the whole view, how to use Credential Store in JBoss EAP!</p>



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



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="498" height="217" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-21.png" alt="" class="wp-image-34867" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-21.png 498w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/image-21-300x131.png 300w" sizes="auto, (max-width: 498px) 100vw, 498px" /></figure>



<h2 class="wp-block-heading" id="h-what-is-the-credential-store">What is the Credential Store?</h2>



<p class="wp-block-paragraph">Introduced with the elytron subsystem, credential stores allow for secure storage and usage of credentials. As all of the configuration files in (<code><em>EAP_HOME</em>/standalone/configuration/</code> and <code><em>EAP_HOME</em>/domain/configuration/</code>) are world readable by default. It is strongly recommended to not store plaintext passwords in the configuration files, and instead place these credentials in the Credential Store.</p>



<p class="wp-block-paragraph">Please note all following command are base on JBoss EAP in Standalone mode.</p>



<h2 class="wp-block-heading" id="h-create-a-credential-store">Create a Credential Store</h2>



<p class="wp-block-paragraph">The Credential Store is stored in a file, the place of your choice, you must define the path to this file at creation time. At creation time, you need also to provide the master password that will be used to encrypt the credential store.</p>



<pre class="wp-block-code"><code>/subsystem=elytron/credential-store=dbi_store:add(location="cred_stores/dbi_store.jceks", relative-to=jboss.server.data.dir, credential-reference={clear-text=secretpassword}, create=true)</code></pre>



<p class="wp-block-paragraph">This CLI command creates a new store named dbi_store, and creates the file jboss.server.data.dir/cred_stores/dbi_store.jceks.</p>



<p class="wp-block-paragraph">This will implement a default Credential Store, there is a way to implement custom store by adding a module and create a provider loader. To keep this blog readable the custom Credential Store could be shared in a next blog.</p>



<h2 class="wp-block-heading" id="h-add-a-credential-to-credential-store">Add a credential to Credential Store</h2>



<p class="wp-block-paragraph">Basically, the idea is to store credentials in the Credential Store, so how to add credentials?</p>



<p class="wp-block-paragraph">The following CLI command adds a credential in a the credential store created before:</p>



<pre class="wp-block-code"><code>/subsystem=elytron/credential-store=dbi_store:add-alias(alias=database-pw, secret-value="my_speci@l_P1$$w0rd_DB")</code></pre>



<p class="wp-block-paragraph">the alias is the one to be referenced later!</p>



<h2 class="wp-block-heading" id="h-use-the-credential-stored-in-the-credential-store">Use the credential stored in the Credential Store</h2>



<p class="wp-block-paragraph">Once the credential is stored in the Credential Store, it is quite easy and secure to refer to it.</p>



<p class="wp-block-paragraph">In fact, to refer to a sensitive string stored in a credential store, use the <em>credential-reference</em> attribute in the JBoss EAP Configuration, like the following:</p>



<pre class="wp-block-code"><code>credential-reference={store=STORE_NAME, alias=ALIAS}</code></pre>



<p class="wp-block-paragraph">Fore example, to create a datasource using the password I just added to the credential store dbi_store, I have to execute the following:</p>



<pre class="wp-block-code"><code>data-source add --name=dbi_DS --jndi-name=java:/dbi_DS --driver-name=h2 --connection-url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE --user-name=db_user --credential-reference={store=dbi_store, alias=database-pw}</code></pre>



<p class="wp-block-paragraph">So, instead of providing the password the credential-reference including the store name and alias is provided.<br>JBoss EAP configured this datasource as following:</p>



<pre class="wp-block-code"><code>/subsystem=datasources/data-source=dbi_DS:read-resource()
{
    "outcome" =&gt; "success",
    "result" =&gt; {
        ...
        "credential-reference" =&gt; {
            "store" =&gt; "dbi_store",
            "alias" =&gt; "database-pw"
        },
        ...
        "password" =&gt; undefined,
        ...
    }
}</code></pre>



<p class="wp-block-paragraph">Note that the password is undefined and the credential-reference attribute is defined instead.</p>



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



<h2 class="wp-block-heading" id="h-list-the-credentials">List the credentials</h2>



<p class="wp-block-paragraph">At any time, you can list the aliases of all credentials contained in a credential store using the following CLI Command:</p>



<pre class="wp-block-code"><code>/subsystem=elytron/credential-store=dbi_store:read-aliases()
{
    "outcome" =&gt; "success",
    "result" =&gt; &#091;
        "database-pw"
    ]
}
</code></pre>



<h2 class="wp-block-heading" id="h-remove-a-credential">Remove a credential</h2>



<p class="wp-block-paragraph">Well you guess it, you can manage everything via CLI, as any other subsystem. That is why I prefer using Credential Store <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">So to remove a credential, execute the following command:</p>



<pre class="wp-block-code"><code>/subsystem=elytron/credential-store=dbi_store:remove-alias(alias=database-pw)</code></pre>



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



<p class="wp-block-paragraph">You know how to create Credential Store, store and use credentials in a secure way.</p>



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



<p class="wp-block-paragraph">Please note that it is important to disabled the CLI history before executing commands with passwords. This avoid saving the command and so password in clear text in the CLI History!</p>



<pre class="wp-block-code"><code>history --disable</code></pre>



<p class="wp-block-paragraph">If you already executed with commands with passwords, it is not too late <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> clear the history asap:</p>



<pre class="wp-block-code"><code>history --clear</code></pre>



<p class="wp-block-paragraph"><strong>Do you need any help?</strong> dbi services experts can help you to install and configure JBoss EAP according to Best Practices&#8230; Not only JBoss EAP, check the list of Application Servers <a href="https://www.dbi-services.com/expertises/application-servers/" target="_blank" rel="noreferrer noopener">here</a>.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-credential-store/">JBoss EAP &#8211; Credential Store</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-credential-store/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>JBoss EAP &#8211; Credential Store vs Password Vault</title>
		<link>https://www.dbi-services.com/blog/jboss-eap-credential-store-vs-password-vault/</link>
					<comments>https://www.dbi-services.com/blog/jboss-eap-credential-store-vs-password-vault/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Wed, 25 Sep 2024 15:19:26 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[JBoss EAP]]></category>
		<category><![CDATA[vault]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=34841</guid>

					<description><![CDATA[<p>JBoss EAP configuration files are accessible and not encrypted (xml files), moreover, some sensitive strings could/should be store there&#8230; For obvious security reasons, JBoss EAP allows the encryption of the sensitive strings outside the configurations files. The sensitive strings can be stored in a keystore, and subsequently decrypted for applications and systems. There is two [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-credential-store-vs-password-vault/">JBoss EAP &#8211; Credential Store vs Password Vault</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">JBoss EAP configuration files are accessible and not encrypted (xml files), moreover, some sensitive strings could/should be store there&#8230; For obvious security reasons, JBoss EAP allows the encryption of the sensitive strings outside the configurations files.</p>



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



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="633" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/1_g12X-h7ZqMW23ajVZP6eQQ-1024x633.png" alt="" class="wp-image-34845" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/1_g12X-h7ZqMW23ajVZP6eQQ-1024x633.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/1_g12X-h7ZqMW23ajVZP6eQQ-300x185.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/1_g12X-h7ZqMW23ajVZP6eQQ-768x475.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/1_g12X-h7ZqMW23ajVZP6eQQ-1536x949.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/09/1_g12X-h7ZqMW23ajVZP6eQQ.png 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The sensitive strings can be stored in a keystore, and subsequently decrypted for applications and systems. There is two ways to encrypt sensitive strings outside JBoss EAP configuration files:</p>



<ul class="wp-block-list">
<li>Credential Store</li>



<li>Password Vault</li>
</ul>



<p class="wp-block-paragraph">Please note that even with credential store or password vault, it is recommended to limit the access of configuration files (EAP_HOME/standalone/configuration or EAP_HOME/domain/configuration) to few users.</p>



<p class="wp-block-paragraph">Let&#8217;s understand each one first.</p>



<h2 class="wp-block-heading" id="h-credential-store">Credential Store</h2>



<p class="wp-block-paragraph">The Credential Store has been introduced in <a href="https://docs.redhat.com/en/documentation/red_hat_jboss_enterprise_application_platform/7.1/" target="_blank" rel="noreferrer noopener">JBoss EAP 7.1</a> with the elytron subsystem, it can safely secure sensitive and plan text strings by encryption them in a storage file. Each JBoss EAP server can contain multiple credential stores.</p>



<p class="wp-block-paragraph">The default credential store implementation uses a JCEKS keystore file to store credentials. When creating a new credential store, the default implementation also allows you to reference an existing keystore file or have JBoss EAP automatically create one for you. </p>



<p class="wp-block-paragraph">Please note that elytron subsystem doesn&#8217;t provide any checks for using the same file storage to multiple credential stores, but it is strongly recommended not to use the same file for multiple credential stores.</p>



<p class="wp-block-paragraph">I will share with you in a next blog how to:</p>



<ul class="wp-block-list">
<li>Create a Credential Store in Standalone and domain mode</li>



<li>Add a Credential to the Credential Store</li>



<li>Use the stored Credential in the configuration</li>



<li>List the Credentials in the Credentials store</li>



<li>Remove a Credential from a Credential Store</li>
</ul>



<h2 class="wp-block-heading" id="h-password-vault">Password Vault</h2>



<p class="wp-block-paragraph">The Password Vault uses the Java Keystore as its storage mechanism. Password vault consists of two parts: storage and key storage. Java keystore is used to store the key, which is used to encrypt or decrypt sensitive strings in Vault storage.</p>



<p class="wp-block-paragraph">I already explained what is the Password vault and how to use it with example in this <a href="https://www.dbi-services.com/blog/jboss-eap-7-use-vault-to-protect-your-passwords/" target="_blank" rel="noreferrer noopener">blog</a>.</p>



<h2 class="wp-block-heading" id="h-credential-store-vs-password-vault">Credential Store vs Password Vault</h2>



<p class="wp-block-paragraph">Well, if you are reading this blog this means that you have probably not yet secured your sensitive strings <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph"> Please note that both methods are supported by Red Hat, however, using a Credential Store is preferred to using a Password Vault, because of the following reasons:</p>



<ul class="wp-block-list">
<li>Credential Store allow for easier credential management with the JBoss EAP management CLI, while you need to use an external tool with Password Vault (see <a href="https://www.dbi-services.com/blog/jboss-eap-7-use-vault-to-protect-your-passwords/" target="_blank" rel="noreferrer noopener">blog</a>)</li>



<li>Using multiple Credential Stores is allowed, while you are limited to only one Password Vault per JBoss EAP server.</li>
</ul>



<p class="wp-block-paragraph">So, if you are about to secure your sensitive string, no doubt go with Credential Store. Otherwise, if you are already using Password Vault you have the choice to keep it or migrate your sensitive strings to Credential Store.</p>



<p class="wp-block-paragraph">I hope that this blog helped you to understand the difference between both, you can now make your choice.</p>



<p class="wp-block-paragraph">As promised, I will share more details about the Credential Store configuration, so stay connected <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-credential-store-vs-password-vault/">JBoss EAP &#8211; Credential Store vs Password Vault</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-credential-store-vs-password-vault/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-06-16 14:55:39 by W3 Total Cache
-->