2017-02-23 1 views
2

Zuerst habe ich ein Java-Modul in AndroidStudio eingerichtet, das ich auf meinen GoogleAppEngine Server hochlade, was ziemlich gut funktioniert. (Android Studio - Erstellen - Modul in Google App Engine implementieren)Laden Sie ein Java und node.js Projekt auf Google AppEngine auf einmal

Jetzt möchte ich auch einen zusätzlichen node.js-Server in dieselbe App Engine-Instanz hochladen. Der Code muss auch auf die Firebase-Datenbanken zugreifen, die im Java-Modul erstellt wurden. Um den node.js-Code zu verbessern, befolgte ich das Googles QuickStart-Tutorial unter Verwendung von gcloud app deploy.

Wie ich weiß, erstellt dies eine neue Version in der Backends Flex-Umgebung deaktiviert meine vorhandenen Java-Code.

Also meine Fragen ist: Wie kann ich einen Node.js Server zu meiner bestehenden Instanz hinzufügen? Ich denke, ich muss dies innerhalb des Android Studio-Projekts tun, aber nicht innerhalb von gcloud app deploy. Wie kann ich ein neues Modul erstellen, so dass der node.js-Server beispielsweise in einem Unterordner verfügbar ist?

+0

Bitte klären Sie, was Sie mit "Instanz" meinen. Ist es eine GAE-Instanz (wie in den Fällen, die in Instanzstunden berechnet werden) oder meinen Sie eigentlich die GAE-App? –

+0

Ich meine die GAE-Instanz. Um genauer zu sein, wenn Sie den Java-Code hochladen, können Sie eine neue Java-Version im GAE-Backend unter "Versionen" sehen. Wenn ich dann über gcloud-command deploye, sehe ich unter "Versionen" eine neue node-Version, die aktiv ist. Dies bedeutet, dass die Java-Version sichtbar nicht mehr aktiv ist. Was ich erreichen möchte ist, den Code innerhalb einer Version hochzuladen, so dass beide Code-Teile aktiv sind. Ich denke, ich muss das node.js-Zeug in den Java-Projektordner einschließen und sie möglicherweise über den deployment descriptor web.xml verweisen. Aber ich konnte nicht herausfinden, wie das geht. – softwaresupply

Antwort

1

Sie können "keinen zusätzlichen node.js-Server in dieselbe App Engine-Instanz hochladen", da es sich um eine andere Sprache (und Umgebung) handelt. Daher können sie nicht im selben Service/Modul sein Instanz kann nur Code von einem Modul ausführen).

Sie müssen die Dienste/Module unterschiedlich benennen, damit sie sich zum Zeitpunkt der Bereitstellung nicht gegenseitig überschreiben. Danach können sie unabhängig voneinander eingesetzt werden.

Überprüfen Sie Ihre service: Konfiguration in der app.yaml Datei der node.js-Module. Von General settings:

Service: service_name

Erforderlich einen Dienst, wenn zu schaffen. Optional für den Standarddienst Jeder Dienst und jede Version müssen einen Namen haben. Ein Name kann Ziffern, Buchstaben und Bindestriche enthalten. Es darf nicht länger als 63 Zeichen sein und kann nicht mit einem Bindestrich beginnen oder enden. Wählen Sie einen eindeutigen Namen für jeden Service und jede Version. Verwenden Sie keine Namen zwischen Diensten und Versionen.

Hinweis: Dienste wurden zuvor als "Module" bezeichnet.

Und Ihre module und/oder service configs in Ihrem appengine-web.xml-Datei des Java-Modul.

Siehe auch Microservices Architecture on Google App Engine

+0

"Sie müssen die Dienste/Module unterschiedlich benennen, damit sie sich zum Zeitpunkt der Bereitstellung nicht gegenseitig überschreiben" - bedeutet dies, dass sie gleichzeitig online sind und insbesondere der Knotencode weiterhin auf die Datenbanken der Firebases zugreifen kann auf die auch in der Java-Umgebung zugegriffen wird? Können Sie einen Link angeben, der erklärt, wie das Modul definiert ist? Danke! – softwaresupply

+0

Ja, sie arbeiten zusammen. Siehe Links in der aktualisierten Antwort. –

Verwandte Themen