2016-06-28 126 views
0

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

消息示例从我的env。 FIX的发起者和FIX_STUB(受体)之间的通信:在Tomcat的

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 

工作,但是当我们尝试使用完全相同的代码在测试环境,并部署到的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。

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

回答

0

我解决了这个问题......它与类加载器和重复类有关。我得到jar文件的方式也包含Tomcat的默认消息(maven dependencies ...),当WebSphere采用默认的类时,应用程序会选择正确的类,这就是为什么应用程序MessageCracker没有正确处理消息。