GlassFish unter Windows vs. RedHat

GlassFish unter Windows vs. RedHat

Ich habe eine einfache dreistufige Webanwendung und möchte GlassFish verwenden. Macht es bei gleichen Administratorkenntnissen einen Unterschied, ob das Host-Betriebssystem Windows 2003 Server oder RedhHat ist?

Antwort1

Früher oder später werden Sie wahrscheinlich auf Probleme stoßen, wenn Sie unter Win2K3 bereitstellen, da Windows Dateisperren hat. Aber Sie werden lernen, diese Probleme zu umgehen – auf die eine oder andere Weise.

Siehe auchDasFrage:

Wenn sonst alles unverändert bleibt, würde ich Windows nicht als Server-Betriebssystem für Glassfish auswählen, aber ich würde auch nicht dringend von Win2K3 abraten.

Antwort2

Ich stimme Fredarin zu. Ein Duplikat einer Antwort, die ich auf SO gepostet habe:

0 Stimmen dagegen

Wenn Sie die Glassfish-Quelle überprüfen, insbesondere ./appserv-commons/src/java/com/sun/enterprise/util/io/FileUtils.java, sehen Sie alle Verrenkungen, die Glassfish durchführt, um Dateien und Verzeichnisse unter Windows zu löschen/umzubenennen.

Dies ist ein Windows-Problem mit seinen Einschränkungen beim Löschen und Umbenennen geöffneter Dateien.

Da gibt es alle möglichen Tricks, darunter das mehrmalige Anfordern eines GC von der JVM in der Hoffnung, den Dateistrom zu schließen, „Pseudo“-Umbenennungen und Sleep-Try-Schleifen.

Einige Beispiele:

/**
 *Attempts to delete files that could not be deleted earlier and were not overwritten.
 *<p>
 *On Windows, the method requests garbage collection which may unlock locked
 *files. (The JarFile finalizer closes the file.)

/*
     *On Windows, as long as not all leftover files have been cleaned and we have not
     *run the max. number of retries, try again to trigger gc and delete
     *each remaining leftover file.
     */

/**
 * Windows has BIG issues renaming a directory that is open somnewhere -- e.g. if
 * a DOS box is opened anywhere in that directory.
 * This method will try to do a "virtual renaming" if there are problems
 * I.e. it attempts to do a simple rename, if that fails it will copy everything under
 * the original directory to the renamed directory.  Then it will delete everything
 * under the original directory that the OS will allow it to.

In der Praxis führt dies manchmal zu fehlerhaften Bereitstellungen oder erneuten Bereitstellungen unter Windows, da einige Dateien nicht gelöscht oder verschoben werden können und am Ende zurückbleiben. Bei allen Glassfish-Instanzen, die ich ausführe, hatte ich unter Solaris 10 noch nie ein Problem, und unter Windows treten diesbezüglich immer Probleme auf.

Kurz gesagt: Jedes *NIX ist allein aus diesem Grund besser, wenn man von anderen Überlegungen zur Plattformverwaltung absieht.

Antwort3

Ich bin mir nicht sicher, ob es große Unterschiede gibt, vorausgesetzt, die Spezifikation ist gleich. Ich habe von einigen Administratoren gehört, dass Application Client Container (ACC) unter Linux schneller ausgeführt wird.

verwandte Informationen