You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2011/01/05 20:02:18 UTC

svn commit: r1055583 - in /mina/vysper/trunk: ./ examples/ examples/embedded-war/ examples/embedded-war/src/ examples/embedded-war/src/main/ examples/embedded-war/src/main/java/ examples/embedded-war/src/main/java/org/ examples/embedded-war/src/main/ja...

Author: ngn
Date: Wed Jan  5 19:02:17 2011
New Revision: 1055583

URL: http://svn.apache.org/viewvc?rev=1055583&view=rev
Log:
Add example for Vysper embedded in a WAR, including websocket support

Added:
    mina/vysper/trunk/examples/
    mina/vysper/trunk/examples/embedded-war/
    mina/vysper/trunk/examples/embedded-war/pom.xml
    mina/vysper/trunk/examples/embedded-war/src/
    mina/vysper/trunk/examples/embedded-war/src/main/
    mina/vysper/trunk/examples/embedded-war/src/main/java/
    mina/vysper/trunk/examples/embedded-war/src/main/java/org/
    mina/vysper/trunk/examples/embedded-war/src/main/java/org/apache/
    mina/vysper/trunk/examples/embedded-war/src/main/java/org/apache/vysper/
    mina/vysper/trunk/examples/embedded-war/src/main/java/org/apache/vysper/xmpp/
    mina/vysper/trunk/examples/embedded-war/src/main/java/org/apache/vysper/xmpp/exemples/
    mina/vysper/trunk/examples/embedded-war/src/main/java/org/apache/vysper/xmpp/exemples/embeddedwar/
    mina/vysper/trunk/examples/embedded-war/src/main/java/org/apache/vysper/xmpp/exemples/embeddedwar/VysperListener.java
    mina/vysper/trunk/examples/embedded-war/src/main/resources/
    mina/vysper/trunk/examples/embedded-war/src/main/webapp/
    mina/vysper/trunk/examples/embedded-war/src/main/webapp/WEB-INF/
    mina/vysper/trunk/examples/embedded-war/src/main/webapp/WEB-INF/bogus_mina_tls.cert   (with props)
    mina/vysper/trunk/examples/embedded-war/src/main/webapp/WEB-INF/web.xml
    mina/vysper/trunk/examples/embedded-war/src/test/
    mina/vysper/trunk/examples/embedded-war/src/test/java/
    mina/vysper/trunk/examples/embedded-war/src/test/resources/
    mina/vysper/trunk/examples/pom.xml
    mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketBackedSessionContext.java
      - copied, changed from r1055401, mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebsocketsBackedSessionContext.java
    mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketEndpoint.java
      - copied, changed from r1055396, mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebsocketsEndpoint.java
    mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/XmppWebSocketServlet.java
      - copied, changed from r1055396, mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/XmppWebsocketsServlet.java
Removed:
    mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebsocketsBackedSessionContext.java
    mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebsocketsEndpoint.java
    mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/XmppWebsocketsServlet.java
Modified:
    mina/vysper/trunk/pom.xml
    mina/vysper/trunk/server/extensions/websockets/pom.xml
    mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/ServerMain.java

Added: mina/vysper/trunk/examples/embedded-war/pom.xml
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/examples/embedded-war/pom.xml?rev=1055583&view=auto
==============================================================================
--- mina/vysper/trunk/examples/embedded-war/pom.xml (added)
+++ mina/vysper/trunk/examples/embedded-war/pom.xml Wed Jan  5 19:02:17 2011
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+	<!--
+		Licensed to the Apache Software Foundation (ASF) under one or more
+		contributor license agreements. See the NOTICE file distributed with
+		this work for additional information regarding copyright ownership.
+		The ASF licenses this file to you under the Apache License, Version
+		2.0 (the "License"); you may not use this file except in compliance
+		with the License. You may obtain a copy of the License at
+
+		http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+		applicable law or agreed to in writing, software distributed under the
+		License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+		CONDITIONS OF ANY KIND, either express or implied. See the License for
+		the specific language governing permissions and limitations under the
+		License.
+	-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<parent>
+		<artifactId>vysper-extensions</artifactId>
+		<groupId>org.apache.vysper</groupId>
+		<version>0.7-SNAPSHOT</version>
+	</parent>
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.apache.vysper.examples</groupId>
+	<artifactId>vysper-embedded-war</artifactId>
+	<name>Example of Apache Vysper embedded in a WAR</name>
+	<version>0.7-SNAPSHOT</version>
+	<packaging>war</packaging>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.vysper.extensions</groupId>
+			<artifactId>vysper-websockets</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse.jetty</groupId>
+			<artifactId>jetty-websocket</artifactId>
+			<version>7.2.1.v20101111</version>
+<!--			<scope>provided</scope>-->
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse.jetty</groupId>
+			<artifactId>jetty-servlet</artifactId>
+			<version>7.2.1.v20101111</version>
+<!--			<scope>provided</scope>-->
+		</dependency>
+
+
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-log4j12</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+		</dependency>
+	</dependencies>
+
+</project>

Added: mina/vysper/trunk/examples/embedded-war/src/main/java/org/apache/vysper/xmpp/exemples/embeddedwar/VysperListener.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/examples/embedded-war/src/main/java/org/apache/vysper/xmpp/exemples/embeddedwar/VysperListener.java?rev=1055583&view=auto
==============================================================================
--- mina/vysper/trunk/examples/embedded-war/src/main/java/org/apache/vysper/xmpp/exemples/embeddedwar/VysperListener.java (added)
+++ mina/vysper/trunk/examples/embedded-war/src/main/java/org/apache/vysper/xmpp/exemples/embeddedwar/VysperListener.java Wed Jan  5 19:02:17 2011
@@ -0,0 +1,69 @@
+package org.apache.vysper.xmpp.exemples.embeddedwar;
+
+import java.io.File;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+import org.apache.vysper.mina.TCPEndpoint;
+import org.apache.vysper.storage.StorageProviderRegistry;
+import org.apache.vysper.storage.inmemory.MemoryStorageProviderRegistry;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.authorization.AccountManagement;
+import org.apache.vysper.xmpp.extension.websockets.XmppWebSocketServlet;
+import org.apache.vysper.xmpp.modules.extension.xep0054_vcardtemp.VcardTempModule;
+import org.apache.vysper.xmpp.modules.extension.xep0092_software_version.SoftwareVersionModule;
+import org.apache.vysper.xmpp.modules.extension.xep0119_xmppping.XmppPingModule;
+import org.apache.vysper.xmpp.modules.extension.xep0202_entity_time.EntityTimeModule;
+import org.apache.vysper.xmpp.server.XMPPServer;
+
+public class VysperListener implements ServletContextListener {
+
+    private XMPPServer server;
+
+    public void contextInitialized(ServletContextEvent sce) {
+        System.out.println("starting listener");
+        try {
+            String domain = sce.getServletContext().getInitParameter("domain");
+            
+            StorageProviderRegistry providerRegistry = new MemoryStorageProviderRegistry();
+    
+            final String adminJID = "admin@" + domain;
+            final AccountManagement accountManagement = (AccountManagement) providerRegistry
+                    .retrieve(AccountManagement.class);
+    
+            String initialPassword = System.getProperty("vysper.admin.initial.password", "CHOOSE SECURE PASSWORD");
+                if (!accountManagement.verifyAccountExists(EntityImpl.parse(adminJID))) {
+                    accountManagement.addUser(adminJID, initialPassword);
+                }
+    
+            server = new XMPPServer(domain);
+            server.addEndpoint(new TCPEndpoint());
+            //server.addEndpoint(new StanzaSessionFactory());
+            server.setStorageProviderRegistry(providerRegistry);
+    
+            server.setTLSCertificateInfo(sce.getServletContext().getResourceAsStream("WEB-INF/bogus_mina_tls.cert"), "password");
+    
+            try {
+                server.start();
+                System.out.println("vysper server is running...");
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+    
+            server.addModule(new SoftwareVersionModule());
+            server.addModule(new EntityTimeModule());
+            server.addModule(new VcardTempModule());
+            server.addModule(new XmppPingModule());
+            
+            sce.getServletContext().setAttribute(XmppWebSocketServlet.SERVER_RUNTIME_CONTEXT_ATTRIBUTE, server.getServerRuntimeContext());
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public void contextDestroyed(ServletContextEvent sce) {
+        server.stop();
+    }
+
+}

Added: mina/vysper/trunk/examples/embedded-war/src/main/webapp/WEB-INF/bogus_mina_tls.cert
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/examples/embedded-war/src/main/webapp/WEB-INF/bogus_mina_tls.cert?rev=1055583&view=auto
==============================================================================
Binary file - no diff available.

Propchange: mina/vysper/trunk/examples/embedded-war/src/main/webapp/WEB-INF/bogus_mina_tls.cert
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: mina/vysper/trunk/examples/embedded-war/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/examples/embedded-war/src/main/webapp/WEB-INF/web.xml?rev=1055583&view=auto
==============================================================================
--- mina/vysper/trunk/examples/embedded-war/src/main/webapp/WEB-INF/web.xml (added)
+++ mina/vysper/trunk/examples/embedded-war/src/main/webapp/WEB-INF/web.xml Wed Jan  5 19:02:17 2011
@@ -0,0 +1,42 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+	Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements. See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to you under the Apache License, Version
+	2.0 (the "License"); you may not use this file except in compliance
+	with the License. You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+	applicable law or agreed to in writing, software distributed under the
+	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+	CONDITIONS OF ANY KIND, either express or implied. See the License for
+	the specific language governing permissions and limitations under the
+	License.
+-->
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+	version="2.4">
+
+	<description>Embedded Vysper</description>
+
+	<context-param>
+		<param-name>domain</param-name>
+		<param-value>vysper.org</param-value>
+	</context-param>
+
+	<listener>
+		<listener-class>org.apache.vysper.xmpp.exemples.embeddedwar.VysperListener</listener-class>
+	</listener>
+
+
+	<servlet>
+		<servlet-name>WebSocket Servlet</servlet-name>
+		<servlet-class>org.apache.vysper.xmpp.extension.websockets.XmppWebSocketServlet</servlet-class>
+		<load-on-startup>1</load-on-startup>
+	</servlet>
+	<servlet-mapping>
+		<servlet-name>WebSocket Servlet</servlet-name>
+		<url-pattern>/ws</url-pattern>
+	</servlet-mapping>
+</web-app>
\ No newline at end of file

Added: mina/vysper/trunk/examples/pom.xml
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/examples/pom.xml?rev=1055583&view=auto
==============================================================================
--- mina/vysper/trunk/examples/pom.xml (added)
+++ mina/vysper/trunk/examples/pom.xml Wed Jan  5 19:02:17 2011
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+ 
+   http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License. -->  
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <parent>
+        <artifactId>vysper-parent</artifactId>
+        <groupId>org.apache.vysper</groupId>
+        <version>0.7-SNAPSHOT</version>
+    </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.vysper.examples</groupId>
+  <artifactId>vysper-examples</artifactId>
+  <name>Apache Vysper Server</name>
+  <version>0.7-SNAPSHOT</version>
+   <packaging>pom</packaging>
+
+  <modules>
+    <module>embedded-war</module>
+  </modules>
+</project>

Modified: mina/vysper/trunk/pom.xml
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/pom.xml?rev=1055583&r1=1055582&r2=1055583&view=diff
==============================================================================
--- mina/vysper/trunk/pom.xml (original)
+++ mina/vysper/trunk/pom.xml Wed Jan  5 19:02:17 2011
@@ -124,6 +124,13 @@
       </dependency>
 
       <dependency>
+        <groupId>commons-io</groupId>
+        <artifactId>commons-io</artifactId>
+        <version>1.4</version>
+      </dependency>
+
+
+      <dependency>
         <groupId>net.sf.ehcache</groupId>
         <artifactId>ehcache-core</artifactId>
         <version>2.2.0</version>
@@ -186,6 +193,12 @@
         <version>${project.version}</version>
       </dependency>
 
+      <dependency>
+        <groupId>org.apache.vysper.extensions</groupId>
+        <artifactId>vysper-websockets</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
       <!-- Test dependencies -->
       <dependency>
         <groupId>junit</groupId>
@@ -361,6 +374,7 @@
     <module>nbxml</module>
     <module>server</module>
     <module>dist</module>
+    <module>examples</module>
     <module>demo/pubsub/client</module>
   </modules>
 

Modified: mina/vysper/trunk/server/extensions/websockets/pom.xml
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/websockets/pom.xml?rev=1055583&r1=1055582&r2=1055583&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/websockets/pom.xml (original)
+++ mina/vysper/trunk/server/extensions/websockets/pom.xml Wed Jan  5 19:02:17 2011
@@ -24,7 +24,7 @@
 	</parent>
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>org.apache.vysper.extensions</groupId>
-	<artifactId>websockets</artifactId>
+	<artifactId>vysper-websockets</artifactId>
 	<name>Apache Vysper Websockets support</name>
 	<version>0.7-SNAPSHOT</version>
 
@@ -53,20 +53,19 @@
 			<version>7.2.1.v20101111</version>
 		</dependency>
 
-		<!-- Runtime dependencies -->
+		<!-- Test dependencies -->
 		<dependency>
 			<groupId>org.slf4j</groupId>
 			<artifactId>slf4j-log4j12</artifactId>
-			<scope>runtime</scope>
+			<scope>test</scope>
 		</dependency>
 
 		<dependency>
 			<groupId>log4j</groupId>
 			<artifactId>log4j</artifactId>
-			<scope>runtime</scope>
+			<scope>test</scope>
 		</dependency>
 
-		<!-- Test dependencies -->
 		<dependency>
 			<groupId>junit</groupId>
 			<artifactId>junit</artifactId>

Modified: mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/ServerMain.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/ServerMain.java?rev=1055583&r1=1055582&r2=1055583&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/ServerMain.java (original)
+++ mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/ServerMain.java Wed Jan  5 19:02:17 2011
@@ -85,7 +85,7 @@ public class ServerMain {
 
         server.addEndpoint(new TCPEndpoint());
 
-        WebsocketsEndpoint wsEndpoint = new WebsocketsEndpoint();
+        WebSocketEndpoint wsEndpoint = new WebSocketEndpoint();
 //        wsEndpoint.setSSLEnabled(true);
 //        wsEndpoint.setSSLCertificateKeystore("src/test/resources/keystore.jks", "password");
         wsEndpoint.setContextPath("/ws");

Copied: mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketBackedSessionContext.java (from r1055401, mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebsocketsBackedSessionContext.java)
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketBackedSessionContext.java?p2=mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketBackedSessionContext.java&p1=mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebsocketsBackedSessionContext.java&r1=1055401&r2=1055583&rev=1055583&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebsocketsBackedSessionContext.java (original)
+++ mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketBackedSessionContext.java Wed Jan  5 19:02:17 2011
@@ -49,17 +49,17 @@ import org.xml.sax.SAXException;
  *
  * @author The Apache MINA Project (dev@mina.apache.org)
  */
-public class WebsocketsBackedSessionContext extends AbstractSessionContext implements WebSocket, StanzaListener, StanzaWriter {
+public class WebSocketBackedSessionContext extends AbstractSessionContext implements WebSocket, StanzaListener, StanzaWriter {
 
     private final static Charset CHARSET = Charset.forName("UTF-8");
     private final static CharsetDecoder CHARSET_DECODER = CHARSET.newDecoder();
     
-    private final static Logger LOG = LoggerFactory.getLogger(WebsocketsBackedSessionContext.class);
+    private final static Logger LOG = LoggerFactory.getLogger(WebSocketBackedSessionContext.class);
 
     private Outbound outbound;
     private NonBlockingXMLReader xmlReader = new DefaultNonBlockingXMLReader();
     
-    public WebsocketsBackedSessionContext(ServerRuntimeContext serverRuntimeContext,
+    public WebSocketBackedSessionContext(ServerRuntimeContext serverRuntimeContext,
             SessionStateHolder sessionStateHolder) {
         super(serverRuntimeContext, sessionStateHolder);
         

Copied: mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketEndpoint.java (from r1055396, mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebsocketsEndpoint.java)
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketEndpoint.java?p2=mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketEndpoint.java&p1=mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebsocketsEndpoint.java&r1=1055396&r2=1055583&rev=1055583&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebsocketsEndpoint.java (original)
+++ mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketEndpoint.java Wed Jan  5 19:02:17 2011
@@ -41,9 +41,9 @@ import org.slf4j.LoggerFactory;
  *
  * @author The Apache MINA Project (dev@mina.apache.org)
  */
-public class WebsocketsEndpoint implements Endpoint {
+public class WebSocketEndpoint implements Endpoint {
 
-    protected final static Logger logger = LoggerFactory.getLogger(WebsocketsEndpoint.class);
+    protected final static Logger logger = LoggerFactory.getLogger(WebSocketEndpoint.class);
 
     protected ServerRuntimeContext serverRuntimeContext;
 
@@ -147,7 +147,7 @@ public class WebsocketsEndpoint implemen
         ServletContextHandler boshContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
         boshContext.setContextPath(contextPath);
 
-        XmppWebsocketsServlet boshServlet = new XmppWebsocketsServlet(serverRuntimeContext);
+        XmppWebSocketServlet boshServlet = new XmppWebSocketServlet(serverRuntimeContext);
         boshContext.addServlet(new ServletHolder(boshServlet), "/ws");
         
         return boshContext;

Copied: mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/XmppWebSocketServlet.java (from r1055396, mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/XmppWebsocketsServlet.java)
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/XmppWebSocketServlet.java?p2=mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/XmppWebSocketServlet.java&p1=mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/XmppWebsocketsServlet.java&r1=1055396&r2=1055583&rev=1055583&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/XmppWebsocketsServlet.java (original)
+++ mina/vysper/trunk/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/XmppWebSocketServlet.java Wed Jan  5 19:02:17 2011
@@ -19,6 +19,7 @@
  */
 package org.apache.vysper.xmpp.extension.websockets;
 
+import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.vysper.xmpp.protocol.SessionStateHolder;
@@ -32,24 +33,42 @@ import org.slf4j.LoggerFactory;
  *
  * @author The Apache MINA Project (dev@mina.apache.org)
  */
-public class XmppWebsocketsServlet extends WebSocketServlet {
+public class XmppWebSocketServlet extends WebSocketServlet {
     
-    private final static Logger LOG = LoggerFactory.getLogger(XmppWebsocketsServlet.class);
+    public static final String SERVER_RUNTIME_CONTEXT_ATTRIBUTE = "org.apache.vysper.xmpp.server.ServerRuntimeContext";
+
+    private final static Logger LOG = LoggerFactory.getLogger(XmppWebSocketServlet.class);
     
     private static final long serialVersionUID = 197413099255392883L;
     private static final String SUB_PROTOCOL = "xmpp";
 
-    private final ServerRuntimeContext serverRuntimeContext;
+    private ServerRuntimeContext serverRuntimeContext;
+    
+    public XmppWebSocketServlet() {
+        // default cstr needed
+    }
     
-    public XmppWebsocketsServlet(ServerRuntimeContext serverRuntimeContext) {
+    public XmppWebSocketServlet(ServerRuntimeContext serverRuntimeContext) {
         this.serverRuntimeContext = serverRuntimeContext;
     }
-
     
+    @Override
+    public void init() throws ServletException {
+        super.init();
+        
+        if(serverRuntimeContext == null) {
+            serverRuntimeContext = (ServerRuntimeContext) getServletContext().getAttribute(SERVER_RUNTIME_CONTEXT_ATTRIBUTE);
+            System.out.println(serverRuntimeContext);
+            if(serverRuntimeContext == null) {
+                throw new RuntimeException("Failed to get Vysper ServerRuntimeContext from servlet context attribute \"" + SERVER_RUNTIME_CONTEXT_ATTRIBUTE + "\"");
+            }
+        }        
+    }
+
     protected WebSocket doWebSocketConnect(HttpServletRequest request, String protocol) {
         if(SUB_PROTOCOL.equals(protocol)) {
             SessionStateHolder sessionStateHolder = new SessionStateHolder();
-            WebsocketsBackedSessionContext sessionContext = new WebsocketsBackedSessionContext(serverRuntimeContext, sessionStateHolder);
+            WebSocketBackedSessionContext sessionContext = new WebSocketBackedSessionContext(serverRuntimeContext, sessionStateHolder);
             return sessionContext;
         } else {
             LOG.warn("Unsupported WebSocket sub protocol, must be \"xmpp\"");