Zum Hauptinhalt gehen

Debugging direkt aus der IDE Isolated mode

Kommentare

22 Kommentare

  • Zendesk API User
    Author: HSener - 1/7/2021 14:46

    Hallo Community,

    bin ebenfalls auf diesen Punkt gestoßen.
    Welches wäre denn die alternative Klasse statt de.espirit.firstspirit.client.CMSExplorer?

    Eine Doku zur Isolated Version des Debuggings gibts auch noch nicht oder?

    Gruß
    Hüseyin

    0
  • Zendesk API User
    Author: felix_reinhold - 6/7/2021 15:15

    Da hier noch keine Antwort kam würde ich das Thema gerne nochmal pushen in der Hoffnung, das jemand von e-Spirit mitliest. Gibt es hier eine Möglichkeit? Das client debugging war ein wichtiges Werkzeug für mich.

    0
  • Zendesk API User
    Author: hbarthel - 6/7/2021 17:29

    Hatte das dann reverse-engineered (sprich jnlp-Datei angeschaut), so oder so ähnlich:

    String connectionSettings = deflate(

                    "loglevel=DEBUG;compression=0;encryption=0;host=" + host + ";locale=en;login=client;login.user=" + user + ";login.password=" + password

                            + ";login.type=MAIN;maximize=false;mode=HTTP;port=" + port + ";servletZone=/;sun.java2d.d3d=true;"

                                    + "url=http://" + host + ":" + port + ";usehttps=false");

            de.espirit.common.bootstrap.Bootstrap.main("--system-properties", connectionSettings);

    Die Klasse "Bootstrap" ist der Ersatz.

    Ich weiß allerdings nicht, wozu "--system-properties" gut ist.

    0
  • Zendesk API User
    Author: felix_reinhold - 6/8/2021 7:29

    Hallo Heiko,

    danke für di eInfo :-) Aber hat das bei dir damit auch geklappt? Ich bekam eine NPE aus der BootStrap Klasse.

    Dann habe ich die system-properties aufgenommen und als Wert dafür den String aus einer aktuell heruntergeladenen fslnch-Datei übernommen (gehashter/encrypteter String). Damit komme ich etwas weiter, aber lande dann bei einer NPE aus der FactoryRegistry:

    Exception in thread "main" java.lang.NullPointerException

    at de.espirit.common.FactoryRegistry.createDefaultFactoryRegistry(FactoryRegistry.java:527)

    at de.espirit.common.FactoryRegistry.getDefaultInstance(FactoryRegistry.java:220)

    at de.espirit.common.FactoryRegistry.create(FactoryRegistry.java:200)

    at de.espirit.common.bootstrap.Bootstrap.start(Bootstrap.java:110)

    at de.espirit.common.bootstrap.Bootstrap.main(Bootstrap.java:395)

    Gruß

    Felix

    0
  • Zendesk API User
    Author: hbarthel - 6/8/2021 8:33

    Hallo Felix, ja konnte so Verbindung zum FS-Server im isolated mode aufbauen und auch Projekt laden und debuggen. Ich kann mir vorstellen, dass beim Launcher da was anderes in den Parametern steht, hatte WebStart-JNLP untersucht.

    0
  • Zendesk API User
    Author: felix_reinhold - 6/8/2021 9:01

    hmm, dann ist es vllt. auch eine Versionsproblematik. Bin auf 2021-04 und habe ja auch gar keine Möglichkeit mehr per JNLP zu starten. Deshalb hatte ich mir das aus der fslnch geholt.

    StefanSchulz​ Ich bin mal so frech und mentione dich hier, weil solche Fragen hier im Regelfall von dir beantwortet werden :smileygrin: Kannst du was dazu sagen, ob/wie Client-Debugging in aktuellen Versionen im ISOLATED Mode funktionieren?

    0
  • Zendesk API User
    Author: StefanSchulz - 6/9/2021 8:15

    Hallo Felix,

    ich fürchte, ich habe die Frage nicht ganz verstanden. Was genau möchtest du denn "debuggen"? Die Anleitung ganz oben sieht mir nach einem Debugging für interne Nutzung aus. Du willst ja vermutlich nicht lokal einen Client starten und diesen dann debuggen. Oder?

    Beste Grüße

    Stefan

    0
  • Zendesk API User
    Author: HSener - 6/9/2021 8:36

    Guten Morgen Stefan,

    uns geht es an der Stelle z.B. um das debuggen von FS Modulen oder ValueServices etc.

    In der Anleitung ist das weiter unten im Teil mit Server-Konfiguration erläutert.

    Seit der Umstellung auf Isolated funktioniert das nicht mehr, weil die Klasse de.espirit.firstspirit.client.CMSExplorer nicht mehr existiert.

    Benötigt ihr es auch für denselben Zweck felix.reinhold​?

    Gruß
    Hüseyin

    0
  • Zendesk API User
    Author: felix_reinhold - 6/9/2021 9:04

    Hi Stefan,

    "Du willst ja vermutlich nicht lokal einen Client starten und diesen dann debuggen. Oder?"

    Doch, genau das möchte ich :-) So habe ich bisher wie von Hüseyin beschrieben Clientseitige Skripte (ValueService, Button-Skripte, Workflows etc...) gedebuggt.

    Dafür habe ich den client immer direkt aus der IDE raus gestartet. Alternativ würde es mir auch reichen, wenn ich dem FS Launcher Startoptionen unterjubeln könnte für ein RemoteDebugging.

    Viele Grüße

    Felix

    0
  • Zendesk API User
    Author: StefanSchulz - 6/9/2021 11:31

    Hallo Felix und Hüseyin,

    es gibt tatsächlich eine Möglichkeit, über den Launcher gestartete Clients für ein Remote-Debugging vorzukonfigurieren.

    Ich muss hier noch abklären, über welchen Weg diese Möglichkeit kommuniziert werden kann. Daher bitte ich um ein wenig Geduld. :smileyhappy:

    Beste Grüße

    Stefan

    0
  • Zendesk API User
    Author: StefanSchulz - 6/9/2021 13:51

    Moin,

    anscheinend gibt es keinen offiziellen Weg dazu, dann packe ich das jetzt einfach mal hier als Antwort rein.  

    Das Debugging kann man über einen Eintrag in der FSLauncher.vmoptions Datei aktivieren. Diese befindet sich unter Windows im AppData-Bereich für den FSLauncher. Dort kann der folgende Eintrag hinzugefügt werden:

    -DclientDebugging=true


    Ist dies aktiviert, wird beim Starten eines Clients ein Port ausgewürfelt und als Agent-Port vergeben. Welcher Port es ist, wird im Launcher angezeigt:

    Dieser kann dann für das übliche Remote-Debugging aus der IDE heraus genutzt werden.

    Ich hoffe, das hilft.

    Beste Grüße

    Stefan

    0
  • Zendesk API User
    Author: felix_reinhold - 6/9/2021 14:43

    Hi Stefan,

    super - vielen Dank. Funktioniert einwandfrei :-)

    Dann drücke ich mal die Daumen, dass uns dieser inoffizielle Weg lange erhalten bleibt ;-)

    Viele Grüße

    Felix

    0
  • Zendesk API User
    Author: SebastianStieme - 6/22/2021 9:43

    mhhh, ich kann die besagte FSLauncher.vmoptions leider nirgends finden (unter Windows). Hab die ganze Festplatte abgesucht.

    Habt ihr vlt. noch einen sachdienlicher Hinweis was ich da falsch machen könnte? Ich benutze den Launcher, er ist auch am laufen und auch ein SiteArchitect ist offen .. trotzdem finde ich leider nix :/

    0
  • Zendesk API User
    Author: mseyfarth - 6/22/2021 9:49

    Hey SebastianStiemer​,

    Ich konnte die Datei unter folgendem Pfad finden:

    C:\Users\user-xyz\AppData\Local\Programs\

    Dort liegen - in meinem Fall - 2 FSLauncher Ordner und in beiden finde ich die besagte Datei.

    Wenn dort nichts ist, dann weiß ich es leider auch nicht

    Der AppData-Ordner ist im Normalfall ausgeblendet.

    V.G. Matthias

    0
  • Zendesk API User
    Author: SebastianStieme - 6/22/2021 9:52

    Vielen Dank. Ja da hab ich die Datei auch. :smileyhappy:

    0
  • Zendesk API User
    Author: larsquitsch - 8/10/2021 11:43

    Hat jemand eine Ahnung, wo ich die Datei beim Mac finde? bzw. wie das dorf funktionieren könnte?

    Viele Grüße,

    Lars

    0
  • Zendesk API User
    Author: bIT_sosswald - 8/20/2021 11:20

    Hi zusammen,

    ist das wirklich die einzige Möglichkeit den Launcher einen Port würfeln zu lassen? Dann muss ich ja bei jedem Start meine Debug-Config in der IDE ändern. :-(

    Der Alte weg den Client direkt über eine entsprechende Run-Configuration aus der IDE zu starten fand ich da auch deutlich eleganter.

    Hat schon jemand rausgefunden wie das geht? Bzw. gibt es da von e-Spirit einen offiziellen Weg?

    Beste Grüße

    Sandro

    0
  • Zendesk API User
    Author: linde - 8/23/2021 8:03

    auf dem Mac: "/Applications/FirstSpirit Launcher.app/Contents/vmoptions.txt" Die Datei gibt es da bereits.

    0
  • Zendesk API User
    Author: mbergmann - 8/28/2021 13:57

    Hallo,

    es gibt noch eine andere (allerdings genauso inoffizielle!) Variante des SA-Starts aus der IDE.

    Die hat sogar den Vorteil, dass - wenn man in der IDE den "debug" statt des "start"-Buttons wählt - bei clientseitig ausgeführtem Code die lokalen Klassen benutzt werden. Dadurch kann man die mal schnell anpassen und testen ohne immer das FSM installieren zu müssen. Man muss allerdings jeweils den SA einmal beenden und über die IDE wieder starten. Falls Einträge in der module.xml hinzugefügt/angepasst werden, muss das FSM neu gebaut und installiert werden, weil die module.xml lokal natürlich nicht ausgewertet wird.

    Voraussetzung ist, dass die fs-isolated-client.jar als Dependency eingetragen ist - und zwar in der Reihenfolge vor der fs-isolated-runtime.jar.

    Hier am Beispiel von IntelliJ

    Eine Run-Configuration vom Typ "Application" anlegen.

    Main Class: de.espirit.common.bootstrap.Bootstrap

    VM-Options:
    (Achtung, nicht Program arguments! - in IntelliJ muss man die je nach Version erst über "modify options" hinzufügen)

    -Dhost=<fs-host>

    -Dmode=HTTP

    -Dport=<port>

    -Dlogin=plain

    -Dlogin.user=<user>

    -Dlogin.password=<password>

    -Dlocale=<client-locale>

    -DdevMode=1

    -Dproject="<project-name>"

    -DLogLevel=[info|warn|error|debug]

    also zum Beispiel:

    -Dhost=localhost

    -Dmode=HTTP

    -Dport=8000

    -Dlogin=plain

    -Dlogin.user=bergmann

    -Dlogin.password=Mb2.r5oHf-0t

    -Dlocale=en

    -DdevMode=1

    -Dproject="Mithras Energy"

    -DLogLevel=info

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: larsquitsch - 11/17/2021 8:49

    mbergmann

    Kann es sein, dass das Debugging mit der Bootstrap Klasse seit dem Update (5.2.211108) heute nicht mehr funktioniert?

    Mir fliegt folgendes um die Ohren:

    FATAL Wed Nov 17 09:40:09 CET 2021 (de.espirit.common.bootstrap.Bootstrap) cannot create bootstrap environment: java.lang.IllegalArgumentException: No factory for 'de.espirit.common.bootstrap.BootstrapEnvironment'

    java.lang.IllegalArgumentException: No factory for 'de.espirit.common.bootstrap.BootstrapEnvironment'

    java.lang.IllegalArgumentException: No factory for 'de.espirit.common.bootstrap.BootstrapEnvironment'

        at de.espirit.common.FactoryRegistry.newFactory(FactoryRegistry.java:372)

        at de.espirit.common.bootstrap.Bootstrap.start(Bootstrap.java:116)

        at de.espirit.common.bootstrap.Bootstrap.main(Bootstrap.java:395)

    Exception in thread "main" java.lang.IllegalArgumentException: No factory for 'de.espirit.common.bootstrap.BootstrapEnvironment'

    at de.espirit.common.FactoryRegistry.newFactory(FactoryRegistry.java:372)

    at de.espirit.common.bootstrap.Bootstrap.start(Bootstrap.java:116)

    at de.espirit.common.bootstrap.Bootstrap.main(Bootstrap.java:395)

    Viele Grüße,
    Lars

    0
  • Zendesk API User
    Author: mbergmann - 11/17/2021 21:31

    Hallo Lars,

    ich meine mich zu erinnern dass ich sowas auch mal hatte (bin aber nicht mehr wirklich sicher ob es DER Fehler war) und da lag es an der Reihenfolge der jars (siehe mein vorheriges Posting).

    Mit der neuen Version habe ich es aber auch noch nicht probiert.

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: MiniDigger - 1/24/2025 13:00

    sorry für den necro, aber ich hab den post über google gefunden und da es keine lösung gibt mir selbst eine gesucht die ich gerne teile:
    zusätzlich zu den bootstrap spezifischen jvm args muss man noch mindestens die folgenden hinzufügen

    --add-opens=java.desktop/sun.swing=ALL-UNNAMED --add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED --add-opens=java.desktop/javax.swing.plaf.synth=ALL-UNNAMED --add-exports=java.desktop/sun.swing.plaf.synth=ALL-UNNAMED --add-exports=java.desktop/sun.swing.table=ALL-UNNAMED -Djava.security.manager=allow

     hintergrund ist, dass die library die firstspirit fürs UI nutzt scheinbar tiefe reflection nutzt, die java per default nicht mehr toleriert. mit den oben genannen argumenten funktioniert es bei mir auf jeden fall auch unter java 17 wieder.

    java 21 meckert wegen dem security manager, mal gucken ob ich das auch noch finde...

    edit: den security manager kann man auch wieder erlauben, snippet aktualisiert, funktioniert mit java 21

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.