3

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

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 に配置しました。

<?xml version="1.0" encoding="UTF-8"?>
<StorageDAOBundles>
    <StorageDAOBundle type="persistence">
        <StorageDAO typeMapping="PublishAction" class="com.tridion.storage.extension.search.JPAPublishActionDAO" />
    </StorageDAOBundle>
</StorageDAOBundles>

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

<StorageBindings>
    <Bundle src="search_dao_bundle.xml"/>
</StorageBindings>

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

<Storage Type="persistence" Id="searchdb" 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="********" />
        <!--Property Name="portNumber" Value="1433" /-->
        <Property Name="databaseName" Value="********" />
        <Property Name="user" Value="********" />
        <Property Name="password" Value="********" />
    </DataSource>
</Storage>

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

<ItemTypes defaultStorageId="defaultdb" cached="false"> 
    <Item typeMapping="PublishAction" cached="false" storageId="searchdb" />
</ItemTypes>

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

2013-01-03 12:44:20,713 ERROR JPADAOFactory - Unable to load JPA DAO with name: PublishAction and class: com.tridion.storage.extension.search.JPAPublishActionDAO due too exception in DAO construction
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'JPAPublishActionDAO' is defined
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:527) ~[spring-beans.jar:3.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1083) ~[spring-beans.jar:3.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:274) ~[spring-beans.jar:3.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198) ~[spring-beans.jar:3.0.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1087) ~[spring-context.jar:3.0.5.RELEASE]
    at com.tridion.storage.persistence.JPADAOFactory.configureBundle(JPADAOFactory.java:80) ~[cd_datalayer.jar:na]
    at com.tridion.storage.configuration.StorageFactoryConfigurationLoader.configureStorage(StorageFactoryConfigurationLoader.java:91) [cd_datalayer.jar:na]
    at com.tridion.storage.configuration.StorageFactoryConfigurationLoader.configureStorage(StorageFactoryConfigurationLoader.java:65) [cd_datalayer.jar:na]
    at com.tridion.storage.configuration.StorageFactoryConfigurationLoader.configure(StorageFactoryConfigurationLoader.java:51) [cd_datalayer.jar:na]
    at com.tridion.configuration.step.ConfigurationStepLoader.configure(ConfigurationStepLoader.java:47) [cd_core.jar:na]
    at com.tridion.storage.StorageManagerFactory.configure(StorageManagerFactory.java:139) [cd_datalayer.jar:na]
    at com.tridion.services.BaseService.<init>(BaseService.java:107) [cd_core.jar:na]
    at com.tridion.storage.StorageManagerFactory.<init>(StorageManagerFactory.java:106) [cd_datalayer.jar:na]
    at com.tridion.storage.StorageManagerFactory.reloadInstance(StorageManagerFactory.java:86) [cd_datalayer.jar:na]
    at com.tridion.storage.StorageManagerFactory.<clinit>(StorageManagerFactory.java:58) [cd_datalayer.jar:na]
    at com.tridion.storage.deploy.PageHandler.deploy(PageHandler.java:58) [cd_datalayer.jar:na]
    at com.tridion.deployer.DeploymentHandler.deploy(DeploymentHandler.java:90) [cd_datalayer.jar:na]
    at com.tridion.deployer.modules.PageDeploy.processPage(PageDeploy.java:145) [cd_deployer.jar:na]    
    at com.tridion.deployer.modules.PageDeploy.processItem(PageDeploy.java:118) [cd_deployer.jar:na]
    at com.tridion.deployer.SectionVisitor.processSection(SectionVisitor.java:83) [cd_deployer.jar:na]
    at com.tridion.deployer.SectionVisitor.processSection(SectionVisitor.java:87) [cd_deployer.jar:na]
    at com.tridion.deployer.SectionVisitor.processSection(SectionVisitor.java:87) [cd_deployer.jar:na]
    at com.tridion.deployer.SectionVisitor.processSection(SectionVisitor.java:87) [cd_deployer.jar:na]
    at com.tridion.deployer.SectionVisitor.process(SectionVisitor.java:60) [cd_deployer.jar:na]
    at com.tridion.deployer.Processor.process(Processor.java:109) [cd_deployer.jar:na]
    at com.tridion.deployer.workers.ProcessorWorker.doWork(ProcessorWorker.java:74) [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_26]
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) [na:1.6.0_26]
    at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.6.0_26]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [na:1.6.0_26]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.6.0_26]
    at java.lang.Thread.run(Unknown Source) [na:1.6.0_26]

編集: 以下は、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 が提案したのと同じように残ります。

4

4 に答える 4

3

あなたの型マッピングは間違っています:

<StorageDAO typeMapping="PublishAction" ...

各タイプ マッピングは、既存の項目タイプをそのタイプの (組み込みまたはカスタム) DAO にマップします。APublishActionは組み込みのアイテム タイプではありません。それらを格納する意図があったとは思えません。

ほとんどの場合、Vinod の例のBinaryand/or like など、既存の項目タイプの 1 つを置き換えようとしています。BinaryVariant

于 2013-01-03T13:09:56.160 に答える
1

Tridion フォーラムのユーザーである Pankaj Gaur は、以前に同じ問題に遭遇しました。

クラス ファイルを Eclipse から JAR としてエクスポートする場合は、慎重にクラス ファイルを作成する必要があります。解決策を特定するには: クラス ファイルを JAR にエクスポートする際の最初の画面で、[ディレクトリ エントリの追加] オプションがオンになっていることを確認します。

于 2013-01-03T23:45:02.610 に答える
1

これは、デプロイヤー拡張構成 (cd_storage_conf) 用に持っているものです。

1 つをリストすると、下位レベルで上書きされない限り、そのパブリケーションに使用されます。storageId で定義されたストレージが存在しない場合、下位レベルのタイプ マッピングが一致しない限り、ItemTypes 要素で定義されたデフォルトのストレージが使用されます。

<Publication Id="000" defaultStorageId="TridionDB" cached="false">
  <Item typeMapping="BinaryVariant" storageId="defaultCdnFile" cached="false" /> 
  <Item typeMapping="Binary" storageId="defaultCdnFile" cached="false" /> 
  </Publication>


<Storage Type="filesystem" Class="com.tridion.extensions.storage.XXX.CDNFSDAOFactory" Id="defaultCdnFile" defaultFilesystem="false">
  <Root Path="X:\XXXXX\DeployerExtension" /> 
  <Mapping PublicationId="50" BaseURL="http://XXX.com" /> 
  <Akamai Username="xxxx" Password="xxxx" /> 
  <Setting Property="https.proxyHost" Value="xxxx" /> 
  <Setting Property="https.proxyPort" Value="0000" /> 
  <Setting Property="https.proxyUser" Value="xxxx" /> 
  <Setting Property="https.proxyPassword" Value="xxxx" /> 
  <Setting Property="https.proxyDomain" Value="xx" /> 
  <Setting Property="proxySet" Value="true" /> 
  </Storage>

ありがとうヴィン

于 2013-01-03T09:40:20.640 に答える
0

上記の Tridion Experts によるいくつかの RND と提案の後、私は最終的に自分の BEAN をロードすることができました。

Eclipse から JAR をビルドする代わりに、コマンド プロンプト (CMD) からビルドしようとしました。

プロジェクトの bin ディレクトリに移動し、そこに以下のコマンドを書き込みます

jar -cvf cd_storage_extensions.jar *

すべての専門家 (Nuno、Frank、および Vinod) に感謝します。

于 2013-01-06T09:44:21.243 に答える