問題タブ [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.
tridion - Tridion 2011 SP1 でストレージ拡張機能を実装しているときに定義された名前の Bean がありません
以下の例を使用してストレージ拡張機能を実装しようとしています。
上記の例で使用したのと同じ名前で、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 が提案したのと同じように残ります。
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) があります。
tridion - データ エンティティを永続化できません。トランザクションのコミット中にエラーが発生しました
Deployer 拡張機能と Storage 拡張機能の作成に成功しました。
以下は、コアログから取得したログで、すべてが完全にロードされていることを示しています!!
テーブルにデータを保存しようとすると、「例外が発生しました com.tridion.broker.StorageException: データ エンティティを永続化できません。トランザクションのコミット中にエラーが発生しました。トランザクションのコミット中にエラーが発生しました」
これは私のEntityクラスの問題ですか、それとも私が欠けているものですか。
EDIT:logback xmlでロガーレベル「ON」を有効にした後。
コアファイルで以下の例外が発生しました:
ありがとう
tridion - Tridion ページの非公開中に Hibernate を使用してテーブルから主キー ID を取得し、テーブルを更新する方法
カスタム デプロイヤーを使用して、ストレージ拡張テーブルにデータを入力することに成功しました。ユーザーがページを公開すると、レコードが完全に処理されることがわかります。
ここで非公開部分を処理したいので、カスタム ページ アンデプロイヤーを作成しました。以下のサンプル コードを参照してください。
上記のコードでは、新しいストレージ拡張機能「PublishAction」を更新しようとしていることがわかりますが、変更したいレコードのテーブルから ID を取得しようとすると、ID を取得していないため、常に ID を 0 として取得しています。テーブルからIDを取得できます。
更新する必要があるレコードのテーブルから ID を取得するために、私の DAO に何を実装する必要があるかを提案してください。
ありがとう。
java - Component Presentation ストレージ拡張機能で Component オブジェクトを取得する方法
私は拡張JPAComponentPresentationDAO
して実装する Tridion 2011 でストレージ拡張を作成しようとしていますComponentPresentationDAO
。
上記のサンプル コードでは、コンポーネント ID を取得する場所を使用して Component オブジェクトをitemToCreate.getComponentId()
作成し、そのデータをデータベース テーブルに格納するエンティティ クラスに有用な詳細を渡すことができるようにします。
tridion - Tridion2011でカスタムDAOを使用してストレージ拡張機能にPDFタイプのバイナリのみを保存する方法
Tridion 2011の永続タイプのストレージ拡張で、バイナリの特定のレコードを追加/更新/削除するカスタムDAOを作成しました。
以下は、カスタムバイナリDAO()でカスタムDAOクラス/インターフェイス(PublishActionDAO
および)を使用しようとしているサンプルコードです。PublishAction
JPABinaryDAOExtension
上記は、新しいバイナリが作成されたときの追加のサンプルコードであり、更新と削除についても同じです。アクションを追加、バイナリ公開URL、そのTCMURIとして保存します。上記のコードでこれらのデータを簡単に取得できます。今私が直面している問題は、PDFタイプのバイナリのみのレコードと、レコードエントリなしのような他のタイプのバイナリ(JPG / Wordなど)のレコードを保存する必要があるということです。
編集:以下の解決策は私のために働くか、バイナリ用のオブジェクトを作成するとパフォーマンスが低下します。
tridion - Create メソッドと Update メソッドが、tridion ストレージ拡張機能でそれぞれ 2 回呼び出される
create および update メソッド用のカスタム Filesystem DOA が 2 回呼び出される理由がわかりません。そのため、カスタム ストレージ拡張機能で同じレコードが 2 回取得されます。
- 作成/更新メソッドが 2 回呼び出されます - ページを公開すると、データベースに保存されるレコードごとに 2 つのレコードが保存されます。
- 削除 (ページの非公開は問題ありません。データベースに挿入されるレコードは 1 つだけですが、ページを非公開にした後、次回その特定のページの公開に失敗します)
ページを処理するためのクラスコードを以下に示し、コンポーネントとバイナリについても同じように記述しました。
以下のように私のストレージバンドル:
私のサンプル cd_storage XML
hibernate - Tridion2011のHibernateクエリから名前付きパラメーターを見つけることができませんでした
DAOクラスに以下のメソッドがあります。
以下のエラーが発生します。
これは、HQLによってログ内で内部的に生成されたクエリです。
PUBLICATION_ID列がエンティティとSQLテーブルに存在することがわかります。
提案してください。
tridion - Tridion Deployer 拡張機能を使用してページを非公開にすると、コンポーネントの詳細がデータベースに記録されない
カスタム ストレージ拡張機能に未公開のコンポーネント エントリを追加しようとしています。「ComponentDeploy」を展開するためのように、ComponentUndeployのTridionには基本クラスがないことがわかっているので、ComponentPresentationUndeployクラスを使用して、取得しているコンポーネントを追跡しようとしています。以下は、追跡しようとしているサンプルコードです.
データベース内のコンポーネントのエントリを取得できない理由
編集:私が行った PageUndeploy 実装からサンプルコードを追加しました:
tridion - 他のすべての設定を上書きせずに、子または他のパブリケーションのpublishdcpを別の場所に設定する方法
cd_storageを構成しようとしていますが、動的コンポーネントプレゼンテーションが子によって上書きされ、すべてのパブリケーションから同じフォルダーに公開されるため、セットアップで問題が発生します。
パブリケーションレベルの設定を定義できることはわかっていますが、それを定義すると、そのパブリケーションタグ内のすべてを定義することが期待されます。パブリケーションタグですべてを50回定義する必要はありません。
誰かが同じためのベストプラクティスを提案できますか?
これはsdltridion2011sp1用です
前もって感謝します...