SpringブートでJNDITemplateを使用すると予想していますが、オブジェクトをJNDIコンテキストにバインドしようとすると例外が発生します。SpringブートでJndiTemplateを初期化する方法
@Bean
CommandLineRunner initJndi() {
return (args) -> {
Properties props = new Properties();
props.put("mail.smtp.host", "mail.bla.com");
...
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
});
JndiTemplate template = new JndiTemplate();
template.bind("Session", session);
};
}
例外は次のとおりです。
javax.naming.NoInitialContextException: 環境やシステムプロパティで、またはアプレットのパラメータとして、または アプリケーションリソースファイル内のクラス名を指定する必要があります。java .naming.factory.initial
テンプレートにはJNDIコンテキストがありません。しかし、問題は、文脈がどのように提供されるのかということです。
背景 私はlogbackのSMTPアペンダのためのjavax.mailセッションを設定します。 smtpアペンダは、JNDIのメールセッションを使用できます。 logback SMTPAppendersessionViaJNDIプロパティを参照してください。
なぜJNDIが必要ですか?メール専用の場合は、Springメール抽象化を使用する必要はありません。 –