关于getDefaultInstance和getInstance区别
2016-05-13 10:23
531 查看
最近刚做邮箱验证,逐步对邮箱进行解剖,现在做到,在后台修改配置的邮箱,让修改之后的邮箱可以发送邮件,配置的邮箱相当于是一个可移动的接口
----------题词
下面开始对上述进行解析:
<span style="color: #3366ff;">从处理流程中可以看出,首先是从缓存中查找是否有properties存在
如果存在,则加载默认的properties
如果不存在才加载用户自己定义的properties,
所以当一个应用为每个用户独立创建properties的时候,还是应该调用getInstance,
除非你希望有一个默认的properties让用户使用</span></p><p>问题找到了,因为它会首先去内存和系统文件中去找properties,所以不管我在页面改几次数据,其实在后台中生成session时都和系统启动时的一样,所以在MailUtil.sendTextMessage(mailSession,RptTaskMailConfig.Sender,
receiver,null,mail_subject,mail_content,"GB2312",null);时session里的sender和传入的sender不一致,因此出错,修改<span style="color: #0000ff;">Session.getDefaultInstance(props,
authentic);<span style="color: #000000;">为</span>Session.getInstance(props, authentic);后,</span><span style="color: #000000;">可以正确发送修改帐号,密码等资料后的邮件.OK</span></p><p>最后再补充一下,session.getdefaultinstance和getinstance的区别 :</p><p><span style="color: #3366ff;">如果想要同时使用两个帐号发送javamail,比如使用</span><a
href="mailto:1@a.com"><span style="color: #3366ff;">1@a.com</span></a><span style="color: #3366ff;">发送1#邮件,使用</span><a href="mailto:2@a.com"><span style="color: #3366ff;">2@a.com</span></a><span style="color: #3366ff;">发送2#邮件,这时候,你就需要同时创建两个java.mail.Session对象。但是如果你仍然使用Session.getDefaultInstance创建session对象的话,你会发现,第二个username:</span><a
href="mailto:2@a.com"><span style="color: #3366ff;">2@a.com</span></a><span style="color: #3366ff;">创建的session永远都和第一个一样,这是为什么呢?因为,getDefaultInstance是真正单例模式,而且,里面的username和password属性是final型的,无法更改。所以,你会发现两封email都是由</span><a href="mailto:1@a.com"><span style="color:
#3366ff;">1@a.com</span></a><span style="color: #3366ff;">发出来的。所以这个时候你要使用javax.mail.Session.getInstance()方法来创建session对象。</span></p><p><span style="color: #3366ff;">
总结:getDefaultInstance和getInstance
getDefaultInstance,如果之前存在先加载,不存在在提取,getInstance直接提取
----------题词
下面开始对上述进行解析:
<span style="color: #3366ff;">从处理流程中可以看出,首先是从缓存中查找是否有properties存在
如果存在,则加载默认的properties
如果不存在才加载用户自己定义的properties,
所以当一个应用为每个用户独立创建properties的时候,还是应该调用getInstance,
除非你希望有一个默认的properties让用户使用</span></p><p>问题找到了,因为它会首先去内存和系统文件中去找properties,所以不管我在页面改几次数据,其实在后台中生成session时都和系统启动时的一样,所以在MailUtil.sendTextMessage(mailSession,RptTaskMailConfig.Sender,
receiver,null,mail_subject,mail_content,"GB2312",null);时session里的sender和传入的sender不一致,因此出错,修改<span style="color: #0000ff;">Session.getDefaultInstance(props,
authentic);<span style="color: #000000;">为</span>Session.getInstance(props, authentic);后,</span><span style="color: #000000;">可以正确发送修改帐号,密码等资料后的邮件.OK</span></p><p>最后再补充一下,session.getdefaultinstance和getinstance的区别 :</p><p><span style="color: #3366ff;">如果想要同时使用两个帐号发送javamail,比如使用</span><a
href="mailto:1@a.com"><span style="color: #3366ff;">1@a.com</span></a><span style="color: #3366ff;">发送1#邮件,使用</span><a href="mailto:2@a.com"><span style="color: #3366ff;">2@a.com</span></a><span style="color: #3366ff;">发送2#邮件,这时候,你就需要同时创建两个java.mail.Session对象。但是如果你仍然使用Session.getDefaultInstance创建session对象的话,你会发现,第二个username:</span><a
href="mailto:2@a.com"><span style="color: #3366ff;">2@a.com</span></a><span style="color: #3366ff;">创建的session永远都和第一个一样,这是为什么呢?因为,getDefaultInstance是真正单例模式,而且,里面的username和password属性是final型的,无法更改。所以,你会发现两封email都是由</span><a href="mailto:1@a.com"><span style="color:
#3366ff;">1@a.com</span></a><span style="color: #3366ff;">发出来的。所以这个时候你要使用javax.mail.Session.getInstance()方法来创建session对象。</span></p><p><span style="color: #3366ff;">
总结:getDefaultInstance和getInstance
getDefaultInstance,如果之前存在先加载,不存在在提取,getInstance直接提取
相关文章推荐
- SQL2008遇到的几个小问题处理办法
- linux下vi命令大全
- 快速实现SQL Server数据库恢复备份
- ASP生成静态Html文件技术
- 【第九章】 Spring的事务 之 9.2 事务管理器 ——跟我学spring3
- Android中Service类onStartCommand
- Java IO流体系中常用的流分类
- 在同一台服务器上配置多个Tomcat
- git clone Linux 源码并切换TAG
- VS2010编译Qt4
- 使用devstack安装OpenStack
- java 关于setContentPane()和getContentPane()的应用
- jQurey插件cookie,autocomplete,contextmenu,lifocuscolorct,twoaddresult
- [置顶]linux下搭建mysql主从
- 【好程序员特训营】- 路新艺-Java设计模式之单例模式
- 递归的一般方法
- 修改ubuntu 的命令提示符("修改主机名和用户名")
- Solr索引数据删除
- Android 广告轮播图
- java 多线程