Search the FirstSpirit Knowledge Base
Hallo,
ich versuche gerade eine Klasse zu schreiben, die es ermöglicht FirstSpirit Module automatisiert zu installieren.
Auf meiner Suche bin ich auf diesen Beitrag gestoßen: https://community.e-spirit.com/ideas/1220#comment-2464
Dort wird beschrieben, wie man so etwas implementieren kann. Allerdings funktioniert es bei mir nicht.
Es gibt bei mir in de.espirit.firstspirit.access.Connection keine getManager(Class<?>) methode.
Ich verwende momentan diese Version: de.espirit.firstspirit:firstspirit:fs-server:5.0.318-build-1.0
Hi Danil,
um Module hochladen zu können benötigst du eine AdminConnection, da man Module über die Server- und Projekteinstellungen auch nur als Admin-User vornehmen kann.
Danach kannst du eine Klasse schreiben, die mit den Admin-Userdaten eben eine solche Connection aufbaut. Darüber kann man sich dann den ModulManager holen
((ManagerProvider) connection).getManager(ModuleManager.class);
Diese Methoden gibt es soweit ich weiß bereits seit FS 4.1 oder 4.2. Du musst dafür allerdings die zu eurer FS-Version passende fs-client.jar in den Build-Abhängigkeiten haben.
Dann kann das FSM als InputStream hochgeladen und mit "alle Rechte" ausgestattet werden:
InputStream modulInputStream = new FileInputStream(module);
Pair<String, String> pair = modulManager.install(modulInputStream);
modulManager.setModuleTrusted(pair.getKey(), true);
Falls du Services in Modulen verwendest war es bisher auch immer noch notwendig diese zu restarten. Wir starten einfach immer den Preview-Tomcat new (wir laufen nicht auf dem internen Jetty), das ist safe und auch fix per Ant zu automatisieren.
Viele Grüße,
Nils
Hallo Nils,
danke für die schnelle Antwort!
Kannst du bitte noch etwas näher beschreiben wo ich die "AdminConnection" her kriege?
Ich finde die AdminConnection weder in fs-server.jar noch in fs-client.jar.
Danke im Voraus!
Gruß
Danil.
Hallo Nils,
ich denke mit der AdminConnection ist kein Objekttyp gemeint sondern eine Connection die mit den Benutzerinformationen des Admin Benutzers erstellt wurde.
z.b:
String host = "your.firstpirit.host";
int port = 1089;
int mode = ConnectionManager.SOCKET_MODE;
String login = "Admin";
String password = "Admin";
Connection connection = ConnectionManager.getConnection(host, port, mode, login, password);
Die connection
wäre dann die "Admin"-Connection.
Gruß, Hendrik
Hier bitte beachten, dass der ModuleManager keine API ist und sich damit potentiell bei jedem Release ändern kann. Für FirstSpirit 5.1 ist es eine entsprechende API-Funktionalität geplant, siehe Automatische Installation von Modulen
Hallo Danil,
benötigst du noch weitere Hilfe oder haben dir die Antworten von Nils, Hendrik und Christoph bereits geholfen? In diesem Fall wäre es super, wenn du die "richtige Antwort" entsprechend markierst, damit auch andere Community-Teilnehmer diese auf den ersten Blick finden. Solltest du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es nett, wenn du diese hier bereitstellst.
Viele Grüße
Tim
Ich habe es letztendlich wie folgt realisiert:
ServerConnection connection = (ServerConnection) ConnectionManager.getConnection(
host, port, mode, username, password);
...
ModuleManager moduleManager = connection.getManager(ModuleManager.class);
und der Rest wie im Beitrag vom Nils
Viele Grüße
Danil.