2016-05-16 105 views
1

我對HTTPS很陌生,我試圖從OSGi包內託管一個Jetty HTTPS服務器。當我在運行配置中將下面的屬性作爲虛擬機參數傳遞時,一切正常,但由於這不是我的選擇,我使用System.setProperties()方法在Activator的啓動方法內提供參數。在OSGi內託管HTTPS服務器

System.setProperty("org.eclipse.equinox.http.jetty.https.port", "9090");   
System.setProperty("org.eclipse.equinox.http.jetty.https.enabled", "true"); 
System.setProperty("org.eclipse.equinox.http.jetty.https.host", "0.0.0.0"); 
System.setProperty("org.eclipse.equinox.http.jetty.ssl.keystore", "/home/https/keystore.jks"); 
System.setProperty("org.eclipse.equinox.http.jetty.ssl.password", "password"); 

使用這種方法,在端口9090的HTTPS服務器工作正常,但有兩個問題,

  1. 相同的網頁也擔任了80端口的HTTP,我不想要的。它的存在,甚至當我使用:

    System.setProperty("org.eclipse.equinox.http.jetty.http.enabled","false"); 
    
  2. 由於不需要HTTP網頁大幹快上80端口(系統端口)舉辦,我不得不調用束爲根,否則我得到java.net.SocketException異常:權限被拒絕

因爲有可能是託管在80端口的其他頁面,我不想完全禁用HTTP或手動在我的包註銷,從80端口的服務器。

我真的很感激任何關於如何停止這種行爲的指針,而無需手動修改任何其他端口。

回答

0

我發現端口80上的服務器是由於與設備上另一個軟件包託管的另一臺服務器發生衝突。一切都按預期運行,禁用其他軟件包。 我仍然試圖讓他們兩個共存,但答案herehere是相當有幫助的。