/** * Provides the equivalent of {@link #addEndpoint(ServerEndpointConfig)} for publishing plain old java objects (POJOs) that have been annotated as WebSocket endpoints. * * @param pojo * The annotated POJO */ @Override public void addEndpoint(Class<?> pojo) throws DeploymentException { log.debug("addEndpoint: {}", pojo); ServerEndpoint annotation = pojo.getAnnotation(ServerEndpoint.class); if (annotation == null) { throw new DeploymentException(sm.getString("serverContainer.missingAnnotation", pojo.getName())); } String path = annotation.value(); // Validate encoders validateEncoders(annotation.encoders()); // ServerEndpointConfig ServerEndpointConfig sec; Class<? extends Configurator> configuratorClazz = annotation.configurator(); Configurator configurator = null; if (!configuratorClazz.equals(Configurator.class)) { try { configurator = annotation.configurator().getConstructor().newInstance(); } catch (ReflectiveOperationException e) { throw new DeploymentException(sm.getString("serverContainer.configuratorFail", annotation.configurator().getName(), pojo.getClass().getName()), e); } } sec = ServerEndpointConfig.Builder.create(pojo, path).decoders(Arrays.asList(annotation.decoders())).encoders(Arrays.asList(annotation.encoders())).subprotocols(Arrays.asList(annotation.subprotocols())).configurator(configurator).build(); addEndpoint(sec); }
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(); }
decoders(Arrays.asList(annotation.decoders())). encoders(Arrays.asList(annotation.encoders())). subprotocols(Arrays.asList(annotation.subprotocols())).
.create(annotatedClass, wseAnnotation.value()) .encoders(encoderClasses) .decoders(decoderClasses) .subprotocols(Arrays.asList(subProtocols)); if (!wseAnnotation.configurator().equals(ServerEndpointConfig.Configurator.class)) {
.create(annotatedClass, wseAnnotation.value()) .encoders(encoderClasses) .decoders(decoderClasses) .subprotocols(Arrays.asList(subProtocols)); if (!wseAnnotation.configurator().equals(ServerEndpointConfig.Configurator.class)) {
decoders(Arrays.asList(annotation.decoders())). encoders(Arrays.asList(annotation.encoders())). subprotocols(Arrays.asList(annotation.subprotocols())).
decoders(Arrays.asList(annotation.decoders())). encoders(Arrays.asList(annotation.encoders())). subprotocols(Arrays.asList(annotation.subprotocols())).
decoders(Arrays.asList(annotation.decoders())). encoders(Arrays.asList(annotation.encoders())). subprotocols(Arrays.asList(annotation.subprotocols())).
decoders(Arrays.asList(annotation.decoders())). encoders(Arrays.asList(annotation.encoders())). subprotocols(Arrays.asList(annotation.subprotocols())).
private static void install(ServerContainer serverContainer, WebSocketTransport webSocketTransport, String contextPath, String endpointPath, String requestPath) throws DeploymentException { String path = endpointPath + requestPath; // init websocket endpoint List<String> subprotocols = Arrays.asList(new String[] { "xdi" }); List<Extension> extensions = null; List<Class<? extends Encoder>> encoders = null; List<Class<? extends Decoder>> decoders = null; ServerEndpointConfig.Configurator serverEndpointConfigConfigurator = new ServerEndpointConfig.Configurator() { }; ServerEndpointConfig.Builder serverEndpointConfigBuilder = ServerEndpointConfig.Builder.create( WebSocketServerEndpoint.class, path); serverEndpointConfigBuilder.subprotocols(subprotocols); serverEndpointConfigBuilder.extensions(extensions); serverEndpointConfigBuilder.encoders(encoders); serverEndpointConfigBuilder.decoders(decoders); serverEndpointConfigBuilder.configurator(serverEndpointConfigConfigurator); ServerEndpointConfig serverEndpointConfig = serverEndpointConfigBuilder.build(); serverEndpointConfig.getUserProperties().put("webSocketTransport", webSocketTransport); serverEndpointConfig.getUserProperties().put("contextPath", contextPath); serverEndpointConfig.getUserProperties().put("endpointPath", endpointPath); // install websocket endpoint serverContainer.addEndpoint(serverEndpointConfig); // done log.info("Installed WebSocket endpoint at " + path + " with subprotocols " + subprotocols); }
/** * Builds the configuration object using the current attributes * that have been set on this builder object. * * @return a new TyrusServerEndpointConfig object. */ public TyrusServerEndpointConfig build() { final ServerEndpointConfig serverEndpointConfig = ServerEndpointConfig.Builder.create(endpointClass, path).subprotocols(subprotocols) .extensions(extensions).encoders(encoders).decoders(decoders) .configurator(serverEndpointConfigurator).build(); return new DefaultTyrusServerEndpointConfig( serverEndpointConfig, this.maxSessions ); }
/** * Builds the configuration object using the current attributes * that have been set on this builder object. * * @return a new TyrusServerEndpointConfig object. */ public TyrusServerEndpointConfig build() { final ServerEndpointConfig serverEndpointConfig = ServerEndpointConfig.Builder.create(endpointClass, path).subprotocols(subprotocols) .extensions(extensions).encoders(encoders).decoders(decoders) .configurator(serverEndpointConfigurator).build(); return new DefaultTyrusServerEndpointConfig( serverEndpointConfig, this.maxSessions ); }
protected ServerEndpointConfig buildServerEndpointConfig( String path, WebSocket wseAnnotation, Class<?> annotatedClass, String[] subProtocols, List<Class<? extends Encoder>> encoderClasses, List<Class<? extends Decoder>> decoderClasses) { ServerEndpointConfig.Builder builder = ServerEndpointConfig.Builder .create(annotatedClass, path) .encoders(encoderClasses) .decoders(decoderClasses) .subprotocols(Arrays.asList(subProtocols)); if (!wseAnnotation.configurator().equals(ServerEndpointConfig.Configurator.class)) { builder = builder.configurator(Injections.getOrCreate(manager, wseAnnotation.configurator())); } return builder.build(); }