Linux

informix rest api 無法啟動

  • September 17, 2018

我目前正在嘗試按照此處指定的方式配置 informix REST API 。

總的來說,我遇到了兩條錯誤消息:

  • 指定的休息類型不受支持
  • 操作碼無效:檢查消息格式

任何人都可以幫助我理解以下錯誤消息,或將我指向網站或文件以進行進一步研究嗎?任何幫助是極大的讚賞。

目前的進展

我已經配置了 INFORMIXDIR/etc/jsonListener.properties

#wire listener port
listener.port=27017

#wire listener type
listener.type=rest

#connection string for the wire listener
url=jdbc:informix-sqli://localhost:9088/sysmaster:INFORMIXSERVER=<servername>;USER=<username>;PASSWORD=<password>

#anybody can connect
listener.hostName=*

有人告訴我,使用腳本啟動服務後,不支持有線偵聽器的類型。

2018-05-03 17:19:59 [main] ERROR com.ibm.nosql.informix.server.JsonListenerCLI - NOSQL_LISTENER_TERMINATED_UNEXPECTED
java.lang.Exception : java.lang.RuntimeException: Unsupported listener type of rest specified
at com.ibm.nosql.informix.server.JsonListenerCLI.start(JsonListenerCLI.java:116)
at com.ibm.nosql.informix.server.JsonListenerCLI.run(JsonListenerCLI.java:76)
at com.ibm.nosql.informix.server.JsonListenerCLI.main(JsonListenerCLI.java:34)
Caused by: java.lang.RuntimeException : Unsupported listener type of rest specified
at com.ibm.nosql.informix.server.JsonListenerCLI.start(JsonListenerCLI.java:108)
at com.ibm.nosql.informix.server.JsonListenerCLI.run(JsonListenerCLI.java:76)
at com.ibm.nosql.informix.server.JsonListenerCLI.main(JsonListenerCLI.java:34)

這確實讓我覺得很奇怪,因為它清楚地表明rest該屬性是一個有效值listener.type(如這裡所示)。

如果我刪除該listerner.type=rest屬性,將mongo使用預設值 ( ),我可以啟動有線偵聽器。

如果我現在嘗試 curl url http://localhost:27017/,我會收到來自伺服器的空回复。我的日誌文件中相應的錯誤消息如下:

2018-05-03 18:19:19 [JsonListener-1-thread-1] ERROR com.ibm.nosql.informix.server.LwfMessageHandler - NOSQL_GENERIC_EXCEPTION
Error processing message;
java.lang.RuntimeException : OP Code is not valid: Check Message format
at com.ibm.nosql.informix.internal.request.MessageHeader.<init>(MessageHeader.java:119)
at com.ibm.nosql.informix.server.LwfMessageHandler.handleMessage(LwfMessageHandler.java:283)
at com.ibm.nosql.informix.server.LwfMessageHandler.run(LwfMessageHandler.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:736)

啟動有線監聽器的 bash 腳本:

#!/bin/sh

${INFORMIXDIR}/extend/krakatoa/jre/bin/java -jar ${INFORMIXDIR}/bin/jsonListener.jar -config ${INFORMIXDIR}/etc/jsonListener.properties -logfile ${INFORMIXDIR}/jsonListener.log -start & sleep 2
exit

抱歉延遲回答。

如果您嘗試將 REST 客戶端連接到 Mongo 有線偵聽器,則會發生“操作程式碼無效:檢查消息格式”。

您需要使用listener.type=rest偵聽器屬性文件中的設置來啟動偵聽器。

至於上面的同一個問題,顯然使用的是舊版本的監聽器。

偵聽器給出了一條非常明確的錯誤消息,指出不支持 REST 偵聽器類型。REST 偵聽器是在 12.10.xC4 中引入的。但是根據異常堆棧中 JsonListenerCLI 類的存在,我可以確定安裝正在使用來自 12.10.xC2 或 xC3 的偵聽器。JsonListenerCLI 類在 12.10.xC4 中重命名為 ListenerCLI,這也是第一個包含 REST 偵聽器支持的版本。

引用自:https://dba.stackexchange.com/questions/205718