9

いくつかのテスト (デフォルト) ページで新しい SDL Tridion UI 2012 機能を確立しようとしています。「プレビューの更新」を数回クリックしたにもかかわらず、「このページのプレビューは最新ではありません」という警告が表示され続けます。仮想画像を使用していたので、自分以外はページを編集できません。どのコンポーネントが変更されたかは関係ありません。「セッション プレビュー」Web サービス側の cd_core.log ファイルを調べたところ、次のノードが興味深いことがわかりました。

INFO  WritableODataClaimProcessor - No session wrapper is installed, not allowing modification operations
DEBUG HandleSessionContentUtil - There are no session wrappers into storage config file!
DEBUG HandleSessionContentUtil - There are no session wrappers into storage config file!
DEBUG WebContext - setCurrentClaimStore: com.tridion.siteedit.preview.PreviewClaimStore@dc60af, thread: Thread-59
DEBUG WritableODataClaimProcessor - Removing sessionId claim from ClaimStore!
DEBUG ClaimStore - remove: uri=taf:claim:contentdelivery:webservice:preview:sessionid
DEBUG WebContext - setCurrentClaimStore: null, thread: Thread-59

最も興味深い部分は、「セッション プレビュー」Web サービス側の cd_storage_conf.xml にセッション ラッパーが追加されたことです。以下は、「セッション プレビュー」cd_storage_conf.xml の一部です。

    <Storages>       
        <Wrappers>               
            <Wrapper Name="SessionWrapper">             
                <Timeout>120000</Timeout>                  
                <Storage Type="persistence" Id="sqlServerDb" dialect="MSSQL" Class="com.tridion.storage.persistence.JPADAOFactory">
                    <Pool Type="jdbc" Size="5" MonitorInterval="60" IdleTimeout="120" CheckoutTimeout="120" />
                    <DataSource Class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
                        <Property Name="serverName" Value="T2011" />
                        <Property Name="portNumber" Value="1433" />
                        <Property Name="databaseName" Value="Tridion_Session_Preview"/>
                        <Property Name="user" Value="TridionSessionPreview"/>
                        <Property Name="password" Value="tridion"/>
                    </DataSource>
                </Storage>                   
            </Wrapper>
        </Wrappers>            
        <StorageBindings>
            <Bundle src="preview_dao_bundle.xml"/>            
        </StorageBindings>       
        <Storage Type="filesystem" Class="com.tridion.storage.filesystem.FSDAOFactory" Id="staging" defaultFilesystem="false">
            <Root Path="C:\inetpub\wwwroot\software" />
        </Storage>
       <Storage Type="persistence" Id="sqlServerDb" dialect="MSSQL" Class="com.tridion.storage.persistence.JPADAOFactory">
            <Pool Type="jdbc" Size="5" MonitorInterval="60" IdleTimeout="120" CheckoutTimeout="120" />
            <DataSource Class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
                <Property Name="serverName" Value="T2011" />
                <Property Name="portNumber" Value="1433" />
                <Property Name="databaseName" Value="Tridion_Broker_Staging"/>
                <Property Name="user" Value="TridionBrokerUser"/>
                <Property Name="password" Value="tridion"/>
            </DataSource>
        </Storage>
    </Storages>    
</Global>

<ItemTypes defaultStorageId="sqlServerDb" cached="false">
    <Item typeMapping="Page" cached="false" storageId="staging"/>
</ItemTypes>

cd_storage_conf.xml の有効性状態を確認しましたが、すべて問題ありません (IE 経由で XML を開こうとすると、正しく表示されます)。

ページを再公開すると (編集を終了)、ページをリロードした後、コンポーネントの最初の変更が行われるまで、すべてが正しい状態になります。この予想外の状態は、私に強い痛みと頭痛を与え、さらに私をとても緊張させました... :)。

4

1 に答える 1

15

Update Preview の機能は次のとおりです。実際のページ更新までのすべての手順が機能し、正しく構成されていることを確認してください。

  1. テンプレートをプレビュー モードでレンダリングする
  2. 結果を Content Delivery Web Service に投稿する
  3. CD Web サービスはセッション ラッパー データベースに書き込みます
  4. ページを更新
  5. アンビエント フレームワーク フィルター (または .NET の HTTP モジュール) は、セッション トークンをチェックします。
  6. DB は、同じセッション トークンを持つコンテンツを検索するようにクエリされます
  7. コンテンツが見つかった場合は、ページ上のコンテンツとマージされます。

典型的な問題 (これまでの私の経験では) は、Ambient Framework 構成に関するものです。モジュールがアプリケーションにインストール/構成されていないか、cd_ambient_conf.xml に無効な構成設定が含まれています。

ステップ 1 からログをトレースして、どこで失敗したかを突き止める価値があるかもしれません。通常、どこで失敗したかを知ることで、解決策の 80% を解決できます。

于 2012-05-29T15:19:52.183 に答える