Java 在指定端口上注册Servlet

Java 在指定端口上注册Servlet,java,servlets,osgi,Java,Servlets,Osgi,我想在指定的端口上注册一个ServLet,因为我的端口80被我需要的其他程序使用,我可以关闭并杀死它们。 这是我注册servlet的代码: HttpService httpService = (HttpService) super.addingService(reference); if (httpService == null) return null; try {

我想在指定的端口上注册一个ServLet,因为我的端口80被我需要的其他程序使用,我可以关闭并杀死它们。 这是我注册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();
                }

不,这只能在容器级别完成。哪个是你的应用服务器?对于tomcat,请查看的端口参数。

您肯定只能设置HttpService本身的端口,但默认情况下它永远不会尝试使用端口80。将您80岁时拥有的服务器配置为将某些部分代理给OSGi服务是一个好主意吗

这东西比看起来要复杂一些。让所有的网络工具(尤其是像过滤器这样的更高级的工具)正常工作并不是那么容易

PaxWeb让它变得简单多了。(包含Jetty及其所有依赖项,因此您可以删除当前使用的Jetty)


可以使用OSGi配置来配置端口,但默认情况下它位于8080上。

AFAIK,您不能注册servlet的端口。端口分配给应用程序(即应用程序服务器)。除非OSGI使用该端口启动新服务器,否则您必须在app server上进行配置。当我执行此代码时,servlet注册时没有出现错误,但我的端口80正在被另一个程序使用。是否可以自动将servlet注册到另一个端口上?如果是,我应该如何知道端口号?它将出现在应用程序服务器的一个配置文件中。在tomcat中,它将是server.xml。我不知道什么是我的应用服务器。我只是下载osgi插件并在windows上的eclipse中使用它。我认为它是一个内置jetty服务器,随osgi插件一起提供。最好下载tomcat。在Eclipse服务器选项中将其注册为web服务器,并在该服务器中部署您的web应用程序(servlet)。之后,您可以在Tomcat中进行前面提到的配置above@ChristianSchack是的,它使用jetty server。我必须在jetty server上配置此项目。我应该怎么做?使用pax web,甚至可以将应用程序(而不是servlet)绑定到特定于“虚拟主机”的端口。