【发布时间】:2015-04-15 16:09:44
【问题描述】:
我在本地 PC 上创建并测试了一个使用 WebSockets 的 Java EE 7 应用程序。当我在本地机器上部署到 WildFly 8 并使用 localhost 访问应用程序时,一切正常。
当我使用完全相同的 WildFly 配置在云服务器 (Ubuntu 14.04) 上部署相同的应用程序时,当应用程序尝试连接时,我收到以下消息:
"NetworkError: 404 Not Found - http://178.11.11.11:8080/pss/ws/notification"
Firefox can't establish a connection to the server at ws://178.11.11.11:8080/pss/ws/notification.
我可以访问应用程序,只是websocket连接失败。
pss 是我的上下文根,websocket 端点使用@ServerEndpoint("/ws/notification") 进行注释,因此 URL 是正确的,并且使用 localhost 在我的本地计算机上 100% 有效。
当我部署应用程序时,我可以看到 Websocket 端点已被 WildFly 拾取,所以这不是问题
2015-02-14 14:18:21,200 INFO [io.undertow.websockets.jsr] (MSC service thread 1-2) UT026003: Adding annotated server endpoint class za.co.ssms.interfaces.websocket.NotificationWebSocket for path /ws/notification
请求标头正确:
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Cache-Control no-cache
Connection keep-alive, Upgrade
Cookie JSESSIONID=mgFhI1MAZwT2NwULXDXgEaXt.app
Host 178.11.11.11:8080
Origin http://178.11.11.11:8080
Pragma no-cache
Sec-WebSocket-Key LD55xYAKjJoXgLXQpUS7fA==
Sec-WebSocket-Version 13
Upgrade websocket
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:35.0) Gecko/20100101 Firefox/35.0
我正在使用以下 URL(IP 已修改)访问应用程序,并且端口匹配:
http://178.11.11.11:8080/pss/
如果我运行 netstat -an |在我的云服务器上 grep 'LISTEN' 我得到以下信息,这表明 0.0.0.0:8080 已绑定并正在侦听:
tcp 0 0 127.0.0.1:9990 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3528 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8787 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
unix 2 [ ACC ] STREAM LISTENING 9227 /var/run/acpid.socket
unix 2 [ ACC ] STREAM LISTENING 7014 @/com/ubuntu/upstart
unix 2 [ ACC ] STREAM LISTENING 8907 /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 9448 /var/run/mysqld/mysqld.sock
unix 2 [ ACC ] SEQPACKET LISTENING 7666 /run/udev/control
我的公共接口配置如下图:
<interface name="public">
<inet-address value="${jboss.bind.address:0.0.0.0}"/>
</interface>
未安装 Apache,因此这是与 Wildfly 服务器的直接连接。
几天后,我很困惑为什么会失败。
以前有没有人遇到过这种情况并有解决方案,或者你有办法进一步解决这个问题。
谢谢
【问题讨论】:
-
您是否将 Wildfly 绑定到该 IP 地址?
-
@Francesco 我的公共接口声明如下:
-
@Francesco 正常的 http 请求可以正常完成,但任何 http 升级请求都会失败并返回 404。当 WildFly 和浏览器在同一台机器上时,同样的调用也有效。
标签: java ubuntu websocket wildfly