Package org.cometd.server

Examples of org.cometd.server.BayeuxServerImpl


                connectors.put(connectorKey, connectorRef);
            } else {
                connectorRef.increment();
            }

            BayeuxServerImpl bayeux = connectorRef.servlet.getBayeux();

            if (securityPolicy != null) {
                bayeux.setSecurityPolicy(securityPolicy);
            }
            if (extensions != null) {
                for (BayeuxServer.Extension extension : extensions) {
                    bayeux.addExtension(extension);
                }
            }
            if (serverListeners != null) {
                for (BayeuxServer.BayeuxServerListener serverListener : serverListeners) {
                    bayeux.addListener(serverListener);
                }
            }
            prodcon.setBayeux(bayeux);
        }
    }
View Full Code Here


            this.disconnectLocalSession = disconnectLocalSession;
        }

        public void process(final Exchange exchange) {
            String channelName = producer.getEndpoint().getPath();
            BayeuxServerImpl bayeux = producer.getBayeux();
            ServerChannel channel = bayeux.getChannel(channelName);
            ServerSession serverSession = getServerSession();

            try {
                if (channel != null) {
                    logDelivery(exchange, channel);
View Full Code Here

                connectors.put(connectorKey, connectorRef);
            } else {
                connectorRef.increment();
            }

            BayeuxServerImpl bayeux = connectorRef.servlet.getBayeux();

            if (securityPolicy != null) {
                bayeux.setSecurityPolicy(securityPolicy);
            }
            if (extensions != null) {
                for (BayeuxServer.Extension extension : extensions) {
                    bayeux.addExtension(extension);
                }
            }
            prodcon.setBayeux(bayeux);
        }
    }
View Full Code Here

        value = console.readLine().trim();
        if (value.length() == 0)
            value = String.valueOf(maxThreads);
        maxThreads = Integer.parseInt(value);

        BayeuxServerImpl bayeuxServer = new BayeuxServerImpl();
        bayeuxServer.addExtension(new AcknowledgedMessagesExtension());

        MonitoringQueuedThreadPool jettyThreadPool = new MonitoringQueuedThreadPool(maxThreads);
        MonitoringThreadPoolExecutor websocketThreadPool = new MonitoringThreadPoolExecutor(maxThreads, jettyThreadPool.getIdleTimeout(), TimeUnit.MILLISECONDS, new ThreadPoolExecutor.AbortPolicy());

        String availableTransports = "jsrws,jettyws,http,asynchttp";
        String transports = "jsrws,http";
        System.err.printf("transports (%s) [%s]: ", availableTransports, transports);
        value = console.readLine().trim();
        if (value.length() == 0)
            value = transports;
        for (String token : value.split(","))
        {
            switch (token.trim())
            {
                case "jsrws":
                    bayeuxServer.addTransport(new LoadWebSocketTransport(bayeuxServer, websocketThreadPool));
                    break;
                case "jettyws":
                    bayeuxServer.addTransport(new LoadJettyWebSocketTransport(bayeuxServer, websocketThreadPool));
                    break;
                case "http":
                    bayeuxServer.addTransport(new JSONTransport(bayeuxServer));
                    break;
                case "asynchttp":
                    bayeuxServer.addTransport(new AsyncJSONTransport(bayeuxServer));
                    break;
                default:
                    throw new IllegalArgumentException("Invalid transport: " + token);
            }
        }

        boolean stats = true;
        System.err.printf("record statistics [%b]: ", stats);
        value = console.readLine().trim();
        if (value.length() == 0)
            value = String.valueOf(stats);
        stats = Boolean.parseBoolean(value);

        boolean reqs = true;
        System.err.printf("record latencies [%b]: ", reqs);
        value = console.readLine().trim();
        if (value.length() == 0)
            value = String.valueOf(reqs);
        reqs = Boolean.parseBoolean(value);

        boolean qos = false;
        System.err.printf("detect long requests [%b]: ", qos);
        value = console.readLine().trim();
        if (value.length() == 0)
            value = String.valueOf(qos);
        qos = Boolean.parseBoolean(value);

        Server server = new Server(jettyThreadPool);

        // Setup JMX
        MBeanContainer mbeanContainer = new MBeanContainer(ManagementFactory.getPlatformMBeanServer());
        server.addBean(mbeanContainer);

        SslContextFactory sslContextFactory = null;
        if (ssl)
        {
            Path keyStoreFile = Paths.get("src/main/resources/keystore.jks");
            if (Files.exists(keyStoreFile))
                throw new FileNotFoundException(keyStoreFile.toString());
            sslContextFactory = new SslContextFactory();
            sslContextFactory.setKeyStorePath(keyStoreFile.toString());
            sslContextFactory.setKeyStorePassword("storepwd");
            sslContextFactory.setKeyManagerPassword("keypwd");
        }

        ConnectionFactory[] factories = AbstractConnectionFactory.getFactories(sslContextFactory, new HttpConnectionFactory());
        ServerConnector connector = new ServerConnector(server, null, null, null, 1, selectors, factories);
        // Make sure the OS is configured properly for load testing;
        // see http://cometd.org/documentation/howtos/loadtesting
        connector.setAcceptQueueSize(2048);
        // Make sure the server timeout on a TCP connection is large
        connector.setIdleTimeout(50 * Config.MAX_NETWORK_DELAY);
        connector.setPort(port);
        server.addConnector(connector);

        HandlerWrapper handler = server;

        RequestLatencyHandler requestLatencyHandler = null;
        if (reqs)
        {
            requestLatencyHandler = new RequestLatencyHandler();
            handler.setHandler(requestLatencyHandler);
            handler = requestLatencyHandler;
        }

        if (qos)
        {
            RequestQoSHandler requestQoSHandler = new RequestQoSHandler();
            handler.setHandler(requestQoSHandler);
            handler = requestQoSHandler;
        }

        StatisticsHandler statisticsHandler = null;
        if (stats)
        {
            statisticsHandler = new StatisticsHandler();
            handler.setHandler(statisticsHandler);
            handler = statisticsHandler;
        }

        // Add more handlers if needed

        ServletContextHandler context = new ServletContextHandler(handler, Config.CONTEXT_PATH, ServletContextHandler.SESSIONS);
        context.setAttribute(BayeuxServer.ATTRIBUTE, bayeuxServer);
        context.setInitParameter(ServletContextHandler.MANAGED_ATTRIBUTES, BayeuxServer.ATTRIBUTE);

        WebSocketServerContainerInitializer.configureContext(context);

        // Setup default servlet to serve static files
        context.addServlet(DefaultServlet.class, "/");

        // Setup comet servlet
        String cometdURLMapping = Config.SERVLET_PATH + "/*";
        CometDServlet cometServlet = new CometDServlet();
        ServletHolder cometdServletHolder = new ServletHolder(cometServlet);
        context.addServlet(cometdServletHolder, cometdURLMapping);

        // Make sure the expiration timeout is large to avoid clients to timeout
        // This value must be several times larger than the client value
        // (e.g. 60 s on server vs 5 s on client) so that it's guaranteed that
        // it will be the client to dispose idle connections.
        bayeuxServer.setOption(AbstractServerTransport.MAX_INTERVAL_OPTION, String.valueOf(10 * Config.MAX_NETWORK_DELAY));
        // Explicitly set the timeout value
        bayeuxServer.setOption(AbstractServerTransport.TIMEOUT_OPTION, String.valueOf(Config.META_CONNECT_TIMEOUT));
        // Use the faster JSON parser/generator
        bayeuxServer.setOption(AbstractServerTransport.JSON_CONTEXT_OPTION, Jackson1JSONContextServer.class.getName());
        bayeuxServer.setOption("ws.cometdURLMapping", cometdURLMapping);
        bayeuxServer.setOption(ServletContext.class.getName(), context.getServletContext());

        server.start();

        new StatisticsService(bayeuxServer, jettyThreadPool, websocketThreadPool, statisticsHandler, requestLatencyHandler);
    }
View Full Code Here

    public void testGuiceWiringOfCometDServices() throws Exception
    {
        // Configure Guice
        Injector injector = Guice.createInjector(new CometDModule());
        // Manually start BayeuxServer
        BayeuxServerImpl bayeuxServer = injector.getInstance(BayeuxServerImpl.class);
        bayeuxServer.start();

        // Configure services
        // Guice does not handle @PostConstruct and @PreDestroy, so we need to handle them
        ServerAnnotationProcessor processor = new ServerAnnotationProcessor(bayeuxServer);
        GuiceBayeuxService service = injector.getInstance(GuiceBayeuxService.class);
        Assert.assertTrue(processor.process(service));

        // At this point we're configured properly
        // The code above should be put into a ServletContextListener.contextInitialized()
        // method, so that it is triggered by the web application lifecycle handling
        // and the BayeuxServer instance can be put into the ServletContext

        // Test that we're configured properly
        Assert.assertNotNull(service);
        assertNotNull(service.dependency);
        assertNotNull(service.bayeuxServer);
        assertNotNull(service.serverSession);
        assertTrue(service.active);
        assertEquals(1, service.bayeuxServer.getChannel(GuiceBayeuxService.CHANNEL).getSubscribers().size());

        // Deconfigure services
        // The code below should be put into a ServletContextListener.contextDestroyed()
        // method, so that it is triggered by the web application lifecycle handling
        Assert.assertTrue(processor.deprocess(service));
        // Manually stop the BayeuxServer
        bayeuxServer.stop();

        assertFalse(service.active);
    }
View Full Code Here

    private ServerAnnotationProcessor processor;

    @Before
    public void init() throws Exception
    {
        bayeuxServer = new BayeuxServerImpl();
        bayeuxServer.start();
        processor = new ServerAnnotationProcessor(bayeuxServer);
    }
View Full Code Here

        startClient();

        WebApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(context.getServletContext());
        Assert.assertNotNull(applicationContext);

        BayeuxServerImpl bayeuxServer = (BayeuxServerImpl)applicationContext.getBean("bayeux");
        Assert.assertNotNull(bayeuxServer);
        Assert.assertTrue(bayeuxServer.isStarted());

        Assert.assertSame(bayeuxServer, bayeux);

        ServerTransport transport = bayeuxServer.getTransport("websocket");
        Assert.assertNotNull(transport);

        final BayeuxClient client = newBayeuxClient();
        client.handshake();
        Assert.assertTrue(client.waitFor(5000, BayeuxClient.State.CONNECTED));
View Full Code Here

    }

    @Bean(initMethod = "start", destroyMethod = "stop")
    public BayeuxServer bayeuxServer()
    {
        return new BayeuxServerImpl();
    }
View Full Code Here

    }

    @Bean(initMethod = "start", destroyMethod = "stop")
    public BayeuxServer bayeuxServer()
    {
        BayeuxServerImpl bayeuxServer = new BayeuxServerImpl();
        bayeuxServer.setOption(ServletContext.class.getName(), servletContext);
        bayeuxServer.setOption("ws.cometdURLMapping", "/cometd/*");
        servletContext.setAttribute(BayeuxServer.ATTRIBUTE, bayeuxServer);
        return bayeuxServer;
    }
View Full Code Here

    private ServerAnnotationProcessor processor;

    @Before
    public void init() throws Exception
    {
        bayeuxServer = new BayeuxServerImpl();
        bayeuxServer.start();
        processor = new ServerAnnotationProcessor(bayeuxServer);
    }
View Full Code Here

TOP

Related Classes of org.cometd.server.BayeuxServerImpl

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.