IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Webapp modulaire avec module auto d�clar� sous osgi


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut Webapp modulaire avec module auto d�clar� sous osgi
    bonjour

    J'ai cherch� � faire une webapp modulaire qui utilise au mieux osgi
    lorsqu'on arr�te ou d�marre un module
    >stop osgi-user
    >start osgi-user
    qu'on ajoute ou supprime un module (jar) du dossier deploy
    celui-ci de d�clare ou se retire automatiquement de la webapp le menu des clients actifs est mis � jour sans aucun intervention.

    pour le code je vous renvois vers
    http://www.developpez.net/forums/d16...app-modulaire/
    dans lequel j'ai post� la solution c�t� serveur.

    https://github.com/sekaijin/webapp.whiteboard

    pour le client j'ai utilis� webix (pour les composants UI) et une websocket.

    pour l'affichage du menu webix est finalement tr�s simple
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    (function() {
    	webix.ui({
    		id : "layout",
    		rows : [ {
    			view : "toolbar",
    			id : 'main_toolbar',
    			margin : 50,
    			height : 36,
    			cols : [ {
    				view : "menu",
    				id : 'main_menu',
    				url : "main/menu",
    				datatype : "json"
    			}]
    		} ]
    	});
    })();
    une servlet qui renvois en json le contenu du menu
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    [{"submenu":[{"icon":"plus-square","href":"message/create","value":"create"},{"icon":"sign-in","href":"message/inbox","value":"inbox"},{"icon":"sign-out","href":"message/outbox","value":"outbox"},{"icon":"paper-plane","href":"message/sent","value":"sent"}],"icon":"envelope","value":"message"},{"submenu":[{"icon":"user-plus","href":"user/add","value":"add"},{"icon":"user","href":"user/manage","value":"manage"}],"icon":"users","value":"user"}]
    pour la mise � jour � chaque changement une websocket
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    (function() {
    	if (!window.WebSocket) {
    		console.error("WebSocket not supported by this browser");
    	} else {
     
    		var server = {
    			connect : function() {
    				var location = 'ws://' + window.location.host
    						+ '/${web.context}/main/webSocket';
    				console.log(location);
    				this.ws = new WebSocket(location);
    				this.ws.onopen = function() {
    					this.send('websockets are open for communications!');
    				};
    				this.ws.onmessage = function(m) {
    					if (m.data) {
    						console.log(m.data);
    						$$('main_menu').clearAll();
    						$$('main_menu').load('main/menu');
     
    					}
    				};
    				this.ws.onclose = function(m) {
    					console.log('ws closed');
    					server.ws=null;
    				};
    			},
     
    			send : function(text) {
    				if (text != null && text.length > 0)
    					if (this.ws)
    						this.ws.send(message);
    			}
    		};
    		server.connect();
    	}
    })();
    A+JYT
    PS: j'ai profit� de cette exp�rience pour tester webix. la lib semble pas mal mais mal document�.

  2. #2
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    Bonjour,

    Je reviens sur ce post pour vous faire un petit retour.

    Lorsque j'ai post� le premier message j'�tais en pleine exploration.
    Aujourd'hui je suis en phase d'industrialisation.
    Le projet n'a pas du tout le m�me code mais il en reprend tous les principes.

    La plateforme serveur est un Servicemix 6.1
    Il s'agit d'un OSGI Karaf avec un serveur HTTP Jetty.

    un bundle (jar) est charg� de mettre en place le tableau blanc
    un bundle met en place la s�curit� bas�e sur LDAP
    un bundle Main d�fini le cadre g�n�ral du site Web il contient la seule et unique page HTML et les widgets JS du menu principal (hi�rarchique) et les lib js utilis� dans le serveur. Le tout servi en statique.

    Enfin chaque domaine fonctionnel est un bundle qui fournit des ressources statiques (images, js) et les services (Rest). Ces bundles sont � consid�rer comme des plug-ins de l'application. (un peu comme dans �clipse)

    Les plug-ins peuvent �tre d�ploy�s ind�pendamment les uns des autres, ils peuvent �tre arr�t�s, d�marr�s � l'envie.
    D�s qu'un plug-in d�marre son entr�e dans le menu devient disponible (en fonction des droits) et est directement utilisable. Sans aucune intervention.
    L'op�ration inverse lors de l'arr�t du plug-in.

    Mais ce n'est pas tout. Servicemix (Karaf) peut �tre d�marr� en mode cluster. dans cette configuration avec l'utilisation d'un reverse proxy ou un r�partiteur de charge
    lorsqu�un plug-in est d�ploy� sur un noeud, il se d�ploie automatiquement sur tous les noeuds

    C�t� d�veloppement nous avons accueilli un nouvel arrivant sp�cialement pour ce travail. Habitu� au d�veloppement web classique il ne connaissait ni OSGI li Webix ni le mod�le de programmation de webix. En une semaine la production de bundles �tait commenc�e avec des choses � revoir. Apr�s une discussion pour mieux cibler ce qui rel�ve du front et ce qui rel�ve du back. Il a commenc� � produire des bundles de fa�on "industrielle".

    Le projet �tant tout neuf, de domaine sensible, nous sommes en phase de recette et commen�ons la mise en production bient�t.
    Hors mis des am�liorations cosm�tiques, nous n'avons aucun retour de recette.

    L'ind�pendance des bundles et la simplicit� des d�ploiements permettent un cycle de mise en production tr�s court.

    A+JYT

Discussions similaires

  1. Editeur texte avec auto compl�tion sous Linux
    Par Sield dans le forum G�n�ral JavaScript
    R�ponses: 7
    Dernier message: 25/09/2013, 15h23
  2. Probl�me d'affichage sous IE avec margin auto
    Par programmeur400 dans le forum Mise en page CSS
    R�ponses: 1
    Dernier message: 15/11/2011, 19h29
  3. R�ponses: 0
    Dernier message: 10/01/2011, 11h40
  4. [Xoops] Probl�me de droits avec module Mytube
    Par boyofcasa dans le forum EDI, CMS, Outils, Scripts et API
    R�ponses: 0
    Dernier message: 14/11/2010, 16h01
  5. 7-Zip archive auto-extractible sous Windows avec Delphi
    Par pmoncada dans le forum Autres Logiciels
    R�ponses: 1
    Dernier message: 04/11/2010, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo