我在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访问数据库表?
由于
答案 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()+ "', '" + ... + "')");
这样,每次发布页面时,一些数据都将写入我的数据库。