WebKiv: IntegraceSpringMVCDoOpenCms |
from Wiki KIVu |
Pro zjednodušení výkladu je v následujícím dokumentu použita při odkazování na adresáře následující konvence:
TOMCAT_HOME je adresář, ve kterém je nainstalován tomcat, na kterém je OpenCms nasazeno
OPENCMS_HOME je adresář, ve kterém je běžící OpenCms (standardně TOMCAT_HOME\webapps\opencms)
Tento návod je napsán tak, že i ve Spring MVC nezkušenému uživateli poskytne návod na to, jak tento framework zaintegrovat do OpenCms. Nicméně je doporučeníhodné projít si nejdříve Spring MVC Step By Step Tutorial, který je standardně v distribuci Spring Framweworku. Dále uvedený postup pro vás poté bude daleko více srozumitelnější.
Instalace Spring MVC frameworků se obecně skládá z následkujících bodů:
Předtím, než budete pokračovat v čtení a provádění tohoto tutoriálu, zastavte prosím tomcata.
web.xmlDo souboru web.xml (OPENCMS_HOME\WEB-INF) se musí doplnit nastavení DispatcherServletu Spring MVC a jeho namapování na URL. Volitelně se může přidat definice tld souboru pro knihovnu značek Springu. (Při použití nové verze servletů toto odpadá, neboť všechny jar soubory na classpath jsou javou skenovány a všechny nalezené *.tld soubory jsou automaticky přidány. Nicméně není na závadu, pokud je tld soubor explicitně v web.xml specifikován.)
Do web.xml doplňte následující definici servletu a jeho mapování:
<!-- Spring MVC Sample App Servlet -->
<servlet>
<servlet-name>springmvcapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Servlet Mapping -->
<servlet-mapping>
<servlet-name>springmvcapp</servlet-name>
<url-pattern>/springmvcapp/*</url-pattern>
</servlet-mapping>
Stěžejnímy body v tomto kódu je element: <servlet-name>springmvcapp</servlet-name>, neboť udává, v jakém soubor bude Spring MVC hledat svá nastavení.
Jako další bod je potřeba přidat definici tld souboru. Toto se provede tím, že se do elementu <jsp-config> přidá následující kód:
<jsp-config>
...
<taglib>
<taglib-uri>/spring</taglib-uri>
<taglib-location>/WEB-INF/tld/spring-form.tld</taglib-location>
</taglib>
</jsp-config>
tld (Tag library deskriptor) souboru s popisem taglib Spring-formsTento soubor musí být zkopírován do adresáře zadaného v minulém kroku. V našem případě je to tedy OPENCMS_HOME/WEB-INF/tld/. Soubor se nachází v distribuci Spring frameworku v adresáři: spring-framework-2.5.X/dist/resources/.
Spring MVC požaduje konfigurační soubor, ve kterém jsou uloženy definice beans a dalších java tříd, které při své činnosti potřebuje. Jméno tohoto souboru je určeno jménem servletu - viz. výše v souboru web.xml a příponou –servlet.xml. V našem případě se tedy tento soubor bude jmenovat springapp-servlet.xml. A bude ležet na stejné adresářové úrovni jako soubor web.xml. Tento soubor bude vypadat následujícím způsobem:
<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- the application context definition for the springapp dispatcherservlet --> </beans>
Výše uvedená, na ještě prázdný soubor obsáhlá definice, je důležitá pro správnou funkci nástrojů, například pro podporu Springu v Eclipse.
applicationContextem pro SpringVzhledem k tomu, že konfigurační soubor Spring MVC není jediným místem, ze kterého si Spring může načítat definice java bean, je možné a i důrazně doporučené oddělit konfigurační soubor Spring MVC od ostatních konfiguračních souborů Springu. Tím se zaručí to, že se mezi sebou nemíchají definice beanů, které jsou použiti v zobrazovací vrstvě s definicemi beanů, které se například starají o přístup k databázi. Toho se docílí tím, že se do souboru web.xml přidá následující kód:
<listener>
<listenerclass>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Spring poté bude hledat soubor applicationContext.xml, který musí ležet na stejné úrovni jako soubor web.xml (pokud se nenastaví jinak). Prázdný soubor applicationContext.xml má následující strukturu:
<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> </beans>
Jako poslední krok je potřeba nahrát do OpenCms knihovny, které Spring MVC potřebuje pro svůj běh. Do adresáře: OPENCMS_HOME/WEB-INF/lib nahrajte následující soubory:
spring-framework-2.5.6/dist
spring-framework-2.5.6/dist/modules
Nyní spusťte Tomcat a OpenCms by mělo bez chyby nastartovat. Pokud se OpenCms nerozběhlo, můžete se podívat do log souborů v adresáři: TOMCAT_HOME\webapps\opencms\WEB-INF\logs A pokusit se v nich příčinu chyby objevit.
Zpět na FrameworkyProWebKiv