2013-12-13 24 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)绑定到“虚拟主机”特定端口。 –