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:
Vielen Dank schon mal
Cheers Imox
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;
}
}