📄 basejkconfig.java
字号:
/**
* Get the host associated with this Container (if any).
*/
protected Host getHost(Container child) {
while(child != null && ! (child instanceof Host) ) {
child = child.getParent();
}
return (Host)child;
}
//-------------------- Properties --------------------
/**
* Append to config file.
* Set to <code>true</code> if the config information should be
* appended.
*/
public void setAppend(boolean apnd) {
append = apnd;
}
/**
* If false, we'll try to generate a config that will
* let apache serve static files.
* The default is true, forward all requests in a context
* to tomcat.
*/
public void setForwardAll( boolean b ) {
forwardAll=b;
}
/**
* Special option - do not generate mappings for the ROOT
* context. The default is true, and will not generate the mappings,
* not redirecting all pages to tomcat (since /* matches everything).
* This means that the web server's root remains intact but isn't
* completely servlet/JSP enabled. If the ROOT webapp can be configured
* with the web server serving static files, there's no problem setting
* this option to false. If not, then setting it true means the web
* server will be out of picture for all requests.
*/
public void setNoRoot( boolean b ) {
noRoot=b;
}
/**
* set a path to the parent directory of the
* conf folder. That is, the parent directory
* within which path setters would be resolved against,
* if relative. For example if ConfigHome is set to "/home/tomcat"
* and regConfig is set to "conf/mod_jk.conf" then the resulting
* path used would be:
* "/home/tomcat/conf/mod_jk.conf".</p>
* <p>
* However, if the path is set to an absolute path,
* this attribute is ignored.
* <p>
* If not set, execute() will set this to TOMCAT_HOME.
* @param dir - path to a directory
*/
public void setConfigHome(String dir){
if( dir==null ) return;
File f=new File(dir);
if(!f.isDirectory()){
throw new IllegalArgumentException(
"BaseConfig.setConfigHome(): "+
"Configuration Home must be a directory! : "+dir);
}
configHome = f;
}
/**
* set a path to the workers.properties file.
* @param path String path to workers.properties file
*/
public void setWorkersConfig(String path){
workersConfig= (path==null?null:new File(path));
}
/**
* set the path to the log file
* @param path String path to a file
*/
public void setJkLog(String path){
jkLog = ( path==null ? null : new File(path));
}
/**
* Set the verbosity level
* ( use debug, error, etc. ) If not set, no log is written.
*/
public void setJkDebug( String level ) {
jkDebug=level;
}
/**
* Sets the JK worker.
* @param worker The worker
*/
public void setJkWorker(String worker){
jkWorker = worker;
}
public void setLegacy(boolean legacy) {
this.legacy = legacy;
}
// -------------------- Initialize/guess defaults --------------------
/**
* Initialize defaults for properties that are not set
* explicitely
*/
protected void initProperties() {
tomcatHome = System.getProperty("catalina.home");
File tomcatDir = new File(tomcatHome);
if(configHome==null){
configHome=tomcatDir;
}
}
// -------------------- Config Utils --------------------
/**
* Add an extension mapping. Override with method to generate
* web server specific configuration
*/
protected boolean addExtensionMapping( String ctxPath, String ext,
PrintWriter pw ) {
return true;
}
/**
* Add a fulling specified mapping. Override with method to generate
* web server specific configuration
*/
protected boolean addMapping( String fullPath, PrintWriter pw ) {
return true;
}
// -------------------- General Utils --------------------
protected String getAbsoluteDocBase(Context context) {
// Calculate the absolute path of the document base
String docBase = context.getServletContext().getRealPath("/");
docBase = docBase.substring(0,docBase.length()-1);
if (!isAbsolute(docBase)){
docBase = tomcatHome + "/" + docBase;
}
docBase = patch(docBase);
return docBase;
}
// ------------------ Grabbed from FileUtil -----------------
public static File getConfigFile( File base, File configDir, String defaultF )
{
if( base==null )
base=new File( defaultF );
if( ! base.isAbsolute() ) {
if( configDir != null )
base=new File( configDir, base.getPath());
else
base=new File( base.getAbsolutePath()); //??
}
File parent=new File(base.getParent());
if(!parent.exists()){
if(!parent.mkdirs()){
throw new RuntimeException(
"Unable to create path to config file :"+
base.getAbsolutePath());
}
}
return base;
}
public static String patch(String path) {
String patchPath = path;
// Move drive spec to the front of the path
if (patchPath.length() >= 3 &&
patchPath.charAt(0) == '/' &&
Character.isLetter(patchPath.charAt(1)) &&
patchPath.charAt(2) == ':') {
patchPath=patchPath.substring(1,3)+"/"+patchPath.substring(3);
}
// Eliminate consecutive slashes after the drive spec
if (patchPath.length() >= 2 &&
Character.isLetter(patchPath.charAt(0)) &&
patchPath.charAt(1) == ':') {
char[] ca = patchPath.replace('/', '\\').toCharArray();
char c;
StringBuffer sb = new StringBuffer();
for (int i = 0; i < ca.length; i++) {
if ((ca[i] != '\\') ||
(ca[i] == '\\' &&
i > 0 &&
ca[i - 1] != '\\')) {
if (i == 0 &&
Character.isLetter(ca[i]) &&
i < ca.length - 1 &&
ca[i + 1] == ':') {
c = Character.toUpperCase(ca[i]);
} else {
c = ca[i];
}
sb.append(c);
}
}
patchPath = sb.toString();
}
// fix path on NetWare - all '/' become '\\' and remove duplicate '\\'
if (System.getProperty("os.name").startsWith("NetWare") &&
path.length() >=3 &&
path.indexOf(':') > 0) {
char[] ca = patchPath.replace('/', '\\').toCharArray();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < ca.length; i++) {
if ((ca[i] != '\\') ||
(ca[i] == '\\' && i > 0 && ca[i - 1] != '\\')) {
sb.append(ca[i]);
}
}
patchPath = sb.toString();
}
return patchPath;
}
public static boolean isAbsolute( String path ) {
// normal file
if( path.startsWith("/" ) ) return true;
if( path.startsWith(File.separator ) ) return true;
// win c:
if (path.length() >= 3 &&
Character.isLetter(path.charAt(0)) &&
path.charAt(1) == ':')
return true;
// NetWare volume:
if (System.getProperty("os.name").startsWith("NetWare") &&
path.length() >=3 &&
path.indexOf(':') > 0)
return true;
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -