java - 应该使用哪个 SqlDriver 来记录 SQL Server 数据库中的 FIX session 和消息?

标签 java sql-server quickfix

我有一个java应用程序,我需要在SQL Server数据库中存储日志数据,例如 session 、消息和事件日志。我引用 SQLjdbc4.jar 使用 com.microsoft.sqlserver.jdbc.SQLServerDriver 进行数据库连接。除此之外,我还使用了所有支持 jar(例如 proxool.jar、com.springsource.org.逻辑cobwebs.cglib.core-0.9.1.jar)。 我仍然无法连接并将数据记录到数据库中。 他们使用的代码或 jar 中是否有任何错误?

异常如下:

INFO: [FIX.4.4:FIXCLIENT->FIXSERVER] daily, 00:00:00-UTC - 00:00:00-UTC
INFO  FXClient - Error in login : error during session initialization
quickfix.ConfigError: error during session initialization
	at quickfix.mina.initiator.AbstractSocketInitiator.createSessions

(AbstractSocketInitiator.java:169)
	at quickfix.mina.initiator.AbstractSocketInitiator.createSessionInitiators

(AbstractSocketInitiator.java:84)
	at quickfix.SocketInitiator.initialize(SocketInitiator.java:86)
	at quickfix.SocketInitiator.start(SocketInitiator.java:64)
	at client.FXClient.login(FXClient.java:137)
	at client.FXClient.startClient(FXClient.java:76)
	at client.FXClient.main(FXClient.java:59)
Caused by: quickfix.RuntimeError: com.microsoft.sqlserver.jdbc.SQLServerException: The connection to 

the host ABC, named instance XYZ_2008 has failed. Error: "java.net.SocketTimeoutException: 

Receive timed out". Verify the server and instance names, check that no firewall is blocking UDP 

traffic to port 1434, and for SQL Server 2005 or later verify that the SQL Server Browser Service is 

running on the host.

正常的数据库连接在同一 SQl 服务器上运行良好。

最佳答案

此问题与quickFixJ JDBC 日志记录有关。 我已经使用 SQl 数据源解决了这个问题。 我已将 SQL 数据源对象设置为 JDBCStoreFactory 和 JDBCLogFactory 数据源。 QuickFIXJ 提供所有必要的实用程序。 请在下面找到相同的代码片段。

 JdbcStoreFactory objJSF = new JdbcStoreFactory(settings);
            JdbcLogFactory objJLF = new JdbcLogFactory(settings);
            SQLServerDataSource ds = new SQLServerDataSource();
            ds.setServerName(<SERVER_NAME);
            ds.setDatabaseName(<quickfix_database_name>);
            ds.setInstanceName(<INSTANCE_NAME>);               
          ds.setIntegratedSecurity(AUTHMODE.toUpperCase().contains("WINDOW") ? true : false);
            objJSF.setDataSource(ds);
            objJLF.setDataSource(ds);
            storeFactory = objJSF;
            logFactory = objJLF;
        MessageFactory messageFactory = new MessageFactory();
        initiator = new SocketInitiator(application, storeFactory, settings, logFactory, messageFactory);

关于java - 应该使用哪个 SqlDriver 来记录 SQL Server 数据库中的 FIX session 和消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29101430/

相关文章:

java - WordNet(JWI 麻省理工学院): Antonyms of a word?

java - 如何终止 View 作用域 bean 中的线程?

mysql - 将 MySQL 查询转换为 SQL Server (MSSQL/SQLSRV)(使用 DISTINCT)

java - 重复组 QuickFix 的 NumInGroup 计数不正确

c++ - quickfix sendToTarget 和持久性

java - 如何在另一个应用程序模块中使用项目源代码

java - Java中如何解决“线程“main”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:5”的问题

sql-server - 对输出子句 sql 进行过滤

mysql - 根据先进先出定价计算利润

c++ - 在 CLion 中导入非 cmake GitHub 项目