]
Brian Stansberry commented on WFLY-14389:
-----------------------------------------
[~tomekadamski] The xml schema for the r-a subsystem does not allow for the use of
expressions for this attribute.
Note that trying to resolve the value of the expression at marshalling time and then
deciding whether to write the empty element is not a valid fix. The expression either
needs to be written in the xml or the attribute can't support expressions. The former
is likely the correct solution as this attribute doesn't fit any of the general
criteria for not supporting expressions.
Resource adapters subsystem does not accept expression for
security-application attribute
-----------------------------------------------------------------------------------------
Key: WFLY-14389
URL:
https://issues.redhat.com/browse/WFLY-14389
Project: WildFly
Issue Type: Bug
Components: JCA
Affects Versions: 22.0.0.Final
Reporter: Ivan Straka
Assignee: Tomasz Adamski
Priority: Major
Attachments: standalone-genericjms.xml
Resource adapters subsystem supports expression for security-application attribute:
{code:java}
/subsystem=resource-adapters/resource-adapter=generic-jms-ra.rar/connection-definitions=\$\{genericjms.cf.pool-name\}:read-resource-description
...
"security-application" => {
"type" => BOOLEAN,
"description" => "Indicates that application-supplied
parameters, such as from getConnection(user, pw), are used to distinguish connections in
the pool.",
"expressions-allowed" => true,
"required" => false,
"nillable" => true,
"default" => false,
"alternatives" => [
"security-domain",
"security-domain-and-application",
"authentication-context",
"authentication-context-and-application"
],
"access-constraints" => {"sensitive" => {
"security-domain-ref" => {"type" =>
"core"},
"resource-adapter-security" => {"type" =>
"resource-adapters"}
}},
"access-type" => "read-write",
"storage" => "configuration",
"restart-required" => "all-services"
},
{code}
however it fails to marshall it:
{code:java}
/subsystem=resource-adapters/resource-adapter=generic-jms-ra.rar/connection-definitions=\$\{genericjms.cf.pool-name\}:write-attribute(name=security-application,
value=${test:true})
{code}
{code:java}
22:39:11,111 ERROR [org.jboss.as.controller.management-operation]
(management-handler-thread - 1) WFLYCTL0008: Failed to persist configuration change:
org.jboss.as.controller.persistence.ConfigurationPersistenceException: WFLYCTL0084: Failed
to marshal configuration
at
org.jboss.as.controller.persistence.AbstractFilePersistenceResource.<init>(AbstractFilePersistenceResource.java:53)
at
org.jboss.as.controller.persistence.ConfigurationFilePersistenceResource.<init>(ConfigurationFilePersistenceResource.java:46)
at
org.jboss.as.controller.persistence.BackupXmlConfigurationPersister.store(BackupXmlConfigurationPersister.java:120)
at org.jboss.as.controller.ModelControllerImpl.writeModel(ModelControllerImpl.java:728)
at
org.jboss.as.controller.OperationContextImpl.createPersistenceResource(OperationContextImpl.java:535)
at
org.jboss.as.controller.AbstractOperationContext.executeDoneStage(AbstractOperationContext.java:821)
at
org.jboss.as.controller.AbstractOperationContext.processStages(AbstractOperationContext.java:770)
at
org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:468)
at
org.jboss.as.controller.OperationContextImpl.executeOperation(OperationContextImpl.java:1415)
at
org.jboss.as.controller.ModelControllerImpl.internalExecute(ModelControllerImpl.java:431)
at
org.jboss.as.controller.ModelControllerImpl.lambda$execute$1(ModelControllerImpl.java:248)
at org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:304)
at org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:270)
at org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:248)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.doExecute(ModelControllerClientOperationHandler.java:240)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.access$400(ModelControllerClientOperationHandler.java:138)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1$1.run(ModelControllerClientOperationHandler.java:162)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1$1.run(ModelControllerClientOperationHandler.java:158)
at org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:328)
at org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:285)
at org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:254)
at org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:225)
at
org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1.execute(ModelControllerClientOperationHandler.java:158)
at
org.jboss.as.protocol.mgmt.ManagementRequestContextImpl$1.doExecute(ManagementRequestContextImpl.java:70)
at
org.jboss.as.protocol.mgmt.ManagementRequestContextImpl$AsyncTaskRunner.run(ManagementRequestContextImpl.java:160)
at
org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
at
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.lang.Thread.run(Thread.java:748)
at org.jboss.threads.JBossThread.run(JBossThread.java:513)
Caused by: org.jboss.as.controller.persistence.ConfigurationPersistenceException:
WFLYCTL0089: Failed to write configuration
at
org.jboss.as.controller.persistence.AbstractConfigurationPersister.marshallAsXml(AbstractConfigurationPersister.java:112)
at
org.jboss.as.controller.persistence.AbstractFilePersistenceResource.<init>(AbstractFilePersistenceResource.java:46)
... 30 more
Caused by: java.lang.IllegalArgumentException
at org.jboss.dmr.ModelValue.asBoolean(ModelValue.java:69)
at org.jboss.dmr.ModelNode.asBoolean(ModelNode.java:324)
at
org.jboss.as.connector.subsystems.resourceadapters.ResourceAdapterSubsystemParser.writeConDef(ResourceAdapterSubsystemParser.java:378)
at
org.jboss.as.connector.subsystems.resourceadapters.ResourceAdapterSubsystemParser.writeRaElement(ResourceAdapterSubsystemParser.java:232)
at
org.jboss.as.connector.subsystems.resourceadapters.ResourceAdapterSubsystemParser.writeContent(ResourceAdapterSubsystemParser.java:148)
at
org.jboss.as.connector.subsystems.resourceadapters.ResourceAdapterSubsystemParser.writeContent(ResourceAdapterSubsystemParser.java:130)
at org.jboss.as.server.parsing.CommonXml.writeSubsystems(CommonXml.java:281)
at
org.jboss.as.server.parsing.StandaloneXml_16.writeServerProfile(StandaloneXml_16.java:830)
at org.jboss.as.server.parsing.StandaloneXml_16.writeContent(StandaloneXml_16.java:760)
at org.jboss.as.server.parsing.StandaloneXml.writeContent(StandaloneXml.java:151)
at org.jboss.as.server.parsing.StandaloneXml.writeContent(StandaloneXml.java:52)
at org.jboss.staxmapper.XMLMapperImpl.doDeparse(XMLMapperImpl.java:96)
at org.jboss.staxmapper.XMLMapperImpl.deparseDocument(XMLMapperImpl.java:91)
at
org.jboss.as.controller.persistence.AbstractConfigurationPersister.marshallAsXml(AbstractConfigurationPersister.java:106)
... 31 more
{code}
The error is caused by [1] where the parser does not resolve expression but read raw
string (${yada yada}) as bool.
[1]
https://github.com/wildfly/wildfly/blob/22.0.0.Final/connector/src/main/j...