Java MimeMessage.saveChanges非常慢
由于包含Java MimeMessage.saveChanges非常慢,java,junit,jakarta-mail,mime-message,Java,Junit,Jakarta Mail,Mime Message,由于包含m.saveChanges(),执行以下测试大约需要5秒钟 这里有什么问题?我可以模拟什么来加快速度?首先修复代码中的错误 可能会影响某些机器的性能。对于JDK,您可以更改缓存DNS查找的安全属性或设置系统属性。JDK 7和更高版本中的默认行为在缓存方面做得很好,因此您不必更改这些设置 您最好使用会话属性来避免某些此类查找 设置的会话属性(不是协议版本),因为这将阻止在上查找名称。调用、或将触发调用以获取本地地址。如果未设置上述属性,则此方法将尝试查询主机名。通过设置属性,此方法将从会话
m.saveChanges()
,执行以下测试大约需要5秒钟
这里有什么问题?我可以模拟什么来加快速度?首先修复代码中的错误
可能会影响某些机器的性能。对于JDK,您可以更改缓存DNS查找的安全属性或设置系统属性。JDK 7和更高版本中的默认行为在缓存方面做得很好,因此您不必更改这些设置
您最好使用会话属性来避免某些此类查找
false
,但如果您应用了点#1,则会处理此问题false
@Test
public void test1() throws MessagingException, IOException {
Properties props = new Properties();
props.put("mail.host", "localhost"); //Or use IP.
Session s = Session.getInstance(props);
MimeMessage m = new MimeMessage(s);
m.setContent("<b>Hello</b>", "text/html; charset=utf-8");
m.saveChanges();
assertEquals(m.getContent(), "<b>Hello</b>");
assertEquals(m.getContentType(), "text/html; charset=utf-8");
}
@测试
public void test1()引发MessaginException,IOException{
Properties props=新属性();
props.put(“mail.host”、“localhost”);//或使用IP。
sessions=Session.getInstance(props);
MimeMessage m=新MimeMessage(s);
m、 setContent(“Hello”,“text/html;charset=utf-8”);
m、 保存更改();
assertEquals(m.getContent(),“Hello”);
assertEquals(m.getContentType(),“text/html;charset=utf-8”);
}
如果要传输消息,请结合规则#1、#2和#3,这将阻止访问主机系统进行名称查找。如果要防止在传输过程中进行所有DNS查找,则必须使用IP地址
Session s = mock(Session.class);
when(s.getProperties()).thenReturn(new Properties());
@Test
public void test1() throws MessagingException, IOException {
Properties props = new Properties();
props.put("mail.host", "localhost"); //Or use IP.
Session s = Session.getInstance(props);
MimeMessage m = new MimeMessage(s);
m.setContent("<b>Hello</b>", "text/html; charset=utf-8");
m.saveChanges();
assertEquals(m.getContent(), "<b>Hello</b>");
assertEquals(m.getContentType(), "text/html; charset=utf-8");
}