Java 线程阻塞问题?
我继承了一个为ATM交换机编写的重写Java项目。我已经在这个项目上工作了3.5个月,试图用Discover Card测试认证应用程序。我对并发性(线程和接收队列)不太熟悉,但我认为我遇到了阻塞问题,无法找到解决问题的方法 下面是发生的情况:Java 线程阻塞问题?,java,multithreading,iso8583,Java,Multithreading,Iso8583,我继承了一个为ATM交换机编写的重写Java项目。我已经在这个项目上工作了3.5个月,试图用Discover Card测试认证应用程序。我对并发性(线程和接收队列)不太熟悉,但我认为我遇到了阻塞问题,无法找到解决问题的方法 下面是发生的情况: 我在开发服务器(Windows 2003)上启动应用程序 我通过Discover网站上名为RCT的WEB应用程序向我的应用程序提交了一条用于动态密钥交换的ISO8583消息(0800),该消息处理得很好。消息停止,接收队列器pereclipse调试器和我的
Thread [DiscoverChannelThread ] (Suspended)
waiting for: Socket (id=82)
Object.wait(long) line: not available [native method]
Socket(Object).wait() line: 485
DiscoverChannel(SwitchChannel).run() line: 1931
Thread.run() line: 662
Thread [DiscoverChannel-ReceiveQueuer-1] (Suspended)
waiting for: DataInputStream (id=36)
DiscoverChannel(SwitchChannel).blockUntilGetMessageBytes(Request, ProcessingTimer) line: 672
DiscoverChannel(SwitchChannel).blockUntilReceiveMessage(ProcessingTimer) line: 1330
ReceiveQueuer.run() line: 96
Thread.run() line: 662
Thread [DiscoverChannel-ReceiveQueuer-0] (Suspended)
owns: BufferedInputStream (id=60)
owns: DataInputStream (id=36)
SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int) line: not available [native method]
SocketInputStream.read(byte[], int, int) line: 129
BufferedInputStream.fill() line: 218 [local variables unavailable]
BufferedInputStream.read1(byte[], int, int) line: 258
BufferedInputStream.read(byte[], int, int) line: 317
DataInputStream.readFully(byte[], int, int) line: 178
DiscoverChannel(SwitchChannel).blockUntilGetMessageLength() line: 801
DiscoverChannel(SwitchChannel).blockUntilGetMessageBytes(Request, ProcessingTimer) line: 673
DiscoverChannel(SwitchChannel).blockUntilReceiveMessage(ProcessingTimer) line: 1330
ReceiveQueuer.run() line: 96
Thread.run() line: 662 [local variables unavailable]
如果您对如何调试此类问题有任何建议/指导,我们将不胜感激。该公司以前的开发人员不再可以询问。我已经处理这个具体问题两周了,找不到解决方案,真的需要一些帮助/指导 在这里很难遵循您的体系结构,但一般来说,Java web应用程序不应该生成线程或直接使用多线程独立应用程序。我建议重构web应用程序,使所有的信用卡处理都在Java servlet中完成,而不是让它们在一个独立的应用程序中来回运行。谢谢你的回复。实际上,这不是一个web应用程序,而是一个独立的应用程序,只在Windows 2003机箱的后台运行。当我说我正在通过Discover web应用程序执行ISO8583消息时,我想我可能混淆了这个问题。我们需要利用他们的web应用在上进行认证,web应用通过一个定义的端口直接连接到我们的DEV box,并将信息传递给我们的独立应用。希望这能澄清问题。我理解很难理解架构。我自己也在试图理解这一点。谢谢。我编辑了我的原始邮件,该邮件被搁置,如下所示。如何修改我的邮件?谢谢