Source
De RotomaLUG.
Dans la distribution zip GoldenGateR66-XYZ-dist.zip (disponible sur sourceforge pour le téléchargement), vous trouverez un répertoire supplémentaire nommé: src/main/config où plusieurs fichiers exemples sont situées: configa.xml, configb.xml.
D'autres dossiers comme configclienta.xml sont pour les clients, et configinita.xml, authent.xml, limitConfiga.xml, *. rule.xml, serveur *. txt sont pour l'initialisation ou le stockage de mot de passe.
Les premiers (configX.xml) spécifie le comportement général pour le serveur OpenR66:
- les noms des serveurs, les ports, le répertoire et les sous-répertoires, de clés SSL
- Nom de l'administrateur du serveur et mot de passe (pour un accès d'administrateur et de la fonction d'arrêt)
configuration du serveur * spéciaux comme des fils nombre, durée de connexion, deleteOnAbort, usenio, fastmd5, blocksize
- La configuration de base de données du serveur
Le second (configclientX.xml) est un fichier de configuration pour OpenR66 Client:
- les noms des clients, le répertoire et les sous-répertoires, éventuellement de clés SSL
configuration du serveur * spéciaux comme des fils nombre, durée de connexion, deleteOnAbort, usenio, fastmd5, blocksize
- Éventuellement configuration de base de données du serveur
Le configinitX.xml fichier est un exemple de la façon d'instancier la base de données avec des valeurs correctes. Les valeurs sont de:
- ConfiginitX.xml: nom d'hôte et l'accès base de données
- Rules_directory où les fichiers *. rule.xml sont les suivantes: toutes les informations nécessaires au traitement d'une règle (répertoires, des actions sur le transfert préalable, le transfert de poste et état d'erreur).
- Authent.xml host_authent_file (nom d'hôte, l'adresse, les ports et le support de SSL) et le *. txt associé le mot de passe:
- LimitConfiga.xml limit_configuration_file où session et limite globale pour les bandwitdth sont précisées.
Démarré GoldenGate OpenR66
Il peut être démarré comme :
java ... classpath and jvm settings ... <openr66.server.R66Server> <src/main/config/configX.xml>
Notez que dans le classpath vous avez besoin:
jars extérieures :
- Netty
- Apache-Commons-IO
- Apache-Commons-Exec
- Apache-Commons-Codec
- DOM4J
- Jaxen
- SLF4J
- Logback
- Database JDBC support for instance for H2, PostGreSQL, Oracle, MySQL
jars Goldengate :
- NettyExtension
- GoldenGateDigest
- GoldenGateCommon
OpenR66 est principalement un ensemble de commandes, à partir du serveur, des clients, par le biais des services publics.
R66Server
Il lance le serveur en utilisant comme argument OpenR66 unique du fichier de configuration XML complet. Il charge le reste de la configuration (ou mettre à jour sa configuration) à partir de la base de données spécifié dans le fichier de configuration XML.
Par défaut, trois services sont ouverts:
* Non SSL surveiller le transfert de fichiers * Transfert de fichiers SSL suivre * Transfert de fichiers HTTP observateur
Par défaut, 5 sous-répertoires (en vertu de la résidence principale) sont définis:
répertoire où les fichiers de configuration * configurations sont stockées * Répertoire des archives dans lesquelles le transfert des archives peuvent être mis (en utilisant les actions post), ou lorsque le transfert de journaux sont placés répertoire d'entrée * où les fichiers reçus sont stockés (sauf si une action post il se déplace) * Répertoire de sortie où doivent être envoyés les fichiers sont stockés (ou lié) * Répertoire de travail où actuellement les fichiers reçus sont placés temporairement
Utilitaires: ServerInitDatabase
La première étape de l'installation d'un serveur ou un client lourd OpenR66 est de construire les fichiers de configuration XML et d'ouvrir la base de données que les transferts de fichiers de soutien et de configurations. Cette fonction est une aide pour l'initialisation de la base de données.
* Le premier argument est la connexion de base de données JDBC fichier XML. Il va essayer de créer les tables de base de données et pour lancer la séquence (numéro d'identification unique par l'hôte de coureurs du chemin de table).
De là, aucun argument sont facultatives, mais dans cet ordre. Toutes les données existantes seront remplacées. Pas de données sont supprimés s'ils ne sont pas remplacés. *-Initdb: essayez de créer la base de données. Il s'arrête à la première erreur, mais le programme continue. * Répertoire-dir: Cet argument est le répertoire à partir duquel les règles de calcul dans la base de données XML en utilisant la règle de fichiers présents dans ce répertoire (table des règles). * FileHost-auth: Cet argument est à la charge de l'authentification de l'hôte fichier XML dans la base de données (table d'hôtes). * limitConfig-limite: Cet argument est de charger la bande passante fichier XML dans la base (tableau de configuration).
De ce point, le serveur OpenR66 (R66Server) peut être démarré. ServerExportConfiguration
L'une des idées de OpenR66 est la capacité de centralisation des informations de façon asynchrone dans une base de données centralisée. Cette centralisation peut être de deux manières:
authentification de l'hôte des règles d'importation de nouvelles *, ou la limitation de bande passante: cela peut être fait en utilisant le ServerInitDatabase après quelques transferts de fichiers d'une opération de poste qui pourrait exécuter cet utilitaire.
* Des règles d'exportation, l'authentification des hôtes et des coureurs réel (fait ou non): tel est le but de cet utilitaire. Elle prend deux arguments:
o La configuration du client de fichier XML
o Le répertoire où d'exporter des fichiers en format XML
Elle exportera règles, tous les coureurs présents, les authentifications hôte.
ServerShutdown
Le serveur peut être OpenR66 arrêt essentiellement de deux façons:
* Envoi de signal d'un SIGTERM-(ou sous Unix signaler un SIGUSR1-) pour le processus de JVM qui héberge le serveur OpenR66.
* La meilleure façon est d'utiliser l'interface HTTPS administrateur.
* Une autre façon consiste à utiliser cet utilitaire qui envoie une demande d'arrêt par le réseau, mais en utilisant une clé partagée physiquement (adminkey). Cet utilitaire prend le même fichier de configuration XML que le serveur (où la clé admin est visée, mais ne sont pas stockées dans une base de données) et utilise le service SSL.
* Si l'on veut utiliser le service non SSL, il faut créer un nouvel utilitaire et le changement:
o "SERVER_SSLPORT" à "SERVER_PORT"
o "createConnectionWithRetry (socketServerAddress, c'est vrai, null);" à "createConnectionWithRetry (socketServerAddress, faux, null);".
LogExport
Si l'on veut centralisée de manière asynchrone le transfert journaux, cet utilitaire est fait pour ça. Son but est d'exporter des grumes dans le répertoire de l'archive et éventuellement les purger la base de données. Il envoie une requête vers le serveur local, qui a vraiment exporter les journaux dans un fichier. Pas de fichiers sont transférés, ils sont juste à l'exportation vers un fichier dans le répertoire de l'archive mondiale. Pour l'utiliser, deux méthodes principales peuvent être obtenus:
* Le serveur local fonctionne cet outil se référant à l'aide du serveur OpenR66 la configuration du client de fichier XML, puis en exécutant une requête journal.
* Fonctionne directement une demande de transfert où la règle de réaliser, au traitement avant cet utilitaire (encore une fois, soit en recevoir ou d'envoyer mode, conformément à l'initiative du serveur).
* Le premier argument est la configuration du client (éventuellement sans base de données d'accès).
* Le reste des arguments peuvent être:
o «nettoyer» l'option: Changer tous les UpdatedInfo à fait où est GlobalLastTask ALLDONETASK et le statut est CompleteOk (parfois certains coureurs qui peut être fait, mais UpdatedInfo peuvent être erronées - aucun impact, mais la fonction propre -).
o Option "-purge": Cette option supprime tous les ALLDONETASK de ceux qui seront exportés.
o option «-start": Cette option spécifie la limite basse pour sélectionner les coureurs de temps coureur de départ. S'il n'est pas spécifié, il n'ya pas de limite basse.
o Option «guichet unique»: Cette option spécifie la limite supérieure de sélectionner les coureurs de temps coureur de départ. S'il n'est pas spécifié, il n'ya pas de limite supérieure.
ChangeBandwidthLimits
Cet outil permet de changer dynamiquement les limitations de bande passante (uniquement dans la mémoire, pas dans la base de données). Pour l'utiliser, il doit être utilisé au niveau local avec le compte admin.
* Le premier argument est la configuration du client (éventuellement sans base de données d'accès).
* Le reste des arguments peuvent être:
o «-wglob 'option: Donnez votre Limitation globale en octets par seconde (minimum 1024 afin 1KBs).
o «-rglob 'option: Lire Global limitation octets par seconde (minimum 1024 afin 1KBs).
o «-wsess 'option: limitation session écrire en octets par seconde (minimum 1024 afin 1KBs).
o «-rsess 'option: Lire session limitation octets par seconde (minimum 1024 afin 1KBs).
Clients: SubmitTransfer
Pour transférer un fichier, il existe deux méthodes principales. Celui-ci est une demande de soumission, si une opération asynchrone car une fois la demande est présentée, le client retourne sans attendre la fin de l'opération.
Il prend l'argument suivant:
* Le client fichier de configuration XML en tant que premier argument, celui dont l'accès base de données
* Au moins 3 autres arguments sont nécessaires:
o 'à' option: spécifie l'ID de l'hôte distant (soit l'ID de SSL ou non).
o Option «fichier»: spécifie le fichier à transférer (soit en recevoir ou d'envoyer le mode).
o Option «régner»: spécifie que la règle s'applique (qui spécifie le mode de transfert, le pré, post ou des opérations d'erreur, ...).
* D'autres options sont:
o option «-info ': précise les informations optionnelles qui est envoyé en même temps à la demande de transfert (des informations supplémentaires qui pourraient être nécessaires par l'hôte distant).
o «-md5 'option: spécifie que chaque transfert en bloc sera vérifié avec une clé MD5. Si la règle utilisée est déjà en mode MD5, cette option ne changera rien.
o Option «bloc»: spécifie la taille du bloc (par défaut est de 64 Ko).
o option «-nolog": précise que ce transfert ne sera pas connecté (uniquement sur côté demandeur).
DirectTransfer
Il s'agit de la deuxième méthode pour transférer un fichier. Cette méthode est directe, donc comme une opération synchrone. Cette fois, le client va faire le vrai travail (transfert de fichier). Les options sont exactement les mêmes qu'avec SubmitTransfer. Toutefois, deux cas existent:
* Client lourd: Le fichier de configuration XML client comprend l'accès à la base. Toutes les opérations de transfert sera connecté (éventuellement supprimées à la fin du côté client si l'option '-nolog est fixé). Cette option est utile pour la "production" des clients dans un centre de données. * Client léger: Le fichier de configuration XML client ne comprend pas de l'accès à la base. Toutes les opérations de transfert ne sera pas connecté à tous (à côté du client). Cette option est utile pour "client léger" comme les ordinateurs personnels, où le transfert de fichiers depuis ou vers un centre de données est une nécessité.
Toutefois, les deux clients ne peut être l'initiateur du transfert (recevoir ou d'envoyer), car aucun service n'est en cours d'exécution une fois que le client est terminée.
SendThroughClient
Cette méthode n'est pas une méthode complète mise en œuvre. C'est une façon de router un transfert de fichier d'un protocole en Java pour OpenR66. Par exemple, si un protocole comme upload HTTP ou FTP upload permet d'obtenir un transfert de fichiers par paquets, vous pouvez ensuite la route de ce transfert de fichiers par le biais OpenR66 à une finale Server OpenR66 utilisant le protocole, mais sans écrire un fichier intermédiaire (écrire directement les octets à partir de le téléchargement à l'interface OpenR66 SendThroughClient). Un exemple simple est montré dans TestSendThroughClient.
Ainsi, cette méthode nécessite quelques développements mineurs à mettre en œuvre. RecvThroughClient
Cette méthode n'est pas une méthode complète mise en œuvre. C'est une façon de router un transfert de fichier à un protocole en Java pour OpenR66. Par exemple, si un protocole comme HTTP ou FTP de téléchargement permet d'obtenir un fichier téléchargé par paquets, vous pouvez ensuite acheminer directement le transfert de fichiers à partir de OpenR66 un serveur distant en utilisant le protocole OpenR66 directement, mais sans écrire un fichier intermédiaire (écrire directement les octets de la télécharger à partir de l'interface OpenR66 RecvThroughHandler). Un exemple simple est montré dans TestRecvThroughClient.
Ainsi, cette méthode nécessite quelques développements mineurs à mettre en œuvre. RequestTransfer
Cet utilitaire est utilisé pour obtenir des informations spécifiques pour un coureur ou d'avoir une action sur ce coureur.
Les arguments sont les suivants:
* Le premier argument est le client fichier de configuration XML, y compris l'accès à la base.
* 'Id' option: c'est le Id Runner.
* 'À' ou '-de' option (exclusive): Ceci spécifie le chemin de la demande de transfert. 'À' précise que la demande initiale a été initié par l'hôte actuel en cours d'exécution sur l'hôte distant spécifié. '-De' précise que la demande initiale a été initié par l'hôte distant spécifié.
* Les arguments optionnels (exclusive): sans aucun de ces arguments, la requête retourne uniquement les informations actuelles du coureur.
o »d'annulation de l'option ': le coureur sera annulée. Tout fichier actuellement en écriture sera supprimé.
o Option «guichet unique»: le coureur sera arrêté (mais pas d'annulation).
o '-restart' option: le coureur sera redémarrer (si arrêté).
RequestInformation
Cet utilitaire est utilisé pour obtenir des informations d'un fichier, un répertoire, avec ou sans caractères génériques («*» et'?").
Les arguments sont les suivants:
* Le premier argument est le client fichier de configuration XML, y compris l'accès à la base.
* 'À' option: spécifie l'hôte demandé.
* «Régner», option: la règle
* 'Fichier' le fichier option pour laquelle pour obtenir des infos (peut contenir des caractères génériques)
* Les arguments optionnels (exclusive): sans aucun de ces arguments, la demande ne renvoie que l'existence du fichier ou du répertoire.
o «-exister» pour tester l'existence.
o «-détail» pour obtenir le détail dans le dossier.
o «liste» pour obtenir la liste des fichiers.
o «-mlsx 'pour obtenir la liste et les détails des fichiers
OpenR66-protocole
Nous décrivons ici la logique du protocole.
Nous avons d'abord décrire la valeur différente qui peut être trouvé. statut UpdatedInfo
Une demande (DbTaskRunner) peut avoir plusieurs état UpdatedInfo:
* Inconnue: pas d'informations particulières à ce sujet. * NOTUPDATED: utilisée par la base de données objet d'autres quand ils sont pris en compte. * Interrompue: une demande est interrompu, mais peut être reprogrammé. * Les entretenir: une demande est proposé d'être soumises à par le commandant (ou un objet de base de données d'autres sont censés être pris en compte). * INERROR: une demande est dans l'erreur et ne peuvent pas être soumises à par le commandant jusqu'à ce que son statut est modifié de manière explicite. * Durée du film: une demande est en cours d'exécution. * FAIT: une demande est terminée et entièrement réalisé.
Ces valeurs échelonnées
Une demande peut avoir des valeurs de plusieurs Étape:
* NOTASK: la demande n'a jamais commencé. * PRETASK: la demande est actuellement à l'étape de transfert préalable. * TRANSFERTASK: la demande est actuellement à l'étape de transfert. * POSTTASK: la demande est actuellement à l'étape de transfert de poste (transfert valable uniquement). * ALLDONETASK: la demande est entièrement fini (UpdatedInfo est en état FAIT trop). * ERRORTASK: la demande est actuellement à l'étape d'erreur alors qu'une erreur se produit (que ce soit dans le GER, le transfert ou étape de post).
Une demande a deux valeurs étape:
* GlobalStep: l'étape de demande de la valeur actuelle * GlobalLastStep: c'est la dernière valeur valide pas la demande. Lorsque GlobalStep est à l'étape ERREUR, GlobalLastStep dit dans quelle étape il a été avant d'entrer dans l'erreur. Cette information est utilisée pour permettre le redémarrage de la demande de cette étape en cours de validité dernier.
Des informations détaillées
Chaque étape des valeurs et UpdatedInfo a une ErrorCode des informations détaillées:
* InitOk: stands pour l'initialisation correcte de la demande (démarrage et d'authentification) * PreProcessingOk, TransferOk, PostProcessingOk: stand pour corriger fin de l'étape spécifiée * CompleteOk: stands de toutes les mesures sont correctes (ALLDONE pour l'étape et fait pour UpdatedInfo) * Durée du film: est pour l'étape en cours est en état de marche. * StoppedTransfer, CanceledTransfer: stand pour présenter une demande si une action arrêtée ou a annulé la demande de donnée. Une demande peut être arrêté redémarrage de la situation actuelle. Une demande annulée commence dès le début de l'étape en cours. Par exemple, pour l'étape de transfert, arrêté implique que le redémarrage est du bloc courant transféré en cours de validité, alors que Annuler impliquera de redémarrer dès le début du transfert (premier bloc). * QueryAlreadyFinished: représente un code spécial dans lequel la demande est en effet déjà terminé à distance et peut donc être terminée au niveau local. * Les autres codes spécifie les différents types d'erreur (NotKnownHost, Shutdown, RemoteError, ...).
Logique séquentielle
Une demande de transfert à une logique séquentielle:
* La demande est enregistrée dans la base de données avec un statut les entretenir.
* Une demande qui a été dans un état interrompu est changé dans un état de les entretenir.
* Le commandant obtenir des demandes avec le statut de les entretenir et les rend comme allant à l'état.
* Le commandant estime que ces demandes ClientRunners sépare.
* Les contrôles ClientRunner première fois que la demande n'est pas donnée une auto "demandé" la demande, ce qui signifie que l'hôte demandeur ne peut exécuter un ClientRunner, sauf si cette demande était à l'étape POSTTASK sorte que demandé d'accueil en mesure de finaliser la demande.
* Le ClientRunner obtient la distance requise Adresse de l'hôte et tente d'ouvrir la connexion. Si une connection réseau avec l'hôte donné demandé est déjà ouverte, cette connexion réseau est réutilisé par la nouvelle ClientRunner.
* La connexion peut utiliser le support SSL (port différent de celui non SSL). Il s'agit d'une option de transfert. Cette option est sélectionnée tout en sélectionnant les ID de l'hôte pour le support de SSL pour la télécommande hôte demandé. Cette option est CPU et la consommation mémoire.
* Une fois la connexion réseau est trouvé, une connexion privée (dans la mémoire de connexion) est ouvert pour permettre le multiplexage de cette demande avec d'autres demandes sur la même connexion réseau. Cette connexion privée est attaché à une nouvelle LocalChannelReference qui fait référence à la demande, la session, les connexions à distance et privé. A valide LocalChannelReference contient deux pièces d'identité connexion privée, un pour la connexion locale privée, et l'autre pour la connexion à distance privé.
o un message de démarrage est envoyé à la connexion locale privée de l'initier.
o Le démarrage même message est envoyé à la connexion à distance privés d'ouvrir trop la relation entre eux et d'instancier les mêmes LocalChannelReference sur l'hôte distant.
* Une fois le LocalChannelReference est OK, l'hôte demandeur envoie un message Authent afin d'authentifier cet hôte.
* L'hôte demandé renvoie son propre message Authent trop.
* Une fois authentifié, l'hôte demandeur envoie le message de demande.
* La demande de vérification d'accueil si l'authentification et la demande sont compatibles, vérifier certaines options spécifiques à la demande elle-même (démarrer, redémarrer, ...) et renvoie la demande validée à l'hôte demandeur.
o la demande est InitOk que des informations détaillées.
* La demande validée est maintenant en cours d'exécution avant l'étape de travail.
o Une fois terminé, la requête est en état PreProcessingOK.
* Maintenant la transmission peut commencer. L'expéditeur (qui pourrait être soit l'hôte demandé ou le demandeur), lancer sa propre RetrieveRunner. Cette RetrieveRunner envoie à l'autre hôte tous les messages datablock.
* Chaque message peut comporter un bloc de données de contrôle MD5 du paquet à elle (possibilité de transfert). Cette option n'est pas obligatoire et est CPU consomme.
* Une fois que tous datablock sont envoyés, le RetrieveRunner envoie un message EndTransfer à l'hôte récepteur.
* L'hôte récepteur renvoie le message validé EndTransfer.
o La demande est à l'état TransferOk.
* La demande est maintenant sur Finaliser façon. Les deux hôtes exécute les actions Post.
o La demande est à l'état PostProcesseingOk.
* Une fois le post-traitement est terminé, le RetrieveRunner (Sender) envoie à l'hôte distant un message EndRequest.
* L'hôte distant va envoyer le message validé EndRequest.
* La demande est maintenant totalement fini et son statut est CompleteOk ALLDONE.
A chaque étape, une erreur peut arriver et s'arrêtera à la demande, l'établissement de ses UpdatedInfo à INERROR ou le statut interrompue. Le GlobalStep pourrait être en état d'erreur si l'action erreur d'étape est exécutée.
Une image simplifiée est présentée ici:
Part 4: Configure JBoss Portal
Before you start configuration changes, please shutdown JBoss Portal.
Now you can rename the old configuration files:
- rename old DB configuration files
cd $JBOSS_HOME/server/default/deploy mv hsqldb-ds.xml hsqldb-ds.xml.sav mv portal-hsqldb-ds.xml portal-hsqldb-ds.xml.sav
Configure JBoss Portal with MySQL
Copy MySQL JDBC driver:
- cd ~/dist
- cp mysql-connector-java-5.1.6-bin.jar $JBOSS_HOME/server/default/lib
Copy configuration files and go to XML configuration file directory:
cp $JBOSS_HOME/setup/portal-mysql5-ds.xml $JBOSS_HOME/server/default/deploy cp $JBOSS_HOME/docs/examples/jca/mysql-ds.xml $JBOSS_HOME/server/default/deploy cd $JBOSS_HOME/server/default/deploy
Now you can modify these XML configuration files. In file mysql-ds.xml change underlined attribute values:
<connection-url>jdbc:mysql://dbserver:3306/portaldb</connection-url> <user-name>jboss</user-name> <password>jbosspwd</password>
In file portal-mysql5-ds.xml change underlined attribute values:
<connection-url>jdbc:mysql://dbserver:3306/portaldb?useServerPrepStmts=false&jdbcCompliantTruncation=false</connection-url> <user-name>jboss</user-name> <password>jbosspwd</password>