Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java quickfix/j SessionSettings仅从文件配置加载最后一个会话_Java_Quickfix_Fix Protocol_Quickfixj - Fatal编程技术网

Java quickfix/j SessionSettings仅从文件配置加载最后一个会话

Java quickfix/j SessionSettings仅从文件配置加载最后一个会话,java,quickfix,fix-protocol,quickfixj,Java,Quickfix,Fix Protocol,Quickfixj,当我尝试使用配置文件的URL调用SessionSettings的构造函数时,它只加载文件中存在的最后一个会话 我已尝试打印我的代码从配置文件中读取的内容,但得到以下结果: [DEFAULT] StartTime=00:00:00 EndTime=23:59:59 ReconnectInterval=5 TargetCompID=Server SenderCompID=Client DataDictionary=C:\config\FIX42.xml HeartBtInt=30 FileStore

当我尝试使用配置文件的URL调用SessionSettings的构造函数时,它只加载文件中存在的最后一个会话

我已尝试打印我的代码从配置文件中读取的内容,但得到以下结果:

[DEFAULT]
StartTime=00:00:00
EndTime=23:59:59
ReconnectInterval=5
TargetCompID=Server
SenderCompID=Client
DataDictionary=C:\config\FIX42.xml
HeartBtInt=30
FileStorePath=C:\logsBadisInitiatorStore
UseDataDictionary=Y
FileLogPath=C:\logsBadisInitiator
[SESSION]
StartTime=00:00:00
ConnectionType=acceptor
EndTime=23:59:59
BeginString=FIX.4.2
SocketAcceptPort=9878
TargetCompID=server1
SessionName=badisAcc289
SenderCompID=client1
SocketAcceptAddress=localhost
UseDataDictionary=N
但我的配置文件包含的内容不止这些:

[default]
FileStorePath=data
SenderCompID=Client
TargetCompID=Server
FileLogPath=C:\logsBadisInitiator
StartTime=00:00:00 
EndTime=23:59:59
HeartBtInt=30
ReconnectInterval=5
UseDataDictionary=Y
DataDictionary=C:\config\FIX42.xml
FileStorePath=C:\logsBadisInitiatorStore

[session] 
SessionName=badisAcc2
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=acceptor
SocketAcceptPort=9878
SocketAcceptAddress=localhost
StartTime=00:00:00
EndTime=23:59:59
UseDataDictionary=N

[session] 
SessionName=test211
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=initiator
SocketConnectPort=9878
SocketConnectHost=localhost
StartTime=00:00:00
EndTime=23:59:59
UseDataDictionary=N

[session] 
SessionName=badisAcc3
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=acceptor
SocketAcceptPort=9878
SocketAcceptAddress=localhost
StartTime=00:00:00
EndTime=23:59:59
UseDataDictionary=N

[session] 
SessionName=badisAcc4
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=acceptor
SocketAcceptPort=9878
SocketAcceptAddress=localhost
StartTime=00:00:00
EndTime=23:59:59
UseDataDictionary=N

[session] 
SessionName=badisAcc289
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=acceptor
SocketAcceptPort=9878
SocketAcceptAddress=localhost
StartTime=00:00:00
EndTime=23:59:59
UseDataDictionary=N
这是我为加载会话设置而编写的代码:

String URLConfigFile="c:/config/initiatorSettings.txt";

sessionSettings = new SessionSettings(URLConfigFile);

System.out.println("sessionSettings tostring "+sessionSettings.toString());

如何解决此问题?

根本原因 一个会话的配置正在与另一个会话冲突,因为两个会话都有相同的SessionID

您的两个会话都有相同的SessionID,它由BeginString/SenderCompID/TargetCompID(有时还有其他字段)构造

SessionSetting实际上是每个会话的单个字典的散列,由SessionID键入。由于您的会话具有相同的SessionID,因此它们相互碰撞

您的配置也存在逻辑问题

如果您希望这两个会话彼此对话,则发送方/目标值应相反,例如

[session] 
SessionName=badisAcc2
BeginString=FIX.4.2
SenderCompID=server1
TargetCompID=client1
ConnectionType=acceptor
...

[session] 
SessionName=test211
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=initiator
...

根本原因 一个会话的配置正在与另一个会话冲突,因为两个会话都有相同的SessionID

您的两个会话都有相同的SessionID,它由BeginString/SenderCompID/TargetCompID(有时还有其他字段)构造

SessionSetting实际上是每个会话的单个字典的散列,由SessionID键入。由于您的会话具有相同的SessionID,因此它们相互碰撞

您的配置也存在逻辑问题

如果您希望这两个会话彼此对话,则发送方/目标值应相反,例如

[session] 
SessionName=badisAcc2
BeginString=FIX.4.2
SenderCompID=server1
TargetCompID=client1
ConnectionType=acceptor
...

[session] 
SessionName=test211
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=initiator
...

为什么在名为“initiatorSettings.txt”的文件中定义了一个接受程序?(为什么是“txt”而不是“cfg”?)是的,我会解决这个问题,谢谢。为什么在名为“initiatorSettings.txt”的文件中定义了一个接受程序?(为什么是“txt”而不是“cfg”?)是的,我会修正所有会话都应该有唯一的BeginString/SenderCompID/TargetCompID元组。所有会话都应该有唯一的BeginString/SenderCompID/TargetCompID元组。