問題タブ [tridion-storage-extension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
656 参照

tridion - Tridion 2011 SP1 でストレージ拡張機能を実装しているときに定義された名前の Bean がありません

以下の例を使用してストレージ拡張機能を実装しようとしています。

http://www.sdltridionworld.com/articles/sdltridion2011/tutorials/extending-content-delivery-storage-sdltridion-2011-1.aspx

上記の例で使用したのと同じ名前で、DAO とその他のファイルを作成しました。これらのファイルを作成した後、Eclipse を使用してコードをビルドし、それを .JAR ファイル名 (cd_search_Indexer) に変換しました。

1) jar ファイルをプレゼンテーションの tridion_home/lib フォルダーにコピーしました

2) 以下のように search_dao_bundle.xml という名前のバンドル xml を作成し、同じ場所、つまり cd_storage_xml が配置されている tridion_home/config に配置しました。

3) その後、以下のようにバンドル エントリを cd_storage_conf.xml に追加しました。

以下のように、新しいストレージタイプを作成しました。

その後、アイテムマッピングのために以下で行いました

4) デプロイヤ サービスを再起動すると、コア ログで例外が発生しました

編集: 以下は、DAO、Entity、および Interface クラスを作成するための手順です。

1) 日食ヘリオスを開く

2)「Storage Extension」という名前のプロジェクトを作成しました

3) 新しいフォルダー「lib」を作成し、すべての tridion_home/lib を追加しました

4) 新しいパッケージ「com.tridion.storage.extension.search」を作成

5) DAO、Entity、Interface Java クラスを追加

6) リファレンスに「lib」jar を追加

7) jar に変換されたパッケージをビルドします (cd_storage_indexer)

8) ビルド jar を tridion_home/lib にコピーしました

9) Mihai が提案したのと同じように残ります。

0 投票する
3 に答える
611 参照

tridion - DAO クラスに実装されたメソッドが Tridion 2011 SP1 のストレージ拡張機能で呼び出されない

実装したメソッドが DAO クラスから呼び出されません。

以下のように search_dao_bundle.xml という名前のバンドル xml を作成し、同じ場所、つまり cd_storage_xml が配置されている tridion_home/config に配置しました。

その後、以下のようにバンドル エントリを cd_storage_conf.xml に追加しました。

以下のように、新しいストレージタイプを作成しました。

その後、アイテムマッピングのために以下で行いました

デプロイヤ サービスを再起動すると、コア ログで例外が発生しました

以下は、Mihai コードから取得したサンプルの DAO クラスです。

コンストラクターが呼び出されていることを確認できます。つまり、これらのログをコア ファイル ログに取得しています。

ただし、メソッドpublic PublishAction store log.debug("JPAPublishActionDAO store");のような他のメソッドで書き込まれたログを取得していません。

log.debug("JPAPublishActionDAO findByPrimaryKey");

log.debug("JPAPublishActionDAO 更新");

理由は何でしょうか。指定されたサンプル コードと同じ名前 (PublishAction.java) のエンティティ クラスとインターフェイス クラス (PublishActionDAO.java) があります。

0 投票する
3 に答える
715 参照

tridion - データ エンティティを永続化できません。トランザクションのコミット中にエラーが発生しました

Deployer 拡張機能と Storage 拡張機能の作成に成功しました。

以下は、コアログから取得したログで、すべてが完全にロードされていることを示しています!!

テーブルにデータを保存しようとすると、「例外が発生しました com.tridion.broker.StorageException: データ エンティティを永続化できません。トランザクションのコミット中にエラーが発生しました。トランザクションのコミット中にエラーが発生しました」

これは私のEntityクラスの問題ですか、それとも私が欠けているものですか。

EDIT:logback xmlでロガーレベル「ON」を有効にした後。

コアファイルで以下の例外が発生しました:

ありがとう

0 投票する
1 に答える
622 参照

tridion - Tridion ページの非公開中に Hibernate を使用してテーブルから主キー ID を取得し、テーブルを更新する方法

カスタム デプロイヤーを使用して、ストレージ拡張テーブルにデータを入力することに成功しました。ユーザーがページを公開すると、レコードが完全に処理されることがわかります。

ここで非公開部分を処理したいので、カスタム ページ アンデプロイヤーを作成しました。以下のサンプル コードを参照してください。

上記のコードでは、新しいストレージ拡張機能「PublishAction」を更新しようとしていることがわかりますが、変更したいレコードのテーブルから ID を取得しようとすると、ID を取得していないため、常に ID を 0 として取得しています。テーブルからIDを取得できます。

更新する必要があるレコードのテーブルから ID を取得するために、私の DAO に何を実装する必要があるかを提案してください。

ありがとう。

0 投票する
1 に答える
364 参照

java - Component Presentation ストレージ拡張機能で Component オブジェクトを取得する方法

私は拡張JPAComponentPresentationDAOして実装する Tridion 2011 でストレージ拡張を作成しようとしていますComponentPresentationDAO

上記のサンプル コードでは、コンポーネント ID を取得する場所を使用して Component オブジェクトをitemToCreate.getComponentId()作成し、そのデータをデータベース テーブルに格納するエンティティ クラスに有用な詳細を渡すことができるようにします。

0 投票する
1 に答える
136 参照

tridion - Tridion2011でカスタムDAOを使用してストレージ拡張機能にPDFタイプのバイナリのみを保存する方法

Tridion 2011の永続タイプのストレージ拡張で、バイナリの特定のレコードを追加/更新/削除するカスタムDAOを作成しました。

以下は、カスタムバイナリDAO()でカスタムDAOクラス/インターフェイス(PublishActionDAOおよび)を使用しようとしているサンプルコードです。PublishActionJPABinaryDAOExtension

上記は、新しいバイナリが作成されたときの追加のサンプルコードであり、更新と削除についても同じです。アクションを追加、バイナリ公開URL、そのTCMURIとして保存します。上記のコードでこれらのデータを簡単に取得できます。今私が直面している問題は、PDFタイプのバイナリのみのレコードと、レコードエントリなしのような他のタイプのバイナリ(JPG / Wordなど)のレコードを保存する必要があるということです。

編集:以下の解決策は私のために働くか、バイナリ用のオブジェクトを作成するとパフォーマンスが低下します。

0 投票する
1 に答える
313 参照

tridion - Create メソッドと Update メソッドが、tridion ストレージ拡張機能でそれぞれ 2 回呼び出される

create および update メソッド用のカスタム Filesystem DOA が 2 回呼び出される理由がわかりません。そのため、カスタム ストレージ拡張機能で同じレコードが 2 回取得されます。

  • 作成/更新メソッドが 2 回呼び出されます - ページを公開すると、データベースに保存されるレコードごとに 2 つのレコードが保存されます。
  • 削除 (ページの非公開は問題ありません。データベースに挿入されるレコードは 1 つだけですが、ページを非公開にした後、次回その特定のページの公開に失敗します)

ページを処理するためのクラスコードを以下に示し、コンポーネントとバイナリについても同じように記述しました。

以下のように私のストレージバンドル:

私のサンプル cd_storage XML

0 投票する
1 に答える
2275 参照

hibernate - Tridion2011のHibernateクエリから名前付きパラメーターを見つけることができませんでした

DAOクラスに以下のメソッドがあります。

以下のエラーが発生します。

これは、HQLによってログ内で内部的に生成されたクエリです。

PUBLICATION_ID列がエンティティとSQLテーブルに存在することがわかります。

提案してください。

0 投票する
1 に答える
288 参照

tridion - Tridion Deployer 拡張機能を使用してページを非公開にすると、コンポーネントの詳細がデータベースに記録されない

カスタム ストレージ拡張機能に未公開のコンポーネント エントリを追加しようとしています。「ComponentDeploy」を展開するためのように、ComponentUndeployのTridionには基本クラスがないことがわかっているので、ComponentPresentationUndeployクラスを使用して、取得しているコンポーネントを追跡しようとしています。以下は、追跡しようとしているサンプルコードです.

データベース内のコンポーネントのエントリを取得できない理由

編集:私が行った PageUndeploy 実装からサンプルコードを追加しました:

0 投票する
1 に答える
177 参照

tridion - 他のすべての設定を上書きせずに、子または他のパブリケーションのpublishdcpを別の場所に設定する方法

cd_storageを構成しようとしていますが、動的コンポーネントプレゼンテーションが子によって上書きされ、すべてのパブリケーションから同じフォルダーに公開されるため、セットアップで問題が発生します。

パブリケーションレベルの設定を定義できることはわかっていますが、それを定義すると、そのパブリケーションタグ内のすべてを定義することが期待されます。パブリケーションタグですべてを50回定義する必要はありません。

誰かが同じためのベストプラクティスを提案できますか?

これはsdltridion2011sp1用です

前もって感謝します...