2

以下のコードは Tridion 2009 で問題なく動作していましたが、最近、Java で記述された以下のコードの Tridion 2011 に移行しました。

ファイルの取得: 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 ファイルには、を使用して読み取ろうとしている etcDeployerCustomizationのような属性を持つノードがあり、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 に答える