我继承了为ATM交换机编写的重写Java项目。我一直在为这个项目工作3.5个月,并试图用Discover卡测试应用程序的认证。我并不熟悉并发(线程和接收队列),但我认为我遇到了阻塞问题,无法找到解决问题的方法。线程阻塞问题?
这里是什么发生的场景:
- 我开始我们的开发服务器(Windows 2003)上的应用程序。
- 我通过Discover网站上名为RCT的WEB应用程序向我的应用程序提交ISO8583消息(0800),以便消息处理正常。消息停止并且每个Eclipse调试器都接收到队列,我的日志说它正在等待另一条消息。
- 钥匙放在Discover web应用程序的内存中。
- 我向我的应用程序提交下一个ISO8583消息(0200),但是我从来没有看到随后的ISO8583消息甚至打我们的应用程序。
- 我可以看到使用Wireshark进行确认的特定端口上的后续消息,但它永远不会进入应用程序入口点。我在后面的消息点击应用程序的位置放了一个断点,但我从未到达断点。在Eclipse调试会话中,我看到正在运行的DiscoverChannel线程以及正在运行的2个接收队列线程。他们似乎是开放的,并且已经准备好接受消息,但它再也没有到达应用程序。
在我复制的线程,如果问题的STACK与得到在正在等待被阻止由DiscoverChannel-ReceiveQueuer-0 THREAD DiscoverChannel-ReceiveQueuer-1 THREAD的后续请求Eclipse调试窗口?这就是我正在阅读的内容,但希望得到一些确认或错误的,如何找到我的问题。
这里是堆栈:
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]
上如何调试这种类型的问题的任何建议/方向,将不胜感激。这家公司的以前的开发人员不再提问。我一直在处理这个具体的问题2周,找不到解决方案,真的可以使用一些帮助/方向。
我编辑了我的原始邮件,如下所示将其暂时搁置。我的信息如何被修改?谢谢 – Melinda