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
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
[{"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
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�.
Partager