2015-04-28 17 views
7

Używam projektu pojedynczej kopii XPage, z całą logiką biznesową zapisaną jako Java w plikach w WebContent \ WEB-INF.Załaduj ponownie kopię projektu XPage (SCXD) * Projekt aplikacji Java *

Jeśli potrzebuję zmienić XPage lub Custom Control, mogę zaktualizować mój szablon, odświeżyć projekt i zmiana zostanie natychmiast odebrana.

Jeśli jednak chcę wprowadzić zmiany w kodzie Java, wszystko wydaje się być w pamięci podręcznej, a jedyną metodą, którą znalazłem w celu pobrania zmian, jest zrestartowanie zadania http.

Do tej pory próbowałem:

  • orzeźwiający projekt bazy SCXD
  • zastępujący projekt bazy SCXD
  • czyszczenia bazy SCXD
  • edycji twarze-config (zarówno w szablonie, jak iw bazie danych SCXD)
  • usuwanie plików .class dla skompilowanego kodu Java w bazie danych SCXD i ponowne budowanie
  • wydającemu „Opowiedz http xsp odświeżyć” polecenie do serwera
  • zastępującego bazę SCXD z nową kopią
  • Zastępowanie projektu bazy danych, który jest wskazując na bazie SCXD

nic nie wydaje się, aby uzyskać sieć, aby pobrać zmiany kodu Java, oprócz ponownego uruchamiania zadania http.

Czy jest coś, co przeoczyłem?

+0

Działa to dobrze dla mnie.Właśnie skonfigurowałem nowy SCXD nsf + nowy nsf z obsługą SCXD, dodano klasę Xpage i Java w nowym folderze src w ścieżce WebContent \ WEB-INF (i skonfigurowałem ścieżkę budowania na obu nsfs) oraz moje zmiany w Javie SCXD w głównym SCXD nsf są odbierane natychmiast. Czy kiedykolwiek to działa? –

+0

Podejrzewam, że wszystko w porządku dla zupełnie nowej klasy Java. Edytuje wcześniej istniejącą metodę, która powoduje problemy. (Te same symptomy zdarzały się przy 8.5.3 kodu Java i XPages w normalnych projektach odświeżających.) –

+0

Istnieje [nie-SO "nagroda"] (http://www.intec.co.uk/single-copy-xpage-design -some-learning-and-why-it-not-for-me/# comment-202436) na ten temat, na wypadek gdyby ktoś był zainteresowany. Myślę, że mogę dogonić każdego, kto rozwiąże to na ConnectUsSphereED. –

Odpowiedz

2

Zalogowaliśmy ten problem jako SPR # LHEY9X5EBP.

Wysłałem to pytanie do zespołu XPages, a Maire Kehoe dostarczyła poniższe informacje i obejście problemu.

Nie znany problem. Wygląda jak błąd w NSFComponentModule.refresh(), , gdy jest szablon TemplateModule, nigdy nie znajdzie żadnych zmian w plikach i nigdy nie resetuje klasy ClassLoader.

Obejście problemu: Przycisk do kliknięcia w celu zresetowania.

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 
<xp:button value="Reset App ClassLoader" id="button1"> 
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete"> 
     <xp:this.action><![CDATA[#{javascript:inapp.ResetUtil.reset()}]]></xp:this.action> 
    </xp:eventHandler> 
</xp:button> 

kodu Java:

package inapp; 
import com.ibm.domino.xsp.module.nsf.ModuleClassLoader; 
public class ResetUtil { 

    public static void reset(){ 
     ClassLoader appClassLoader = Thread.currentThread().getContextClassLoader(); 
     ((ModuleClassLoader)appClassLoader).resetDynamicClassLoader(); 
     // That code will give: 
     // Script interpreter error, line=1, col=17: Error calling method 'reset()' on java class 'inapp.ResetUtil' 
     // Access denied (java.lang.RuntimePermission getClassLoader) 
     // need to edit C:\Domino\jvm\lib\security\java.policy file to have: 
     // grant codeBase "xspnsf://server:0/disc2.nsf/-"{ // nsf name here must be .toLowerCase of actual nsf name. 
     // permission java.lang.RuntimePermission "getClassLoader"; 
     //}; 
    } 
} 

Uprawnienia do kodu Java, które pozwalają uruchomić. W katalogu C: \ Domino \ JVM \ lib \ security \ java.policy dodać linię jak tak, zaktualizowany do NSF imię:

grant codeBase "xspnsf://server:0/disc2.nsf/-"{ // nsf name here must be .toLowerCase of actual nsf name. 
    permission java.lang.RuntimePermission "getClassLoader"; 
}; 
+0

Doskonała informacja! Jedno wyjaśnienie: Czy ten kod jest wymagany do uruchomienia raz na serwer, raz na szablon lub raz na bazę danych? –

+0

Niestety to nie zadziałało (aplikacja działa w przeglądarce, nie wiem, czy to czynnik). Nie mogłem modyfikować uprawnień zabezpieczeń na poziomie NSF, ale w pełni otworzyłem zabezpieczenia, aby przetestować opcję resetowania: dotacja { udzielenie zgody java.security.AllPermission; }; Jednak wciąż nie wykrywał zmian w kodzie Java w bazie danych SCXD. Zostały one odebrane tylko po restarcie HTTP. Nie jestem pewien, czy jest to powiązane z komentarzem Camerona na Twitterze o wtyczkach OSGi zaktualizowanych, ale bez ponownego ładowania. –

+0

Ok, przekażę to Maire, a także przekazuję dalej sprawy dotyczące innych zagadnień podnoszonych na Twitterze do zespołu. Dowiesz Ci, czy jest coś jeszcze do wypróbowania. Zarejestrowaliśmy również SPR dla pierwotnego problemu powyżej: SPR # LHEY9X5EBP –

Powiązane problemy