Hallo Teamcenter Admin Kollegen,
nach Rückfrage mittel CALL by Siemens habe ich nun einen Ansatz gefunden, der recht gut funktioniert. Mittels dieser Konfiguration kann man nun auch die 4Tier Over The Web Installation an entfernten Standorten schneller durchführen.
Vorgehen:
- Das TC_WEB Verzeichnis in dem der Distribution - Server und die fertigen 4Tier Profile liegen, wird komplett auf einen entfernten Server mit exakt gleichem Verzeichnispfad und Laufwerk kopiert.
- Auf dem entfernten Server werden jetzt das RMI Startskript und das DIST Startskript ausgeführt. Nun laufen zwei oder mehrer eigenständige Distribution - Server, die alle das gleiche OTW 4Tier Client Profil bereitstellen.
- Wenn man für das Kopieren auch noch ROBOCOPY einsetzt, kann man auch bei Änderungen, diese schnell auf alle angeschlossenen Distribution - Server verteilen.
- Jetzt muss man noch für jeden Distribution Server eine eigene OTW Webseite auf dem zentralen Web Server (JBOSS) erstellen. Hierzu kopiert man die "installing.html" Datei an gleicher Stelle. Der neue Dateiname sollte jeweils einen möglichen Distribution - Server wiederspiegeln. Pro Distribution Server erhält man so meherer "installing_STANDORT.html" Dateien.
- In jeder dieser Dateien ändert man nun den Verweis auf den jeweiligen Distribution Server:
In dem "<object ..." tag ändert man den parameter tag "<param name='server_name'..." so, dass er auf den jeweiligen Distribution Server zeigt. Z.B.:
...
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
codebase="http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=1,5,0,0"
onerror="document.location='launcherror.html'" WIDTH="1" HEIGHT="1" VIEWASTEXT>
<param name="CODE" value="com.teamcenter.install.otw.installer.Installer">
<param name="type" value="application/x-java-applet;jpi-version=1.5">
<param name="scriptable" value="false">
<param name="archive" value="otw_installer.jar,jdom.jar,commons-lang.jar">
<param name="instance" value="4TierClientVisConfigOnly">
<param name="server_name" value="DistributionServerInstanz:12099">
...
Somit kann man schon gezielt Installationen über einen bestimmten Distribution Server ausführen, wenn man die entsprechende Webseite direkt als URL im Browser verwendet.
Die Startseite "index.html" verweist aber immer noch auf den ursprünglichen Distribution Server. Aber auch das kann man in einem Umfeld mit reinen Windows Clients anpassen. So habe ich in unserer Umgebung einige Funktionen eingebaut, die jeweils eine der vorherigen "installing_STANDORT.html" Seiten zurückliefert. Diese wird anhand einer vorgeschalteten Distanzmessung (WMI PING) entschieden.
Zuerst baut man zwei neue JAVASCRIPT Funktionen ping(host) und pingtime(host)ein:
// ***********************************************
// This function is using the Windows WMI to check
// if a specific host / server is available by
// a PING command
// ***********************************************
function ping(host) {
var wmi = GetObject("Winmgmts:");
var eStatus = new Enumerator(wmi.ExecQuery("Select StatusCode from Win32_PingStatus Where Address='" + host + "'"));
return eStatus.item().StatusCode == 0;
}
// ***********************************************
// This function is using the Windows WMI to check
// response time of a PING command to a specific
// host / server
// ***********************************************
function pingtime(host) {
var wmi2 = GetObject("Winmgmts:");
var eResponse = new Enumerator(wmi2.ExecQuery("Select ResponseTime from Win32_PingStatus Where Address='" + host + "'"));
return eResponse.item().ResponseTime;
}
Die erste wird verwendet um zu prüfen, ob ein bestimmter Server überhaupt am Netz ist. Die zweite Funktione ermittelt die PING Response Zeit.
Nun wird noch eine weitere Funktion benötigt, in der man nun die verschiedenen Distribution Server auflistet und die entsprechenden "installingXXXX.html" Seiten vermerkt. Diese Funktion durchläuft nun die Liste und ermittelt den nächstgelegenen Server. Entsprechend der Auflistung gibt es die korrospondierende Seite zurück.
// ***********************************************
// This function is reporting a corrosponding
// webpage (default installing.html) by coomparing
// the distance to multiple servers
// ***********************************************
function getDistPage() {
var distServer = new Array();
var distPage = new Array();
distServer[0] = "DistServer_A";
distServer[1] = "DistServer_B";
distPage[0] = "installing_DistServer_A.html";
distPage[1] = "installing_DistServer_B.html";
var nearTime = 99999999999999;
var nearPointer = 999999999999;
// Cycle the array of servers, with distribution instances
var i=0;
for (i=0;i<=1;i++)
{
// Check if the distribution server is reach able
if (ping(distServer[i]))
{
// Get the ping distance
var currTime = pingtime(distServer[i]);
//Compare the distance and select it it if it is the nearest
if ( currTime < nearTime)
{
nearTime = currTime;
nearPointer = i;
}
}
}
// return the corrposponding html page
return distPage[nearPointer];
}
Im oberen Bereich der index.html muss man nun konsequent die Einträge "document.location.replace("installing.html");" durch "document.location.replace(getDistPage());" austauschen.
Somit testet OTW nun, wer ist der nächstgelegene Server und ruft dessen Distribution Instanz auf.
Vielleicht hilt es dem einen oder anderen weiter.
Gruß
Matthias
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP