如何使Custom Deployer将数据写入MS SQL数据库?

时间:2012-07-06 11:47:15

标签: tridion tridion2009 tridion-content-delivery

我在config / cd_deployer_conf.xml的默认处理器中添加了一个自定义模块:

<Processor Action="Deploy" Class="com.tridion.deployer.Processor">
            ...
            <Module Type="MyCustomModuleDeploy" Class="com.tridion.new.extensions.MyCustomModule">
            </Module>
</Processor>

模块的代码如下所示:

public class MyCustomModule extends com.tridion.deployer.modules.PageDeploy {

     static Logger logger = Logger.getLogger("customDeployerFirst");

    public MyCustomModule(Configuration config, Processor processor)
            throws ConfigurationException {
        super(config, processor);
        // TODO Auto-generated constructor stub
    }

    public void processPage(Page page, File pageFile) throws ProcessingException {
        // TODO Auto-generated method stub
            Date d = new Date();
        log.info("WORKING");
        log.info("Page ID: " + page.getId().toString());
        log.info("Publication date: "+ d.toString());
    }

}

在我的日志文件中,每次发布页面时,我都会收到我想要的信息。

接下来我要做的是在我之前创建的表中将页面ID和发布日期写入我的Microsoft SQL数据库。我怎样才能做到这一点?如何从MyCustomModule访问数据库表?

由于

2 个答案:

答案 0 :(得分:3)

不确定您的要求,但您已经选择了部署者扩展模型与存储扩展。通过存储扩展,Tridion将提供有关如何扩展存储的模型(例如可以扩展的JPAFramework和Base DAOEntities)。如果您要使用部署者扩展路由,Quirin和Nuno提到它就像编写标准JDBC代码一样,就像任何其他应用程序一样。

但是,我建议您也查看存储扩展模型,看看它是否符合您的要求。一个非常好的起点是查看以下文章:http://www.sdltridionworld.com/articles/sdltridion2011/tutorials/extending-content-delivery-storage-sdltridion-2011-1.aspx

答案 1 :(得分:1)

好的,所以我在这里解决我的问题就是Quirijn建议的。使用JDBC驱动程序连接到我的数据库,然后执行sql update query:

int sqlStatement = st.executeUpdate("insert into Pages values ('" + page.getId().toString()+ "', '" + ... + "')");

这样,每次发布页面时,一些数据都将写入我的数据库。