1

I have recently installed and configured Smarttarget 2011 with Tridion 2011 SP1 (with hotfix SP1).

  1. I am able to successfully start the QServer and Loaders.
  2. My content delivery is a .NET web application which have configured as per the manual.
  3. I am initially trying to publish an existing page from a site, which later I will modify to make it Smarttarget enabled.
  4. While publishing the page I receive an error during Deployment.

    Here is the part of error I see in the deployer log.

2012-06-13 16:44:29,781 INFO Module - No TransformProcessor configured, will not transform files before deployment for module com.tridion.deployer.modules.SchemaDeploy 2012-06-13 16:44:29,781 DEBUG TCDLEngine - TCDL: Using built-in tag registry 2012-06-13 16:44:29,781 DEBUG TCDLEngine - Loading TCDL Tag Bundle com/tridion/smarttarget/tcdl/tagbundle.xml 2012-06-13 16:44:29,781 ERROR ModuleFactory - Unable to create module com.tridion.util.TridionReflectionException: The constructor of the target class has thrown an exception, null, null at com.tridion.util.ReflectionUtil.loadClassInstanceWithTypes(ReflectionUtil.java:74) [cd_core.jar:na] at com.tridion.deployer.ModuleFactory.createModule(ModuleFactory.java:109) ~[cd_deployer.jar:na] at com.tridion.deployer.Processor.configure(Processor.java:81) [cd_deployer.jar:na] at com.tridion.deployer.Processor.(Processor.java:65) [cd_deployer.jar:na] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [na:1.6.0_11] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) [na:1.6.0_11] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) [na:1.6.0_11] at java.lang.reflect.Constructor.newInstance(Unknown Source) [na:1.6.0_11] at com.tridion.util.ReflectionUtil.loadClassInstanceWithTypes(ReflectionUtil.java:63) [cd_core.jar:na] at com.tridion.util.ReflectionUtil.loadClassInstance(ReflectionUtil.java:106) [cd_core.jar:na] at com.tridion.deployer.ProcessorFactory.createProcessor(ProcessorFactory.java:130) [cd_deployer.jar:na] at com.tridion.deployer.ProcessorFactory.createProcessors(ProcessorFactory.java:114) [cd_deployer.jar:na] at com.tridion.deployer.workers.ProcessorWorker.doWork(ProcessorWorker.java:61) [cd_deployer.jar:na] at com.tridion.deployer.phases.ProcessingPhase.execute(ProcessingPhase.java:73) [cd_deployer.jar:na] at com.tridion.deployer.phases.DeployPipelineExecutor.runMainExecutePhase(DeployPipelineExecutor.java:186) [cd_deployer.jar:na] at com.tridion.deployer.phases.DeployPipelineExecutor.doExecute(DeployPipelineExecutor.java:97) [cd_deployer.jar:na] at com.tridion.deployer.phases.DeployPipelineExecutor.execute(DeployPipelineExecutor.java:61) [cd_deployer.jar:na] at com.tridion.deployer.TransactionManager.handleDeployPackage(TransactionManager.java:80) [cd_deployer.jar:na] at com.tridion.deployer.queue.QueueLocationHandler$1.run(QueueLocationHandler.java:176) [cd_deployer.jar:na] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.6.0_11] at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) [na:1.6.0_11] at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.6.0_11] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [na:1.6.0_11] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.6.0_11] at java.lang.Thread.run(Unknown Source) [na:1.6.0_11] 2012-06-13 16:44:29,781 ERROR ProcessorFactory - Unable to load Processor com.tridion.util.TridionReflectionException: The constructor of the target class has thrown an exception, null, null at com.tridion.util.ReflectionUtil.loadClassInstanceWithTypes(ReflectionUtil.java:74) ~[cd_core.jar:na] at com.tridion.util.ReflectionUtil.loadClassInstance(ReflectionUtil.java:106) ~[cd_core.jar:na] at com.tridion.deployer.ProcessorFactory.createProcessor(ProcessorFactory.java:130) [cd_deployer.jar:na] at com.tridion.deployer.ProcessorFactory.createProcessors(ProcessorFactory.java:114) [cd_deployer.jar:na] at com.tridion.deployer.workers.ProcessorWorker.doWork(ProcessorWorker.java:61) [cd_deployer.jar:na] at com.tridion.deployer.phases.ProcessingPhase.execute(ProcessingPhase.java:73) [cd_deployer.jar:na] at com.tridion.deployer.phases.DeployPipelineExecutor.runMainExecutePhase(DeployPipelineExecutor.java:186) [cd_deployer.jar:na] at com.tridion.deployer.phases.DeployPipelineExecutor.doExecute(DeployPipelineExecutor.java:97) [cd_deployer.jar:na] at com.tridion.deployer.phases.DeployPipelineExecutor.execute(DeployPipelineExecutor.java:61) [cd_deployer.jar:na] at com.tridion.deployer.TransactionManager.handleDeployPackage(TransactionManager.java:80) [cd_deployer.jar:na] at com.tridion.deployer.queue.QueueLocationHandler$1.run(QueueLocationHandler.java:176) [cd_deployer.jar:na] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.6.0_11] at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) [na:1.6.0_11] at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.6.0_11] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [na:1.6.0_11] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.6.0_11] at java.lang.Thread.run(Unknown Source) [na:1.6.0_11] 2012-06-13 16:44:29,781 ERROR ProcessorWorker - Unable to configure processors com.tridion.configuration.ConfigurationException: Unable to load Processor, The constructor of the target class has thrown an exception, null, null, The constructor of the target class has thrown an exception, null, null at com.tridion.deployer.ProcessorFactory.createProcessor(ProcessorFactory.java:133) ~[cd_deployer.jar:na] at com.tridion.deployer.ProcessorFactory.createProcessors(ProcessorFactory.java:114) ~[cd_deployer.jar:na] at com.tridion.deployer.workers.ProcessorWorker.doWork(ProcessorWorker.java:61) ~[cd_deployer.jar:na] at com.tridion.deployer.phases.ProcessingPhase.execute(ProcessingPhase.java:73) [cd_deployer.jar:na] at com.tridion.deployer.phases.DeployPipelineExecutor.runMainExecutePhase(DeployPipelineExecutor.java:186) [cd_deployer.jar:na] at com.tridion.deployer.phases.DeployPipelineExecutor.doExecute(DeployPipelineExecutor.java:97) [cd_deployer.jar:na] at com.tridion.deployer.phases.DeployPipelineExecutor.execute(DeployPipelineExecutor.java:61) [cd_deployer.jar:na] at com.tridion.deployer.TransactionManager.handleDeployPackage(TransactionManager.java:80) [cd_deployer.jar:na] at com.tridion.deployer.queue.QueueLocationHandler$1.run(QueueLocationHandler.java:176) [cd_deployer.jar:na] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.6.0_11] at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) [na:1.6.0_11] at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.6.0_11] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [na:1.6.0_11] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.6.0_11] at java.lang.Thread.run(Unknown Source) [na:1.6.0_11]

Updated the deployer config.

<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>

David Forster
  • 1,390
  • 9
  • 16
bukubapi
  • 497
  • 2
  • 5
  • 13
  • It looks like it cannot load the SmartTarget tag bundle, or maybe it cannot load the smarttarget_core.jar file at all. How did you install/configure this? – Peter Kjaer Jun 13 '12 at 11:57
  • Also, you are using SmartTarget 2011 _Service Pack 1_, right? That is the version which is compatible with Tridion 2011 SP1. – Peter Kjaer Jun 13 '12 at 11:59
  • @PeterKjaer: I installed Smartarget ( Content Delivery ) via the installable (.bat file ) – bukubapi Jun 13 '12 at 12:17
  • @NunoLinhares : Updated the original query with the deployer config file. – bukubapi Jun 13 '12 at 12:18
  • I compared my config with yours, it's about the same. Only thing I can think of is indeed that you're missing the jar files (smartarget_core.jar, smarttarget_cartridge.jar and smarttarget_entity.jar in my machine). I tend to run the installer but select to do a _manual_ install (copy files) then manually merge those files with my existing config (yep, I don't always trust installers). – Nuno Linhares Jun 13 '12 at 12:31
  • @NunoLinhares,@Peter : Thanks for the pointers, Indeed one the jar file was missing. Now its getting deployed correctly. But on the presentation side when I run the webpage ( .NET website ) I receive an error, "[NullReferenceException: Object reference not set to an instance of an object.] Tridion.ContentDelivery.AmbientData.HttpModule.OnRequestStart(Object sender, EventArgs e) +227 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75" – bukubapi Jun 13 '12 at 12:50
  • Just to add to my previous comment: The Page that I published is the same page that worked before I configured ST. I just want to check if all is working fine, before I start with the ST implementation on the Pages. Is this the right approach ? or I should include ST related TBB too. – bukubapi Jun 13 '12 at 12:55
  • Let's stick to the Q&A format of this site. Your original problem seems solved, so please turn your description into a question. After that either Nuno or Peter can turn their comment into an answer that you can accept. By doing this, you'll help anyone who in the future has a similar problem and stumbles upon this page. If you have additional problems, I suggest opening a new question for it. – Frank van Puffelen Jun 13 '12 at 13:06
  • Looks like your Ambient Data Framework is either mis-configured or not configured at all. – Nuno Linhares Jun 13 '12 at 13:06

1 Answers1

1

Bukubapi explains this was a specific case of missing SmartTarget jars. Here are some additional installation details and steps that helped me with some recent SmartTarget installations.

Installing SmartTarget SP1 for Content Delivery with Install SDL SmartTarget 2011 SP2.bat provides 3 options:

  • Java Server Pages (JSP)
  • Active Server Pages (ASP.NET)
  • Copy files (for manual)

In addition, it lets you select Webapp root path, the Deployer config location, and 32 vs 64-bit options.

By choosing the option to update the deployer it updated the following (this specific setup was for an httpupload site on Windows Server 2008 R2 with ASP.NET).

  • Some .xml in %TRIDION_HOME%\config\
  • Some jars in %TRIDION_HOME%\lib\
  • dlls, a jar, an uninstall file, and a .log file

I probably shouldn't have selected the deployer update since I was using httpupload.

Since Tridion Content Delivery errors (aside from code) typically involve dlls, jars, or configs, it helps to know what has changed by doing the following (for SmartTarget or any type of CD install).

  • Skip the installer if you can (+1 to Nuno's preference for manual installs)
  • Back up your original site or apply the installer on a copy
  • Use a diff tool to inspect the differences

dir/l/b > files.txt in a cmd prompt is another quick and dirty way to troubleshoot CD jars, dlls, or configs.

Alvin Reyes
  • 2,889
  • 16
  • 38