tomcat/Java指定加載jar包的路徑


背景:部署的web站點,應用默認加載工程的/webapps/工程名/WEB-INF/lib下的jar包
 
但是我需要提供一個和web工程沒關系的的jar包管理目錄
 
解決方法:
執行java方法時增加 -Djava.ext.dirs指定加載jar包的的目錄(可以用相對路徑可以用絕對路徑)
 
1、命令行運行
java -Djava.ext.dirs=/opt/xxx 要執行的java程序
 
2、tomcat啟動
修改catalina.sh文件 
 
找到start條件語句的位置【elif [ "$1" = "start" ] ; then】,在執行java命令的后面增加指定jar目錄的參數-Djava.ext.dirs
 
紅色部分為修改的,如下:
eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAV    A_OPTS $CATALINA_OPTS \
…...
 
if [ "$1" = "-security" ] ; then
450     if [ $have_tty -eq 1 ]; then
451       echo "Using Security Manager"
452     fi
453     shift
454     eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
455       -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
456       -classpath "\"$CLASSPATH\"" \
457       -Djava.security.manager \
458       -Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
459       -Dcatalina.base="\"$CATALINA_BASE\"" \
460       -Dcatalina.home="\"$CATALINA_HOME\"" \
461       -Djava.ext.dirs="/opt/web/customscript/customlib" \
462       org.apache.catalina.startup.Bootstrap "$@" start \
463       >> "$CATALINA_OUT" 2>&1 "&"
464
465   else
               eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVVA_OPTS $CATALINA_OPTS \
467       -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
468       -classpath "\"$CLASSPATH\"" \
469       -Dcatalina.base="\"$CATALINA_BASE\"" \
470       -Dcatalina.home="\"$CATALINA_HOME\"" \
471       -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
472       -Djava.ext.dirs="/opt/web/customscript/customlib" \
473       org.apache.catalina.startup.Bootstrap "$@" start \
474       >> "$CATALINA_OUT" 2>&1 "&"
475
476   fi

 

此時再通過tomcat的startup.sh啟動后,就可以看到該web工程進程下多了我們指定的jar目錄參數:
 
 
說明:為什么這么加?
tomcat默認是使用bin目錄下startup.sh去啟動的,通過查看該文件我們可以看到啟動實際是調用了catalina.sh傳遞了start參數,所以也就知道是需要去修改start時的執行命令了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM