簡體   English   中英

如何將玉蘭cms與spring mvc整合?

[英]how to integrate magnolia cms with spring mvc?

我正在嘗試通過開花模塊將我的spring應用程序與magnolia集成,但我無法理解如何執行此操作。

我已經閱讀了很多關於這個主題的內容,但我實際上並不知道我的web.xml和applicationContext.xml應該是什么樣子。

我的web.xml文件中是否應該有2個玉蘭聽眾和春天的聽眾,並且有兩個servlet用於開花,一個用於春天? 然后我的applicationContext應該怎么樣?

你能幫我提一下web.xml和applicationContext.xml的工作集成示例嗎? 我在網上到處都看,但web.xml無處可去。

非常感謝你 :)

這是一個完整的webapp設置的Blossom 示例 看看那里的web.xml和applicationContext.xml。

該示例基於magnolia-empty-webapp項目,該項目旨在作為您可以構建的起點。

在示例中,您將看到通常的Spring偵聽器不在web.xml中,並且那里也沒有DispatcherServlets。 相反,啟動彈簧的任務由樣本模塊完成。 該模塊還創建一個BlossomDispatcherServlet,用於在呈現過程中呈現模板和段落。 原因是當Magnolia啟動時,它將進入安裝/更新模式並顯示安裝UI。 此時你不希望Spring被初始化,因為如果你有依賴Magnolia的bean,它們將無法在Magnolia未准備好時啟動。 所以Spring就是由模塊啟動的。

但是,如果您的bean不依賴於Magnolia,那么您可以安全地將Springs偵聽器添加到web.xml,並從模塊中啟動BlossomDispatcherServlets。

另一件可能有用的事情是,Magnolia渲染使用過濾器,該過濾器將處理所有進入的請求,除非它們已被排除。 因此,如果將servlet添加到web.xml,則需要從Magnolias過濾器中排除其url模式。

另一個更直接的選擇是將servlet添加到模塊描述符xml文件中。 然后Magnolia將接收它們並從其過濾器中調用它們。 模塊描述符的文檔在這里

總而言之,我建議使用模塊啟動Spring並將servlet添加到模塊描述符xml中。 在web.xml中配置內容也是一個可行的選擇,但您需要考慮如何與安裝/更新-phase和請求路由交互。

馬呂斯,

Blossom文檔介紹了如何配置web.xml文件。

具體來說,如果您在自己的模塊中啟動Spring,則需要在Magnolia上下文偵聽器之前將其添加到web.xml文件中:

<listener>
<listener-class>info.magnolia.module.blossom.support.ServletContextExposingContextListener</listener-class>
</listener>

此外,您需要擴展模塊類以初始化和銷毀​​Blossom調度程序servlet,如下所示:

public class BlossomSampleModule extends BlossomModuleSupport implements ModuleLifecycle {

public void start(ModuleLifecycleContext moduleLifecycleContext) {
        initRootWebApplicationContext("classpath:/applicationContext.xml");
        initBlossomDispatcherServlet("blossom", "classpath:/blossom-servlet.xml");
    }

public void stop(ModuleLifecycleContext moduleLifecycleContext) {
        destroyDispatcherServlets();
        closeRootWebApplicationContext();
    }
}

希望那有所幫助!

肖恩

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM