A propos de la solution ADF pour la mise à jour du problème de prévisualisation dans XPM


1

Lorsque je clique sur "Mettre à jour l'aperçu", l'aperçu "Mettre à jour l'aperçu" s'affiche encore et encore.

Étant donné que l'URL réelle est différente de l'URL de la base de données Broker, le problème ci-dessus se produit. Donc, je résous le problème en utilisant le chargeur automatique de documents (ADF).

Je me réfère aux pages suivantes. les pages suivantes sont très utiles pour moi.

http://docs.sdl.com/LiveContent/content/en-US/SDL%20Tridion%20full%20documentation-v1/GUID-C6537469-7D70-4F82-B6C9-7883213F9F1B

http://jaimesantosalcon.blogspot.jp/2013/10/managing-claims-and-their-scope-in-sdl.html

http://erichuiza.blogspot.jp/2012/07/ambient-data-framework-in-nutshell.html

https://github.com/TridionPractice/tridion-practice/blob/master/AmbientDataFramework/ClaimStore.jsp

Dans un premier temps, à comprendre le programme adf, je mets en œuvre le programme facile.

  1. Mettre en œuvre le programme et construire
package com.tridion.tag.common; 

import java.io.File; 
import java.io.FileWriter; 
import java.net.URI; 
import java.util.Map; 
import java.util.TreeMap; 

import com.tridion.ambientdata.AmbientDataException; 
import com.tridion.ambientdata.claimstore.ClaimStore; 
import com.tridion.ambientdata.processing.AbstractClaimProcessor; 

public class AmbientDataFrameworkExtensionHandler extends AbstractClaimProcessor { 

    @Override 
    public void onRequestStart(ClaimStore claimStore) throws AmbientDataException { 
     try { 
      TreeMap<String, Object> claims = new TreeMap<String, Object>(); 
      Map<URI, Object> allClaims = claimStore.getAll(); 
      File file1 = new File("/tmp/log_adf1.txt"); 
      for (URI claimUri : allClaims.keySet()) { 
       claims.put(claimUri.toString(), allClaims.get(claimUri)); 
      } 
      FileWriter filewriter = new FileWriter(file1); 
      filewriter.write("onRequestStart"); 
     } catch (Exception e) { 
      throw new AmbientDataException(e); 
     } 
    } 

    @Override 
    public void onRequestEnd(ClaimStore claimStore) throws AmbientDataException { 
     try { 
      File file = new File("/tmp/log_adf2.txt"); 
      FileWriter filewriter = new FileWriter(file); 
      filewriter.write("onRequestEnd"); 
     } catch (Exception e) { 
      throw new AmbientDataException(e); 
     } 
    } 

    @Override 
    public void onSessionStart(ClaimStore claimStore) throws AmbientDataException { 
     try { 
      File file = new File("/tmp/log_adf3.txt"); 
      FileWriter filewriter = new FileWriter(file); 
      filewriter.write("onRequestEnd"); 
      filewriter.write(claimStore.getAll().size()); 
     } catch (Exception e) { 
      throw new AmbientDataException(e); 
     } 
    } 
} 
  1. créer cd_ambient_cartridge_conf.xml (fichier de configuration)

    <ClaimDefinitions> 
         <ClaimDefinition Uri="tcd:claim:userid" Scope="SESSION" Description="The user's unique identifier." /> 
    </ClaimDefinitions> 
    
    <ClaimProcessorDefinitions> 
         <ClaimProcessorDefinition Uri="tcd:claimprocessor:example:userdetails" ImplementationClass="com.tridion.tag.common.AmbientDataFrameworkExtensionHandler" 
                   Description="Example"> 
         </ClaimProcessorDefinition> 
    </ClaimProcessorDefinitions> 
    

  2. configure cd_ambient_conf.xml

  3. restart webservice

  4. sur la page web

  5. confirmer le résultat

    Je confirme que log_adf1.txt et log_adf2.txt sont créés au tmp . mais les fichiers ci-dessus sont 0 Ko et aucune erreur n'est sortie. Je m'attends à ce que les fichiers soient décrits comme "onRequestStart", "onRequestEnd".

pourquoi le programme est fonctionne pas comme prévu est mon programme et mon mauvais understarding mal?

1

Il y a beaucoup de parties de cette question, mais je vais juste essayer de répondre à votre dernière question sur pourquoi les fichiers journaux sont 0 octets.

Je pense que cela est dû au fait que vous ne fermez pas le fichier correctement. Je crois que vous devez appeler la méthode close() sur le FileWriter pour vider et déverrouiller le fichier.

Voir la réponse suivante pour plusieurs différents exemples de la façon de le faire:

Best way to close nested streams in Java 6

  0

Merci de répondre à ma question et résoudre le problème. Je me trompe. Ensuite, j'essaie de résoudre le vrai problème (mise à jour de l'aperçu).En fait, je ne sais pas comment résoudre en utilisant ADF 06 janv.. 162016-01-06 03:05:22