I use some script for Keycloak configuration purpose.
Until now, I used Keycloak 2.5.5.Final. I just upgraded to Keycloak 4.5.0.Final and I have a problem.
My script was called like that :
E:\...\scripts>keycloak-cli.bat --connect --controller=localhost:9990
-DdeployDir=E:\\...\\config\bin -DmysqlHost=localhost -DmysqlPort=3306
-DmysqlUser=KeycloakSQL -DmysqlPwd=somepwd -DadminPort=9991 -DhttpPort=8081
-DhttpsPort=8444 --file=E:\...\cli\keycloak_wildfly.cli
Keycloak-cli.bat being :
#echo off
REM set NOPAUSe to avoid to block the cmd when a wildfly cli script is executed
set NOPAUSE=true
REM set the java_home environment variable
set JAVA_HOME=E:\...\jdk
call "E:\...\keycloak\bin\jboss-cli.bat" %*
and keycloak_wildfly.cli being :
#batch
#---------------------------------------------------------------------------
# Create db datasource
#---------------------------------------------------------------------------
if (outcome != success) of /subsystem=datasources/jdbc-driver=mariadb:read-resource
/subsystem=datasources/jdbc-driver=mariadb:add(driver-name=mariadb,driver-module-name=org.mariadb,driver-xa-datasource-class-name=org.mariadb.jdbc.Driver)
end-if
if (outcome != success) of /subsystem=security/security-domain=KeycloakDatabaseLogin/:read-resource
/subsystem=security/security-domain=KeycloakDatabaseLogin/:add(cache-type=default)
/subsystem=security/security-domain=KeycloakDatabaseLogin/authentication=classic:add(login-modules=[{"code"=>"SecureIdentity", "flag"=>"required", "module-options"=>[("username"=>"${mysqlUser}"),("password"=>"-123456789")]}])
end-if
# Modify the default datasource (if already exist) to use our mariaDB
if (outcome == success) of /subsystem=datasources/data-source=KeycloakDS:read-resource
/subsystem=datasources/data-source=KeycloakDS:write-attribute(name="jta",value="false")
/subsystem=datasources/data-source=KeycloakDS:write-attribute(name="use-ccm",value="false")
/subsystem=datasources/data-source=KeycloakDS:write-attribute(name="enabled",value="true")
/subsystem=datasources/data-source=KeycloakDS:write-attribute(name="jndi-name",value="java:jboss/datasources/KeycloakDS")
/subsystem=datasources/data-source=KeycloakDS:write-attribute(name="max-pool-size",value="10")
/subsystem=datasources/data-source=KeycloakDS:write-attribute(name="min-pool-size",value="5")
/subsystem=datasources/data-source=KeycloakDS:write-attribute(name="driver-name",value="mariadb")
/subsystem=datasources/data-source=KeycloakDS:write-attribute(name="connection-url",value="jdbc:mysql://${mysqlHost}:${mysqlPort}/KeycloakDB")
/subsystem=datasources/data-source=KeycloakDS:undefine-attribute(name="password")
/subsystem=datasources/data-source=KeycloakDS:undefine-attribute(name="user-name")
/subsystem=datasources/data-source=KeycloakDS:write-attribute(name="security-domain",value="KeycloakDatabaseLogin")
end-if
# Else create a new datasource if not available
if (outcome != success) of /subsystem=datasources/data- source=KeycloakDS:read-resource
/subsystem=datasources/data-source="KeycloakDS":add(jta="false",use-ccm="false",enabled="true",jndi-name=java:jboss/datasources/KeycloakDS,max-pool-size=10,min-pool-size=5,driver-name=mariadb,connection-url=jdbc:mysql://${mysqlHost}:${mysqlPort}/KeycloakDB,security-domain="KeycloakDatabaseLogin")
end-if
#---------------------------------------------------------------------------
# Change IP settings
#---------------------------------------------------------------------------
#Public interface listen on all IPs
/interface=public:write-attribute(name="inet-address",value="${jboss.bind.address:0.0.0.0}")
# Change http and https ports
/socket-binding-group=standard-sockets/socket-binding="management- http":write-attribute(name="port",value="${adminPort}")
/socket-binding-group=standard-sockets/socket-binding="http":write-attribute(name="port",value="${httpPort}")
/socket-binding-group=standard-sockets/socket-binding="https":write-attribute(name="port",value="${httpsPort}")
It worked perfectly.
With version 4.5.0.Final of Keycloak, I have the follwoing error when running the script :
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
{
"outcome" => "failed",
"failure-description" => "WFLYCTL0211: Cannot resolve expression '${httpPort}'",
"rolled-back" => true,
"response-headers" => {"process-state" => "reload-required"}
}
It doesn't replace the ${xxx} by the value passed in as -D in the command line.
I don't understand why.
Can anyone help me ?
Thank you,
Seb
Related
I can see you can stop individual Domain servers in WildFly with:
stop
kill
destroy
While it's obvious "stop" should be a graceful shutdown, what's the difference between kill and destroy? (in particular in terms of forcing session stopping?)
Thanks!
From the read-operation-description operation on the server-groups resource.
{
"operation-name" => "destroy-servers",
"description" => "Destroy the server processes in the server group. In case the server is not in the stopping state, it will attempt to stop the server first.",
"request-properties" => {},
"reply-properties" => {},
"read-only" => false,
"runtime-only" => true
}
{
"operation-name" => "kill-servers",
"description" => "Kill all server processes in the server group. In case the server is not in the stopping state, it will attempt to stop the server first. This operation may not work on all platforms an
d will try to destroy the process if not available.",
"request-properties" => {},
"reply-properties" => {},
"read-only" => false,
"runtime-only" => true
}
{
"operation-name" => "stop-servers",
"description" => "Stops all servers belonging to the server group currently running in the domain.",
"request-properties" => {
"blocking" => {
"type" => BOOLEAN,
"description" => "Wait until the servers are fully stopped before returning from the operation.",
"expressions-allowed" => false,
"required" => false,
"nillable" => true,
"default" => false
},
"timeout" => {
"type" => INT,
"description" => "The graceful shutdown timeout. If this is zero then a graceful shutdown will not be attempted, if this is -1 then the server will wait for a graceful shutdown indefinitely.",
"expressions-allowed" => false,
"required" => false,
"nillable" => true,
"default" => 0,
"unit" => "SECONDS"
}
},
"reply-properties" => {},
"read-only" => false,
"runtime-only" => true
}
For the operations on the individual servers:
{
"operation-name" => "destroy",
"description" => "Destroy the server process. In case the server is not in the stopping state, it will attempt to stop the server first.",
"request-properties" => {},
"reply-properties" => {},
"read-only" => false,
"runtime-only" => true
}
{
"operation-name" => "kill",
"description" => "Kill the server process. In case the server is not in the stopping state, it will attempt to stop the server first. This operation may not work on all platforms and will try to destroy
the process if not available.",
"request-properties" => {},
"reply-properties" => {},
"read-only" => false,
"runtime-only" => true
}
{
"operation-name" => "stop",
"description" => "Stop a currently running server.",
"request-properties" => {
"server" => {
"type" => STRING,
"description" => "The name of the server.",
"expressions-allowed" => false,
"required" => false,
"nillable" => true,
"min-length" => 1L,
"max-length" => 2147483647L,
"deprecated" => {
"since" => "1.0.4",
"reason" => "This parameter is ignored, instead the name comes from the value of the last address element"
}
},
"blocking" => {
"type" => BOOLEAN,
"description" => "Whether the operation should block and wait until the server is stopped.",
"expressions-allowed" => false,
"required" => false,
"nillable" => true
},
"timeout" => {
"type" => INT,
"description" => "If this timeout is set a graceful shutdown will be attempted. If this is zero (the default) then the server will shutdown immediately. A value larger than zero means the server
will wait up to this many seconds for all active requests to finish. A value smaller than zero means that the server will wait indefinitely for all active requests to finish.",
"expressions-allowed" => false,
"required" => false,
"nillable" => true,
"default" => 0,
"unit" => "SECONDS"
}
},
"reply-properties" => {
"type" => STRING,
"description" => "The status of the server following execution of this operation."
},
"read-only" => false,
"runtime-only" => true
}
db.getCollection('Subscriber').find({$and:[{"registerFrom":{$exists:false}},{"googleRegistrationId":{$exists:true}},{"isGuest":"false"}]})
how to write the above query in Perl please help this.I am getting different results on this when execute on perl
i have written like this in perl
my $Subscriber2 = $Subscriber->find({'$and' =>[{dateOfJoining => {'$gt' => $date}},{registerFrom => { '$exists' => 'false'}},{googleRegistrationId => {'$exists' => 'true'}},{isGuest => 'false'}]})->fields({ _id => 1,streamzCampaigns => 1});
I am not getting the same results as when executing in perl.How to use $exits of mongoDB in Perl.Please help on this one.
The two suspicious bits I see are that you've quoted "true" and "false" -- which make those strings, not boolean values -- and I wonder what you're using for $date, since you don't have that in your shell example.
Here is what you wrote, formatted nicely:
my $Subscriber2 = $Subscriber->find(
{
'$and' => [
{ dateOfJoining => { '$gt' => $date } },
{ registerFrom => { '$exists' => 'false' } },
{ googleRegistrationId => { '$exists' => 'true' } },
{ isGuest => 'false' }
]
}
)->fields( { _id => 1, streamzCampaigns => 1 } );
For the booleans, you should use the boolean.pm module:
use boolean;
my $Subscriber2 = $Subscriber->find(
{
'$and' => [
{ dateOfJoining => { '$gt' => $date } },
{ registerFrom => { '$exists' => false } },
{ googleRegistrationId => { '$exists' => true } },
{ isGuest => false }
]
}
)->fields( { _id => 1, streamzCampaigns => 1 } );
I have generated a hash that looks like this. (printed using Dumper)
$VAR1 = {
'sufia:s4655g60k' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => '44d88612fea8a8f36de82e1278abb02f',
'checksum.old' => '44d88612fea8a8f36de82e1278abb02f',
'name' => 'eicar.com.txt',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/47/info%3Afedora%2Fsufia%3As4655g60k%2Fcontent%2Fcontent.0'
}
},
'sufia:9z9031393' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => 'b502be8d9e1286c94506c91c191c0b5a',
'checksum.old' => 'b502be8d9e1286c94506c91c191c0b5a',
'name' => 'Elsevier RightsLink Printable License.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/d9/info%3Afedora%2Fsufia%3A9z9031393%2Fcontent%2Fcontent.0'
}
},
'sufia:s4655g65z' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => '1baaa38b3e7b6139b3847b7bb3b8644a',
'checksum.old' => '1baaa38b3e7b6139b3847b7bb3b8644a',
'name' => 'enso-crystal.jpg',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/3a/info%3Afedora%2Fsufia%3As4655g65z%2Fcontent%2Fcontent.0'
}
},
'sufia:d504rk35q' => {
'version.2' => {
'checksum.new' => '9e5422337c33fa83322fd287035e4ac5',
'checksum.old' => '9e5422337c33fa83322fd287035e4ac5',
'name' => '0501012.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/c4/info%3Afedora%2Fsufia%3Ad504rk35q%2Fcontent%2Fcontent.2'
},
'curVer' => 2,
'version.1' => {
'checksum.new' => 'a50e552f4776f1863050b89920c9f7eb',
'checksum.old' => 'a50e552f4776f1863050b89920c9f7eb',
'name' => '0501012.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/d1/info%3Afedora%2Fsufia%3Ad504rk35q%2Fcontent%2Fcontent.1'
},
'version.0' => {
'checksum.new' => 'b05398d3071808b880af4375f6cdf18d',
'checksum.old' => 'b05398d3071808b880af4375f6cdf18d',
'name' => '0501012.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/80/info%3Afedora%2Fsufia%3Ad504rk35q%2Fcontent%2Fcontent.0'
}
},
'sufia:9z903124g' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => 'cd022d22cb5c46bf0e3f6c3b4c929ae1',
'checksum.old' => 'cd022d22cb5c46bf0e3f6c3b4c929ae1',
'name' => 'GT Contributor - Consent to Publish 2015-LindaNewman.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/04/info%3Afedora%2Fsufia%3A9z903124g%2Fcontent%2Fcontent.0'
}
},
'sufia:9z903137j' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => 'c2a24f16cb62d765810af770510516d1',
'checksum.old' => 'c2a24f16cb62d765810af770510516d1',
'name' => 'ScholarAtUC-SplashPage-Revisions4-29-3F.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/99/info%3Afedora%2Fsufia%3A9z903137j%2Fcontent%2Fcontent.0'
}
},
'sufia:9z903133f' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => '9d1a7f558548815dbb8be639c315f367',
'checksum.old' => '9d1a7f558548815dbb8be639c315f367',
'name' => 'UCScienceNet Expansion Award Proposal-Isilon-To-APTrust.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/70/info%3Afedora%2Fsufia%3A9z903133f%2Fcontent%2Fcontent.0'
}
},
'sufia:9z9031279' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => '6e763df35f2d807eac2763a87c6bb0bb',
'checksum.old' => '6e763df35f2d807eac2763a87c6bb0bb',
'name' => 'IMG_2221.JPG',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/52/info%3Afedora%2Fsufia%3A9z9031279%2Fcontent%2Fcontent.0'
}
},
'sufia:9z9031414' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => '621a177b09602ce1f703dd4becd90fe8',
'checksum.old' => '621a177b09602ce1f703dd4becd90fe8',
'name' => 'MazdaLiveAssistance-Not.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/0d/info%3Afedora%2Fsufia%3A9z9031414%2Fcontent%2Fcontent.0'
}
},
'sufia:9z903122x' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => 'a6653aac025f0eccbc5f96226923c79a',
'checksum.old' => 'a6653aac025f0eccbc5f96226923c79a',
'name' => 'example.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/41/info%3Afedora%2Fsufia%3A9z903122x%2Fcontent%2Fcontent.0'
}
},
'sufia:s4655g624' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => '44d88612fea8a8f36de82e1278abb02f',
'checksum.old' => '44d88612fea8a8f36de82e1278abb02f',
'name' => 'NotAVirusIPromise.txt',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/c6/info%3Afedora%2Fsufia%3As4655g624%2Fcontent%2Fcontent.0'
}
},
'sufia:9z903131w' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => 'f8f82d7f4d7a20839a20a9dd375f6478',
'checksum.old' => 'f8f82d7f4d7a20839a20a9dd375f6478',
'name' => 'UCScienceNet Expansion Award Proposal-LangsamLibrary.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/8d/info%3Afedora%2Fsufia%3A9z903131w%2Fcontent%2Fcontent.0'
}
},
'sufia:9z903152n' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => 'e5c6bde4b0fa6c4f2e013656f6aa8bf5',
'checksum.old' => 'e5c6bde4b0fa6c4f2e013656f6aa8bf5',
'name' => '20950 dod.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/c9/info%3Afedora%2Fsufia%3A9z903152n%2Fcontent%2Fcontent.0'
}
},
'sufia:9z903118b' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => '99ada40eb1ad4c5f5bffe07108855dc6',
'checksum.old' => '99ada40eb1ad4c5f5bffe07108855dc6',
'name' => 'harvey1880.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/4d/info%3Afedora%2Fsufia%3A9z903118b%2Fcontent%2Fcontent.0'
}
},
'sufia:9z903144z' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => 'a6653aac025f0eccbc5f96226923c79a',
'checksum.old' => 'a6653aac025f0eccbc5f96226923c79a',
'name' => 'example.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/f4/info%3Afedora%2Fsufia%3A9z903144z%2Fcontent%2Fcontent.0'
}
},
'sufia:9z9031350' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => '23013ce2bb7203fff545cf6e9ec5ac4a',
'checksum.old' => '23013ce2bb7203fff545cf6e9ec5ac4a',
'name' => 'ScholarAtUC-SplashPage-Revisions4-29-1D.pdf',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/6e/info%3Afedora%2Fsufia%3A9z9031350%2Fcontent%2Fcontent.0'
}
},
'sufia:9z903129v' => {
'curVer' => 0,
'version.0' => {
'checksum.new' => '93fd70923362e02b4fb56bb137bcf1e2',
'checksum.old' => '93fd70923362e02b4fb56bb137bcf1e2',
'name' => 'DevTeam2.jpg',
'path' => '/opt/rails-apps/curate_app/jetty/fedora/default/data/datastreamStore/94/info%3Afedora%2Fsufia%3A9z903129v%2Fcontent%2Fcontent.0'
}
}
};
Have looked at How to iterate through Hash (of Hashes) in Perl? and couldn't get it work for me.
Need to traverse through all the keys that look like 'sufia:s4655g60k' and then for each of them, I need to extract 'curVer' and depending on the number of 'curVer' I need to cycle through 'version.0' to get the respective values of the keys.
How do I traverse this hash and read/update existing keys/values?
for my $key (keys(%$VAR1)) {
my $rec = $VAR1->{$key};
my $cur_ver = $rec->{curVer};
my $subrec = $rec->{"version.$cur_ver"};
my $checksum_new = $subrec->{'checksum.new'};
my $checksum_old = $subrec->{'checksum.old'};
my $name = $subrec->{name};
my $path = $subrec->{path};
...
}
I've tried to add Postgres as datasource in Wildfly but keep on getting the JDBC connection error as follow :
Failed to create JDBC connection.
An internal error occurred. Details Unexpected HTTP response: 500
Request {
"name" => "PostgresDS",
"enabled" => true,
"jndi-name" => "java:/PostgresDS",
"user-name" => "admin",
"password" => "123",
"pool-name" => "PostgresDS_Pool",
"use-ccm" => false,
"jta" => false,
"connection-url" => "jdbc:postgresql://localhost:5432/postgresdb",
"driver-class" => "org.postgresql.Driver",
"driver-name" => "postgresql-9.4.1208.jar",
"valid-connection-checker-class-name" => "org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker",
"background-validation" => true,
"exception-sorter-class-name" => "org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter",
"operation" => "add",
"address" => [
("subsystem" => "datasources"),
("data-source" => "PostgresDS")
] }
Response
Internal Server Error {
"outcome" => "failed",
"failure-description" => "WFLYCTL0212: Duplicate resource [
(\"subsystem\" => \"datasources\"),
(\"data-source\" => \"PostgresDS\") ]",
"rolled-back" => true }
I have jboss in domain mode.
I am not able to assign the deployed war file to the main-server-cgroup.
i am getting following error.
I am able to assign it to other-server-group.
Failed to add Deployment middleware.war
Unexpected HTTP response: 500
Request
{
"operation" => "composite",enter code here
"address" => [],
"steps" => [
{
"address" => [
("server-group" => "main-server-cgroup"),
("deployment" => "middleware.war")
],
"operation" => "add"
},
{
"address" => [
("server-group" => "main-server-cgroup"),
("deployment" => "middleware.war")
],
"operation" => "deploy"
}
]
}
Response
Internal Server Error
{
"outcome" => "failed",
"result" => {
"step-1" => {"outcome" => "success"},
"step-2" => {"outcome" => "success"}
},
"failure-description" => "JBAS010839: Operation failed or was rolled back on all servers.",
"rolled-back" => true,
"server-groups" => {"main-server-cgroup" => {"host" => {"master" => {"server-1" => {"response" => {
"outcome" => "failed",
"result" => {
"step-1" => {
"outcome" => "failed",
"rolled-back" => true
},
"step-2" => {
"outcome" => "failed",
"failure-description" => {
"JBAS014671: Failed services" => {"jboss.web.deployment.default-host./middleware" => "org.jboss.msc.service.StartException in service jboss.web.deployment.default-host./middleware: org.jboss.msc.service.StartException in anonymous service: JBAS018040: Failed to start context
Caused by: org.jboss.msc.service.StartException in anonymous service: JBAS018040: Failed to start context"},
"JBAS014879: One or more services were unable to start due to one or more indirect dependencies not being available." => {
"Services that were unable to start:" => ["jboss.deployment.unit.\"middleware.war\".deploymentCompleteService"],
"Services that may be the cause:" => ["jboss.binding.modcluster"]
}
},
"rolled-back" => true
}
},
"failure-description" => {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {
"JBAS014671: Failed services" => {"jboss.web.deployment.default-host./middleware" => "org.jboss.msc.service.StartException in service jboss.web.deployment.default-host./middleware: org.jboss.msc.service.StartException in anonymous service: JBAS018040: Failed to start context
Caused by: org.jboss.msc.service.StartException in anonymous service: JBAS018040: Failed to start context"},
"JBAS014879: One or more services were unable to start due to one or more indirect dependencies not being available." => {
"Services that were unable to start:" => ["jboss.deployment.unit.\"middleware.war\".deploymentCompleteService"],
"Services that may be the cause:" => ["jboss.binding.modcluster"]
}
}}},
"rolled-back" => true
}}}}}}
}