程序 quartz 定时执行 FTP 上传功能,当使用 storeFile 函数上传文件时 会出现线程被僵死的问题。 17:14:14,324 DEBUG FileGatherer:537 - 150 Opening ASCII mode data connection for temp123334_log.temp. debug 信息 到这一步就程序就等在这里,不往下执行,线程就卡在这里。并没有抛异常。 这是 thread dump (大伙帮忙看看 这种情况有的时候几甚至正常运行十几天不出现,有的时候半天就出现了,希望有那位兄台给点意见,或者其他的解决方法也行,比如quartz 可以设置线程超时一样的东东。) 
"DefaultQuartzScheduler_Worker-5" prio=1 tid=0x082ce7a0 nid=0x1214 runnable [0xaac0e000..0xaac0f228] 
at java.net.PlainSocketImpl.socketAccept(Native Method) 
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353) 
- locked <0xac490e90> (a java.net.PlainSocketImpl) 
at java.net.ServerSocket.implAccept(ServerSocket.java:448) 
at java.net.ServerSocket.accept(ServerSocket.java:419) 
at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:502) 
at org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:388) 
at org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:1388) 
at com.onewaveinc.core.common.gather.FileGatherer.uploadTmpAndRename(FileGatherer.java:222) 
at com.onewaveinc.collection.client.CollectionClientJob.collectToFtpServer(CollectionClientJob.java:373) 
at com.onewaveinc.collection.client.CollectionClientJob.execute(CollectionClientJob.java:330) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:324) 
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:248) 
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:165) 
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:90) 
at org.quartz.core.JobRunShell.run(JobRunShell.java:195) 
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520) ----- 这里显示有个锁 , 那个兄台能解释下这个锁是怎么加上去的,为什么没有释放 
- locked <0xac490e90> (a java.net.PlainSocketImpl) 

解决方案 »

  1.   

    靠,和我上次一样,不过我是在linux下,用root登陆后就好了,
    你的问题就不清楚了
      

  2.   

    我的也是跑在 linux 下。 头晕~~~~
      

  3.   

    碰到同样问题,难道是apache的FTPClient本身就有问题?
      

  4.   

    我也碰到一个奇怪的问题,同样的代码在Wind下是好用的,但是拿到linux下(相关的参数都已经改了)就不好用了,报copystream()这个方法的outpustream 是null。
    很是郁闷~~有同样经历的同仁加以指点~~
    3Q~~~
      

  5.   

    我commons-net ftp遇到一个问题是文件上传到服务器上去了,但每个文件的数据变少了,每个文件的的结尾少传了一部分字节,哪位知道是怎么回事呀?