2016-05-16 92 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是相当有帮助的。