当前位置: 首页 > 知识库问答 >
问题:

IBM WebSphere 应用程序服务器上的 Web 文档支持 9.0.5.6

禹昊穹
2023-03-14

我正在使用 WebSocket 服务包将一个基于 JBOSS EAP 7.3 的企业级应用程序迁移到 IBM WebSphere 应用程序服务器 9.0.5.6 (WAS)。问题是,当我尝试连接到WebSocketendpoint时,它什么都不做。在 WebSphere 中,我相应地配置了所有虚拟主机和端口,我的 WebSocket endpoint类如下所示。

@ServerEndpoint("/WebSocketServices")
public class ClientConnectorWebSocketCore {

    private static final OMSLogHandlerI logger = new Log4j2HndlAdaptor("ClientConnectorWebSocketCore");
    private ClientConnectorFacadeWrapperRemote clientConnectorFacadeRemote;
    private EJBServiceLocatorI ejbServiceLocatorI;

    @OnOpen
    public void onConnectionOpen(Session session) {
        session.setMaxIdleTimeout(120000); //todo //milli seconds
        getEjbServiceLocatorI();
        logger.elkLog("29", LogEventsEnum.WSOCKET_SESSION_CONNECT, " Session Create:" + session.getId());
    }

    @OnMessage
    public String onMessage(String message) {
        return handleJSONRequest(message);
    }

    @OnClose
    public void onConnectionClose(Session session) {
        logger.elkLog("42", LogEventsEnum.WSOCKET_SESSION_CLOSE, " Session Close:" + session.getId());
    }

    @OnError
    public void onConnectionError(Session session, Throwable t) {
//        logger.info("LN:47", session.getId(), LogEventsEnum.WEB_SOCKET_ONERROR, "WebSocket OnException" + t.getMessage());
        logger.elkLog("48", LogEventsEnum.WEB_SOCKET_ONERROR, " Session error:" + session.getId() + ", Msg:" + t.getMessage());
    }

    public void msgBroadCast(Session session, String msg) {
        for (Session session1 : session.getOpenSessions()) {
            if (session1.isOpen()) {
                session1.getAsyncRemote().sendText(msg);
            }
        }
    }

    private EJBServiceLocatorI getEjbServiceLocatorI(){
        if (ejbServiceLocatorI == null){
            ejbServiceLocatorI =
                    (EJBServiceLocatorI) SpringBeanFactoryLoader.getInstance().getBeanLoader().getBean(EJBServiceLocatorI.class);
        }
        return ejbServiceLocatorI;
    }

    private ClientConnectorFacadeWrapperRemote getClientConnectFacade() {
        if (clientConnectorFacadeRemote == null) {
            try {
                ejbServiceLocatorI = getEjbServiceLocatorI();
                clientConnectorFacadeRemote =
                       (ClientConnectorFacadeWrapperRemote) ejbServiceLocatorI.contextLookupConnectorFacadeRemote(ClientConnectorFacadeWrapperRemote.class);
            } catch (Exception e) {
                logger.error("LN:66", "Error in Creating Client connector   " + e.getMessage(), e);
            }
        }
        return clientConnectorFacadeRemote;
    }

    private String handleJSONRequest(String jsonRequest) {
        ClientConnectorFacadeWrapperRemote clientConnector = getClientConnectFacade();
        String response = null;
        if (clientConnector != null) {
            response = clientConnector.processMessage(jsonRequest);
        }
        return response;
    }

    @OnMessage
    public void pongMessage(Session session, PongMessage msg) {
        msg.getApplicationData().toString();
    }


    public void setEjbServiceLocatorI(EJBServiceLocatorI ejbServiceLocatorI) {
        this.ejbServiceLocatorI = ejbServiceLocatorI;
    }
}

非常感谢您的任何建议。

共有1个答案

壤驷华美
2023-03-14

如果您的请求流经带有WebSphere插件的Web服务器,您需要确保插件处于9.0.5.6或更高级别,因为可能会阻止websocket流量的错误(PH27966)。

 类似资料:
  • 我遇到的问题,而试图使用Spring开机与是(WebSphere)服务器。我有一个网页,接受输入,然后执行@控制器类。 任何帮助都将不胜感激。这是什么特别的,我们需要做在POM. xmlIBMWebSphere。 下面是我的应用课程内容。 我已经加了 Spring boot:run提供了以下错误跟踪。

  • 本文列出了Apache HTTP服务器中所有的可执行程序。 索引 httpd Apache超文本传输协议服务器 apachectl Apache HTTP服务器控制接口 ab Apache HTTP服务器性能测试工具 apxs APache功能扩展工具 configure 配置源代码树 dbmmanage 建立和更新DBM形式的基本认证文件 htcacheclean 清理磁盘缓冲区 htdiges

  • 问题内容: 我已经在Android中创建了一个网络服务器,该服务器绑定到端口2090,并为Android设备的sdcard服务,如果在Internet Explorer中键入,则可以正常工作,但效果很好,但是当我在其他浏览器中打开它时,它会以文本形式打开HTML文件请帮我。 这是我的代码。 服务器启动器类: jhttp类: RequestProcessor: Logcat: 没有发布,因为没有错误

  • 请告诉我web服务器、web容器和应用程序服务器之间的区别。

  • 本文向大家介绍Web服务器和应用程序服务器之间的区别,包括了Web服务器和应用程序服务器之间的区别的使用技巧和注意事项,需要的朋友参考一下 服务器是一个中心位置,通过网络应用程序可以存储和访问信息和程序。Web Server是一种服务器,它接受数据请求并返回相关文档,而Application Server包含一个ejb容器组件以及运行企业应用程序。 以下是Web服务器和应用程序服务器之间的重要区别

  • 我有一个nodejs应用程序,它只不过是一个使用微软botbuilder框架构建的机器人。我创建了azure应用程序服务来托管此应用程序。我想找到一种方法,将所有应用程序日志和web服务器日志(如果可能的话)持久化到某个持久化存储中。就像本地web应用程序一样,我们可以在应用程序服务器上查找日志 在做了一些研究之后,我找到了微软关于这方面的官方文件,但看起来它有以下局限性。 我们不能使用应用程序服