Configurable valeurs de MDB annotations
Je suis en train d'utiliser cette méthode pour la réception du courrier dans notre EJB3 app. En bref, cela signifie que la création d'un MDB avec les annotations suivantes:
@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "mailServer", propertyValue = "imap.company.com"),
@ActivationConfigProperty(propertyName = "mailFolder", propertyValue = "INBOX"),
@ActivationConfigProperty(propertyName = "storeProtocol", propertyValue = "imap"),
@ActivationConfigProperty(propertyName = "debug", propertyValue = "false"),
@ActivationConfigProperty(propertyName = "userName", propertyValue = "username"),
@ActivationConfigProperty(propertyName = "password", propertyValue = "pass") })
@ResourceAdapter("mail-ra.rar")
@Name("mailMessageBean")
public class MailMessageBean implements MailListener {
public void onMessage(final Message msg) {
...snip...
}
}
J'ai ce travail, mais la situation est loin d'être idéale: Le nom d'hôte, nom d'utilisateur et mot de passe sont codés en dur. Court de l'utilisation de la fourmi et de construire.propriétés de remplacer ces valeurs avant la compilation, je ne sais pas comment externaliser.
L'idéal serait d'utiliser un MBean, mais je n'ai aucune idée de la façon d'obtenir les valeurs de la MBean à la base de données de configuration.
Comment dois-je faire cela?
OriginalL'auteur Sietse | 2008-11-21
Vous devez vous connecter pour publier un commentaire.
Vous pouvez externaliser les annotations dans le ejb-jar.xml que vous déployez dans le META-INF de votre fichier jar comme suit:
Ensuite, vous pouvez définir la mdb.de l'utilisateur.nom de la valeur en tant que système de propriété dans le cadre de la ligne de commande de votre serveur d'applications à l'aide de -Dmdb.de l'utilisateur.nom=theUserName et il va magiquement obtenir ramassé par le mdb.
Espère que ça aide.
<spec-descriptor-property-replacement>
Pour glassfish vous l'ajouter domain.xml fichier ou utilisez le créer-jvm-commande options dans le asadmin outil.
Ce mécanisme n'est pas dans le standard JEE.
OriginalL'auteur Brett Hannah
De JBoss 5.1 au moins, vous pouvez utiliser l'AOP pour configurer le @ActivationConfigProperties. J'ai découvert en regardant les exemples que jboss offre ici. Ceci est utile si vous ne voulez pas que votre nom d'utilisateur et mots de passe disponibles pour l'ensemble du conteneur dans l'un des systèmes de propriété, ou si vous êtes comme moi et que jamais, je le répète, JAMAIS, à déployer un artefact avec un nom d'utilisateur/mot de passe. De toute façon, ici, c'est le jist...
Annoter le mdb comme ça...
Puis ajouter un ${quoi}-aop.xml pour déployer dir avec des éléments internes comme ci-dessous. J'ai laissé les commentaires d'origine dans ce cas Jaikiran n'apporter les modifications mentionnées...
Comment pouvons-nous le faire au Printemps?
OriginalL'auteur Joseph Valerio