我在同一台服务器上部署了多个Java Web应用程序(Wildfly)。
他们都应该使用单个WebSocket实现向用户发送消息(对象,而不是纯文本)。
编辑:WebApp1-3是具有业务逻辑的应用程序。 WebApp4的唯一目的是根据其他WebApps生成的消息更新浏览器中的Primefaces面板。抱歉,这是一个误导性插图。
WebApp1
WebApp2 --> ??? --> WebApp4 (WebSocket-Server) --> JS/Browser
WebApp3
使WebApp4可用于其他应用程序的最佳方式/模式/实现是什么? (RMI,JMS,WebSocket,WebService,......?)
答案 0 :(得分:0)
对于公开服务的一般方式,我的建议是公开REST服务,因为它们比SOAP Web服务更简单,并且容易实现互操作性(如果将来PHP或RUBY webapp需要使用您的服务,那么它会更容易使用REST接口而不是基于RMI或JMS的一个接口。 REST服务的内容可能会有所不同,我建议您将XML或JSON视为通过http REST服务传输信息的一种方式。
答案 1 :(得分:0)
如果所有的网络应用程序都在同一台服务器上,那么您应该转发请求。从webapps 1-3的角度来看,他们不需要知道他们的传入请求是来自webapp 4还是来自外部(看起来他们没有连接)。当然,您可以在转发请求之前自由更改请求 - 或者完全删除它们,例如,如果身份验证失败。
在tomcat中执行此操作:https://stackoverflow.com/a/8951090/15472
转发请求时,外部客户端完全不知道webapps 1-3的存在 - 就客户端而言,它已向webapp 4发送请求,它会认为它正在接收来自同一台服务器。
您可能需要配置您的网络服务器以允许这些类型的呼叫,但我不熟悉WildFly。