![](/img/trans.png)
[英]How to set path to web.xml in Maven Jetty Plugin in pom.xml?
[英]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.