2

我下面的代码在 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”。

请推荐!!

谢谢。

4

1 回答 1

5

在我看来,您的ExtensionsConfiguration课程看起来不错,但问题在于读取“PageDeployer”中的值的代码。

您的 xml 文件有一个节点,其中包含您尝试使用 读取的 etc 等DeployerCustomization属性,并且您的 XPath 表达式似乎没有在寻找它正在寻找的节点下的属性。NameXPathDeployerCustomization

您需要将代码更改为以下代码并尝试(注意开头的 @ 属性和 / ):

  String extensionFromFile = ConfigurationHelper.getStringValue(configData,
"/Configuration/DeployerCustomization/@Extension", null);

希望对获取配置有所帮助。

记录:

您创建了一个未配置为使用 logback.xml 进行日志记录的新包类。如果要配置日志记录,则需要将包添加到 logback 配置中(如下所示)。

<logger name="com.tridion.custom.extensions">
  <appender-ref ref="rollingDeployerLog"/>
</logger>

在完全独立的注释中,您使用的 APIcom.tridion.configuration.XMLConfigurationReader似乎不公开。除非我错过了,否则我在 javadoc 中的任何地方都找不到它。但是,我会把它留给你。

于 2012-11-14T15:20:24.070 回答