[jboss-jira] [JBoss JIRA] (WFCORE-3197) jboss-cli.sh - The RESOLVED_JBOSS_HOME strategy is not robust - Unable to access jarfile jboss-modules.jar

Brian Stansberry (JIRA) issues at jboss.org
Fri Aug 18 10:32:00 EDT 2017


     [ https://issues.jboss.org/browse/WFCORE-3197?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Brian Stansberry updated WFCORE-3197:
-------------------------------------
    Component/s:     (was: Domain Management)


> jboss-cli.sh - The RESOLVED_JBOSS_HOME strategy is not robust - Unable to access jarfile jboss-modules.jar
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: WFCORE-3197
>                 URL: https://issues.jboss.org/browse/WFCORE-3197
>             Project: WildFly Core
>          Issue Type: Bug
>          Components: Scripts
>    Affects Versions: 3.0.0.Beta31
>         Environment: centOs
>            Reporter: Nuno Godinho de Matos
>            Assignee: Tomaz Cerar
>            Priority: Trivial
>
> Hi, I am currently migrating some windows batch scripts associated to an automated create domain/stanadlone process.
> One of these scripts, consists on faclitating the user to invoke the jboss cli to run a cli file.
> While on windows the script is natrually working.
> On linux centOs, the script immediately broke with the error:
> {panel}
> [johnDoe at localhost bin]$ sh 01_invoke_cli_file_script.sh "file99.sh"
> **********************************************************
> SETUP CORE ENV VARIABLES
> **********************************************************
> SET_CORE_ENV_VARS_SCRIPT_PATH=/home/johnDoe/AppServer/wildfly-10.1.0.Final/user_projects/domains/someStandAloneDomain/bin
> CURRENT_WILDFLY_DOMAIN_DIR=/home/johnDoe/AppServer/wildfly-10.1.0.Final/user_projects/domains/someStandAloneDomain/bin/..
> WILDFLY_DOMAINS_DIR=/home/johnDoe/AppServer/wildfly-10.1.0.Final/user_projects/domains/someStandAloneDomain/bin/../..
> WILDFLY_USER_PROJECTS_DIR=/home/johnDoe/AppServer/wildfly-10.1.0.Final/user_projects/domains/someStandAloneDomain/bin/../../..
> WILDFLY_BASE_DIRECTORY=/home/johnDoe/AppServer/wildfly-10.1.0.Final/user_projects/domains/someStandAloneDomain/bin/../../../..
> WILDFLY_BIN_DIRECTORY=/home/johnDoe/AppServer/wildfly-10.1.0.Final/user_projects/domains/someStandAloneDomain/bin/../../../../bin
> **********************************************************
> INVOKE jboss-cli.bat  with script file: "file99.sh"
> **********************************************************
> Error: Unable to access jarfile /home/johnDoe/AppServer/wildfly-10.1.0.Final/user_projects/domains/someStandAloneDomain/jboss-modules.jar
> <----- this some additional informaiton I am printing to make the point
> RESOLVED_JBOSS_HOME: /home/johnDoe/AppServer/wildfly-10.1.0.Final/user_projects/domains/someStandAloneDomain
> {panel}
> What the above panel shows is that the RESOLVED_JBOSS_HOME is not being properly set.
> This clearly constrasts with the windows behavior, where my base script can correctly invoke a :
> call jboss-cli.bat -f someFilepath 
> and not break.
> The reason for this seems that that while on windows, the script correctly makes no assumption on where the current working directory of the user is.
> And only cares about the current location of the jboss-cli.bat script itself.
> {panel}
> if "%OS%" == "Windows_NT" (
>   set "DIRNAME=%~dp0%" <-------- This here is a good approach
> ) else (
>   set DIRNAME=.\
> )
> {panel}
> On linux, the same is not being done:
> {panel}
> # Setup JBOSS_HOME
> RESOLVED_JBOSS_HOME=`cd "$DIRNAME/.."; pwd` <-------- This is not a good approach if dirname is calculated based on the command line DIRNAME=`dirname "$0"`
> if [ "x$JBOSS_HOME" = "x" ]; then
>     # get the full path (without any relative bits)
>     JBOSS_HOME=$RESOLVED_JBOSS_HOME
> else
>  SANITIZED_JBOSS_HOME=`cd "$JBOSS_HOME"; pwd`
>  if [ "$RESOLVED_JBOSS_HOME" != "$SANITIZED_JBOSS_HOME" ]; then
>    echo "WARNING JBOSS_HOME may be pointing to a different installation - unpredictable results may occur."
>    echo ""
>  fi
> fi
> export JBOSS_HOME
> {panel}
> I would suggest that linux scripts shouild cross cuttingly assume nothing about current working directory and do something like:
> {code}
> #DIRNAME=`dirname "$0"`
> DIRNAME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
> {code}
> Since I do not want to be corrupting my wildfly installation and I want to leave all scripts completely untouched, I will be changing my script invocation from:
> {panel}
> # source "$WILDFLY_BIN_DIRECTORY/jboss-cli.sh" --file="$fileNameWithoutPrefixSuffixQuotes"
> /bin/bash "$WILDFLY_BIN_DIRECTORY/jboss-cli.sh" --file="$fileNameWithoutPrefixSuffixQuotes"
> {panel}
> Which is not Ideal, since in some scripts I may want to set in my run time environment variables like JAVA_OPTS to override the default ones used on start up of an app server.
> So for me, in the ideal case, I would like to be able to use the source command to run any arbitrary script in the /bin folder without my current directory location playing any relevant role.
> Kindest regards.



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the jboss-jira mailing list