Я начинаю новый проект с открытым исходным кодом для разработки приложения, которое будет предоставлять услуги для преобразования различных документов в другие форматы (например, doc -> html, pdf -> html, plain text -> html и т. Д.). Он будет использовать многие другие инструменты с открытым исходным кодом для облегчения преобразования документа.Какую инфраструктуру Java я могу использовать для обеспечения надежной службы преобразования документов?
Я ищу рамки, которые я могу использовать для этой цели. Основные требования заявки заключаются в следующем:
- Предоставить как библиотеку для прямого использования, так и веб-службу, которая предоставляет библиотеку.
- Предоставить плагин-ориентированное обслуживание. Это означает, что он должен позволять инструментам для использования для конвертирования документов, которые должны быть подключены и подключены клиентами. Это позволяет инструментам конвертировать документы, которые будут добавлены и удалены в будущем.
- Предоставить резервный механизм. Это означает, что он должен иметь возможность вернуться к использованию других инструментов, установленных, если предыдущий инструмент не смог преобразовать документы. Например, используйте инструмент A, инструмент A не удалось, используйте инструмент B, инструмент B также не удалось, используйте инструмент C, инструмент C преуспел, остановите и верните результаты.
- Должно быть надежным. Если инструмент рушится, он не должен снимать все приложение.
- Восстановление отказа. Возможность перезапускать себя в случае катастрофы.
У кого-нибудь есть рекомендации по существующим фреймворкам на Java, которые я могу использовать для удовлетворения большинства (если не всех) вышеуказанных требований?
Спасибо!
PS. В настоящее время я изучаю структуру UIMA (Unstructured Information Management Architecture). Я знаю, что UIMA обычно используется для обработки естественного языка для извлечения объектов текстовых документов, но на поверхности (от чтения руководств - не пробовал ничего дальше), он кажется довольно хорошим и, возможно, достаточно гибким, чтобы быть подстроенным для удовлетворения моих требования выше. У кого-нибудь есть опыт работы с UIMA? Пожалуйста, поделитесь своим опытом (за и против), можно ли использовать его в качестве основы приложения на основе требований, перечисленных выше.