Как сделать Custom Deployer для записи данных в базу данных MS SQL?

Я добавил пользовательский модуль в процессор по умолчанию в 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());
    }

}

В моем лог-файле я получаю нужную информацию каждый раз, когда страница публикуется.

Далее я хочу записать идентификатор страницы и дату публикации в моей базе данных Microsoft SQL в ранее созданной таблице. Как я могу это сделать? Как я могу получить доступ к таблице базы данных из MyCustomModule?

Спасибо

2 ответа

Решение

Итак, то, что я сделал здесь, чтобы решить мою проблему, - именно то, что предложил Куиринн. Использовал драйвер JDBC для подключения к моей базе данных, а затем выполнил запрос обновления sql:

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

Таким образом, каждый раз, когда страница публикуется, некоторые данные будут записываться в мою базу данных.

Не уверен в ваших требованиях, но вы уже выбрали модель расширения для развертывания по сравнению с расширениями хранилища. С расширениями хранилища Tridion предоставит модель того, как вы можете расширять хранилища (например, JPAFramework и Base DAOEntities, которые вы можете расширять). Если вы идете по пути расширения развертывания, как отмечали Квирин и Нуно, это похоже на написание стандартного кода JDBC, как и любое другое приложение.

Но я бы посоветовал вам также взглянуть на модель расширения хранилища и посмотреть, соответствует ли она вашим требованиям. Очень хорошая отправная точка - взглянуть на статью ниже: http://www.sdltridionworld.com/articles/sdltridion2011/tutorials/extending-content-delivery-storage-sdltridion-2011-1.aspx

Другие вопросы по тегам