You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Ian Ward Comfort <ic...@rescomp.stanford.edu> on 2008/08/07 04:04:02 UTC

catalina.sh bug when JULI is not used

I believe commit 652629 (which appeared in 6.0.17) broke catalina.sh  
startup when JULI is not used -- that is, when $CATALINA_BASE/conf/ 
logging.properties does not exist.  If this file is absent,  
LOGGING_CONFIG is not set.  However the variable appears quoted in  
the shell command to exec the JVM:

	"$_RUNJAVA" $JAVA_OPTS "$LOGGING_CONFIG" $CATALINA_OPTS ...

Which introduces an empty argument when LOGGING_CONFIG is unset, and  
the JVM interprets this empty argument as the class to be invoked.

Three possible fixes are:

* Set LOGGING_CONFIG to a harmless flag if JULI is not used.  With my  
Sun JVM, a plain -D is safe.  I don't know how portable this is.  It  
isn't very pretty.

* Maintain separate JVM invocations for the cases when LOGGING_CONFIG  
is set and when it's unset.  This involves more code duplication.   
The code in question is already duplicated; I'm not sure whether that  
argues for or against this strategy.

* Use a one-item shell array with an @ subscript, which is immune to  
word splitting when between double quotes but expands to nothing when  
unpopulated.  For example:

	LOGGING_CONFIG[0]="-Djava.util.logging.config.file=$CATALINA_BASE/ 
conf/logging.properties"

followed by:

	"$_RUNJAVA" $JAVA_OPTS "${LOGGING_CONFIG[@]}" $CATALINA_OPTS ...

This method may be too clever.  I think POSIX requires shell arrays  
but being portable to true Bourne shell would require $@, which is  
already being used.

I'd be willing to write up a patch if any of these methods seem  
acceptable.

--
Ian Ward Comfort <ic...@rescomp.stanford.edu>
System Administrator, Student Computing, Stanford University


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: catalina.sh bug when JULI is not used

Posted by Ian Ward Comfort <ic...@rescomp.stanford.edu>.
On Aug 6, 2008, at 11:45 PM, Rainer Jung wrote:
> Thank you for reporting the problem. I added you message to Bugilla:
>
> https://issues.apache.org/bugzilla/show_bug.cgi?id=45585
>
> We were already thinking about your first two solutions, I missed  
> the third one. We'll need to check how reliable that is (w.r.t.  
> POSIX). I am a little in favor of "-Dnop" or something similar.

Yeah, a nop flag is probably more robust.  If you end up using that,  
you might want to swap the order of $JAVA_OPTS and "$LOGGING_CONFIG",  
so that users who need whatever property name you pick (for whatever  
bizarre reason) can override the null setting with JAVA_OPTS.

--
Ian Ward Comfort <ic...@rescomp.stanford.edu>
System Administrator, Student Computing, Stanford University


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: catalina.sh bug when JULI is not used

Posted by Rainer Jung <ra...@kippdata.de>.
Thank you for reporting the problem. I added you message to Bugilla:

https://issues.apache.org/bugzilla/show_bug.cgi?id=45585

We were already thinking about your first two solutions, I missed the 
third one. We'll need to check how reliable that is (w.r.t. POSIX). I am 
a little in favor of "-Dnop" or something similar.

Regards,

Rainer

Ian Ward Comfort wrote:
> I believe commit 652629 (which appeared in 6.0.17) broke catalina.sh 
> startup when JULI is not used -- that is, when 
> $CATALINA_BASE/conf/logging.properties does not exist.  If this file is 
> absent, LOGGING_CONFIG is not set.  However the variable appears quoted 
> in the shell command to exec the JVM:
> 
>     "$_RUNJAVA" $JAVA_OPTS "$LOGGING_CONFIG" $CATALINA_OPTS ...
> 
> Which introduces an empty argument when LOGGING_CONFIG is unset, and the 
> JVM interprets this empty argument as the class to be invoked.
> 
> Three possible fixes are:
> 
> * Set LOGGING_CONFIG to a harmless flag if JULI is not used.  With my 
> Sun JVM, a plain -D is safe.  I don't know how portable this is.  It 
> isn't very pretty.
> 
> * Maintain separate JVM invocations for the cases when LOGGING_CONFIG is 
> set and when it's unset.  This involves more code duplication.  The code 
> in question is already duplicated; I'm not sure whether that argues for 
> or against this strategy.
> 
> * Use a one-item shell array with an @ subscript, which is immune to 
> word splitting when between double quotes but expands to nothing when 
> unpopulated.  For example:
> 
>     LOGGING_CONFIG[0]="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties" 
> 
> 
> followed by:
> 
>     "$_RUNJAVA" $JAVA_OPTS "${LOGGING_CONFIG[@]}" $CATALINA_OPTS ...
> 
> This method may be too clever.  I think POSIX requires shell arrays but 
> being portable to true Bourne shell would require $@, which is already 
> being used.
> 
> I'd be willing to write up a patch if any of these methods seem acceptable.
> 
> -- 
> Ian Ward Comfort <ic...@rescomp.stanford.edu>
> System Administrator, Student Computing, Stanford University

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org