javax.websocket.DeploymentException#javax.websocket.server.ServerEndpoint源码实例Demo

下面列出了javax.websocket.DeploymentException#javax.websocket.server.ServerEndpoint 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

/**
 * Actually register the endpoints. Called by {@link #afterSingletonsInstantiated()}.
 */
protected void registerEndpoints() {
	Set<Class<?>> endpointClasses = new LinkedHashSet<>();
	if (this.annotatedEndpointClasses != null) {
		endpointClasses.addAll(this.annotatedEndpointClasses);
	}

	ApplicationContext context = getApplicationContext();
	if (context != null) {
		String[] endpointBeanNames = context.getBeanNamesForAnnotation(ServerEndpoint.class);
		for (String beanName : endpointBeanNames) {
			endpointClasses.add(context.getType(beanName));
		}
	}

	for (Class<?> endpointClass : endpointClasses) {
		registerEndpoint(endpointClass);
	}

	if (context != null) {
		Map<String, ServerEndpointConfig> endpointConfigMap = context.getBeansOfType(ServerEndpointConfig.class);
		for (ServerEndpointConfig endpointConfig : endpointConfigMap.values()) {
			registerEndpoint(endpointConfig);
		}
	}
}
 
/**
 * Actually register the endpoints. Called by {@link #afterSingletonsInstantiated()}.
 */
protected void registerEndpoints() {
	Set<Class<?>> endpointClasses = new LinkedHashSet<>();
	if (this.annotatedEndpointClasses != null) {
		endpointClasses.addAll(this.annotatedEndpointClasses);
	}

	ApplicationContext context = getApplicationContext();
	if (context != null) {
		String[] endpointBeanNames = context.getBeanNamesForAnnotation(ServerEndpoint.class);
		for (String beanName : endpointBeanNames) {
			endpointClasses.add(context.getType(beanName));
		}
	}

	for (Class<?> endpointClass : endpointClasses) {
		registerEndpoint(endpointClass);
	}

	if (context != null) {
		Map<String, ServerEndpointConfig> endpointConfigMap = context.getBeansOfType(ServerEndpointConfig.class);
		for (ServerEndpointConfig endpointConfig : endpointConfigMap.values()) {
			registerEndpoint(endpointConfig);
		}
	}
}
 
/**
 * Actually register the endpoints. Called by {@link #afterSingletonsInstantiated()}.
 */
protected void registerEndpoints() {
	Set<Class<?>> endpointClasses = new LinkedHashSet<Class<?>>();
	if (this.annotatedEndpointClasses != null) {
		endpointClasses.addAll(this.annotatedEndpointClasses);
	}

	ApplicationContext context = getApplicationContext();
	if (context != null) {
		String[] endpointBeanNames = context.getBeanNamesForAnnotation(ServerEndpoint.class);
		for (String beanName : endpointBeanNames) {
			endpointClasses.add(context.getType(beanName));
		}
	}

	for (Class<?> endpointClass : endpointClasses) {
		registerEndpoint(endpointClass);
	}

	if (context != null) {
		Map<String, ServerEndpointConfig> endpointConfigMap = context.getBeansOfType(ServerEndpointConfig.class);
		for (ServerEndpointConfig endpointConfig : endpointConfigMap.values()) {
			registerEndpoint(endpointConfig);
		}
	}
}
 
@Override
protected void registerWebSocketEndpoints(ServerContainer container) {
  try {
    final ListeningScheduledExecutorService exec = MoreExecutors.listeningDecorator(
        Executors.newScheduledThreadPool(
            config.getInt(KsqlRestConfig.KSQL_WEBSOCKETS_NUM_THREADS),
            new ThreadFactoryBuilder()
                .setDaemon(true)
                .setNameFormat("websockets-query-thread-%d")
                .build()
        )
    );
    final ObjectMapper mapper = getJsonMapper();
    final StatementParser statementParser = new StatementParser(ksqlEngine);

    container.addEndpoint(
        ServerEndpointConfig.Builder
            .create(
                WSQueryEndpoint.class,
                WSQueryEndpoint.class.getAnnotation(ServerEndpoint.class).value()
            )
            .configurator(new Configurator() {
              @Override
              @SuppressWarnings("unchecked")
              public <T> T getEndpointInstance(Class<T> endpointClass) {
                return (T) new WSQueryEndpoint(
                    mapper,
                    statementParser,
                    ksqlEngine,
                    exec
                );
              }
            })
            .build()
    );
  } catch (DeploymentException e) {
    log.error("Unable to create websockets endpoint", e);
  }
}
 
源代码5 项目: mercury   文件: WsLoader.java
@Override
public void contextInitialized(ServletContextEvent event) {
    /*
     * This loader is not implemented using Spring's ServletContextInitializer
     * because it does not provide websocket compliant ServerContainer.
     *
     * ServletContextEvent would expose javax.websocket.server.ServerContainer correctly.
     */
    ServletContext context = event.getServletContext();
    SimpleClassScanner scanner = SimpleClassScanner.getInstance();
    Set<String> packages = scanner.getPackages(true);
    Object sc = context.getAttribute("javax.websocket.server.ServerContainer");
    if (sc instanceof ServerContainer) {
        ServerContainer container = (ServerContainer) sc;
        int total = 0;
        for (String p : packages) {
            List<Class<?>> endpoints = scanner.getAnnotatedClasses(p, ServerEndpoint.class);
            for (Class<?> cls : endpoints) {
                if (!Feature.isRequired(cls)) {
                    continue;
                }
                try {
                    container.addEndpoint(cls);
                    ServerEndpoint ep = cls.getAnnotation(ServerEndpoint.class);
                    total++;
                    log.info("{} registered as WEBSOCKET DISPATCHER {}", cls.getName(), Arrays.asList(ep.value()));
                } catch (DeploymentException e) {
                    log.error("Unable to deploy websocket endpoint {} - {}", cls, e.getMessage());
                }
            }
        }
        if (total > 0) {
            log.info("Total {} Websocket server endpoint{} registered (JSR-356)", total, total == 1 ? " is" : "s are");
        }
    } else {
        log.error("Unable to register any ServerEndpoints because javax.websocket.server.ServerContainer is not available");
    }
}
 
源代码6 项目: apollo   文件: WebSocketServer.java
private ServerEndpointConfig createEndpointConfig(Class<?> endpointClass) throws DeploymentException {
    ServerEndpoint annotation = endpointClass.getAnnotation(ServerEndpoint.class);
    if (annotation == null) {
        throw new InvalidWebSocketException("Unsupported WebSocket object, missing @" +
                ServerEndpoint.class + " annotation");
    }

    return ServerEndpointConfig.Builder.create(endpointClass, annotation.value())
            .subprotocols(Arrays.asList(annotation.subprotocols()))
            .decoders(Arrays.asList(annotation.decoders()))
            .encoders(Arrays.asList(annotation.encoders()))
            .configurator(configurator)
            .build();
}
 
源代码7 项目: msf4j   文件: EndpointDispatcher.java
/**
 * Validate the endpoint against the {@link ServerEndpoint} since without {@link ServerEndpoint} definition
 * there can't be a WebSocket endpoint.
 * @param websocketEndpoint endpoint which should be validated.
 */
public boolean validateEndpointUri(Object websocketEndpoint) {
    if (websocketEndpoint != null) {
        return websocketEndpoint.getClass().isAnnotationPresent(ServerEndpoint.class);
    }
    return false;
}
 
@Override
public EventDriver create(Object websocket, WebSocketPolicy policy) throws Throwable {
    if (!(websocket instanceof EndpointInstance)) {
        throw new IllegalStateException(String.format("Websocket %s must be an %s", websocket.getClass().getName(), EndpointInstance.class.getName()));
    }

    EndpointInstance ei = (EndpointInstance) websocket;
    AnnotatedServerEndpointMetadata metadata = (AnnotatedServerEndpointMetadata) ei.getMetadata();
    JsrEvents<ServerEndpoint, ServerEndpointConfig> events = new JsrEvents<>(metadata);

    // Handle @OnMessage maxMessageSizes
    int maxBinaryMessage = getMaxMessageSize(policy.getMaxBinaryMessageSize(), metadata.onBinary, metadata.onBinaryStream);
    int maxTextMessage = getMaxMessageSize(policy.getMaxTextMessageSize(), metadata.onText, metadata.onTextStream);

    policy.setMaxBinaryMessageSize(maxBinaryMessage);
    policy.setMaxTextMessageSize(maxTextMessage);

    //////// instrumentation is here
    JsrAnnotatedEventDriver driver = new InstJsrAnnotatedEventDriver(policy, ei, events, metrics);
    ////////
    
    // Handle @PathParam values
    ServerEndpointConfig config = (ServerEndpointConfig) ei.getConfig();
    if (config instanceof PathParamServerEndpointConfig) {
        PathParamServerEndpointConfig ppconfig = (PathParamServerEndpointConfig) config;
        driver.setPathParameters(ppconfig.getPathParamMap());
    }

    return driver;
}
 
源代码9 项目: dropwizard-websockets   文件: WebsocketBundle.java
public void addEndpoint(Class<?> clazz) {
    ServerEndpoint anno = clazz.getAnnotation(ServerEndpoint.class);
    if(anno == null){
        throw new RuntimeException(clazz.getCanonicalName()+" does not have a "+ServerEndpoint.class.getCanonicalName()+" annotation");
    }
    ServerEndpointConfig.Builder bldr =  ServerEndpointConfig.Builder.create(clazz, anno.value());
    if(defaultConfigurator != null){
        bldr = bldr.configurator(defaultConfigurator);
    }
    endpointConfigs.add(bldr.build());
    if (starting)
        throw new RuntimeException("can't add endpoint after starting lifecycle");
}
 
源代码10 项目: seed   文件: WebSocketPlugin.java
@Override
public Collection<ClasspathScanRequest> classpathScanRequests() {
    if (isEnabled()) {
        return classpathScanRequestBuilder().annotationType(ServerEndpoint.class).annotationType(
                ClientEndpoint.class).build();
    } else {
        return super.classpathScanRequests();
    }
}
 
源代码11 项目: seed   文件: WebSocketPlugin.java
@Override
public InitState initialize(InitContext initContext) {
    if (isEnabled()) {
        serverEndpointClasses.addAll(initContext.scannedClassesByAnnotationClass().get(ServerEndpoint.class));
        clientEndpointClasses.addAll(initContext.scannedClassesByAnnotationClass().get(ClientEndpoint.class));
    }
    return InitState.INITIALIZED;
}
 
源代码12 项目: rest-utils   文件: SaslTest.java
@Override
protected void registerWebSocketEndpoints(final ServerContainer container) {
  try {
    container.addEndpoint(ServerEndpointConfig.Builder
        .create(
            WSEndpoint.class,
            WSEndpoint.class.getAnnotation(ServerEndpoint.class).value()
        ).build());
  } catch (DeploymentException e) {
    fail("Invalid test");
  }
}
 
源代码13 项目: rest-utils   文件: CustomInitTest.java
@Override
public void accept(final ServletContextHandler context) {
  try {
    ServerContainer container = context.getBean(ServerContainer.class);

    container.addEndpoint(ServerEndpointConfig.Builder
        .create(
            WSEndpoint.class,
            WSEndpoint.class.getAnnotation(ServerEndpoint.class).value()
        ).build());
  } catch (Exception e) {
    fail("Invalid test");
  }
}
 
源代码14 项目: jetty-web-sockets-jsr356   文件: AppConfig.java
@PostConstruct
public void init() throws DeploymentException {
	container = ( ServerContainer )context.getServletContext().getAttribute( javax.websocket.server.ServerContainer.class.getName() );
	
	container.addEndpoint( 
		new AnnotatedServerEndpointConfig( BroadcastServerEndpoint.class, BroadcastServerEndpoint.class.getAnnotation( ServerEndpoint.class )  ) {
			@Override
			public Configurator getConfigurator() {
				return configurator();
			}
		}
	);
}
 
源代码15 项目: msf4j   文件: EndpointValidator.java
private boolean validateURI(Object webSocketEndpoint) throws WebSocketEndpointAnnotationException {
    if (webSocketEndpoint.getClass().isAnnotationPresent(ServerEndpoint.class)) {
        return true;
    }
    throw new WebSocketEndpointAnnotationException("Server Endpoint is not defined.");
}
 
public InstJsrAnnotatedEventDriver(WebSocketPolicy policy, EndpointInstance ei, JsrEvents<ServerEndpoint, ServerEndpointConfig> events, MetricRegistry metrics) {
    super(policy, ei, events);
    this.edm = new EventDriverMetrics(metadata.getEndpointClass(), metrics);
}
 
源代码17 项目: hammock   文件: UndertowWebSocketExtension.java
public void findWebSocketServers(@Observes @WithAnnotations(ServerEndpoint.class)ProcessAnnotatedType<?> pat) {
    endpointClasses.add(pat.getAnnotatedType().getJavaClass());
}
 
源代码18 项目: msf4j   文件: EndpointDispatcher.java
/**
 * Extract the URI from the endpoint.
 * <b>Note that it is better use validateEndpointUri method to validate the endpoint uri
 * before getting it out if needed. Otherwise it will cause issues. Use this method only and only if
 * it is sure that endpoint contains {@link ServerEndpoint} defined.</b>
 *
 * @param webSocketEndpoint WebSocket endpoint which the URI should be extracted.
 * @return the URI of the Endpoint as a String.
 */
public String getUri(Object webSocketEndpoint) {
    return webSocketEndpoint.getClass().getAnnotation(ServerEndpoint.class).value();
}