无法在自定义部署程序扩展代码中读取Tridion自定义config xml文件节点值

时间:2012-11-14 04:28:28

标签: java tridion tridion-2011 tridion-content-delivery

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

请建议!!

感谢。

1 个答案:

答案 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中找到它。但是,我会把它留给你。