Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jetty服务器上的多个连接器_Java_Jetty_Embedded Jetty - Fatal编程技术网

Java Jetty服务器上的多个连接器

Java Jetty服务器上的多个连接器,java,jetty,embedded-jetty,Java,Jetty,Embedded Jetty,我正在尝试运行一个Jetty服务器,它可以让许多人连接到服务器并查看打印输出列表。我希望每个连接的人都能看到相同的值打印出来 例如,如果我有一个记录时间的单一列表,我希望5个左右的人能够访问我的网站(例如localhost:8080/次),让他们每30秒查看一次时间,我将如何设置 我所拥有的: 我在用码头 我创建了一个绑定到8080端口的服务器 我创建了自己的处理程序,扩展了AbstractHandler 当事件发生(即30秒过去)时,写入屏幕 如果两个人连接到此页面,他们每分钟都会看到一

我正在尝试运行一个Jetty服务器,它可以让许多人连接到服务器并查看打印输出列表。我希望每个连接的人都能看到相同的值打印出来

例如,如果我有一个记录时间的单一列表,我希望5个左右的人能够访问我的网站(例如localhost:8080/次),让他们每30秒查看一次时间,我将如何设置

我所拥有的:

  • 我在用码头
  • 我创建了一个绑定到8080端口的服务器
  • 我创建了自己的处理程序,扩展了AbstractHandler
    • 当事件发生(即30秒过去)时,写入屏幕
  • 如果两个人连接到此页面,他们每分钟都会看到一个打印输出(即,它来回切换,让每个人知道其他事件何时发生)
  • 如果三个人连接,只有两个人可以保持连接,而第三个人只是旋转,没有输出到屏幕上
我没有设置自己的连接器,因为我的尝试没有成功,我不知道我如何理解这是否是我问题的解决方案

任何帮助都将不胜感激,如果任何人有一些想法,但需要一些关于我正在做什么的澄清,我将很乐意提供更多的细节

谢谢

处理程序代码:

@Override
public void handle(String target, Request request, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException
{

httpServletResponse.setContentType("text/html;charset=utf-8");
httpServletResponse.setStatus(HttpServletResponse.SC_OK);

request.setContextPath("/time");
request.setHandled(true);

while (true) {

    synchronized(Main.list) {
         while (!Main.list.isEmpty()) {
              Double time = Main.list.get(0);
              httpServletResponse.getWriter().println("<h1>The time now is " + time + "</h1>"); 
              httpServletResponse.flushBuffer();    
              Main.list.remove(0);
         }
         try {
              Main.list.wait();
         } catch (InterruptedException e) {
              e.printStackTrace();
         }
    }

 }
@覆盖
公共无效句柄(字符串目标、请求请求、HttpServletRequest HttpServletRequest、HttpServletResponse HttpServletResponse)引发IOException、ServletException
{
httpServletResponse.setContentType(“text/html;charset=utf-8”);
httpServletResponse.setStatus(httpServletResponse.SC_OK);
request.setContextPath(“/time”);
request.setHandled(true);
while(true){
已同步(Main.list){
而(!Main.list.isEmpty()){
Double time=Main.list.get(0);
httpServletResponse.getWriter().println(“现在的时间是“+time+”);
httpServletResponse.flushBuffer();
Main.list.remove(0);
}
试一试{
Main.list.wait();
}捕捉(中断异常e){
e、 printStackTrace();
}
}
}

因此,list对象是在我唤醒的主类(即notify)中定义的静态ArrayList每30秒一次。希望这有助于人们更多地理解我所说的,因为我不确定我可以在处理程序中更改什么…

您如何将客户端提供给处理程序?浏览器对连接到特定主机的连接数有限制,也许您看到了这一点


处理程序代码没有本质上的错误,除了在处理程序中看到它通常是一件奇怪的事情之外

我认为您需要发布一些代码。您不需要玩连接器-您的问题几乎可以肯定是在您设置处理程序的方式上,但您的描述并没有提供足够的信息让我们从中工作。@Tim I just edited问题包括处理程序代码。如果它给你任何想法,请让我知道,谢谢你花时间看它!