[[Extending_WildFly]]
= Extending WildFly
WildFly code development team;
:revnumber: {version}
:revdate: {localdate}
:toc: macro
:toclevels: 2
:toc-title: Extending WildFly
:doctype: book
:icons: font
:source-highlighter: coderay
:wildflyVersion: 12
:leveloffset: +1

ifndef::ebook-format[:leveloffset: 1]

In this document we provide an example of how to extend the kernel
functionality of WildFly via an extension and the subsystem it installs.
The WildFly kernel is very simple and lightweight; most of the
capabilities people associate with an application server are provided
via extensions and their subsystems. The WildFly distribution includes
many extensions and subsystems; the webserver integration is via a
subsystem; the transaction manager integration is via a subsystem, the
EJB container integration is via a subsystem, etc.

This document is divided into two main sections. The
link:Extending_WildFly{outfilesuffix}#Example_subsystem[first] is focused on learning by doing. This
section will walk you through the steps needed to create your own
subsystem, and will touch on most of the concepts discussed elsewhere in
this guide. The
link:Extending_WildFly{outfilesuffix}#Key_Interfaces_and_Classes_Relevant_to_Extension_Developers[second]
focuses on a conceptual overview of the key interfaces and classes
described in the example. Readers should feel free to start with the
second section if that better fits their learning style. Jumping back
and forth between the sections is also a good strategy.


ifdef::basebackend-html[toc::[]]
:numbered:

[[target-audience]]
= Target Audience



[[prerequisites]]
== Prerequisites

You should know how to download, install and run WildFly. If not please
consult the link:Getting_Started_Guide.html[Getting Started Guide]. You
should also be familiar with the management concepts from the
link:Admin_Guide{outfilesuffix}[Admin Guide], particularly the
link:Admin_Guide{outfilesuffix}#Core_management_concepts[Core management concepts] section and
you need Java development experience to follow the example in this
guide.

[[examples-in-this]]
== Examples in this guide

Most of the examples in this guide are being expressed as excerpts of
the XML configuration files or by using a representation of the de-typed
management model.

include::_extending-wildfly/Example_subsystem.adoc[]

include::_extending-wildfly/Working_with_WildFly_Capabilities.adoc[]

include::_extending-wildfly/Domain_Mode_Subsystem_Transformers.adoc[]

include::_extending-wildfly/Key_Interfaces_and_Classes_Relevant_to_Extension_Developers.adoc[]

include::_extending-wildfly/WildFly_JNDI_Implementation.adoc[]

include::_extending-wildfly/CLI_extensibility_for_layered_products.adoc[]

