Chapter 4. Adding Feature Packs to existing JBoss EAP Servers using the jboss-eap-installation-manager You can use jboss-eap-installation-manager to install and update JBoss EAP. You can also install and update feature packs on your existing JBoss EAP servers using jboss-eap-installation-manager . 4.1. Prerequisites You have an account on the Red Hat Customer Portal and are logged in. You have reviewed the supported configurations for JBoss EAP 8.0. You have installed a supported JDK. You have downloaded the jboss-eap-installation-manager . 4.2. Adding Feature Packs to an existing JBoss EAP installation You can install feature packs on existing JBoss EAP servers using jboss-eap-installation-manager . Prerequisites You have installed JBoss EAP 8.0. Procedure Open your terminal emulator and navigate to the directory containing the downloaded jboss-eap-installation-manager . Define the channels, that provide the feature packs, you want your JBoss EAP server subscribed to: ./jboss-eap-installation-manager.sh channel add \ --channel-name feature-pack-channel \ --repositories https://fp.repo.org/maven \ --manifest com.example:feature-pack Create and subscribe your JBoss EAP installation to a channel providing additional artifacts. For more information see Creating and subscribing your JBoss EAP installation to a channel providing additional artifacts . Select layers and configuration of the installed Feature Pack The feature-pack add command is used to select which feature pack layer(s) need to be installed and which configuration files should be modified. Provide the necessary layers for the installation. USD ./jboss-eap-installation-manager.sh feature-pack add \ --fpl com.example:feature-pack \ --layers layer-one,layer-two \ --dir jboss-eap8 Provide the necessary layers for the installation and choose the configuration file you want to modify. USD ./jboss-eap-installation-manager.sh feature-pack add \ --fpl com.example:feature-pack \ --layers layer-one,layer-two \ --target-config standalone-ha.xml --dir jboss-eap8 Note You can modify the default feature pack configuration file by using the --target-config parameter. This parameter selects the configuration file in the standalone/configuration folder that will receive the changes. If you have changed the chosen configuration file before, the updates won't overwrite it. Instead, the changes will be saved in a new file named with a .glnew ending. You'll need to handle and merge any conflicts yourself. The feature pack can only modify standalone configuration files and not files in a managed domain. The supported values for the --target-config parameter are the names of the configuration files provided by the base EAP8/XP5 servers. Additional feature packs should not provide additional configurations. Additional resources Creating and subscribing your JBoss EAP installation to a channel providing additional artifacts . 4.3. Adding feature packs to existing JBoss EAP servers You can add additional feature packs when installing a JBoss EAP server with jboss-eap-installation-manager . Prerequisites You have an account on the Red Hat Customer Portal and are logged in. You have reviewed the supported configurations for JBoss EAP 8.0. You have installed a supported JDK. You have downloaded the jboss-eap-installation-manager . Procedure Open the terminal emulator and navigate to the directory containing jboss-eap-installation-manager . Create a provisioning.xml file and define the feature packs you want to install: <?xml version="1.0" ?> <installation xmlns="urn:jboss:galleon:provisioning:3.0"> <feature-pack location="org.jboss.eap:wildfly-ee-galleon-pack:zip"> <packages> <include name="docs.examples.configs"/> </packages> </feature-pack> <feature-pack location="<FEATURE_PACK_GROUP_ID>:<FEATURE_ARTIFACT_ID>:zip"> <default-configs inherit="false"/> <packages inherit="false"/> </feature-pack> <config model="standalone" name="standalone.xml"> <layers> <include name="<FEATURE_PACK_LAYER>"/> </layers> </config> </installation> Create a channels.yaml file, and define the channels you want JBoss EAP subscribed to. schemaVersion: "2.0.0" name: "eap-8.0" repositories: - id: "mrrc" url: "file:/Users/spyrkob/workspaces/set/prospero/prod-prospero/jboss-eap-8.0.0.GA-maven-repository/maven-repository" manifest: maven: groupId: "org.jboss.eap.channels" artifactId: "eap-8.0" --- schemaVersion: "2.0.0" name: "feature-pack-channel" repositories: - id: "feature-pack-repository" url: "https://repository.example.com/feature-pack" manifest: maven: groupId: "com.example.channels" artifactId: "feature-pack" Install feature packs using the --definition and --channel parameters: ./jboss-eap-installation-manager.sh install \ --definition provisioning.xml \ --channel channels.yaml \ --dir jboss-eap8 Installing galleon provisioning definition: provisioning.xml Using channels: # eap-8.0 manifest: org.jboss.eap.channels:eap-8.0 repositories: id: mrrc url: file:/tmp/jboss/jboss-eap-8.0.0.GA-maven-repository/maven-repository #feature-pack-channel manifest: com.example.channels:feature-pack repositories: id: feature-pack-repository url: https://repository.example.com/feature-pack =============== END USER LICENSE AGREEMENT RED HAT JBOSS(R) MIDDLEWARETM =============== [...] =============== Accept the agreement(s) [y/N]y Feature-packs resolved. Packages installed. Downloaded artifacts. JBoss modules installed. Configurations generated. JBoss examples installed. Server created in /tmp/jboss/jboss-eap8 Operation completed in 16.30 seconds 4.4. Adding Feature Packs to JBoss EAP servers by using an offline repository You can use the jboss-eap-installation-manager to add feature packs when installing a JBoss EAP from an offline repository. Prerequisites You have downloaded the JBoss EAP 8.0 offline repository from the Red Hat Customer Portal . If required, you have the downloaded feature pack repository archive file from the Red Hat Customer Portal . Note Downloading the feature pack offline repository is an optional prerequisite because some feature packs are already included in the JBoss EAP 8.0 offline repository. Procedure Open the terminal emulator and navigate to the directory containing jboss-eap-installation-manager . Install the required feature pack into JBoss EAP and specify the offline repositories by using --repositories parameter: USD ./jboss-eap-installation-manager.sh feature-pack add \ --fpl com.example:feature-pack \ --layers layer-one,layer-two \ --repositories file:/path/to/eap8/offline_repo,file:/path/to/feature_pack/offline_repo --dir jboss-eap8 4.5. Reverting installed feature packs You can use the jboss-eap-installation-manager to revert a feature pack previously added to your JBoss EAP server: Prerequisites You have added feature packs to your JBoss EAP server. Procedure Open the terminal emulator and navigate to the directory containing the downloaded jboss-eap-installation-manager . Investigate the history of all feature packs added to your JBoss EAP server: USD ./jboss-eap-installation-manager.sh history --dir jboss-eap-8.0 [79a553e7] 2023-08-23T13:39:10Z - feature_pack [org.jboss.eap.channels:eap-8.0::1.0.1.GA][com.example.channels:myfaces::1.0.0] [744013d2] 2023-08-23T13:38:16Z - config_change [928fe586] 2023-08-23T13:22:11Z - install [org.jboss.eap.channels:eap-8.0::1.0.1.GA] Stop JBoss EAP server. Revert your to a version. USD ./jboss-eap-installation-manager.sh revert perform --revision 744013d2 --dir jboss-eap-8.0 Reverting server /tmp/jboss/jboss-eap-8.0 to state 744013d2 Feature-packs resolved. Packages installed. Downloaded artifacts. JBoss modules installed. Configurations generated. JBoss examples installed. Reverted server prepared, comparing changes Changes found: org.jboss.eap:eap-myfaces-feature-pack 8.0.0.GA-redhat-20230816 ==> [] org.apache.myfaces.core:myfaces-api 4.0.0 ==> [] org.jboss.eap:eap-myfaces-injection 8.0.0.GA-redhat-20230816 ==> [] org.apache.myfaces.core:myfaces-impl 4.0.0 ==> [] Continue with revert [y/N]: y Applying changes Server reverted to state 977f97dd. Operation completed in 51.17 seconds. 4.6. Creating and subscribing to channels when installing JBoss EAP to provide additional artifacts Some feature packs require additional artifacts that are not supplied by Red Hat. You have to provide the required artifacts by defining custom channels. For example, the MyFaces feature pack requires the org.apache.myfaces.core:myfaces-impl and org.apache.myfaces.core:myfaces-api jar files. However, it is up to you to determine the precise versions of these jars. Note The following procedure describes how to create a channel that provides additional artifacts for the MyFaces feature pack. Prerequisite You have an account on the Red Hat Customer Portal and are logged in. You have reviewed the supported configurations for JBoss EAP 8.0. You have installed a supported JDK. You have downloaded the jboss-eap-installation-manager . Your JBoss EAP installation has a feature pack installed on it. Procedure Open the terminal emulator and navigate to the directory containing jboss-eap-installation-manager . Create a manifest.yaml file: schemaVersion: 1.0.0 name: MyFaces manifest file streams: - groupId: org.apache.myfaces.core artifactId: myfaces-impl version: 4.0.0 - groupId: org.apache.myfaces.core artifactId: myfaces-api version: 4.0.0 Deploy the manifest to a local repository: mvn deploy:deploy-file -Dfile=manifest.yaml \ -DgroupId=com.example.channels -DartifactId=myfaces \ -Dclassifier=manifest -Dpackaging=yaml -Dversion=1.0.0 \ -Durl=file:/path/to/local/repository Subscribe your JBoss EAP server to the new channel: USD ./jboss-eap-installation-manager.sh channel add \ --channel-name myfaces-channel \ --repositories https://repo1.maven.org/maven2,file:/path/to/local/repository \ --manifest com.example.channels:myfaces \ --dir jboss-eap8

Commands:
./jboss-eap-installation-manager.sh channel add --channel-name feature-pack-channel --repositories https://fp.repo.org/maven --manifest com.example:feature-pack
./jboss-eap-installation-manager.sh feature-pack add --fpl com.example:feature-pack --layers layer-one,layer-two --dir jboss-eap8
./jboss-eap-installation-manager.sh feature-pack add --fpl com.example:feature-pack --layers layer-one,layer-two --target-config standalone-ha.xml --dir jboss-eap8
<?xml version="1.0" ?> <installation xmlns="urn:jboss:galleon:provisioning:3.0"> <feature-pack location="org.jboss.eap:wildfly-ee-galleon-pack:zip"> <packages> <include name="docs.examples.configs"/> </packages> </feature-pack> <feature-pack location="<FEATURE_PACK_GROUP_ID>:<FEATURE_ARTIFACT_ID>:zip"> <default-configs inherit="false"/> <packages inherit="false"/> </feature-pack> <config model="standalone" name="standalone.xml"> <layers> <include name="<FEATURE_PACK_LAYER>"/> </layers> </config> </installation>
schemaVersion: "2.0.0" name: "eap-8.0" repositories: - id: "mrrc" url: "file:/Users/spyrkob/workspaces/set/prospero/prod-prospero/jboss-eap-8.0.0.GA-maven-repository/maven-repository" manifest: maven: groupId: "org.jboss.eap.channels" artifactId: "eap-8.0" --- schemaVersion: "2.0.0" name: "feature-pack-channel" repositories: - id: "feature-pack-repository" url: "https://repository.example.com/feature-pack" manifest: maven: groupId: "com.example.channels" artifactId: "feature-pack"
./jboss-eap-installation-manager.sh install --definition provisioning.xml --channel channels.yaml --dir jboss-eap8 Installing galleon provisioning definition: provisioning.xml Using channels: eap-8.0 manifest: org.jboss.eap.channels:eap-8.0 repositories: id: mrrc url: file:/tmp/jboss/jboss-eap-8.0.0.GA-maven-repository/maven-repository #feature-pack-channel manifest: com.example.channels:feature-pack repositories: id: feature-pack-repository url: https://repository.example.com/feature-pack =============== END USER LICENSE AGREEMENT RED HAT JBOSS(R) MIDDLEWARETM =============== [...] =============== Accept the agreement(s) [y/N]y Feature-packs resolved. Packages installed. Downloaded artifacts. JBoss modules installed. Configurations generated. JBoss examples installed. Server created in /tmp/jboss/jboss-eap8 Operation completed in 16.30 seconds
./jboss-eap-installation-manager.sh feature-pack add --fpl com.example:feature-pack --layers layer-one,layer-two --repositories file:/path/to/eap8/offline_repo,file:/path/to/feature_pack/offline_repo --dir jboss-eap8
./jboss-eap-installation-manager.sh history --dir jboss-eap-8.0 [79a553e7] 2023-08-23T13:39:10Z - feature_pack [org.jboss.eap.channels:eap-8.0::1.0.1.GA][com.example.channels:myfaces::1.0.0] [744013d2] 2023-08-23T13:38:16Z - config_change [928fe586] 2023-08-23T13:22:11Z - install [org.jboss.eap.channels:eap-8.0::1.0.1.GA]
./jboss-eap-installation-manager.sh revert perform --revision 744013d2 --dir jboss-eap-8.0 Reverting server /tmp/jboss/jboss-eap-8.0 to state 744013d2 Feature-packs resolved. Packages installed. Downloaded artifacts. JBoss modules installed. Configurations generated. JBoss examples installed. Reverted server prepared, comparing changes Changes found: org.jboss.eap:eap-myfaces-feature-pack 8.0.0.GA-redhat-20230816 ==> [] org.apache.myfaces.core:myfaces-api 4.0.0 ==> [] org.jboss.eap:eap-myfaces-injection 8.0.0.GA-redhat-20230816 ==> [] org.apache.myfaces.core:myfaces-impl 4.0.0 ==> [] Continue with revert [y/N]: y Applying changes Server reverted to state 977f97dd. Operation completed in 51.17 seconds.
schemaVersion: 1.0.0 name: MyFaces manifest file streams: - groupId: org.apache.myfaces.core artifactId: myfaces-impl version: 4.0.0 - groupId: org.apache.myfaces.core artifactId: myfaces-api version: 4.0.0
mvn deploy:deploy-file -Dfile=manifest.yaml -DgroupId=com.example.channels -DartifactId=myfaces -Dclassifier=manifest -Dpackaging=yaml -Dversion=1.0.0 -Durl=file:/path/to/local/repository
./jboss-eap-installation-manager.sh channel add --channel-name myfaces-channel --repositories https://repo1.maven.org/maven2,file:/path/to/local/repository --manifest com.example.channels:myfaces --dir jboss-eap8