在Tridion 2011 SP1中实现存储扩展时未定义名为的bean

在Tridion 2011 SP1中实现存储扩展时未定义名为的bean,tridion,tridion-2011,tridion-content-delivery,tridion-storage-extension,Tridion,Tridion 2011,Tridion Content Delivery,Tridion Storage Extension,我尝试使用下面的示例实现存储扩展 我用上面示例中使用的相同名称创建了我的DAO和其他文件。创建这些文件后,我使用eclipse构建代码,并将其转换为.JAR文件名(cd_search_Indexer) 1) 我将jar文件复制到演示文稿tridion_home/lib文件夹中 2) 我创建了名为search\u dao\u bundle.xml的bundle xml,如下所示,并将其放置在相同的位置,即我的cd\u存储\u xml所在的tridion\u home/config <?xm

我尝试使用下面的示例实现存储扩展

我用上面示例中使用的相同名称创建了我的DAO和其他文件。创建这些文件后,我使用eclipse构建代码,并将其转换为.JAR文件名(cd_search_Indexer)

1) 我将jar文件复制到演示文稿tridion_home/lib文件夹中

2) 我创建了名为search\u dao\u bundle.xml的bundle xml,如下所示,并将其放置在相同的位置,即我的cd\u存储\u xml所在的tridion\u 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>

下面是我创建的新存储类型,如下所示:

<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>

之后,我做了下面的itemmapping

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

4) 我重新启动了deployer服务,核心日志中出现以下异常

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]
2013-01-03 12:44:20713错误JPADAOFCORY-由于DAO构造中出现异常,无法加载名为PublishAction且类为com.tridion.storage.extension.search.jpapPublishActionDAO的JPA DAO
org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“JPAPPublishActionDao”的bean
在org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:527)~[springbean.jar:3.0.5.RELEASE]
在org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1083)~[springBeans.jar:3.0.5.RELEASE]
在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:274)~[springbeans.jar:3.0.5.RELEASE]
在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198)~[springbeans.jar:3.0.5.RELEASE]
在org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1087)~[spring context.jar:3.0.5.RELEASE]
在com.tridion.storage.persistence.jpadaofacory.configureBundle(jpadaofacory.java:80)~[cd\u datalayer.jar:na]
在com.tridion.storage.configuration.StorageFactoryConfigurationLoader.configureStorage(StorageFactoryConfigurationLoader.java:91)[cd\u datalayer.jar:na]
在com.tridion.storage.configuration.StorageFactoryConfigurationLoader.configureStorage(StorageFactoryConfigurationLoader.java:65)[cd\u datalayer.jar:na]
在com.tridion.storage.configuration.StorageFactoryConfigurationLoader.configure(StorageFactoryConfigurationLoader.java:51)[cd_datalayer.jar:na]
在com.tridion.configuration.step.ConfigurationStepLoader.configure(ConfigurationStepLoader.java:47)[cd_core.jar:na]
在com.tridion.storage.StorageManagerFactory.configure(StorageManagerFactory.java:139)[cd_datalayer.jar:na]
在com.tridion.services.BaseService.(BaseService.java:107)[cd_core.jar:na]
在com.tridion.storage.StorageManagerFactory.(StorageManagerFactory.java:106)[cd_datalayer.jar:na]
在com.tridion.storage.StorageManagerFactory.reloadInstance(StorageManagerFactory.java:86)[cd_datalayer.jar:na]
在com.tridion.storage.StorageManagerFactory.(StorageManagerFactory.java:58)[cd_datalayer.jar:na]
在com.tridion.storage.deploy.PageHandler.deploy(PageHandler.java:58)[cd_datalayer.jar:na]
在com.tridion.deployer.DeploymentHandler.deploy(DeploymentHandler.java:90)[cd_datalayer.jar:na]
在com.tridion.deployer.modules.PageDeploy.processPage(PageDeploy.java:145)[cd_deployer.jar:na]
在com.tridion.deployer.modules.PageDeploy.processItem(PageDeploy.java:118)[cd_deployer.jar:na]
在com.tridion.deployer.SectionVisitor.processSection(SectionVisitor.java:83)[cd_deployer.jar:na]
在com.tridion.deployer.SectionVisitor.processSection(SectionVisitor.java:87)[cd_deployer.jar:na]
在com.tridion.deployer.SectionVisitor.processSection(SectionVisitor.java:87)[cd_deployer.jar:na]
在com.tridion.deployer.SectionVisitor.processSection(SectionVisitor.java:87)[cd_deployer.jar:na]
在com.tridion.deployer.SectionVisitor.process(SectionVisitor.java:60)[cd_deployer.jar:na]
在com.tridion.deployer.Processor.process(Processor.java:109)[cd_deployer.jar:na]
在com.tridion.deployer.workers.ProcessorWorker.doWork(ProcessorWorker.java:74)[cd_deployer.jar:na]
在com.tridion.deployer.phases.ProcessingPhase.execute(ProcessingPhase.java:73)[cd_deployer.jar:na]
位于com.tridion.deployer.phases.DeployPipelineExecutor.runmainExecuteBase(DeployPipelineExecutor.java:186)[cd_deployer.jar:na]
在com.tridion.deployer.phases.DeployPipelineExecutor.doExecute(DeployPipelineExecutor.java:97)[cd_deployer.jar:na]
在com.tridion.deployer.phases.DeployPipelineExecutor.execute(DeployPipelineExecutor.java:61)[cd_deployer.jar:na]
在com.tridion.deployer.TransactionManager.handleDeployPackage(TransactionManager.java:80)[cd_deployer.jar:na]
在com.tridion.deployer.queue.QueueLocationHandler$1.run(QueueLocationHandler.java:176)[cd_deployer.jar:na]
位于java.util.concurrent.Executors$RunnableAdapter.call(未知源)[na:1.6.0_26]
在java.util.concurrent.FutureTask$Sync.innerRun(未知源代码)[na:1.6.0_26]
在java.util.concurrent.FutureTask.run(未知源代码)[na:1.6.0_26]
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(未知源)[na:1.6.0_26]
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)[na:1.6.0_26]
在java.lang.Thread.run(未知源代码)[na:1.6.0_26]
编辑: 下面是我创建DAO、实体和接口类所遵循的步骤

1) 打开日食太阳神

2) 已创建名为“存储扩展”的项目

3) 创建了新文件夹“lib”,并添加了所有tridion_home/lib

4) 创建了新包“com.tridion.storage.extension.search”

5) 添加了我的DAO、实体和接口java类<
jar -cvf cd_storage_extensions.jar *