首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServerSocket、Tomcat作为服务和端口

ServerSocket、Tomcat作为服务和端口
EN

Stack Overflow用户
提问于 2011-01-13 01:10:39
回答 3查看 740关注 0票数 1

我有一个应用程序(Java),它提供了一个嵌入式Jetty。默认情况下,我尝试获取Jetty服务器的端口8080。如果端口正在使用中,我会随机尝试一个端口:

代码语言:javascript
复制
try {
    socket = new ServerSocket(def);
} catch (IOException e) {
    socket = new ServerSocket(0);
}

问题是我有一个客户,他在8080上运行Tomcat。如果tomcat已关闭,则一切正常。如果Tomcat是作为服务运行的,并且我的应用程序想要获取一个端口,它将获取默认端口(8080),尽管tomcat正在侦听那里。如果浏览localhost:8080/test.html,我会从Tomcat得到一个http 404。

因此,只要在8080端口上没有真正的请求,tomcat似乎就处于休眠状态。

我想知道这是为什么,是如何工作的,以及如何修改我的java代码来解决这个问题。

亲切的问候

EN

回答 3

Stack Overflow用户

发布于 2011-01-13 01:12:58

将Tomcat或Jetty更改为使用另一个端口。每个端口一个监听程序。

票数 1
EN

Stack Overflow用户

发布于 2011-01-13 01:16:14

你已经解决了这个问题...

但是您可以使用"taskkill.exe“命令更好地处理它(如果您之前使用"tasklist.exe”找到了PID )。

票数 1
EN

Stack Overflow用户

发布于 2011-01-13 02:41:44

您的问题是两个应用程序正在竞争系统资源,在您的示例中,系统资源是TCP端口8080。为了释放端口,您必须使用系统API (widnows或linux或...)在这一点上,您将把Java的独立性抛在脑后。我看到它工作的唯一方式(虽然不是web服务器)是告诉系统找到当前占用端口的进程,并将其挂起几秒钟。其他进程将在有请求时自动认领该端口。尽管如此,它仍然是一个混乱的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4671697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档