iskyshop 2009-12-04 18:36
浏览 320
已采纳

Tomcat服务器连接数超过3个不能上传图片

[color=red]系统基本结构[/color]:Spring+Ext+JPA
[color=red]运行环境[/color]:Tomcat5.5+MySql5.0
[color=red]出现问题[/color]:
连接数在3个及其3个以下的时候,上传图片(给图片的上传路径保存到数据库),保存文字信息到数据库都没有任何问题,超过3个链接的时候,测试用的是4个,第4个连接的电脑就只能保存文字信息而不能上传图片了,这个是什么原因,百思不得其解~盼得到解决方案!
[color=red]附加说明[/color]:当连接数为3及其小于3的时候,同时上传图片没有问题,当第4个链接开启的时候,其他链接不上传图片第4个也不能上传图片,只能 保存文字信息!
[b]问题补充:[/b]
错误提示为:
2009-12-01 10:47:23,750 DEBUG [org.springframework.web.multipart.commons.CommonsMultipartResolver] - Cleaning up multipart file [Filedata] with original filename [Capture_00005.JPG], stored at [E:\Tomcat 5.5\work\Catalina\localhost_\upload__71d49228_12547b0be26__8000_00001737.tmp]
2009-12-01 10:47:24,296 DEBUG [org.springframework.web.servlet.DispatcherServlet] - Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@a8217b
2009-12-01 10:47:24,296 DEBUG [org.springframework.web.servlet.DispatcherServlet] - Could not complete request
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.OutOfMemoryError: Java heap space
Caused by:
java.lang.OutOfMemoryError: Java heap space
[b]问题补充:[/b]
上传文件代码:
[code="java"]MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest
.getFile(filePath);
Map map = new HashMap();
if(!file.isEmpty()){
System.out.println("文件名为:" + file.getOriginalFilename());
String extend = file.getOriginalFilename().substring(
file.getOriginalFilename().lastIndexOf(".") + 1).toLowerCase();
String fileName = "";
float fileSize = file.getSize();// 返回文件大小,单位为k
List errors = new java.util.ArrayList();
boolean flag = false;
for (String s : extendes) {
if (extend.toLowerCase().equals(s))
flag = true;
}
if (flag) {
System.out.println("开始上传...");
File path = new File(saveFilePathName);
if (!path.exists()) {
path.mkdir();
}
;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
DataOutputStream out = new DataOutputStream(new FileOutputStream(
saveFilePathName + File.separator + saveFileName + "."
+ extend));
InputStream is = null;
try {
is = file.getInputStream();
byte[] buffer = new byte[1024];
while (is.read(buffer) > 0) {
out.write(buffer);
}
} catch (IOException exception) {
exception.printStackTrace();
} finally {
if (is != null) {
is.close();
}
if (out != null) {
out.close();
}
}
fileName = saveFileName + "." + extend;
System.out.println("上传结束,生成的文件名为:" + fileName);
} else {
System.out.println("不允许的扩展名");
errors.add("不允许的扩展名");
}
// 生成缩略图
// 下面开始根据长宽生成小图
if (small && isImg(extend)) {
createSmall(saveFilePathName + File.separator + saveFileName + "."
+ extend, saveFilePathName + File.separator + saveFileName
+ "_small" + "." + extend);
map.put("smallFileName", saveFilePathName + File.separator
+ saveFileName + "_small" + "." + extend);
}
// 给图片添加水印
if (wMark && isImg(extend)) {
if (!createMark(saveFilePathName + File.separator + saveFileName
+ "." + extend, markText, Color.RED, 10f)) {
errors.add("水印失败");
}
}
File img=new File(saveFilePathName + File.separator +fileName);
BufferedImage bis = ImageIO.read(img);
int w = bis.getWidth();
int h = bis.getHeight();
map.put("width", w);
map.put("height", h);
map.put("mime", extend);
map.put("fileName", fileName);
map.put("fileSize", fileSize);
map.put("error", errors);
map.put("oldName",file.getFileItem().getName());
}else {
map.put("width", 0);
map.put("height", 0);
map.put("mime", "");
map.put("fileName", "");
map.put("fileSize", 0);
map.put("oldName","");
}
return map;[/code]
[b]问题补充:[/b]
我这里上传后仅仅
[code="java"]out.close(); [/code]
没有
[code="java"]out.flush();
out.close(); [/code]
这里会不会有问题出现呢?
再有就是我调整了tomcat的Xms Xmx,现在不出现同时上传冲突的问题了,用户上传图片的是使用flash的多文件选择,同时上传很多图片,而且每张图片都是3M左右,这样会不会影响系统呢?

  • 写回答

3条回答 默认 最新

  • iteye_8658 2009-12-06 13:28
    关注

    OOM, 一般就是内存在使用完,没有正确释放。你检查一下代码。也可以先做一个试难,把内存调大点,看看是不是能支持更多的连接。一般都应该是代码有问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型