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

Développement Web en Java Discussion :

chemin des ressources pour une application web dynamique


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 25
    Par défaut chemin des ressources pour une application web dynamique
    Bonjour,

    Il s'agit d'une application web de type CRUD de gestion de parc automobile.
    Env. Tech:

    Éclipse mars, tomcate 8,JSF, jpa

    L’accès à la base de donnée et configurer dans le fichier persistance.xml de JPA.
    Les images utilisées pour l'ihm sont dans un fichier image dans WebContent\ressources\images

    Voici mon problème.

    L'application a été au départ développée pour un client x pour gérer son parc de voiture et ses clients.

    Donc il y avait une seule base de données x-base et l'image comme le loge logo dans le fichier image. Le problème se pose quand un autre client y veut utiliser l'application. Donc j'ai créé une autre base de données y-base identique à la première. Le problème se pose quand je veux exporter le war pour le déploiement.

    Il faut que je modifie le fichier persistance pour pointé sur la base y-base et changé le chemin des images comme le logo dans le code. Et cela doit être fait à chaque fois qu'il y a un nouveau client. Ce n'est pas pratique surtout pour les modifications et les évolutions propres à chaque client. Il faut remodifier le code recréer un war etc.

    Ce que je veux c'est configurer l'accès a la base de donnée dans fichier propriété qui se trouverais dans le système de ficher de sort à ce que je mettrais uniquement ce fichier a jour pour un nouveau client.

    Je vous remercie d'avance !

  2. #2
    Membre chevronné
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2013
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 269
    Par défaut
    Bonjour,
    pour être sûr de bien comprendre, tu as un WAR par client ? Ces WAR tournent ils dans le même serveur JEE ?
    Suivant ces éléments de réponses, il peut y avoir diverses solutions.

  3. #3
    Membre actif
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 25
    Par défaut
    Bonjour VirgApps,

    Merci pour la réponse déjà !

    Pour être un peu plus clair, il s'agit d'une application en mode SAAS.

    Le but c'est d’éviter de mettre les données de tous les clients dans les mêmes tables. de 1 par ce que chaque client aura une grosse quantité de données, donc vaux mieux avoir plusieurs base de données (une par client) plutôt qu'une seule pour tous les clients. et de deux car chaque client aura des données sensibles qu'il ne voudra pas mélanger avec les données des autres.

    donc devrai-je recréer la même base de données pour chaque nouveau client et lui déployé un nouveau war de la même application ? En cas de bug ou d'une évolution , si j'ai 100 clients, il faudra appliquer la même correction 100 fois ?

    Je voudrais savoir s'il n’y a pas une façon plus souple pour gérer cela !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    L'idée c'est de passer par le ClassLoader du thread courant de l'application pour demander un bundle par getResources, au lieu de faire un ResourceBundle.getBundle.
    Cette méthode retourne un chemin complet de la ressource, avec quelques informations à supprimer (préfixe de format, nom du fichier demandé).
    Une fois nettoyé, on dispose d'un chemin absolu de répertoire, que l'on peut parcourir pour y chercher les fichiers properties, xml ou autre (enfin tout ce qui se trouve dans ce répertoire)
    Testé dans un Dynamic Web Project depuis eclipse et depuis un war déployé sur un tomcat local sous OS Windows :

    Code java : 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
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
    	response.setContentType("text/html");  
    	PrintWriter printWriter = response.getWriter();
    	printWriter.println("Bundles Location Test<br/>");
     
    	final String TESTFILENAME = "test.properties";
    	final String PATHPREFIX = "file:/";
    	try {
    		Enumeration<URL> urls = Thread.currentThread().getContextClassLoader().getResources(TESTFILENAME);
    		if (urls.hasMoreElements()) {
    			String pathToProperties = urls.nextElement().toString().replaceFirst(PATHPREFIX, "").replaceFirst(TESTFILENAME, "");
    			printWriter.println("pathToProperties = "+pathToProperties+"<br/>");
    			File[] children = new File(pathToProperties).listFiles();
    			if (children != null) {
    				for (File child : children) {
    					if (child.isFile())
    						printWriter.println("resources : " + child.getName() + "<br/>");			            	
    				}
    			} else {
    				printWriter.println("No resources : children is null, pathToProperties = "+pathToProperties+"<br/>");
    			}				
    		} else {
    			printWriter.println("No resources : urls.hasMoreElements<br/>");			
    		}
    	} catch (IOException e) {
    		printWriter.println("No resources : IOException<br/>");			
    	}
    }

Discussions similaires

  1. Comment faire des etats pour une application web ?
    Par ovh dans le forum Autres outils décisionnels
    Réponses: 6
    Dernier message: 06/07/2021, 03h25
  2. Générer des états pour une application web
    Par PMALONG dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 14/03/2017, 16h51
  3. Réponses: 12
    Dernier message: 26/10/2011, 19h16
  4. Développez une application Web dynamique et interactif avec des templates
    Par llaffont dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 21/02/2011, 15h56
  5. Audit des performances d'une application Web
    Par jpg dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 16/09/2004, 10h45

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