response.setCharacterEncoding("GBK");
os = response.getOutputStream();
os.write((getHeaderStr()+getBodyStrAll(doc)+getTailStr()).getBytes("GBK"));
依稀想起AAS的web.xml文件中,有默认支持的MIME type列表配置信息,也许是默认支持的列表中不存在application/x-msdownload这种类型,而AAS对此又有一些严格的验证处理机制(虽然MIME type主要是告诉浏览器需要使用哪种程序来打开指定扩展名的文件),最终导致在解析此Content Type时,无法找到匹配资源,从而抛出异常。
找到%AAS_DOMAIN_HOME%\config\web.xml文件,搜索文件中指定的默认MIME列表,发现其中确实没有application/x-msdownload这种类型,于是在此文件中加入相应的内容,重启AAS,OK!一切正常!
总结 www.2cto.com
AAS对于运行于其中的应用有非常严格的验证机制,比如:曾经碰到一个在配置文件中设置了某个class,但是实际上应用中此class却不存在的情况,AAS会在启动时抛出相应的class不存在的错误提示,当然,这样严格的验证机制,最终目的是为了防止由于不必要的笔误等原因造成的内存泄漏等其他错误。虽然有的伙伴不承认,但是tomcat在这方面做的确实非常欠缺。
AAS默认的MIME type是可以根据实际需要进行扩展的。
必要的时候,查看应用的源码,对于解决问题是非常必要的。
摘自 宁静深远的专栏