Recently there has been some confusion about how subsystems should be distributed, and whether or not they should be part of the WildFly repository.
There are three primary use-cases for distributing a subsystem.
#1 - Inclusion in an official WildFly distribution
#2 - A user installable "add-on distribution" which can be dropped on top of a WildFly Distribution (see [A])
#3 - A separate, independant, customized distribution, with a differing identity. Possibly build but not required as a layer (see [A])
If you are after #1, then the subsystem source code (defined as the portion of code which integrates with the server using the subsystem facilities) MUST be included in the WildFly repo. This is because subsystems heavily impact the stability of the server and our compliance with our strict management compatibility policy, and additionally it allows for us to keep all included subsystems up to date with core infrastructure changes such as capabilities and requirements, and the upcoming elytron security integration. Under this approach, a feature-pack is unlikely to be used, as it would likely just be part of the full feature-pack. It could very well be that we would introduce a different more expansive feature-pack in the future defining a larger distribution foot-print, however, there are currently no plans to do so.
If you are after #2, then you do not want a feature-pack, as feature-packs are just for building custom server distributions. If your use-case is #2 you are by definition not a custom server distribution, but rather a set of modules built the normal maven way.
If you are after #3, then you likely wish to use the feature-pack mechanism to make it easy to produce your custom distribution. This facility would allow you to keep your source repository limited to just the new subsystems you introduce, and pull the rest of the server bits via a maven dep. It is important, that you change the identity of the server (see [A]), such that patches for the official WildFly server are not accidentally installed.
Jason T. Greene
WildFly Lead / JBoss EAP Platform Architect
JBoss, a division of Red Hat
If you have a bunch of deployments, does each deployment run through the
deployment phases independently? Or does a phase like POST_MODULE
execute for all deployments first, then INSTALL runs for all deployments.
Each management resource has an operation named 'query()' to filter resources according to the condition passed by 'selector' and 'where' parameters, however it does not work for complex attributes.
2 example of complex attributes:
- 'query()' operation cannot find which 'possible-capabilities' provides the capability with name 'org.wildfly.data-source'
- It cannot find which 'rest-resource-paths' provides the REST endpoint 'resource-path=/helloworld' in jaxrs subsystem of a war deployment either.
Especially for the second case in above examples, it will be helpful for users when doing troubleshooting in case of large deployment.
Actually, it does not limit to the complex attributes, it would be good to be able to filter resources by condition specified by attribute value of nested child resources(not only by the first level of child resource).
JBoss by Red Hat
It’s not an uncommon thing to have a management attribute A that is required; i.e. must be set, but also has an alternative attribute B, where setting B satisfies the requirement for A, making an undefined value for A legal. We’re not handling that correctly and I want to fix it. But fixing it will require some coordination with the HAL console.
Right now the way AttributeDefinition building works it’s not practical to declare that an attribute is required but only if no alternative is set. So instead attributes are declared as if they aren’t really required. This leads to less than helpful input validation, e.g.  and , since the attribute definition is imprecise.
The change I’d like to make will alter the read-resource-description output for 4 attributes, changing the value of the ‘nillable’ description from ‘false’ to ‘true’ so I want to coordinate that with the console team.
Harald and Claudio you guys are the main audience here. :)
For even longer version see description and comments on .
In a nutshell, if devs set the ‘allowNull’ property on an AttributeDefinition to ‘true’, the r-r-d output for the attribute has “nillable” => true. But there is no way to say “allowNull but only if an alternative is set.” So people are setting “allowNull” to true even if the attribute should be set in the absence of alternatives. And HAL has no metadata available to it to tell users they *must* set one of the alternatives. So I want to:
1) Add a setRequired(boolean) method to the AD builders where the fact that it means “must be defined if no alternative is defined” is explicitly declared
2) @Deprecate setAllowNull and point to setRequired
3) Clarify the meaning of setAllowNull(true) as being the same as setRequired(false)
4) Change the builder ‘allowNull’ constructor param name to “optional” and document its meaning as “allowing undefined values even in the absence of defined alternatives”. I could call the param ‘notRequired’ which is clearer in meaning but odd.
Then I will add a new ‘required’ metadata field to the r-r-d output and change the impl of the existing ’nillable’ metadata to a logical “!required || (alternatives != null && alternatives.length > 0)”
This will result in a change in the ‘nillable’ value for 4 attributes in the WildFly model from ‘false’ to ’true':
/subsystem=transactions PROCESS_ID_SOCKET_BINDING and PROCESS_ID_UUID
/core-service=management/security-realm=*/authenticaton=ldap USERNAME_FILTER and ADVANCED_FILTER
The latter two are not exposed in the console so the issue really is the two transaction attributes.
I haven’t checked other subsystems in things like Teiid or JDG, but if there are only 4 in all of WildFly I doubt there are many.
Also, if people start using the new behavior to correct problems like  and  people may expect the console to understand and reflect the concept of “required but only if there is no alternative’.
Manager, Senior Principal Software Engineer
JBoss by Red Hat
Currently, I'm trying to use Wildfly but after installing the service, I'm unable to stop it. The only way to stop it is to uninstall it by deleting the Java process and using command prompt to delete the service. This may be stemming from the fact that the Java process is only shown under all users rather than my account even though my username is assigned to it. Reviewing the batch files, I'm unable to find where to fix it.
Has anyone else come into any similar issues?
A quick note about pull requests, particularly those with multiple
commits - not just on WildFly but on *all* projects.
In order to efficiently review a pull request, especially a complex one,
it *must* be possible to review it one commit at a time. This means
that if there's a review item on your pull request for a mistake or
problem, don't just add a commit to the PR to fix it. Rather, please
amend or remove the faulty commit completely, otherwise some other
reviewer who is looking one commit at a time is just going to waste time
reporting the same problem only to have to go back and remove it once
the later commit found.
Remember: PR *submitters* have a great deal more processing power than
Is anyone using the following OpenJDK version and building WildFly Core?
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-b16)
OpenJDK 64-Bit Server VM (build 25.111-b16, mixed mode)
When I use this version to build core with -DallTests occasionally I am
getting weird NullPointerExceptions that suggest a JVM issue.
Just wanted to check if anyone else has seen anything similar.
I am looking for help with the usage of the allow-resource-service-restart
header. For the following examples each attribute is a boolean with
"restart-required" set to "no-services".
When I run
it works as expected, but
for instance, puts the server into the reload-required state.
This is happening on several other places so I want to ask if it is a
Associate Software Engineer
JBoss Sustaining Engineering Team
Red Hat Czech s.r.o.