2009-09-24 5 views
2

J'utilise plusieurs packages configurés à l'aide des propriétés de configuration, par exemple org.apache.ws.security.crypto. Normalement, un seul fichier de configuration suffit, mais j'ai maintenant besoin de surcharger une ou plusieurs des propriétés à chaque fois qu'elles sont utilisées par du code qui est appelé à partir d'une instance d'objet particulière. Je suis loin d'être un expert Java (mais j'ai trop d'années d'expérience en programmation pour le mentionner) donc toute suggestion spécifique pour une solution sera grandement appréciée.Remplacer les propriétés Java des packages

+2

Bienvenue dans l'enfer des variables globales ... –

Répondre

1

Le magasin de propriétés Java est une seule carte globale de nom-valeur. Il n'y a pas de prise en charge générale pour les propriétés de remplacement basées sur "who" (objet, package, etc.) référençant la propriété.

0

La réponse dépend du package spécifique que vous utilisez et de la propriété que vous souhaitez modifier. Un fichier de propriétés peut être lu une fois au démarrage et jamais plus consulté. Si c'est ce que fait le code, alors vous ne pouvez rien y faire sans changer le code. D'autres packages vous permettent de modifier les propriétés ou d'autres options de configuration qui vous permettent de définir des valeurs sans utiliser de fichier de propriétés. Les appelants individuels devraient s'assurer de changer les propriétés au besoin.

Vous devez également vous préoccuper des problèmes d'unités d'exécution (même si vous utilisez un serveur d'applications qui les extrait). Si les propriétés sont stockées en tant que variable statique, la modification pour un appelant peut être modifiée pour tous les appelants.

De toute façon, je suggère de poser des questions sur la classe spécifique et la propriété que vous aimez ici, et voir si quelqu'un sait comment faire face à la modification de la propriété sur une base par appelant.

Questions connexes