2011-09-22 12 views
19

Miałem problemy z szybkim ponownym ładowaniem plików XHTML przy użyciu JRebel, Spring, JSF Mojarra 2.0.3 i WebLogic 10.3.JSF i automatyczne ponowne ładowanie plików xhtml

JRebel poprawnie ładuje klasę Java i pliki js/css w/WebContent, ale nie pliki .xhtml JSF. Pełne ponowne opublikowanie było konieczne, aby pliki xhtml były aktualizowane na serwerze.

Przez próbę i błąd, w końcu udało mi się go uruchomić, dodając parametry do pliku web.xml i tworząc własny ResourceResolver zgodnie z opisem in this blog post. Zastanawiam

Jednak dlaczego to działa, a dokładniej:

  • Dlaczego zwyczaj ResourceResolver potrzebne?
  • Czy JRebel powinien sobie z tym poradzić poprzez monitorowanie/WebContent, gdzie znajdują się pliki xhtml?
  • Zgaduję, że ma to coś wspólnego z Facelets/JSF kompilując xhtml do serwletów (?) Poprzez FacesServlet, których JRebel nie jest w stanie wykryć?

Odpowiedz

37

JRebel obsługuje zmiany folderu/WebContent.

Problem polega na tym, że Facelets wykonuje buforowanie i nie czyta ponownie zmienionych plików. Aby wymusić ponowne czytanie, określ następujące parametry w web.xml.

JSF 2 (Facelets 2.x)

<!-- Time in seconds that facelets should be checked for changes since last request. A value of -1 disables refresh checking. --> 
<context-param> 
    <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name> 
    <param-value>0</param-value> 
</context-param> 

<!-- Set the project stage to "Development", "UnitTest", "SystemTest", or "Production". --> 
<!-- An optional parameter that makes troubleshooting errors much easier. --> 
<!-- You should remove this context parameter before deploying to production! --> 
<context-param> 
    <param-name>javax.faces.PROJECT_STAGE</param-name> 
    <param-value>Development</param-value> 
</context-param> 

Na JSF 1,2 (Facelets 1.x) parametry:

<context-param> 
    <param-name>facelets.REFRESH_PERIOD</param-name> 
    <param-value>0</param-value> 
</context-param> 
<context-param> 
    <param-name>facelets.DEVELOPMENT</param-name> 
    <param-value>true</param-value> 
</context-param> 

więcej kontekstu JSF parametry: http://docs.jboss.org/jbossas/6/JSF_Guide/en-US/html/jsf.reference.html#standard.config.params

Ten niestandardowy przelicznik zasobów nie jest potrzebny w twoim przypadku. Ten program do rozpoznawania zasobów jest po prostu trudnym sposobem uzyskania plików XHTML z niestandardowego folderu systemu plików. W twoim przypadku JRebel to robi (i jeszcze więcej).

+0

Uważam, że JRebel już to robi. Przynajmniej tu jest. Zwróć uwagę, że twoje parametry kontekstowe są specyficzne dla Faceletów 1.x i że OP używa Facetów 2.x. – BalusC

+0

@Balusc Dzięki za odpowiedź, zaktualizowana odpowiedź jest specyficzna dla Facelets 2.x. – Andrey

+0

Ustawienie 'javax.faces.FACELETS_REFRESH_PERIOD' na' 0' i 'javax.faces.PROJECT_STAGE' na' Development' nie wydaje się powodować aktualizacji szablonów za pomocą JRebel na JSF 2.0.4 i WebLogic 10.3. – uggedal

1

Oto jak naprawiłem to dla mnie:

  1. Sprawdź, facelets wtyczka jest włączona w ustawieniach JRebel &
  2. Sprawdź, czy używasz Project StageDevelopment w swoim web.xml
Powiązane problemy