Java 使用jar库部署grails Websocket的war文件后出错

Java 使用jar库部署grails Websocket的war文件后出错,java,grails,Java,Grails,以下代码在开发环境中可以正常工作,但在生产环境中无法正常工作。我因此被卡住了。我已经尝试使用tomcat v9.0.24和tomcat v8.5.32进行部署。在开发环境中,tomcat v9.0.24正在工作,但问题在于生产 org.apache.catalina.core.StandardContext.startInternal Error during ServletContainerInitializer processing javax.servlet.ServletExceptio

以下代码在开发环境中可以正常工作,但在生产环境中无法正常工作。我因此被卡住了。我已经尝试使用tomcat v9.0.24和tomcat v8.5.32进行部署。在开发环境中,tomcat v9.0.24正在工作,但问题在于生产

org.apache.catalina.core.StandardContext.startInternal Error during ServletContainerInitializer processing javax.servlet.ServletException: java.lang.NoSuchMethodException:org.glassfish.tyrus.server.TyrusServerConfiguration.<init>()
  • Websocket类
  •     //*********** Websoket *************//
        compile 'org.glassfish.tyrus:tyrus-server:1.13.1'
        compile 'javax.websocket:javax.websocket-api:1.1'
        compile 'org.glassfish.tyrus:tyrus-container-grizzly-server:1.13.1'
    
        import grails.gorm.transactions.Transactional
        import grails.util.Environment
        import grails.util.Holders
        import pawnshoprest.staff.User
    
        import javax.websocket.*
        import javax.websocket.server.ServerEndpoint
    
        @ServerEndpoint(value = "/broadcast/{user_id}/{username}")
        class WebSocketsService {
            //**************** declare client ***************
            private static Set<Session> clients = Collections.synchronizedSet(new HashSet<Session>());
    
            @OnOpen
            static void onOpen(Session session) {
                System.out.println("Connected ... " + session.getId());
                clients.add(session);
            }
    
            @OnMessage
            static String onMessage(String message, Session session){
                println("\n")
                System.out.println("my Message: " + message);
                synchronized(clients){
                    // Iterate over the connected sessions
                    // and broadcast the received message
                    for(Session client : clients){
                        //if (!client.equals(session)){
                            System.out.println("************** Session ID *******************");
                            System.out.println("sender: " + session.getId());
                            System.out.println("Reciever: " + client.getId());
                            //************ broadcast message **********************
                            if(!session.pathParameters.user_id.equals(client.pathParameters.user_id)){
                                println('message sent to ' + client.pathParameters.username)
                                client.getBasicRemote().sendText(message);
                            }
                        //}
                    }
                }
                //return message;
            }
    
            @OnClose
            static void onClose(Session session, CloseReason closeReason) {
                //******** Client Disconnect ****************
                System.out.println("Disconnected ... " + session.getId());
                clients.remove(session)
            }
        }
    
    class Bootstrap{
           def init = { servletContext ->
               Server server = new Server("${InetAddress.getLocalHost().getHostAddress()}", 8025, "/websockets", null, WebSocketsService);
             try {
                    server.start();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
                    println('\n')
                    println('**************************** Socket running ****************************')
                    println("Please press a key to stop the server.");
                    println('\n')
                    reader.readLine();
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    println('\n')
                    println('**************************** Socket Has Been Stopped ****************************')
                    println('\n')
                }
          }
        }