2

我在 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 访问数据库表?

谢谢

4

2 回答 2

3

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

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

于 2012-07-06T16:38:25.923 回答
1

好的,所以我在这里为解决我的问题所做的正是 Quirijn 的建议。使用 JDBC 驱动程序连接到我的数据库,然后执行 sql 更新查询:

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

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

于 2012-07-16T11:45:09.530 回答