WebSockets mit Jersey und Guice

imox

Aktives Mitglied
Hey Leute,

ich hab eine WebApp auf Grundlage von Jersey, Guice und Shiro. Ich hatte bisher nie WebSockets gebraucht, die ich aber jetzt versuchen einzubauen.

Ich habe schon recht viel gegooglet aber nicht so viel gefunden. Und eigentlich fast alles das gleich wie dass hier: https://stackoverflow.com/questions/27499800/tomcat8-websockets-jsr-356-with-guice-3-0

Hier mal meine GuiceConfig. Falls noch die Moduleklassen gebraucht werden um mir weiter zu helfen poste ich die gern noch.

Also ich hatte wie in dem Beispiel nur die Klassen erstellt aber funktioniert leider nicht. Der Tomcat startet aber wenn ich ein WebSocket in JS aufrufen kommt immer nur:

Code:
WebSocket connection to 'ws://localhost:8080/websocket/test' failed: Error during WebSocket handshake: Unexpected response code: 200

Vielen Dank schon mal
Cheers Imox

Code:
package portal.platform.guice;

import java.util.Set;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.guice.aop.ShiroAopModule;
import org.apache.shiro.mgt.SecurityManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.google.inject.persist.jpa.JpaPersistModule;
import com.google.inject.servlet.GuiceServletContextListener;

import de.parceval.portal.platform.guice.util.ShutdownListener;
import de.parceval.portal.platform.guice.util.StartupListener;
import de.parceval.portal.util.LogUtils;

public class GuiceConfig extends GuiceServletContextListener {

    private static final Logger log = LoggerFactory.getLogger(GuiceConfig.class);
    private volatile Set<ShutdownListener> shutdownListeners;

    private ServletContext servletContext;

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        this.servletContext = servletContextEvent.getServletContext();
        super.contextInitialized(servletContextEvent);
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        if (shutdownListeners != null)
            for (ShutdownListener listener : shutdownListeners)
                listener.shutdown();
        super.contextDestroyed(servletContextEvent);
    }

    @Override
    protected Injector getInjector() {
        Module[] modules = getModules("prod");
        log.debug("Creating guice injector with modules {}", LogUtils.collectClasses(modules));
        Injector injector = Guice.createInjector(modules);
        SecurityManager securityManager = injector.getInstance(SecurityManager.class);
        SecurityUtils.setSecurityManager(securityManager);
        Listeners listeners = injector.getInstance(Listeners.class);
        this.shutdownListeners = listeners.shutdown;
        runStartupListeners(listeners.startup);
        return injector;
    }

    private void runStartupListeners(Set<StartupListener> listeners) {
        if (listeners != null)
            for (StartupListener listener : listeners)
                listener.startup();
    }

    Module[] getModules(String environment) {
        String resourcePackages = PropertiesModule.getProperties().getProperty("jersey.resource.packages");
        return new Module[] { new WebappModule(), new ShiroAopModule(), new ShiroModule(servletContext),
                new JpaPersistModule(environment), new JerseyModule(resourcePackages), new EhCacheModule() };
    }

    private static final class Listeners {

        @Inject(optional = true)
        private Set<ShutdownListener> shutdown;

        @Inject(optional = true)
        private Set<StartupListener> startup;

    }

}
 

Ähnliche Java Themen

Neue Themen


Oben