2013-12-13 22 views
0

我想在指定的端口上註冊ServLet,因爲我的端口80由另一個我需要的程序使用,我可以關閉並殺死它們。 這是我註冊的servlet代碼:在指定端口上註冊Servlet

HttpService httpService = (HttpService) super.addingService(reference); 
       if (httpService == null) 
         return null; 

       try { 
         System.out.println("Registering servlet at /simple"); 
         httpService.registerServlet("/simple", new SimpleServlet(), null, 
             null); 
       } catch (Exception e) { 
         e.printStackTrace(); 
       } 
+0

據我所知,你不能註冊一個servlet的端口。該端口被分配給應用程序(即應用程序服務器)。除非OSGI使用端口啓動新的服務器,否則您必須在應用程序服務器上進行配置。 – MadConan

回答

0

沒有,這隻能在容器級別上完成的。你的應用服務器是哪個?對於tomcat,請查看HTTP connector的port參數。

+0

當我執行這段代碼時,servlet註冊了out錯誤,但是我的端口80正在被另一個程序使用。它可能自動註冊到另一個端口上的servlet?如果是的話,我應該如何知道端口號? –

+0

它將在您的應用服務器的配置文件中。在tomcat中,它將是server.xml。 – Jops

+0

我不知道我的應用程序server.i是什麼,只需下載osgi插件並在eclipse上使用它。 –

1

您絕對只能設置HttpService本身的端口,但默認情況下永遠不會嘗試使用端口80。將配置80的服務器代理OSGi服務的某些部分是否是一個想法?

這東西比看起來有點棘手。讓所有的網絡工作(特別是更高級的東西,如過濾器)工作並不那麼容易。

Pax Web使得它更容易。 (this bundle包含Jetty和它的依賴性,這樣你就可以刪除你現在正在使用的碼頭)

該端口可以使用OSGi配置中進行配置,但默認情況下它是在8080

+0

使用pax web甚至可以將應用程序(而不是servlet)綁定到「虛擬主機」特定端口。 –