java-在tomcat中已部署2个应用程序时出现邮件问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-在tomcat中已部署2个应用程序时出现邮件问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2482字,纯文字阅读大概需要4分钟。
内容图文
![java-在tomcat中已部署2个应用程序时出现邮件问题](/upload/InfoBanner/zyjiaocheng/675/4e8382aeb3994a478acd1d9dc7c7ff7d.jpg)
之前,我已经在Tomcat 6.0.24上部署了1个应用程序,并且运行良好.现在,我已经部署了AXIS Web服务,并且在发送邮件时第一个应用程序给出了错误消息.我正在使用Java6并通过mail-1.4.2.jar进行邮寄.
Error message:
javax.mail.MessagingException: IOException while sending message;
nested exception is:
javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed;
boundary="----=_Part_8_85998487.1343293259308"
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:779)
at javax.mail.Transport.send0(Transport.java:191)
at javax.mail.Transport.send(Transport.java:120)
另外,如果我从部署中删除该Web服务并尝试运行该应用程序,则它可以正常工作.另外,我也能收到邮件.此外,我想补充一点的是,如果我将Webservie部署在不同的tomcat上,则应用程序运行良好.仅当两者同时在同一台服务器上时,才出现问题.
解决方法:
这么晚才回复很抱歉.我能够找到问题背后的原因.
在Web服务中,我正在使用jaxws-rt-2.1.3.jar,其中有一个名为com.sun.xml.ws.encoding.MimeCodec的类.在MimeCodec中,有一个静态块.
static {
// DataHandler.writeTo() may search for DCH. So adding some default ones.
try {
CommandMap map = CommandMap.getDefaultCommandMap();
if (map instanceof MailcapCommandMap) {
MailcapCommandMap mailMap = (MailcapCommandMap) map;
String hndlrStr = ";;x-java-content-handler=";
mailMap.addMailcap(
"text/xml" + hndlrStr + XmlDataContentHandler.class.getName());
mailMap.addMailcap(
"application/xml" + hndlrStr + XmlDataContentHandler.class.getName());
mailMap.addMailcap(
"image/*" + hndlrStr + ImageDataContentHandler.class.getName());
mailMap.addMailcap(
"text/plain" + hndlrStr + StringDataContentHandler.class.getName());
}
} catch (Throwable t) {
// ignore the exception.
}
}
上面的静态块为DCH提供了一些默认的MIME类型,并且它是在WS启动时执行的.现在,在发送邮件之前,代码使用javax.activation,CommandMap(rt.jar / activation.jar)搜索MIME类型.在这种情况下,预期的mime类型加载已被覆盖.仅当MIME类型为以上4种之一时,该邮件才有效.
因此,每次发送邮件之前,我都使用以下代码将CommandMAp重置为预期的功能,并且邮件功能已开始正常运行而没有任何问题.
CommandMap.setDefaultCommandMap(new MailcapCommandMap());
另外,当我检查了较旧版本的jaxws-rt.jar(2.1.1)时,那里不存在静态块,但是其他某些类提供了相同的功能(对不起,我现在不记得这个名字了).
另外,在调试时,我注意到在javax.activation.MailcapCommandMap中,MIME类型是从以下位置加载的
System.getProperty("user.home") + File.separator + ".mailcap";
和
System.getProperty("java.home") + File.separator + "lib" + File.separator + "mailcap";
因此,如果我们在上述位置提供MIME类型,那么邮件也应该可以工作(我尚未对此进行测试).
内容总结
以上是互联网集市为您收集整理的java-在tomcat中已部署2个应用程序时出现邮件问题全部内容,希望文章能够帮你解决java-在tomcat中已部署2个应用程序时出现邮件问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。