Мой сайт основан на страницах JSP и сервлетах.Я запускаю Tomcat 6 на своем vps.
Я использую JavaMail версии 1.4 для отправки писем на свой сайт.
Я могу отослать несколько электронных писем во время моего сеанса, но сегодня у меня есть пустая страница на странице представления моего сайта.Итак, я посмотрел журналы Tomcat и вот что произошло -
INFO | jvm 1 | 2010/12/15 10:29:13 | DEBUG: setDebug: JavaMail version 1.4.1
INFO | jvm 1 | 2010/12/15 10:29:13 | DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
INFO | jvm 1 | 2010/12/15 10:29:13 | DEBUG SMTP: useEhlo true, useAuth true
INFO | jvm 1 | 2010/12/15 10:29:13 | DEBUG SMTP: trying to connect to host "smtp.myisprovider.net", port 25, isSSL false
INFO | jvm 1 | 2010/12/15 10:29:14 | 421 4.7.1 - Connection Refused - - Too many connections
INFO | jvm 1 | 2010/12/15 10:29:14 | DEBUG SMTP: could not connect to host "smtp.myisprovider.net", port: 25, response: 421
INFO | jvm 1 | 2010/12/15 10:29:14 |
INFO | jvm 1 | 2010/12/15 10:29:14 | javax.mail.MessagingException: Could not connect to SMTP host: smtp.myisprovider.net, port: 25, response: 421
INFO | jvm 1 | 2010/12/15 10:29:14 | at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1379)
INFO | jvm 1 | 2010/12/15 10:29:14 | at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
INFO | jvm 1 | 2010/12/15 10:29:14 | at javax.mail.Service.connect(Service.java:288)
INFO | jvm 1 | 2010/12/15 10:29:14 | at javax.mail.Service.connect(Service.java:169)
INFO | jvm 1 | 2010/12/15 10:29:14 | at spyder.servlets.email.MessageCenterServlet.cancelService(MessageCenterServlet.java:836)
INFO | jvm 1 | 2010/12/15 10:29:14 | at spyder.servlets.email.MessageCenterServlet.doPost(MessageCenterServlet.java:172)
INFO | jvm 1 | 2010/12/15 10:29:14 | at spyder.servlets.email.MessageCenterServlet.doGet(MessageCenterServlet.java:39)
INFO | jvm 1 | 2010/12/15 10:29:14 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
INFO | jvm 1 | 2010/12/15 10:29:14 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
INFO | jvm 1 | 2010/12/15 10:29:14 | at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
INFO | jvm 1 | 2010/12/15 10:29:14 | at java.lang.Thread.run(Thread.java:595)
Я отправляю свои электронные письма через МОЙ провайдера.Тот, который я использую для интернета дома.Это , а не тот же провайдер, на котором работает мой VPS.
Итак, является ли эта проблема результатом моего провайдера Интернет-услуг и того, что установлено на его конце, или это связано с моимкод в моем сервлете?
В журнале говорилось " слишком много подключений ", поэтому вначале мне интересно, если это что-то на моем конце, и если есть что-то, я должен был бы закрывать (в сервлете вызывать метод close () для чего-нибудь?) после отправки электронного письма?
Отредактировано сообщение, включающее фрагмент из сервлета ...
Transport t = null;
try {
//get email address to send
//this email to
rs = stmt.executeQuery("Select Tech_Support_Email,POP3,SMTP from sitewide_info");
String toName = "mywebsite.com";
String host_email_address = "";
String POP3 = "";
String SMTP = "";
if(rs.next()) {
host_email_address = rs.getString(1);
POP3 = rs.getString(2);
SMTP = rs.getString(3);
}
// Specify the SMTP Host
Properties props = new Properties();
//props.put(POP3, SMTP);
props.setProperty("mail.smtp.auth", "true");
props.put("mail.pop3.host", POP3);
props.put("mail.smtp.host", SMTP);
// Create a mail session
Session ssn = Session.getInstance(props, null);
ssn.setDebug(true);
//...
//query db for some information, that will be appended to email
//...
// set the from information
InternetAddress from = new InternetAddress(fromEmail, fromName);
// set the to information
InternetAddress to = new InternetAddress(host_email_address, toName);
// Create the message
Message msg = new MimeMessage(ssn);
msg.setFrom(from);
msg.addRecipient(Message.RecipientType.TO, to);
msg.addHeader("X-Priority", "1");
msg.setSubject(Subject);
msg.setContent(HtmlMessage, "text/html");
String protocol = "smtp";
t = ssn.getTransport(protocol);
t.connect(SMTP,username,password);
t.sendMessage(msg, msg.getAllRecipients());
res.sendRedirect(res.encodeRedirectURL("MyAccount.jsp?message=Email%20successfully%20sent."));
return;
}//try
catch (MessagingException mex) {
mex.printStackTrace();
}
catch(Exception e) {}
finally {
try {
t.close();
}
catch(Exception e) {}
}//finally