<?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>Archives des JBoss EAP - dbi Blog</title>
	<atom:link href="https://www.dbi-services.com/blog/tag/jboss-eap/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbi-services.com/blog/tag/jboss-eap/</link>
	<description></description>
	<lastBuildDate>Thu, 01 Oct 2026 06:49:08 +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>Archives des JBoss EAP - dbi Blog</title>
	<link>https://www.dbi-services.com/blog/tag/jboss-eap/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>JBoss EAP: From Traditional Application Server to Modern Enterprise Runtime</title>
		<link>https://www.dbi-services.com/blog/jboss-eap-from-traditional-application-server-to-modern-enterprise-runtime/</link>
					<comments>https://www.dbi-services.com/blog/jboss-eap-from-traditional-application-server-to-modern-enterprise-runtime/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Thu, 01 Oct 2026 06:49:06 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[JBoss EAP]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=45513</guid>

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<li>hardcoded JNDI names,</li>



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



<li>local filesystem dependencies,</li>



<li>legacy security mechanisms,</li>



<li>clustering assumptions,</li>



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



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



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



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



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



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



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



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



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



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



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



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

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<li>Immutable deployments,</li>



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



<li>Centralized logs,</li>



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



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



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



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



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



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



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



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



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



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



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



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



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



<li>Security integration,</li>



<li>Filesystem dependencies,</li>



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



<li>JVM tuning,</li>



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



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



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



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



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



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



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



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



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



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



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



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



<p class="wp-block-paragraph">If you would like more information or need support with JBoss EAP, from troubleshooting and performance optimization to upgrades and patching, feel free to contact me. I can also support you in assessing and planning the migration of your JBoss workloads to OpenShift or Kubernetes.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/moving-jboss-eap-workloads-to-openshift/">Moving JBoss EAP Workloads to OpenShift</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/moving-jboss-eap-workloads-to-openshift/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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>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 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="(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>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>
		<item>
		<title>JBoss EAP 7 &#8211; Use vault to protect passwords</title>
		<link>https://www.dbi-services.com/blog/jboss-eap-7-use-vault-to-protect-your-passwords/</link>
					<comments>https://www.dbi-services.com/blog/jboss-eap-7-use-vault-to-protect-your-passwords/#comments</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Mon, 04 Sep 2023 11:59:58 +0000</pubDate>
				<category><![CDATA[WebLogic]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[JBoss EAP]]></category>
		<category><![CDATA[JBoss-EAP]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[WildFly]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=27571</guid>

					<description><![CDATA[<p>JBoss EAP simplifies a lot of server configuration by consolidating all subsystem configurations into a single XML file (standalone.xml or domain.xml). This, however, can expose sensitive information to any user that has access to the configuration files. For example, datasource credentials are by default stored in plain text in the XML file. In this blog [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-7-use-vault-to-protect-your-passwords/">JBoss EAP 7 &#8211; Use vault to protect passwords</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 simplifies a lot of server configuration by consolidating all subsystem configurations into a  single XML file (standalone.xml or domain.xml). This, however, can expose sensitive information to any user that has access to the configuration files. For example, datasource credentials are by default stored in plain text in the XML file. In this blog I will show you how to protect your passwords!</p>



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



<h2 class="wp-block-heading" id="h-what-is-the-vault-password">What is the vault password?</h2>



<p class="wp-block-paragraph">The vault encrypts sensitive strings, stores them in an encrypted keystore, and decrypts them for  applications and verification systems. To avoid leaving sensitive credentials readable in the <em>standalone.xml</em> or <em>domain.xml</em> files, you can store passwords or other attributes in the vault and then reference the vault from within the server configuration file. </p>



<p class="wp-block-paragraph">Using a vault creates a level of abstraction and obfuscates data which could otherwise be read by anyone who has access to the configuration files. Please note that the access to the configuration files should be anyway restricted.</p>



<h2 class="wp-block-heading" id="h-create-a-java-keystore-to-store-sensitive-strings">Create a Java Keystore to store sensitive strings</h2>



<p class="wp-block-paragraph">The vault utilizes a keystore by using the certificate stored in the keystore as an encryption key for the  vault as a whole. To initialize the vault, users need to first create the JavaSE keystore. The following is the syntax used to create a private key, a certificate and to store them in a keystore:</p>



<pre class="wp-block-code"><code>keytool -genseckey -alias &lt;alias&gt; -keyalg &lt;algorithm&gt; -storetype &lt;type&gt; -keysize size -keystore &lt;filepath&gt;</code></pre>



<ul class="wp-block-list">
<li>alias: The alias is a unique identifier for the vault or other data stored in the keystore.</li>



<li>keyalg: The algorithm to use for encryption.</li>



<li>storetype: The keystore type. jceks is the recommended type.</li>



<li>keysize The size of the encryption key which determines the difficulty in brute forcing the<br>key.</li>



<li>keystore: The file path and file name in which the keystore&#8217;s values are stored.</li>
</ul>



<p class="wp-block-paragraph">The below is an example:</p>



<pre class="wp-block-code"><code>&#091;jboss@vmjboss jboss]# keytool -genseckey -alias vault -keyalg AES -storetype jceks -keysize 128 -keystore /app/jboss/vault.keystore
Enter keystore password:  
Re-enter new password: 
Enter key password for &lt;vault&gt;
	(RETURN if same as keystore password):  

Warning:
The JCEKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /app/jboss/vault.keystore -destkeystore /app/jboss/vault.keystore -deststoretype pkcs12".
&#091;jboss@vmjboss jboss]# ls -rtl /app/jboss/
total 4
-rw-r--r-- 1 jboss jboss 500 Sep  4 10:56 vault.keystore</code></pre>



<p class="wp-block-paragraph">After running the command, you will be prompted for a keystore password and a keystore file will be created at /app/jboss/vault.keystore.</p>



<h2 class="wp-block-heading" id="h-using-the-vault">Using the vault</h2>



<p class="wp-block-paragraph">The vault can be initialized either interactively, by providing each parameter one at a time, or by providing all of the parameters initially.</p>



<p class="wp-block-paragraph">The following is an example of the syntax used to initialize the vault:</p>



<pre class="wp-block-code"><code>vault.sh --keystore KEYSTORE_URL --keystore-password KEYSTORE_PASSWORD --alias KEYSTORE_ALIAS --vault-block VAULT_BLOCK --attribute ATTRIBUTE --sec-attr SEC-ATTR --enc-dir ENC_FILE_DIR --iteration ITERATION_COUNT --salt SALT</code></pre>



<p class="wp-block-paragraph">The following parameters are required to initialize the vault:</p>



<ul class="wp-block-list">
<li>KEYSTORE_URL: The path to the previously created keystore file.</li>



<li>KEYSTORE_PASSWORD: The password to access the keystore that was used at the keystore&#8217;s<br>creation.</li>



<li>SALT: A random string of eight characters used to encrypt the attribute stored in the vault.</li>



<li>KEYSTORE_ALIAS: The alias that identifies the certificate stored in the keystore.</li>



<li>ITERATION_COUNT: The number of times encryption is run.</li>



<li>ENC_FILE_DIR: The path where the encrypted files are stored.</li>



<li>VAULT_BLOCK: The name to be given to the block in the vault.</li>



<li>ATTRIBUTE: The name of the attribute being stored. For example, &#8220;password&#8221; as an attribute<br>name when storing a password value.</li>



<li>SEC-ATTR: The value being stored.</li>
</ul>



<p class="wp-block-paragraph">The following is an example with the parameters populated:</p>



<pre class="wp-block-code"><code>&#091;jboss@vmjboss bin]# vault.sh --keystore /app/jboss/vault.keystore --keystore-password password --alias vault --vault-block blog --attribute password --sec-attr blogpass --enc-dir /app/jboss/ --iteration 50 --salt 12345678</code></pre>



<p class="wp-block-paragraph">After running the vault.sh command, an XML definition of the vault is displayed, which needs to be added to the server configuration files. The following is an example of the XML that needs to be added to either the <em>standalone.xml</em> or <em>host.xml </em>configuration file directly before the section:</p>



<pre class="wp-block-code"><code>&lt;vault&gt;
&lt;vault-option name="KEYSTORE_URL" value="/app/jboss/vault.keystore"/&gt;
&lt;vault-option name="KEYSTORE_PASSWORD" value="MASK-31x/z0Xn83H4JaL0h5eK/N"/&gt;
&lt;vault-option name="KEYSTORE_ALIAS" value="vault"/&gt;
&lt;vault-option name="SALT" value="12345678"/&gt;
&lt;vault-option name="ITERATION_COUNT" value="50"/&gt;
&lt;vault-option name="ENC_FILE_DIR" value="/app/jboss/"/&gt;
&lt;/vault&gt;</code></pre>



<p class="wp-block-paragraph">The final step is to replace the sensitive data with a reference to the attribute in the vault. The vault.sh command provides the exact syntax necessary to reference the secured attribute after all of the parameters are provided. Using the previous example, the vault command generated the following:</p>



<pre class="wp-block-code"><code>VAULT::blog::password::1</code></pre>



<p class="wp-block-paragraph">In order to use this reference, use the following syntax within the server configuration:</p>



<pre class="wp-block-code"><code>${VAULT::VAULT_BLOCK::ATTRIBUTE_NAME::1}</code></pre>



<p class="wp-block-paragraph">The following can replace the previous password in the server configuration for the blog datasource password:</p>



<pre class="wp-block-code"><code>${VAULT::blog::password::1}</code></pre>



<p class="wp-block-paragraph">After replacing the password for the datasource, the server configuration for the datasource will look similar to the following:</p>



<pre class="wp-block-code"><code>&lt;datasource jndi-name="java:jboss/datasources/blogope" ...&gt;
&lt;connection-url&gt;...&lt;/connection-url&gt;
&lt;driver&gt;mysql&lt;/driver&gt;
&lt;security&gt;
&lt;user-name&gt;blogadmin&lt;/user-name&gt;
&lt;password&gt;<strong>${VAULT::blog::password::1}</strong>&lt;/password&gt;
&lt;/security&gt;
&lt;/datasource&gt;</code></pre>



<p class="wp-block-paragraph">In this blog we saw how to protect passwords or any sensitive data in configuration files. Don&#8217;t forget to restrict the access to your configuration files also!</p>



<p class="wp-block-paragraph">Don&#8217;t hesitate to comment this blog, for any question or to share your experience with vault within JBoss EAP. </p>



<p class="wp-block-paragraph">Some blogs around JBoss EAP:</p>



<ul class="wp-block-list">
<li>J<a href="https://www.dbi-services.com/blog/jboss-eap-7-modules-extensions-subsystems-and-profiles/">Boss EAP 7 – Modules, Extensions, Subsystems, and Profiles</a></li>



<li><a href="https://www.dbi-services.com/blog/jboss-eap-7-domain-creation/">JBoss EAP 7 – Domain creation</a></li>



<li><a href="https://www.dbi-services.com/blog/jboss-eap-7-cluster-in-standalone-mode/">JBoss EAP 7 – Cluster in Standalone mode</a></li>
</ul>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-7-use-vault-to-protect-your-passwords/">JBoss EAP 7 &#8211; Use vault to protect passwords</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-7-use-vault-to-protect-your-passwords/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>JBoss-EAP and WildFly Official Docker Images</title>
		<link>https://www.dbi-services.com/blog/jboss-eap-and-wildfly-official-docker-images/</link>
					<comments>https://www.dbi-services.com/blog/jboss-eap-and-wildfly-official-docker-images/#comments</comments>
		
		<dc:creator><![CDATA[Middleware Team]]></dc:creator>
		<pubDate>Thu, 06 Apr 2023 10:44:30 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[container]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Docker CLI]]></category>
		<category><![CDATA[JBoss EAP]]></category>
		<category><![CDATA[WildFly]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=24345</guid>

					<description><![CDATA[<p>In this blog, I will focus on what is available from vendor for the two application servers I am used to work with: JBoss EAP and WildFly. Along this blog, I will show few tips and concepts on docker commands. JBoss EAP from RedHat Registry For JBoss EAP, the best option is to get it [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-and-wildfly-official-docker-images/">JBoss-EAP and WildFly Official Docker Images</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 this blog, I will focus on what is available from vendor for the two application servers I am used to work with: JBoss EAP and WildFly. Along this blog, I will show few tips and concepts on docker commands.</p>



<h2 class="wp-block-heading">JBoss EAP from RedHat Registry</h2>



<p class="wp-block-paragraph">For JBoss EAP, the best option is to get it from RedHat. To be able to pull image from RedHat registry, we must first register on <a href="https://registry.redhat.io" target="_blank" rel="noreferrer noopener">registry.redhat.io</a>. and create a <a href="https://access.redhat.com/terms-based-registry/" target="_blank" rel="noreferrer noopener">service account</a>:</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-10_09_13-Red-Hat-Customer-Portal-Token-Generator-—-Mozilla-Firefox.png" alt="" class="wp-image-24360" width="600" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-10_09_13-Red-Hat-Customer-Portal-Token-Generator-—-Mozilla-Firefox.png 795w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-10_09_13-Red-Hat-Customer-Portal-Token-Generator-—-Mozilla-Firefox-300x182.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-10_09_13-Red-Hat-Customer-Portal-Token-Generator-—-Mozilla-Firefox-768x467.png 768w" sizes="(max-width: 795px) 100vw, 795px" /></figure>



<p class="wp-block-paragraph">Add a name and an option description and click Create. Next screen shows the generated token:</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-10_10_57-Red-Hat-Customer-Portal-Token-Generator-—-Mozilla-Firefox.png" alt="" class="wp-image-24361" width="700" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-10_10_57-Red-Hat-Customer-Portal-Token-Generator-—-Mozilla-Firefox.png 823w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-10_10_57-Red-Hat-Customer-Portal-Token-Generator-—-Mozilla-Firefox-300x153.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-10_10_57-Red-Hat-Customer-Portal-Token-Generator-—-Mozilla-Firefox-768x393.png 768w" sizes="(max-width: 823px) 100vw, 823px" /></figure>



<p class="wp-block-paragraph">Since I will be using Docker, I select the Docker Login tab, which automatically prepares the command for me to log in to the RedHat registry:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
docker login -u=&#039;*******|*****&#039; -p=*********...******** registry.redhat.io
</pre></div>


<p class="wp-block-paragraph">Expected output is <code>Login Succeeded</code>.</p>



<p class="wp-block-paragraph">Then, we are ready to pull the image:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
docker pull registry.redhat.io/jboss-eap-7/eap74-openjdk11-runtime-openshift-rhel8:7.4.10-3
</pre></div>


<p class="wp-block-paragraph">This pulls JBoss EAP 7.4 with patch 10 with JDK 11 on RedHat 8:</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-10_46_26-JBoss-EAP-7.docx-Word-1024x392.png" alt="" class="wp-image-24365" width="700" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-10_46_26-JBoss-EAP-7.docx-Word-1024x392.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-10_46_26-JBoss-EAP-7.docx-Word-300x115.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-10_46_26-JBoss-EAP-7.docx-Word-768x294.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-10_46_26-JBoss-EAP-7.docx-Word.png 1059w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Image Version Explained</figcaption></figure>



<p class="wp-block-paragraph">The image version, 3 in the example above, is the version published by RedHat based on unique combination of other values. They might publish a new image for a given JDK, but not for another.</p>



<p class="wp-block-paragraph">It is possible to filter existing images using <code>docker search</code>. For example, getting the list of all 7.4 images available on RedHat registry:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
$ docker search registry.redhat.io/jboss-eap-7/eap74
NAME                                                  DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
jboss-eap-7/eap74-openjdk17-openshift-rhel8           rhcc_registry.access.redhat.com_jboss-eap-7/…   0
jboss-eap-7/eap74-openjdk8-openshift-rhel7            JBoss EAP 7.4 with OpenJDK8                     0
jboss-eap-7/eap74-openjdk11-openshift-rhel8           JBoss EAP 7.4 with OpenJDK11                    0
jboss-eap-7/eap74-openjdk17-runtime-openshift-rhel8   rhcc_registry.access.redhat.com_jboss-eap-7/…   0
jboss-eap-7/eap74-openj9-11-openshift-rhel8           JBoss EAP 7.4 with OpenJDK11 + OpenJ9           0
jboss-eap-7/eap74-openjdk11-runtime-openshift-rhel8   JBoss EAP 7.4 with OpenJDK11 (Runtime Image)    0
jboss-eap-7/eap74-openjdk8-runtime-openshift-rhel7    JBoss EAP 7.4 with OpenJDK8 (Runtime Image)     0
jboss-eap-7/eap74-openj9-11-runtime-openshift-rhel8   JBoss EAP 7.4 with OpenJDK11 + OpenJ9 (Runti…   0
</pre></div>


<h2 class="wp-block-heading">WildFly on Quay.io</h2>



<p class="wp-block-paragraph"><a href="https://quay.io/" target="_blank" rel="noreferrer noopener">Quay</a> is a container registry hosted by RedHat and could also be deployed on premises. We will pull WildFly image from Quay. As it does not require any login and will be a straightforward process:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
docker pull quay.io/wildfly/wildfly:27.0.1.Final-jdk11
</pre></div>


<p class="wp-block-paragraph">Comparably to JBoss EAP pull command, we can know the version we are getting:</p>



<ul class="wp-block-list">
<li><code>27.0.1</code> is WildFly version</li>



<li><code>jdk11</code> is JDK version</li>
</ul>



<h3 class="wp-block-heading">Running the Image</h3>



<p class="wp-block-paragraph">Wait, in JBoss EAP, we only pulled the image and did not run it. Let&#8217;s do it for WildFly.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
docker run quay.io/wildfly/wildfly:27.0.1.Final-jdk11
</pre></div>


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


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
...
09:40:51,946 INFO  &#x5B;org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0006: Undertow HTTP listener default listening on 0.0.0.0:8080
09:40:52,327 INFO  &#x5B;org.jboss.as.ejb3] (MSC service thread 1-5) WFLYEJB0493: Jakarta Enterprise Beans subsystem suspension complete
09:40:52,400 INFO  &#x5B;org.wildfly.extension.undertow] (MSC service thread 1-7) WFLYUT0006: Undertow HTTPS listener https listening on 0.0.0.0:8443
09:40:52,405 INFO  &#x5B;org.jboss.as.server.deployment.scanner] (MSC service thread 1-6) WFLYDS0013: Started FileSystemDeploymentService for directory /opt/jboss/wildfly/standalone/deployments
09:40:52,416 INFO  &#x5B;org.jboss.as.patching] (MSC service thread 1-2) WFLYPAT0050: WildFly Full cumulative patch ID is: base, one-off patches include: none
09:40:52,498 INFO  &#x5B;org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) WFLYJCA0001: Bound data source &#x5B;java:jboss/datasources/ExampleDS]
09:40:52,576 INFO  &#x5B;org.jboss.ws.common.management] (MSC service thread 1-6) JBWS022052: Starting JBossWS 6.1.0.Final (Apache CXF 3.5.2.jbossorg-4)
09:40:52,757 INFO  &#x5B;org.jboss.as.server] (Controller Boot Thread) WFLYSRV0212: Resuming server
09:40:52,761 INFO  &#x5B;org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 27.0.1.Final (WildFly Core 19.0.1.Final) started in 5410ms - Started 290 of 563 services (357 services are lazy, passive or on-demand) - Server configuration file in use: standalone.xml
09:40:52,764 INFO  &#x5B;org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://127.0.0.1:9990/management
09:40:52,764 INFO  &#x5B;org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990
</pre></div>


<p class="wp-block-paragraph">This is nice and quick, but why can&#8217;t I access this URL? If I am checking <code>netstat -lnp</code> output, I will not see anything binding on 9990 despite what log says. This is because I forgot to expose port outside of the container (i.e. the host), so let&#8217;s modify the command:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
docker run -p 9990:9990 quay.io/wildfly/wildfly:27.0.1.Final-jdk11
</pre></div>


<p class="wp-block-paragraph">Despite this change, I can&#8217;t still access the administration console. This time, it is because, by default, WildFly does not bind it to external IP of server (container in this example), thus we have to tune docker command further. Here it will not be docker specific argument, but WildFly:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
docker run -p 9990:9990 quay.io/wildfly/wildfly:27.0.1.Final-jdk11 /opt/jboss/wildfly/bin/standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0
</pre></div>


<p class="wp-block-paragraph">Now, we are prompted for credentials which means it is up, but I can&#8217;t find the credentials anywhere.</p>



<h3 class="wp-block-heading">Building a Custom Container Image</h3>



<p class="wp-block-paragraph">Docker defined a file format to be able to extend an existing image. As the aim of an application server like WildFly is to run web application, additionally to setup an administrator account, we will deploy one web application. Dockerfile will look like:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: yaml; title: ; notranslate">
FROM quay.io/wildfly/wildfly:27.0.1.Final-jdk11
RUN /opt/jboss/wildfly/bin/add-user.sh admin ********
ADD helloworld.war /opt/jboss/wildfly/standalone/deployments/
CMD &#x5B;&quot;/opt/jboss/wildfly/bin/standalone.sh&quot;, &quot;-b&quot;, &quot;0.0.0.0&quot;, &quot;-bmanagement&quot;, &quot;0.0.0.0&quot;]
</pre></div>


<p class="wp-block-paragraph">The explanation of each line:</p>



<ol class="wp-block-list">
<li><strong>FROM</strong>: The source docker image</li>



<li><strong>RUN</strong>: A command run which will modify the image</li>



<li><strong>ADD</strong>: Copy a local file into the image</li>



<li><strong>CMD</strong>: Container starting command with arguments. This will make our docker command shorter.</li>
</ol>



<p class="wp-block-paragraph">To build the image, I am running <code>docker build --tag=wildfly-web-app .</code> in the directory where Dockerfile is stored (note the extra point at the end of the command):</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
&#x5B;+] Building 1.8s (8/8) FINISHED
 =&amp;gt; &#x5B;internal] load .dockerignore                                                                                                                                                                                                      0.1s
 =&amp;gt; =&amp;gt; transferring context: 2B                                                                                                                                                                                                        0.0s
 =&amp;gt; &#x5B;internal] load build definition from Dockerfile                                                                                                                                                                                   0.1s
 =&amp;gt; =&amp;gt; transferring dockerfile: 200B                                                                                                                                                                                                   0.0s
 =&amp;gt; &#x5B;internal] load metadata for quay.io/wildfly/wildfly:27.0.1.Final-jdk11                                                                                                                                                            0.0s
 =&amp;gt; &#x5B;1/3] FROM quay.io/wildfly/wildfly:27.0.1.Final-jdk11                                                                                                                                                                              0.1s
 =&amp;gt; &#x5B;internal] load build context                                                                                                                                                                                                      0.1s
 =&amp;gt; =&amp;gt; transferring context: 74.39kB                                                                                                                                                                                                   0.0s
 =&amp;gt; &#x5B;2/3] RUN /opt/jboss/wildfly/bin/add-user.sh admin admin                                                                                                                                                                           1.4s
 =&amp;gt; &#x5B;3/3] ADD helloworld.war /opt/jboss/wildfly/standalone/deployments/                                                                                                                                                                0.1s
 =&amp;gt; exporting to image                                                                                                                                                                                                                 0.1s
 =&amp;gt; =&amp;gt; exporting layers                                                                                                                                                                                                                0.1s
 =&amp;gt; =&amp;gt; writing image sha256:e3d58dc0ebe2554ce7f9e5e7da2a5483c7e7c6801159ec05a45c5d66577c46d9                                                                                                                                           0.0s
 =&amp;gt; =&amp;gt; naming to docker.io/library/wildfly-web-app
</pre></div>


<p class="wp-block-paragraph">Now, I have a new docker image available:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
REPOSITORY                        TAG                  IMAGE ID       CREATED          SIZE
wildfly-web-app                   latest               e3d58dc0ebe2   33 seconds ago   848MB
</pre></div>


<p class="wp-block-paragraph">Let&#8217;s run it with an additional exposed port for the web app:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
docker run -p 9990:9990 -p 8080:8080 wildfly-web-app
</pre></div>


<p class="wp-block-paragraph">It is up and ready:</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-12_30_11-Welcome-to-WildFly-—-Mozilla-Firefox.png" alt="" class="wp-image-24404" width="500" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-12_30_11-Welcome-to-WildFly-—-Mozilla-Firefox.png 585w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-12_30_11-Welcome-to-WildFly-—-Mozilla-Firefox-300x288.png 300w" sizes="(max-width: 585px) 100vw, 585px" /></figure>



<p class="wp-block-paragraph">With a deployed web application:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="930" height="409" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-12_31_18-fdfbb9057599-_-Management-Console-—-Mozilla-Firefox.png" alt="" class="wp-image-24405" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-12_31_18-fdfbb9057599-_-Management-Console-—-Mozilla-Firefox.png 930w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-12_31_18-fdfbb9057599-_-Management-Console-—-Mozilla-Firefox-300x132.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-06-12_31_18-fdfbb9057599-_-Management-Console-—-Mozilla-Firefox-768x338.png 768w" sizes="auto, (max-width: 930px) 100vw, 930px" /><figcaption class="wp-element-caption">helloworld deployment</figcaption></figure>



<h2 class="wp-block-heading">My Opinion</h2>



<p class="wp-block-paragraph">Even if these pre-built images are nice, we must extend them in a way or another, thus I prefer to use <a href="https://www.dbi-services.com/products/yak/" target="_blank" rel="noreferrer noopener">YaK</a> to deploy and configure ready to use servers with our best practices already embedded.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-and-wildfly-official-docker-images/">JBoss-EAP and WildFly Official Docker Images</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-and-wildfly-official-docker-images/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>JBoss EAP Patching</title>
		<link>https://www.dbi-services.com/blog/jboss-eap-patching/</link>
					<comments>https://www.dbi-services.com/blog/jboss-eap-patching/#respond</comments>
		
		<dc:creator><![CDATA[Middleware Team]]></dc:creator>
		<pubDate>Mon, 03 Apr 2023 18:27:41 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[JBoss EAP]]></category>
		<category><![CDATA[OWASP]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=24280</guid>

					<description><![CDATA[<p>jboss-cli tool comes with a command named patch. As the process is obvious, this blog will be short. Nevertheless, it is still interesting to see how it changes files and directories structure of JBoss binaries. It&#8217;s worth noting that RedHat does not offer newer versions of JBoss EAP that come with patches pre-installed, so all [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-patching/">JBoss EAP Patching</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-cli tool comes with a command named <code>patch</code>. As the process is obvious, this blog will be short. Nevertheless, it is still interesting to see how it changes files and directories structure of JBoss binaries.</p>



<p class="wp-block-paragraph">It&#8217;s worth noting that RedHat does not offer newer versions of JBoss EAP that come with patches pre-installed, so all new installations must be patched (at least for major versions).</p>



<h2 class="wp-block-heading">Global Availability Version</h2>



<p class="wp-block-paragraph">In my fresh installation of JBoss-EAP, I starts <code>jboss-cli.sh</code> (without connecting to a server) and verify the <code>version</code>:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
&#x5B;disconnected /] version
JBoss Admin Command-line Interface
JBOSS_HOME: C:\Users\ols\Documents\Technical\JBoss\Installers\jboss-eap-7.4
Release: &amp;lt;connect to the controller and re-run the version command to see the release info&amp;gt;
JAVA_HOME: C:\Installations\jdk11.0.16_9
java.version: 11.0.16.1
java.vm.vendor: Amazon.com Inc.
java.vm.version: 11.0.16.1+9-LTS
os.name: Windows 10
os.version: 10.0
</pre></div>


<p class="wp-block-paragraph">I can also confirm the patching level with command <code>patch info</code>:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
Version:             7.4.0.GA
Cumulative patch ID: base
One-off patches:     none
</pre></div>


<h2 class="wp-block-heading">Patching</h2>



<p class="wp-block-paragraph">Still in cli, the command is as simple as <code>patch apply &lt;path-to-zip&gt;</code>. For the example below, we will patch with jboss-eap-7.4.10-patch.zip:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
&#x5B;disconnected /] patch apply ../../jboss-eap-7.4.10-patch.zip
{
    &quot;outcome&quot; : &quot;success&quot;,
    &quot;result&quot; : {}
}
</pre></div>


<p class="wp-block-paragraph">Followed by a <code>patch info</code> to confirm the version:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
Version:             7.4.10.GA
Cumulative patch ID: jboss-eap-7.4.10.CP
One-off patches:     none
</pre></div>


<p class="wp-block-paragraph">It is also possible to list all patches installed with <code>patch history</code>:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
{
    &quot;outcome&quot; : &quot;success&quot;,
    &quot;result&quot; : &#x5B;{
        &quot;patch-id&quot; : &quot;jboss-eap-7.4.10.CP&quot;,
        &quot;type&quot; : &quot;cumulative&quot;,
        &quot;applied-at&quot; : &quot;03/04/2023 16:47&quot;,
        &quot;aged-out&quot; : false
    }]
}
</pre></div>


<p class="wp-block-paragraph">If server is running, do not forget to restart after patching with <code>reload</code>.</p>



<h2 class="wp-block-heading">What About Rollback?</h2>



<p class="wp-block-paragraph">You probably guessed it, at this point, to rollback, we must provide the patch-id:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
&#x5B;disconnected /] patch rollback jboss-eap-7.4.10.CP
Option: --reset-configuration is required for this command.
</pre></div>


<p class="wp-block-paragraph">Wait, it did not rollback. Why? Because, we must decide if we want to keep the currently running configuration or want to rollback it at the time the patching has been done. Two options exist:</p>



<ul class="wp-block-list">
<li>If no configuration changes were done since patch was applied, there is no risk to rollback configuration along with binaries.</li>



<li>If there were configuration changes, there is a risk for inconsistency between configuration and running modules. Testing is necessary even if the risk is low.</li>
</ul>



<h2 class="wp-block-heading">Impact on Directory Structure</h2>



<p class="wp-block-paragraph">A patch contains following files:</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-03-17_05_53-C__Users_ols_Documents_Technical_JBoss_Installers_jboss-eap-7.4.10-patch.zip_.png" alt="" class="wp-image-24283" width="250" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-03-17_05_53-C__Users_ols_Documents_Technical_JBoss_Installers_jboss-eap-7.4.10-patch.zip_.png 408w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/04/2023-04-03-17_05_53-C__Users_ols_Documents_Technical_JBoss_Installers_jboss-eap-7.4.10-patch.zip_-254x300.png 254w" sizes="(max-width: 408px) 100vw, 408px" /><figcaption class="wp-element-caption">Files in JBoss patch</figcaption></figure>



<p class="wp-block-paragraph">The XML files contain a description of what needs to be patched. Folders contain binaries and are as follow:</p>



<ol class="wp-block-list">
<li><em>jboss-eap-7.4.10.CP</em> contains all files that are not modules</li>



<li><em>layer-base-jboss-eap-7.4.10.CP</em> contains similar structure as in modules directory of JBoss installation</li>
</ol>



<p class="wp-block-paragraph">Thus, when installing a patch file, it will not be applied the same way.</p>



<p class="wp-block-paragraph">For modules (point 2), patching will consist of a simple copy of the folder under <code>modules\system\layers\base\.overlays</code> plus creation of a .overlays directory. Files under that directory will take precedence when server will start which means if this directory is altered patching might be broken.</p>



<p class="wp-block-paragraph">For other binaries (point 1), patching will consist of backing up files to patch under <code>.installation</code> directory (keeping directory structure) at root of JBoss home directory.</p>



<p class="wp-block-paragraph">Why speaking about that? Because some tools like <a href="https://owasp.org/www-project-dependency-check/" target="_blank" rel="noreferrer noopener">dependency-check</a> will continue to report component vulnerabilities after patching as either patched files are backup in <code>.information</code> directory or they stay in <code>modules</code> directory. This is the reason why the results of these types of tools must be carefully and thoroughly analyzed.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-patching/">JBoss EAP Patching</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-patching/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WildFly monitoring in Prometheus</title>
		<link>https://www.dbi-services.com/blog/wildfly-monitoring-in-prometheus/</link>
					<comments>https://www.dbi-services.com/blog/wildfly-monitoring-in-prometheus/#comments</comments>
		
		<dc:creator><![CDATA[Middleware Team]]></dc:creator>
		<pubDate>Tue, 21 Mar 2023 13:14:25 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[JBoss EAP]]></category>
		<category><![CDATA[JBoss-EAP]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Prometheus]]></category>
		<category><![CDATA[WildFly]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=23695</guid>

					<description><![CDATA[<p>In this blog, we will see how easy it is to add a WildFly server into a Prometheus setup. Metrics Fortunately, WildFly comes with a integrated metrics subsystem which is included in all out-of-the-box profiles. In the management console, we can go in subsystem and then metric menu to access settings: There are not many [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/wildfly-monitoring-in-prometheus/">WildFly monitoring in Prometheus</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 this blog, we will see how easy it is to add a WildFly server into a Prometheus setup.</p>



<h2 class="wp-block-heading">Metrics</h2>



<p class="wp-block-paragraph">Fortunately, WildFly comes with a integrated metrics subsystem which is included in all out-of-the-box profiles.</p>



<p class="wp-block-paragraph">In the management console, we can go in subsystem and then metric menu to access settings:</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-10_23_08-srv-linux-wls-ols-1-_-Management-Console-—-Mozilla-Firefox-1024x490.png" alt="" class="wp-image-23698" width="700" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-10_23_08-srv-linux-wls-ols-1-_-Management-Console-—-Mozilla-Firefox-1024x490.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-10_23_08-srv-linux-wls-ols-1-_-Management-Console-—-Mozilla-Firefox-300x143.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-10_23_08-srv-linux-wls-ols-1-_-Management-Console-—-Mozilla-Firefox-768x367.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-10_23_08-srv-linux-wls-ols-1-_-Management-Console-—-Mozilla-Firefox.png 1481w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">There are not many parameters, but I will not complain. By default, all subsystems&#8217; metrics are exposed with <code>wildfly</code> as prefix and without any security restriction.</p>



<p class="wp-block-paragraph">So let&#8217;s confirm metrics are exposed by accessing metrics URL (http://&lt;hostname&gt;:9990/metrics):</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
# HELP base_classloader_loadedClasses_total Displays the total number of classes that have been loaded since the Java virtual machine has started execution.
# TYPE base_classloader_loadedClasses_total counter
base_classloader_loadedClasses_total 21584.0
# HELP base_classloader_loadedClasses_count Displays the number of classes that are currently loaded in the Java virtual machine.
# TYPE base_classloader_loadedClasses_count gauge
base_classloader_loadedClasses_count 21433.0
# HELP base_classloader_unloadedClasses_total Displays the total number of classes unloaded since the Java virtual machine has started execution.
# TYPE base_classloader_unloadedClasses_total counter
base_classloader_unloadedClasses_total 151.0
# HELP base_cpu_availableProcessors Displays the number of processors available to the Java virtual machine. This value may change during a particular invocation of the virtual machine.
# TYPE base_cpu_availableProcessors gauge
base_cpu_availableProcessors 2.0
# HELP base_cpu_processCpuLoad Displays the &quot;recent cpu usage&quot; for the Java Virtual Machine process.
# TYPE base_cpu_processCpuLoad gauge
base_cpu_processCpuLoad 0.01848998459167951
...
</pre></div>


<p class="wp-block-paragraph">We are ready to integrate it into Prometheus.</p>



<h2 class="wp-block-heading">Prometheus Integration</h2>



<p class="wp-block-paragraph">To achieve that, we will edit Prometheus configuration file (i.e. prometheus.yml) and add a new job:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: yaml; title: ; notranslate">
scrape_configs:
  - job_name: &#039;metrics&#039;
    scrape_interval: 15s
    static_configs:
      - targets: &#x5B;&#039;hostname:9990&#039;]
</pre></div>


<p class="wp-block-paragraph">Then, we can start our Prometheus server and confirm if metrics are gathered properly. For that, go on http://prometheus:9090/ and browse to Status and then Targets:</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-10_58_57-Prometheus-Time-Series-Collection-and-Processing-Server-—-Mozilla-Firefox.png" alt="" class="wp-image-23707" width="500" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-10_58_57-Prometheus-Time-Series-Collection-and-Processing-Server-—-Mozilla-Firefox.png 557w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-10_58_57-Prometheus-Time-Series-Collection-and-Processing-Server-—-Mozilla-Firefox-300x158.png 300w" sizes="(max-width: 557px) 100vw, 557px" /></figure>



<p class="wp-block-paragraph">You should see the WildFly endpoint in the list with a &#8220;UP&#8221; state:</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-10_49_09-Prometheus-Time-Series-Collection-and-Processing-Server-—-Mozilla-Firefox.png" alt="" class="wp-image-23708" width="800" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-10_49_09-Prometheus-Time-Series-Collection-and-Processing-Server-—-Mozilla-Firefox.png 956w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-10_49_09-Prometheus-Time-Series-Collection-and-Processing-Server-—-Mozilla-Firefox-300x55.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-10_49_09-Prometheus-Time-Series-Collection-and-Processing-Server-—-Mozilla-Firefox-768x141.png 768w" sizes="(max-width: 956px) 100vw, 956px" /></figure>



<p class="wp-block-paragraph">Even if all subsystems are exposed, that does not necessarily mean everything in the subsystem is exposed. For example, I have a JDBC data source declared in my configuration, but I can&#8217;t find any metrics in the list. This has to be enabled on per data source basis.</p>



<p class="wp-block-paragraph">Default state (Statistics Enabled = false):</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1018" height="445" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-11_16_20-srv-linux-wls-ols-1-_-Management-Console-—-Mozilla-Firefox.png" alt="" class="wp-image-23715" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-11_16_20-srv-linux-wls-ols-1-_-Management-Console-—-Mozilla-Firefox.png 1018w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-11_16_20-srv-linux-wls-ols-1-_-Management-Console-—-Mozilla-Firefox-300x131.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-11_16_20-srv-linux-wls-ols-1-_-Management-Console-—-Mozilla-Firefox-768x336.png 768w" sizes="auto, (max-width: 1018px) 100vw, 1018px" /></figure>



<p class="wp-block-paragraph">Click &#8220;Edit&#8221; and switch statistics ON:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="853" height="345" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-11_17_58-srv-linux-wls-ols-1-_-Management-Console-—-Mozilla-Firefox.png" alt="" class="wp-image-23716" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-11_17_58-srv-linux-wls-ols-1-_-Management-Console-—-Mozilla-Firefox.png 853w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-11_17_58-srv-linux-wls-ols-1-_-Management-Console-—-Mozilla-Firefox-300x121.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-11_17_58-srv-linux-wls-ols-1-_-Management-Console-—-Mozilla-Firefox-768x311.png 768w" sizes="auto, (max-width: 853px) 100vw, 853px" /></figure>



<p class="wp-block-paragraph">This can also be done with jboss-cli command:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
/subsystem=datasources/data-source=:write-attribute(name=statistics-enabled,value=true)
</pre></div>


<p class="wp-block-paragraph">Now, refresh WildFly metrics web page to see the new metrics:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
...
# HELP wildfly_datasources_pool_active_count The active count
# TYPE wildfly_datasources_pool_active_count gauge
wildfly_datasources_pool_active_count{data_source=&quot;OracleDS&quot;} 1.0
# HELP wildfly_datasources_pool_available_count The available count
# TYPE wildfly_datasources_pool_available_count gauge
wildfly_datasources_pool_available_count{data_source=&quot;OracleDS&quot;} 20.0
# HELP wildfly_datasources_pool_average_blocking_time Average Blocking Time for pool
# TYPE wildfly_datasources_pool_average_blocking_time gauge
wildfly_datasources_pool_average_blocking_time{data_source=&quot;OracleDS&quot;} 0.0
# HELP wildfly_datasources_pool_average_creation_time The average time spent creating a physical connection
# TYPE wildfly_datasources_pool_average_creation_time gauge
wildfly_datasources_pool_average_creation_time{data_source=&quot;OracleDS&quot;} 3138.0
# HELP wildfly_datasources_pool_average_get_time The average time spent obtaining a physical connection
# TYPE wildfly_datasources_pool_average_get_time gauge
wildfly_datasources_pool_average_get_time{data_source=&quot;OracleDS&quot;} 652.0
# HELP wildfly_datasources_pool_average_pool_time The average time for a physical connection spent in the pool
# TYPE wildfly_datasources_pool_average_pool_time gauge
wildfly_datasources_pool_average_pool_time{data_source=&quot;OracleDS&quot;} 5890.0
# HELP wildfly_datasources_pool_average_usage_time The average time spent using a physical connection
# TYPE wildfly_datasources_pool_average_usage_time gauge
wildfly_datasources_pool_average_usage_time{data_source=&quot;OracleDS&quot;} 4.0
...
</pre></div>


<p class="wp-block-paragraph">There are similar settings for almost all subsystems like, for example, undertow the web server part:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
/subsystem=undertow:write-attribute(name=statistics-enabled,value=true)
</pre></div>


<h2 class="wp-block-heading">What&#8217;s Next?</h2>



<p class="wp-block-paragraph">Then, it is just a matter of configuring Grafana to query Prometheus and add metrics in dashboards:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="925" height="684" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-14_10_14-New-dashboard-Dashboards-Grafana-—-Mozilla-Firefox.png" alt="" class="wp-image-23762" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-14_10_14-New-dashboard-Dashboards-Grafana-—-Mozilla-Firefox.png 925w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-14_10_14-New-dashboard-Dashboards-Grafana-—-Mozilla-Firefox-300x222.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/03/2023-03-21-14_10_14-New-dashboard-Dashboards-Grafana-—-Mozilla-Firefox-768x568.png 768w" sizes="auto, (max-width: 925px) 100vw, 925px" /></figure>



<p class="wp-block-paragraph">A similar method can be applied to JBoss EAP.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/wildfly-monitoring-in-prometheus/">WildFly monitoring in Prometheus</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/wildfly-monitoring-in-prometheus/feed/</wfw:commentRss>
			<slash:comments>1</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-10-18 21:29:18 by W3 Total Cache
-->