我的下面的代码在Tridion 2009中运行良好,最近我们迁移到了Tridion 2011,下面是用java编写的代码。
获取文件 ExtensionsConfiguration.java
package com.tridion.custom.extensions;
import com.tridion.configuration.Configuration;
import com.tridion.configuration.ConfigurationException;
import com.tridion.configuration.XMLConfigurationReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ExtensionsConfiguration
{
private static Logger logger = LoggerFactory.getLogger(ExtensionsConfiguration.class);
private static Configuration configuration;
public static Configuration getInstance()
{
if (configuration == null)
try
{
XMLConfigurationReader localXMLConfigurationReader = new XMLConfigurationReader();
configuration = localXMLConfigurationReader.readConfiguration("cd_deployer_ext.xml");
logger.info("ExtensionsConfiguration.getInstance:File Read",configuration.getContent());
}
catch (ConfigurationException localConfigurationException)
{
logger.error("ExtensionsConfiguration.ConfigurationException: Unable to read configuration.", localConfigurationException);
}
catch (Exception ex)
{
logger.error("ExtensionsConfiguration.Exception: Unable to read configuration.", ex.getStackTrace());
}
return configuration;
}
}
在上面的代码中,我试图阅读位于%TRIDION_HOME%/ config内的“cd_deployer_ext.xml”,上面的代码在2009年运行良好。
cd_deployer_ext.xml的示例格式
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<DeployerCustomization Enable="true" Extension=".aspx" FilePath="F:\WWW\GoogleDataFiles\"></DeployerCustomization>
</Configuration>
以下是我尝试从此文件中读取值的方法
阅读值: PageDeployer.java 下面的示例代码,我用来读取ExtensionsConfiguration.java中的值
Configuration configData = ExtensionsConfiguration.getInstance();
String extensionFromFile = ConfigurationHelper.getStringValue(configData,"Configuration/DeployerCustomization/Extension", null);
现在,extensionFromFile应该给我“.aspx”。
请建议!!
感谢。
答案 0 :(得分:5)
我认为你的ExtensionsConfiguration
课看起来不错,但问题在于读取'PageDeployer`中的值的代码。
您的xml文件有一个节点DeployerCustomization
,其中包含Name
等属性,您尝试使用XPath
读取这些属性,而您的XPath表达式似乎没有查找属性正在寻找DeployerCustomization
下的节点。
您需要将代码更改为以下内容并尝试(请注意@ for属性和/在开头):
String extensionFromFile = ConfigurationHelper.getStringValue(configData,
"/Configuration/DeployerCustomization/@Extension", null);
希望有助于获得配置。
<强>日志记录:强>
您创建了一个新的包类,该类未配置为使用logback.xml进行日志记录。如果要配置日志记录,则需要将软件包添加到logback配置中(例如下面的内容)。
<logger name="com.tridion.custom.extensions">
<appender-ref ref="rollingDeployerLog"/>
</logger>
在完全独立的注释中,您使用的com.tridion.configuration.XMLConfigurationReader
API似乎不公开。除非我错过了,否则我无法在javadoc中找到它。但是,我会把它留给你。