0

我用 QuickFixJ 开发了一些东西,但遇到了一个奇怪的情况。我们有一个存根来模拟修复接受器,在我的环境中本地工作我可以发送/接收我们使用自定义消息类型的消息 quickfixj jar 基于新字典、新消息类型重新生成...

来自我的环境的示例消息。FIX 发起者和 FIX_STUB(acceptor) 之间的通信:

 16:49:58.475 [http-8080-4] INFO  quickfixj.msg.outgoing - FIXT.1.1:FIX->FIX_STUB: 8=FIXT.1.1|9=267|35=RQS|34=3|49=FIX|52=20160628-13:49:58.474|56=FIX_STUB|20000=1|20001={json string}|20002=1.0|10=171|
 <20160628-13:49:58, FIXT.1.1:FIX_STUB->FIX, incoming> (8=FIXT.1.1|9=267|35=RQS|34=3|49=FIX|52=20160628-13:49:58.474|56=FIX_STUB|20000=1|20001={json string}|20002=1.0|10=171|)
 16:49:58.476 [QFJ Message Processor] INFO  c.r.fix.api.stub.FixApplication - FIX STUB MESSAGE TYPE:quickfix.fix50sp2.Request
<20160628-13:49:58, FIXT.1.1:FIX_STUB->FIX, outgoing> (8=FIXT.1.1|9=308|35=RSP|34=3|49=FIX_STUB|52=20160628-13:49:58.527|56=FIX|20000=1|20001={json string}||20002=1.0|10=240|)
16:49:58.528 [NioProcessor-2] INFO  quickfixj.msg.incoming - FIXT.1.1:FIX->FIX_STUB: 8=FIXT.1.1|9=308|35=RSP|34=3|49=FIX_STUB|52=20160628-13:49:58.527|56=FIX|20000=1|20001={json string}||20002=1.0|10=240|
16:49:58.529 [QFJ Message Processor] INFO  c....fix.engine.FixEngineImpl - FIX MESSAGE TYPE:quickfix.fix50sp2.Response

Tomcat上运行正常,但是当我们尝试在测试环境中使用完全相同的代码并部署到Websphere服务器时,我收到此错误:

2016-06-28 11:17:44,196 appl="rtv" env="SYS" version="3.8.12" loglevel="INFO " message="FIXT.1.1:FIX->FIX_STUB: 8=FIXT.1.19=26735=RQS34=249=FIX52=20160628-09:17:44.19656=FIX_STUB20000=120001={json string}20002=1.010=147" thread="WebContainer : 1" logger="quickfixj.msg.outgoing"
    2016-06-28 11:17:44,198 appl="rtv" env="SYS" version="3.8.12" loglevel="INFO " message="FIX STUB MESSAGE TYPE:quickfix.fix50sp2.Message" thread="QFJ Message Processor" logger="c.r.fix.api.stub.FixApplication"
    2016-06-28 11:17:44,202 appl="rtv" env="SYS" version="3.8.12" loglevel="ERROR" message="FIX STUB MESSAGE CRACK FAILED" thread="QFJ Message Processor" logger="c.r.fix.api.stub.FixApplication"
    quickfix.UnsupportedMessageType: null
            at quickfix.fix50sp2.MessageCracker.onMessage(MessageCracker.java:39) ~[quickfixj-messages-all-1.6.2.jar:1.6.2]
            at quickfix.fix50sp2.MessageCracker.crack50(MessageCracker.java:1787) ~[quickfixj-messages-all-1.6.2.jar:1.6.2]
            at quickfix.fix50sp2.MessageCracker.crack(MessageCracker.java:1555) ~[quickfixj-messages-all-1.6.2.jar:1.6.2]
            at com....fix.api.stub.FixApplication.fromApp(FixApplication.java:97) ~[rita-web-3.8.jar:na] 

正如您在示例中看到的类型(消息子类)它被正确处理(quickfix.fix50sp2.Requestquickfix.fix50sp2.Response)但在 Websphere 上不是(quickfix.fix50sp2.Message)。使用 MessageCracker。

你能帮我解决这个问题,找出为什么会发生这种情况与操作系统、Web 服务器或某些 FIX 配置有关吗?

4

1 回答 1

0

我解决了这个问题......它与类加载器和重复类有关。我获取 jar 文件的方式还包含 Tomcat 上的默认消息(maven 依赖项......),应用程序选择正确的类,而 WebSphere 采用默认类,这就是应用程序 MessageCracker 没有正确处理消息的原因。

于 2016-07-07T12:37:20.373 回答