我试图让websockets在glassfish5服务器上运行的java上工作。
我有一个用intellij和maven运行java8ee的项目。该项目运行在同时具有ssl端口和非ssl端口的glassfish服务器上。这个项目既有rest端点(比如get),也有websocket端点。我的问题是,我可以使用一个在线工具,如https://www.websocket.org/echo.html 或者其他一些工具来访问我的websocket端点,当我使用localhost而不是我的内部ip时。这意味着我无法从网络上需要的其他设备访问websocket端点。
正如我之前所说的,我也有一个常规的rest端点,但是这在localhost和通过我的内部ip都非常有效。从其他设备访问此rest终结点没有问题。有没有什么想法可以导致websockets只在本地工作?可能是webapplication服务器问题吗?
这是我在本地工作的websocket代码。
@ServerEndpoint("/engage_wss")
public class Websocket {
@OnOpen
public void onOpen(Session session) throws InterruptedException, IOException, SQLException, IllegalObjectTypeException, ObjectDoesNotExistException, ErrorCompletingRequestException, AS400SecurityException {
System.out.println("Hello::" + session.getId());
//do stuff
}
@OnClose
public void onClose(Session session) {
System.out.println("onClose::" + session.getId());
}
@OnMessage
public void onMessage(String message, Session session) {
System.out.println("onMessage::From=" + session.getId() + " Message=" + message);
try {
session.getBasicRemote().sendText("Hello Client " + session.getId() + "!");
} catch (IOException e) {
e.printStackTrace();
}
}
@OnError
public void onError(Throwable t) {
System.out.println("onError::" + t.getMessage());
}
}
websocket和rest enpoint都在同一个文件夹中,并且都由同一个servlet提供服务
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>JerseyRESTService</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>main.java.Badgepass.Engage_RealTime_API.Resources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>JerseyRESTService</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
感谢您的关注,希望您能推荐任何想法或解决方案。
暂无答案!
目前还没有任何答案,快来回答吧!