【问题标题】:Content Delivery Error - Smarttarget内容交付错误 - Smarttarget
【发布时间】:2012-06-16 08:52:36
【问题描述】:

我最近使用 Tridion 2011 SP1(带有修补程序 SP1)安装并配置了 Smarttarget 2011。

  1. 我能够成功启动 QServer 和 Loaders。
  2. 我的内容交付是一个 .NET Web 应用程序,它已按照 手册。
  3. 我最初尝试从 站点,稍后我将对其进行修改以使其启用 Smarttarget。
  4. 在发布页面时,我在部署期间收到错误消息。

    这是我在部署日志中看到的部分错误。

2012-06-13 16:44:29,781 INFO 模块 - 未配置 TransformProcessor,在部署模块 com.tridion.deployer.modules.SchemaDeploy 之前不会转换文件 2012-06-13 16:44:29,781 调试 TCDLEngine - TCDL:使用内置标签注册表 2012-06-13 16:44:29,781 调试 TCDLEngine - 加载 TCDL 标签包 com/tridion/smarttarget/tcdl/tagbundle.xml 2012-06-13 16:44:29,781 错误 ModuleFactory - 无法创建模块 com.tridion.util.TridionReflectionException:目标类的构造函数抛出了异常,null,null 在 com.tridion.util.ReflectionUtil.loadClassInstanceWithTypes(ReflectionUtil.java:74) [cd_core.jar:na] 在 com.tridion.deployer.ModuleFactory.createModule(ModuleFactory.java:109) ~[cd_deployer.jar:na] 在 com.tridion.deployer.Processor.configure(Processor.java:81) [cd_deployer.jar:na] 在 com.tridion.deployer.Processor.(Processor.java:65) [cd_deployer.jar:na] 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [na:1.6.0_11] 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(未知来源)[na:1.6.0_11] 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知来源)[na:1.6.0_11] 在 java.lang.reflect.Constructor.newInstance(Unknown Source) [na:1.6.0_11] 在 com.tridion.util.ReflectionUtil.loadClassInstanceWithTypes(ReflectionUtil.java:63) [cd_core.jar:na] 在 com.tridion.util.ReflectionUtil.loadClassInstance(ReflectionUtil.java:106) [cd_core.jar:na] 在 com.tridion.deployer.ProcessorFactory.createProcessor(ProcessorFactory.java:130) [cd_deployer.jar:na] 在 com.tridion.deployer.ProcessorFactory.createProcessors(ProcessorFactory.java:114) [cd_deployer.jar:na] 在 com.tridion.deployer.workers.ProcessorWorker.doWork(ProcessorWorker.java:61) [cd_deployer.jar:na] 在 com.tridion.deployer.phases.ProcessingPhase.execute(ProcessingPhase.java:73) [cd_deployer.jar:na] 在 com.tridion.deployer.phases.DeployPipelineExecutor.runMainExecutePhase(DeployPipelineExecutor.java:186) [cd_deployer.jar:na] 在 com.tridion.deployer.phases.DeployPipelineExecutor.doExecute(DeployPipelineExecutor.java:97) [cd_deployer.jar:na] 在 com.tridion.deployer.phases.DeployPipelineExecutor.execute(DeployPipelineExecutor.java:61) [cd_deployer.jar:na] 在 com.tridion.deployer.TransactionManager.handleDeployPackage(TransactionManager.java:80) [cd_deployer.jar:na] 在 com.tridion.deployer.queue.QueueLocationHandler$1.run(QueueLocationHandler.java:176) [cd_deployer.jar:na] 在 java.util.concurrent.Executors$RunnableAdapter.call(未知来源)[na:1.6.0_11] 在 java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) [na:1.6.0_11] 在 java.util.concurrent.FutureTask.run(未知来源)[na:1.6.0_11] 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [na:1.6.0_11] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源)[na:1.6.0_11] 在 java.lang.Thread.run(未知来源)[na:1.6.0_11] 2012-06-13 16:44:29,781 错误处理器工厂-无法加载处理器 com.tridion.util.TridionReflectionException:目标类的构造函数抛出了异常,null,null 在 com.tridion.util.ReflectionUtil.loadClassInstanceWithTypes(ReflectionUtil.java:74) ~[cd_core.jar:na] 在 com.tridion.util.ReflectionUtil.loadClassInstance(ReflectionUtil.java:106) ~[cd_core.jar:na] 在 com.tridion.deployer.ProcessorFactory.createProcessor(ProcessorFactory.java:130) [cd_deployer.jar:na] 在 com.tridion.deployer.ProcessorFactory.createProcessors(ProcessorFactory.java:114) [cd_deployer.jar:na] 在 com.tridion.deployer.workers.ProcessorWorker.doWork(ProcessorWorker.java:61) [cd_deployer.jar:na] 在 com.tridion.deployer.phases.ProcessingPhase.execute(ProcessingPhase.java:73) [cd_deployer.jar:na] 在 com.tridion.deployer.phases.DeployPipelineExecutor.runMainExecutePhase(DeployPipelineExecutor.java:186) [cd_deployer.jar:na] 在 com.tridion.deployer.phases.DeployPipelineExecutor.doExecute(DeployPipelineExecutor.java:97) [cd_deployer.jar:na] 在 com.tridion.deployer.phases.DeployPipelineExecutor.execute(DeployPipelineExecutor.java:61) [cd_deployer.jar:na] 在 com.tridion.deployer.TransactionManager.handleDeployPackage(TransactionManager.java:80) [cd_deployer.jar:na] 在 com.tridion.deployer.queue.QueueLocationHandler$1.run(QueueLocationHandler.java:176) [cd_deployer.jar:na] 在 java.util.concurrent.Executors$RunnableAdapter.call(未知来源)[na:1.6.0_11] 在 java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) [na:1.6.0_11] 在 java.util.concurrent.FutureTask.run(未知来源)[na:1.6.0_11] 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [na:1.6.0_11] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源)[na:1.6.0_11] 在 java.lang.Thread.run(未知来源)[na:1.6.0_11] 2012-06-13 16:44:29,781 错误 ProcessorWorker - 无法配置处理器 com.tridion.configuration.ConfigurationException: Unable to load Processor,目标类的构造函数抛出异常,null,null,目标类的构造函数抛出异常,null,null 在 com.tridion.deployer.ProcessorFactory.createProcessor(ProcessorFactory.java:133) ~[cd_deployer.jar:na] 在 com.tridion.deployer.ProcessorFactory.createProcessors(ProcessorFactory.java:114) ~[cd_deployer.jar:na] 在 com.tridion.deployer.workers.ProcessorWorker.doWork(ProcessorWorker.java:61) ~[cd_deployer.jar:na] 在 com.tridion.deployer.phases.ProcessingPhase.execute(ProcessingPhase.java:73) [cd_deployer.jar:na] 在 com.tridion.deployer.phases.DeployPipelineExecutor.runMainExecutePhase(DeployPipelineExecutor.java:186) [cd_deployer.jar:na] 在 com.tridion.deployer.phases.DeployPipelineExecutor.doExecute(DeployPipelineExecutor.java:97) [cd_deployer.jar:na] 在 com.tridion.deployer.phases.DeployPipelineExecutor.execute(DeployPipelineExecutor.java:61) [cd_deployer.jar:na] 在 com.tridion.deployer.TransactionManager.handleDeployPackage(TransactionManager.java:80) [cd_deployer.jar:na] 在 com.tridion.deployer.queue.QueueLocationHandler$1.run(QueueLocationHandler.java:176) [cd_deployer.jar:na] 在 java.util.concurrent.Executors$RunnableAdapter.call(未知来源)[na:1.6.0_11] 在 java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) [na:1.6.0_11] 在 java.util.concurrent.FutureTask.run(未知来源)[na:1.6.0_11] 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [na:1.6.0_11] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源)[na:1.6.0_11] 在 java.lang.Thread.run(Unknown Source) [na:1.6.0_11]

更新了部署器配置。

<Processors> 
<!-- A Processor is triggered by the Deployer to process an incoming
           TransportPackage based on the 'Action' command in the
           ProcessorInstructions. The default Processor triggers modules
           sequentially as they are defined in a Processor section. The 'Class'
           attribute defines the Processor class that will be used for processing an action.
           'Phase' attribute is optional and it defines in which processing phase this processor is active. 'Phase'
           attribute can have following values: pre-processing, processing, post-processing, pre-transaction and post-transaction-->  
<!-- <Processor Action="Deploy" Class="com.tridion.deployer.Processor" Phase="post-transaction"> -->  
<Processor Action="Deploy" Class="com.tridion.deployer.Processor"> 
  <!-- A Module is triggered by a Processor to process incoming instructions.
                The 'Type' attribute needs to be unique within a Processor and serves
                as a symbolic identifier. The 'Class' attribute defines the
                implementation used for any type of Module. Replace or add modules to
                implement custom Deployer behavior. -->  
  <Module Type="SchemaDeploy" Class="com.tridion.deployer.modules.SchemaDeploy"/>  
  <Module Type="PageDeploy" Class="com.tridion.deployer.modules.PageDeploy"> 
    <!-- The transformer enables the TCDL Engine -->  
    <Transformer Class="com.tridion.deployer.TCDLTransformer"/> 
  </Module>  
  <Module Type="BinaryDeploy" Class="com.tridion.deployer.modules.BinaryDeploy"/>  
  <Module Type="ComponentDeploy" Class="com.tridion.deployer.modules.ComponentDeploy"/>  
  <Module Type="TemplateDeploy" Class="com.tridion.deployer.modules.TemplateDeploy"/>  
  <Module Type="PublicationDeploy" Class="com.tridion.deployer.modules.PublicationDeploy"/>  
  <!-- This module enables deployment of taxonomies -->  
  <Module Type="TaxonomyDeploy" Class="com.tridion.deployer.modules.TaxonomyDeploy"/>  
  <Module Type="ComponentPresentationDeploy" Class="com.tridion.deployer.modules.ComponentPresentationDeploy"> 
    <!-- The transformer enables the TCDL Engine -->  
    <Transformer Class="com.tridion.deployer.TCDLTransformer"/> 
  </Module>  
  <!-- This module enables deployment of structure groups -->  
  <Module Type="StructureGroupDeploy" Class="com.tridion.deployer.modules.StructureGroupDeploy"/> 
</Processor>  
<Processor Action="Undeploy" Class="com.tridion.deployer.Processor"> 
  <Module Type="PageUndeploy" Class="com.tridion.deployer.modules.PageUndeploy"/>  
  <Module Type="ComponentPresentationUndeploy" Class="com.tridion.deployer.modules.ComponentPresentationUndeploy"/>  
  <!-- This module enables the undeploy of taxonomies -->  
  <Module Type="TaxonomyUndeploy" Class="com.tridion.deployer.modules.TaxonomyUndeploy"/>  
  <!-- This module enables the undeploy of structure groups -->  
  <Module Type="StructureGroupUndeploy" Class="com.tridion.deployer.modules.StructureGroupUndeploy"/> 
</Processor>  
<Processor Action="Deploy" Class="com.tridion.deployer.Processor" Phase="post-transaction">
  <Module Type="SmartTargetDeploy" Class="com.tridion.smarttarget.deployer.FredhopperDeployerModule">
    <Transformer Class="com.tridion.deployer.TCDLTransformer"/>
  </Module>
</Processor>
<Processor Action="Undeploy" Class="com.tridion.deployer.Processor" Phase="post-transaction">
  <Module Type="SmartTargetUndeploy" Class="com.tridion.smarttarget.deployer.FredhopperUndeployModule"/>
</Processor>

【问题讨论】:

  • 似乎无法加载 SmartTarget 标签包,或者根本无法加载 smarttarget_core.jar 文件。你是如何安装/配置这个的?
  • 另外,您使用的是 SmartTarget 2011 Service Pack 1,对吗?这是与 Tridion 2011 SP1 兼容的版本。
  • @PeterKjaer:我通过可安装文件(.bat 文件)安装了 Smartarget(内容交付)
  • @NunoLinhares :使用部署器配置文件更新了原始查询。
  • 我比较了我的配置和你的配置,差不多。我唯一能想到的确实是您缺少 jar 文件(我的机器中的 smartarget_core.jar、smarttarget_cartridge.jar 和 smarttarget_entity.jar)。我倾向于运行安装程序,但选择执行手动安装(复制文件),然后手动将这些文件与我现有的配置合并(是的,我并不总是信任安装程序)。

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


【解决方案1】:

Bukubapi 解释说这是一个缺少 SmartTarget jar 的特定案例。以下是一些其他安装详细信息和步骤,它们对我最近的一些 SmartTarget 安装有所帮助。

使用 Install SDL SmartTarget 2011 SP2.bat 安装 SmartTarget SP1 for Content Delivery 提供 3 个选项:

  • Java 服务器页面 (JSP)
  • 活动服务器页面 (ASP.NET)
  • 复制文件(手动)

此外,它还允许您选择 Webapp root pathDeployer config location 以及 32 位和 64 位选项。

通过选择更新部署程序的选项,它更新了以下内容(此特定设置适用于带有 ASP.NET 的 Windows Server 2008 R2 上的 httpupload 站点)。

  • %TRIDION_HOME%\config\ 中的一些 .xml
  • %TRIDION_HOME%\lib\中的一些罐子
  • dll、jar、卸载文件和 .log 文件

我可能不应该选择部署器更新,因为我使用的是 httpupload。

由于 Tridion 内容交付错误(除了代码)通常涉及 dll、jar 或配置,因此通过执行以下操作(对于 SmartTarget 或任何类型的 CD 安装)了解发生了什么变化会有所帮助。

  • 如果可以,请跳过安装程序(对 Nuno 的手动安装偏好+1)
  • 备份您的原始网站或将安装程序应用到副本
  • 使用差异工具检查差异

cmd 提示符中的dir/l/b &gt; files.txt 是另一种快速而肮脏的解决 CD jar、dll 或配置问题的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-11
    • 2012-09-11
    • 2012-06-18
    • 2023-04-01
    • 2018-11-03
    • 2016-02-12
    • 2012-10-24
    • 1970-01-01
    相关资源
    最近更新 更多