簡體   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