Java 使用嵌入式Jetty Web服务器从客户端获取大量消息
我有一个项目,在这个项目中,服务器需要能够连接到大量客户机,接收来自客户机的观察消息,并将它们放入队列中。我当前的粗略实现使用了一个非常基本的处理程序,以文本形式获取客户端请求:Java 使用嵌入式Jetty Web服务器从客户端获取大量消息,java,server,jetty,Java,Server,Jetty,我有一个项目,在这个项目中,服务器需要能够连接到大量客户机,接收来自客户机的观察消息,并将它们放入队列中。我当前的粗略实现使用了一个非常基本的处理程序,以文本形式获取客户端请求: public class JettyServer { public JettyServer() throws Exception { Server server = new Server(6558); ObservationHandler handler = new O
public class JettyServer
{
public JettyServer() throws Exception
{
Server server = new Server(6558);
ObservationHandler handler = new ObservationHandler();
server.setHandler(handler);
server.start();
server.join();
}
public class ObservationHandler extends AbstractHandler
{
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
String requestString = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
// code to add requestString to thread safe queue ...
baseRequest.setHandled(true);
}
}
}
这允许我以文本形式获取客户端请求,但我不确定这是我应该怎么做的。是否有一种方法可以接收来自客户的信息,而不是以请求的形式?Jetty似乎非常关注服务器到客户端的事务,而不是相反。我以前使用过JettyWebSockets,但我不确定我在这里想要的客户端连接是否是断断续续的。是否有更好的服务器服务或Jetty实现来执行此操作?为什么不创建一个servlet来检索数据并按您的意愿进行处理 只需创建一个扩展HttpServlet的类:
public class MyServlet extends HttpServlet
然后,重写doGet
或doPost
如下方法:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setContentType("text/html");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("<h1>"+greeting+"</h1>");
response.getWriter().println("session=" + request.getSession(true).getId());
}
}
有关更多详细信息,请查看谢谢。我对这一切都很陌生,如果这是一个显而易见的答案,我很抱歉。doPost截获来自客户端的所有POST消息(发送到正确的URL)的说法正确吗
public class OneServletContext{
public static void main(String[] args) throws Exception{
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
server.setHandler(context);
context.addServlet(new ServletHolder(new HelloServlet()),"/*");
context.addServlet(new ServletHolder(new HelloServlet("Buongiorno Mondo")),"/it/*");
context.addServlet(new ServletHolder(new HelloServlet("Bonjour le Monde")),"/fr/*");
server.start();
server.join();
}