?? opencms.java
字號:
if(I_CmsLogChannels.C_PREPROCESSOR_IS_LOGGING && A_OpenCms.isLogging()) {
A_OpenCms.log(I_CmsLogChannels.C_OPENCMS_INIT, "[OpenCms] " + e.getMessage());
}
}
// Initialize OpenCms ClassLoader
initClassLoader(this);
// Check, if the element cache should be enabled
m_enableElementCache = conf.getBoolean("elementcache.enabled", false);
if(I_CmsLogChannels.C_PREPROCESSOR_IS_LOGGING && A_OpenCms.isLogging()) {
A_OpenCms.log(I_CmsLogChannels.C_OPENCMS_INIT, "[OpenCms] element cache " + (m_enableElementCache?"en":"dis") + "abled. ");
}
if(m_enableElementCache) {
try {
c_elementCache = new CmsElementCache(conf.getInteger("elementcache.uri", 10000),
conf.getInteger("elementcache.elements", 50000),
conf.getInteger("elementcache.variants", 100));
}catch(Exception e) {
if(I_CmsLogChannels.C_PREPROCESSOR_IS_LOGGING && A_OpenCms.isLogging()) {
A_OpenCms.log(I_CmsLogChannels.C_OPENCMS_INIT, "[OpenCms] " + e.getMessage());
}
}
c_variantDeps = new Hashtable();
c_elementCache.getElementLocator().setExternDependencies(c_variantDeps);
}
// now for the link replacement rules there are up to three rulesets for export online and offline
try{
if(I_CmsLogChannels.C_PREPROCESSOR_IS_LOGGING && A_OpenCms.isLogging()) {
A_OpenCms.log(I_CmsLogChannels.C_OPENCMS_INIT, "[OpenCms] initializing link replace rules.");
}
String[] staticUrlPrefix = new String[4];
staticUrlPrefix[0]=Utils.replace(conf.getString(C_URL_PREFIX_EXPORT, ""), C_WEB_APP_REPLACE_KEY, CmsBase.getWebAppName());
staticUrlPrefix[1]=Utils.replace(conf.getString(C_URL_PREFIX_HTTP, ""), C_WEB_APP_REPLACE_KEY, CmsBase.getWebAppName());
staticUrlPrefix[2]=Utils.replace(conf.getString(C_URL_PREFIX_HTTPS, ""), C_WEB_APP_REPLACE_KEY, CmsBase.getWebAppName());
staticUrlPrefix[3]=Utils.replace(conf.getString(C_URL_PREFIX_SERVERNAME, ""), C_WEB_APP_REPLACE_KEY, CmsBase.getWebAppName());
c_exportProperties.setUrlPrefixArray(staticUrlPrefix);
// to get the right rulesets we need the default value for the export property
String exportDefault = conf.getString("staticexport.default.export", "true");
c_exportProperties.setExportDefaultValue(exportDefault);
String export = conf.getString("linkrules."+exportDefault+".export");
String[] linkRulesExport;
if(export != null && !"".equals(export)){
linkRulesExport = conf.getStringArray("ruleset."+export);
// now replace ${WEB_APP_NAME} with the correct name of the webapplication and replace the other variables
for(int i = 0; i < linkRulesExport.length; i++) {
linkRulesExport[i] = Utils.replace(linkRulesExport[i], C_WEB_APP_REPLACE_KEY, CmsBase.getWebAppName());
linkRulesExport[i] = Utils.replace(linkRulesExport[i], "${"+C_URL_PREFIX_EXPORT+"}", staticUrlPrefix[0]);
linkRulesExport[i] = Utils.replace(linkRulesExport[i], "${"+C_URL_PREFIX_HTTP+"}", staticUrlPrefix[1]);
linkRulesExport[i] = Utils.replace(linkRulesExport[i], "${"+C_URL_PREFIX_HTTPS+"}", staticUrlPrefix[2]);
linkRulesExport[i] = Utils.replace(linkRulesExport[i], "${"+C_URL_PREFIX_SERVERNAME+"}", staticUrlPrefix[3]);
}
c_exportProperties.setLinkRulesExport(linkRulesExport);
}
String online = conf.getString("linkrules."+exportDefault+".online");
String[] linkRulesOnline;
if(online != null && !"".equals(online)){
linkRulesOnline = conf.getStringArray("ruleset."+online);
// now replace ${WEB_APP_NAME} with the correct name of the webapplication and replace the other variables
for(int i = 0; i < linkRulesOnline.length; i++) {
linkRulesOnline[i] = Utils.replace(linkRulesOnline[i], C_WEB_APP_REPLACE_KEY, CmsBase.getWebAppName());
linkRulesOnline[i] = Utils.replace(linkRulesOnline[i], "${"+C_URL_PREFIX_EXPORT+"}", staticUrlPrefix[0]);
linkRulesOnline[i] = Utils.replace(linkRulesOnline[i], "${"+C_URL_PREFIX_HTTP+"}", staticUrlPrefix[1]);
linkRulesOnline[i] = Utils.replace(linkRulesOnline[i], "${"+C_URL_PREFIX_HTTPS+"}", staticUrlPrefix[2]);
linkRulesOnline[i] = Utils.replace(linkRulesOnline[i], "${"+C_URL_PREFIX_SERVERNAME+"}", staticUrlPrefix[3]);
}
c_exportProperties.setLinkRulesOnline(linkRulesOnline);
}
String offline = conf.getString("linkrules."+exportDefault+".offline");
String[] linkRulesOffline;
if(offline != null && !"".equals(offline)){
linkRulesOffline = conf.getStringArray("ruleset."+offline);
// now replace ${WEB_APP_NAME} with the correct name of the webapplication and replace the other variables
for(int i = 0; i < linkRulesOffline.length; i++) {
linkRulesOffline[i] = Utils.replace(linkRulesOffline[i], C_WEB_APP_REPLACE_KEY, CmsBase.getWebAppName());
linkRulesOffline[i] = Utils.replace(linkRulesOffline[i], "${"+C_URL_PREFIX_EXPORT+"}", staticUrlPrefix[0]);
linkRulesOffline[i] = Utils.replace(linkRulesOffline[i], "${"+C_URL_PREFIX_HTTP+"}", staticUrlPrefix[1]);
linkRulesOffline[i] = Utils.replace(linkRulesOffline[i], "${"+C_URL_PREFIX_HTTPS+"}", staticUrlPrefix[2]);
linkRulesOffline[i] = Utils.replace(linkRulesOffline[i], "${"+C_URL_PREFIX_SERVERNAME+"}", staticUrlPrefix[3]);
}
c_exportProperties.setLinkRulesOffline(linkRulesOffline);
}
String extern = conf.getString("linkrules."+exportDefault+".extern");
String[] linkRulesExtern;
if(extern != null && !"".equals(extern)){
linkRulesExtern = conf.getStringArray("ruleset."+extern);
// now replace ${WEB_APP_NAME} with the correct name of the webapplication and replace the other variables
for(int i = 0; i < linkRulesExtern.length; i++) {
linkRulesExtern[i] = Utils.replace(linkRulesExtern[i], C_WEB_APP_REPLACE_KEY, CmsBase.getWebAppName());
linkRulesExtern[i] = Utils.replace(linkRulesExtern[i], "${"+C_URL_PREFIX_EXPORT+"}", staticUrlPrefix[0]);
linkRulesExtern[i] = Utils.replace(linkRulesExtern[i], "${"+C_URL_PREFIX_HTTP+"}", staticUrlPrefix[1]);
linkRulesExtern[i] = Utils.replace(linkRulesExtern[i], "${"+C_URL_PREFIX_HTTPS+"}", staticUrlPrefix[2]);
linkRulesExtern[i] = Utils.replace(linkRulesExtern[i], "${"+C_URL_PREFIX_SERVERNAME+"}", staticUrlPrefix[3]);
}
c_exportProperties.setLinkRulesExtern(linkRulesExtern);
}
c_exportProperties.setStartRule(null); // temporary out of order: conf.getString("exportfirstrule");
Vector staticExportStart=new Vector();
staticExportStart.add("/");
c_exportProperties.setStartPoints(staticExportStart);
// at last the target for the export
c_exportProperties.setExportPath( com.opencms.boot.CmsBase.getAbsoluteWebPath(CmsBase.getAbsoluteWebPath(conf.getString(C_STATICEXPORT_PATH))));
// should the links in static export be relative?
c_exportProperties.setExportRelativeLinks(conf.getBoolean("relativelinks_in_export", false));
// is the static export enabled?
String activCheck = conf.getString("staticexport.enabled", "false");
c_exportProperties.setStaticExportEnabledValue(activCheck);
if("true".equalsIgnoreCase(activCheck)){
c_exportProperties.setStaticExportEnabled(true);
}else{
c_exportProperties.setStaticExportEnabled(false);
}
if(c_exportProperties.isStaticExportEnabled()){
// we have to generate the dynamic rulessets
createDynamicLinkRules();
}else{
if("false_ssl".equalsIgnoreCase(activCheck)){
// no static esport, but we need the dynamic rules for setting the protokoll to https
c_exportProperties.setLinkRulesOffline(new String[]{"s#^#" + staticUrlPrefix[1] + "#"});
c_exportProperties.setLinkRulesOnline(new String[]{"*dynamicRules*", "s#^#" + staticUrlPrefix[1] + "#"});
// and we have to change the standart export prefix to stay in opencms
c_exportProperties.getUrlPrefixArray()[0] = staticUrlPrefix[1];
// if we need them we should create them
createDynamicLinkRules();
}else{
// no static export. We need online and offline rules to stay in OpenCms.
// we generate them with the url_prefix_http so the user can still configure
// the servletpath.
c_exportProperties.setLinkRulesOffline(new String[]{"s#^#" + staticUrlPrefix[1] + "#"});
c_exportProperties.setLinkRulesOnline(new String[]{"s#^#" + staticUrlPrefix[1] + "#"});
}
}
}catch(Exception e){
if(I_CmsLogChannels.C_PREPROCESSOR_IS_LOGGING && A_OpenCms.isLogging()) {
A_OpenCms.log(I_CmsLogChannels.C_OPENCMS_INIT, "[OpenCms] " + e.toString());
}
}
}
/**
* Destructor, called when the the servlet is shut down.
* @exception CmsException Throws CmsException if something goes wrong.
*/
public void destroy() throws CmsException {
CmsObject cms = new CmsObject();
cms.init(c_rb);
cms.destroy();
}
/**
* Insert the method's description here.
* Creation date: (10/25/00 12:42:11)
* @return com.opencms.launcher.CmsLauncherManager
*/
public CmsLauncherManager getLauncherManager() {
return m_launcherManager;
}
/**
* Gets the ElementCache used for the online project.
* @return CmsElementCache
*/
public static CmsElementCache getOnlineElementCache(){
return c_elementCache;
}
/**
* Returns the properties for the static export.
*/
public static CmsStaticExportProperties getStaticExportProperties(){
return c_exportProperties;
}
/**
* Gets the hashtable with the variant dependencies used for the elementcache.
* @return Hashtable
*/
public static Hashtable getVariantDependencies(){
return c_variantDeps;
}
/**
* This method gets the requested document from the OpenCms and returns it to the
* calling module.
*
* @param cms The CmsObject containing all information about the requested document
* and the requesting user.
* @return CmsFile object.
*/
CmsFile initResource(CmsObject cms) throws CmsException,IOException {
CmsFile file = null;
//check if the requested resource is a folder
// if this is the case, redirect to the according index.html
String resourceName = cms.getRequestContext().getUri();
if(resourceName.endsWith("/")) {
resourceName += C_INDEX;
cms.getRequestContext().getResponse().sendCmsRedirect(resourceName);
return null;
}
try {
//read the requested file
file = cms.readFile(cms.getRequestContext().getUri());
}
catch(CmsException e) {
if(e.getType() == CmsException.C_NOT_FOUND) {
// there was no file found with this name.
// it is possible that the requested resource was a folder, so try to access an
// index.html there
resourceName = cms.getRequestContext().getUri();
// test if the requested file is already the index.html
if(!resourceName.endsWith(C_INDEX)) {
// check if the requested file ends with an "/"
if(!resourceName.endsWith("/")) {
resourceName += "/";
}
//redirect the request to the index.html
resourceName += C_INDEX;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -