Получение не заданного имени компонента при реализации расширения хранилища в Tridion 2011 SP1
Я пытаюсь реализовать расширение хранилища, используя приведенный ниже пример,
Я создал свой DAO и другие файлы с тем же именем, которое использовалось в примере выше. После создания этих файлов я создаю свой код с помощью eclipse и включаю его в имя файла.JAR (cd_search_Indexer).
1) Я скопировал файл JAR в папку презентации tridion_home / lib
2) Я создал пакет xml с именем search_dao_bundle.xml, как показано ниже, и разместил в том же месте, например, tridion_home / config, где находится мой cd_storage_xml.
<?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) Добавлены мои классы Java DAO, Entity и Interface.
6) Добавлены баночки 'lib' в ссылке
7) Создайте пакет, преобразованный в jar (cd_storage_indexer)
8) скопировал сборочную флягу в tridion_home / lib
9) Отдых следовал так же, как предложил Михай.
4 ответа
Пользователь Tridion Forum Панкадж Гаур сталкивался с той же проблемой раньше.
Нам нужно тщательно создать файл класса, когда мы экспортируем их как JAR из Eclipse. Чтобы точно указать решение: На первом экране при экспорте файла класса в JAR убедитесь, что установлен флажок "Добавить записи каталога".
Ваше отображение типов неверно:
<StorageDAO typeMapping="PublishAction" ...
Каждое сопоставление типов отображает существующий тип элемента в (встроенный или пользовательский) DAO для этого типа. PublishAction
это не встроенный тип предмета, и я сомневаюсь, что вы намеревались его хранить.
Скорее всего, вы ищете заменить один из существующих типов элементов, таких как Binary
и / или BinaryVariant
как в примере Винода.
Это то, что у меня есть для конфигурации расширения развертывания (cd_storage_conf)..
затем перечислите один, который будет использоваться для этой публикации, если он не будет перезаписан на более низком уровне. Если хранилище, определенное 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>
Спасибо Вин
После нескольких RND и предложений, высказанных экспертами Tridion выше, мне наконец удалось загрузить свой BEAN.
Вместо того, чтобы собирать JAR из затмения, я попытался собрать его из командной строки (CMD).
Перейдите в директорию bin вашего проекта и напишите ниже команду
jar -cvf cd_storage_extensions.jar *
Спасибо всем экспертам (Нуно, Фрэнк и Винод).