2016-10-25 58 views
1

我正在運行嵌入的OrientDb。我們使用Spring/Spring Data,並且我們有通過Maven的Surefire插件運行的JUnit測試。運行嵌入式服務器時OrientDb端口範圍的目的是什麼?

嵌入式數據庫在每次測試之前就開始了。如果可能的話,我想以某種方式改變它,以便在每個Maven模塊執行時加載一次。

我有以下幾點:

OServerNetworkListenerConfiguration binaryListener = new OServerNetworkListenerConfiguration(); 
binaryListener.ipAddress = "0.0.0.0"; 
binaryListener.portRange = "2424-2430"; 
binaryListener.protocol = "binary"; 
binaryListener.socket = "default"; 

顯然,由於測試的量,6個端口是不夠的,我得到這個神祕的錯誤:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project bar-api: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test failed: The forked VM terminated without properly saying goodbye. VM crash or System.exit called? 
[ERROR] Command was /bin/sh -c cd /java/foo/bar/bar-api && /java/jdk1.8.0_65/jre/bin/java -Xmx1024m -Xms512m -jar /java/foo/bar/bar-api/target/surefire/surefirebooter3262843936755308263.jar /java/foo/bar/bar-api/target/surefire/surefire2085279380429297504tmp /java/foo/bar/bar-api/target/surefire/surefire_53552629494142788284tmp 

沒有System.exit()在任何地方我代碼,但Maven Surefire插件退出構建。

我的問題是:爲什麼需要這麼多的端口?難道它只是使用一個?我錯過了什麼以及如何解決它? (就目前而言,我只是增加了端口數量,作爲臨時解決方法,但我真的想更好地理解問題並將其妥善分類)。

回答

2

當服務器實例啓動時,它會嘗試將偵聽器綁定到該範圍中的第一個未使用的端口。所以你不能爲兩個不同的服務器實例使用相同的端口。

+0

是的,但是當測試完成後,我會假設數據庫已關閉,對不對?它如何用完端口? – carlspring

相關問題