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\"");