Linux
informix rest api 無法啟動
我目前正在嘗試按照此處指定的方式配置 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 偵聽器支持的版本。