繁体   English   中英

如何使用Maven和Jetty将web.xml组合到Lauch服务器端

[英]How compose web.xml to lauch server side with maven and jetty

我应该在web.xml中放入什么来启动以启动服务器端。 我启动码头,但只有ui Works服务器端未运行

我有下一个文件夹树:

src
  |-main
      |-java
      |    |-com
      |        |-example
      |                |-test
      |                     |-ServerSide.java
      |-webapp
             |-index.html
             |-WEB-INF
                     |-web.xml

服务器端类

package com.example.test;

import java.io.IOException;
import java.util.Date;

import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;


@ServerEndpoint("/testbattle")
public class ServerSide {
    @OnOpen
    public void onOpen(Session session) throws IOException {
        System.out.println("Welcome" + new Date());
        session.getBasicRemote().sendText("Hello websockets");  
    }
}

如果您关心的是启动服务器端端点,那么您可以添加一个main方法作为您的应用程序入口,但是请注意,这不会让jetty maven插件运行您的应用程序,因为jetty是一个Web容器,因此基于servlet。

package com.example.websocket;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer;

public class ServerStarter {
  public static void main( String[] args ) throws Exception {
  Server server = new Server(8080);

  final ServletHolder servletHolder = new ServletHolder(new DefaultServlet());
  final ServletContextHandler context = new ServletContextHandler();

  context.setContextPath("/");
  context.addServlet(servletHolder, "/*");

  server.setHandler(context);
  WebSocketServerContainerInitializer.configureContext(context); 

  server.start();
  server.join(); 
  }
}

如果您打算在一个普通的web应用程序使用WebSockets,你必须注册一个的WebSocket处理器(应该是ServerSide在你的情况下),以JettyServlet (这应该是亚型``)和注册后( JettyServlet )到Web .xml文件而不是ServerSide类:

  • web.xml

     <web-app> <display-name>WebSocketApp</display-name> <servlet> <servlet-name>wsservlet</servlet-name> <servlet-class>com.example.test.MyJettyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>wsservlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> 
  • MyJettyServlet

     package com.example.test; public class MyJettyServlet extends WebSocketServlet { @Override public void configure(WebSocketServletFactory factory) { factory.register(ServerSide.class); } } 
  • 服务器端

     @WebSocket public class ServerSide { @OnOpen public void onOpen(Session session) throws IOException { System.out.println("Welcome" + new Date()); session.getBasicRemote().sendText("Hello websockets"); } } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM