我在运行Java EE应用程序时遇到了问题。我有下面的服务器edpoint代码:
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.enterprise.context.ApplicationScoped;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
@ApplicationScoped
@ServerEndpoint(
value = "/model"
)
public class ModelWebSocket {
private final ModelHandle model = new ModelHandle();
@OnOpen
public void onOpen(Session session) throws IOException {
}
@OnError
public void onError(Throwable error) {
/// put model back to pool, log erros
}
// This code never calls,
@OnMessage
public void onMessage(String message, Session session) {
//TODO: Add decoders/encoders to annotations
try {
ModelInputData inputData = new ModelInputDataDecoder().decode(message);
double input = inputData.getInput();
double timespan = inputData.getTimespan();
model.setInput(input);
ModelProcessData process = model.getOuptput(timespan);
try {
session.getBasicRemote().sendText(
new ModelProcessDataEncoder().encode(process)
);
} catch (IOException | EncodeException ex) {
Logger.getLogger(ModelWebSocket.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (DecodeException ex) {
Logger.getLogger(ModelWebSocket.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
And the following stub for a client stub in javascript:
<!DOCTYPE html>
<!--
This is a test
-->
<html>
<head>
<title>Test</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<!-- insert the main script here -->
<script type ="text/javascript">
//copied from https://learn.javascript.ru/websockets
var socket = new WebSocket(
"ws://localhost:8080/SimulatorWeb/model"
);
socket.onopen = function () {
alert("Connection OK");
};
socket.onclose = function (event) {
if (event.wasClean) {
alert('Connection closed');
} else {
alert('Connection interrupted'); // например, "убит" процесс сервера
}
alert('Code: ' + event.code + ' redason: ' + event.reason);
};
socket.onmessage = function (event) {
alert("Data accepted " + event.data);
};
socket.onerror = function (error) {
alert("Error " + error.message);
};
function send(){
socket.send("dummy");
}
</script>
<button type="button" onclick="send();" >Send</button>
</body>
</html>
客户端似乎发送消息,但OnMessage从未被拦截。当我启动Glassfish 4.1.1时,出现以下警告:
我花了很多时间进行调试,但仍然无法找到问题所在……我使用Java8SDK和NetBeansIDE。
(在代码中我没有使用解码器/编码器,因为我认为它们是问题所在并将它们从ServerEnpoint中删除)
我不知道Glassfish有什么问题...我切换到Tomcat,手动将我需要的所有外部库添加到WEB_INF/lib中(在我的例子中是javax.json)。Tomcat似乎没有给原始代码任何警告,一切都运行良好。
我对JMS编码是新手。我试图从独立的java客户端创建消息,该客户端创建并将消息发送到队列,消息驱动bean用于进一步处理消息。 我使用的是Glassfish应用服务器(3.1)。并设置从独立java客户机创建消息的所有内容。 下面是我的代码:客户端 消息驱动bean: 问题是:没有被调用。我错过什么了吗?请帮帮我.
我成功订阅了一个队列,但在发送消息时,另一个用户没有收到它 消息代理配置: 我如何发送消息 在ws-connection上创建自定义用户主体 在客户端,我连接套接字 当我连接到stomp时,我会在浏览器控制台中看到下一条消息 是此用户的实际id 我将id为1的用户和id为2的用户订阅到同一队列,当我从用户1向用户2发送消息时,第二个用户没有收到消息<我错过什么了吗?
用"cro sub"创建了一个web套接字服务器。 这名客户写道: 我在tcp转储中看到了来自服务器的响应代码101(交换协议),但我没有看到从客户端发送到服务器的消息。 那么,我做错了什么? 另一个问题,不应该“$connection.send”返回一个promise还是什么?如果发送时出错怎么办? 另一个问题是:服务器似乎只理解IPV6地址...如何让它理解IPV4地址? 就这样,现在。 使现
我试图在Linux Red Hat Entreprise Linux release 5.11(Tikanga)服务器上安装GlassFish4.0。 因此,我按照以下网站说明成功地在该服务器上安装了Java JDK1.7.0_79和NetBeans4.0:https://blog.idrsolutions.com/2014/02/tutorial-setting-up-glassfish-on-
我通过web套接字发送一个文本到一个Java服务器,但不会被调用,这是我为客户端使用的函数(WebSocketTest),当我关闭服务器时,会正确调用on近函数的警报消息 这就是我在服务器上接收到的内容 这是服务器端
null edit 根据BalusC的答案,我删除了myfaces-bundle-2.1.7.jar,现在我得到以下异常: 知道有什么问题吗?