tuscany-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From fm...@apache.org
Subject svn commit: r1133713 - in /tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime: ./ src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/
Date Thu, 09 Jun 2011 08:35:42 GMT
Author: fmoga
Date: Thu Jun  9 08:35:42 2011
New Revision: 1133713

URL: http://svn.apache.org/viewvc?rev=1133713&view=rev
Log:
Use the BroadcasterLifeCyclePolicy and new callback mechanism from Atmosphere to improve resource
cleanup. Move to Atmosphere 0.8-SNAPSHOT.

Modified:
    tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/pom.xml
    tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometCallbackInvoker.java
    tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java
    tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java

Modified: tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/pom.xml?rev=1133713&r1=1133712&r2=1133713&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/pom.xml Thu Jun  9 08:35:42 2011
@@ -61,7 +61,7 @@
         <dependency>
         	<groupId>org.atmosphere</groupId>
         	<artifactId>atmosphere-jersey</artifactId>
-        	<version>0.7.1</version>
+        	<version>0.8-SNAPSHOT</version>
         	<scope>compile</scope>
         </dependency>
 	</dependencies>
@@ -78,14 +78,12 @@
 			</releases>
 		</repository>
 		<repository>
-			<id>oss-sonatype-repository</id>
+			<id>sonatype-releases</id>
 			<url>https://oss.sonatype.org/content/repositories/releases/</url>
-			<snapshots>
-				<enabled>true</enabled>
-			</snapshots>
-			<releases>
-				<enabled>true</enabled>
-			</releases>
+		</repository>
+		<repository>
+			<id>sonatype-snapshots</id>
+			<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
 		</repository>
 </repositories>
 

Modified: tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometCallbackInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometCallbackInvoker.java?rev=1133713&r1=1133712&r2=1133713&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometCallbackInvoker.java
(original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometCallbackInvoker.java
Thu Jun  9 08:35:42 2011
@@ -65,9 +65,6 @@ public class CometCallbackInvoker implem
         Message response = new MessageImpl();
         if (broadcaster == null) {
             response.setBody(Status.CLIENT_DISCONNECTED);
-        } else if (broadcaster.getAtmosphereResources().isEmpty()) {
-            CometSessionManager.remove(sessionId);
-            response.setBody(Status.CLIENT_DISCONNECTED);
         } else {
             String callbackMethod = msg.getTo().getURI();
             Object[] body = msg.getBody();

Modified: tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java?rev=1133713&r1=1133712&r2=1133713&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java
(original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java
Thu Jun  9 08:35:42 2011
@@ -56,6 +56,16 @@ public final class ServletFactory {
     private static final String JS_PACKAGE = "org.apache.tuscany.sca.binding.comet.runtime.javascript";
 
     /**
+     * Init-param key for Atmosphere filters.
+     */
+    private static final String FILTERS_KEY = "org.atmosphere.cpr.broadcastFilterClasses";
+
+    /**
+     * Defined filters.
+     */
+    private static final String FILTERS = "org.atmosphere.client.JavascriptClientFilter";
+
+    /**
      * Path where services will be exposed.
      */
     public static final String PATH = "/tuscany-comet/*";
@@ -99,8 +109,9 @@ public final class ServletFactory {
     private static String registerCometServlet(ServletHost servletHost) {
         if (ServletFactory.cometServlet == null) {
             ServletFactory.cometServlet = new AtmosphereServlet();
-            ServletFactory.cometServlet.addInitParameter(ServletFactory.PACKAGE_KEY, ServletFactory.HANDLER_PACKAGE);
-            String uri = servletHost.addServletMapping(ServletFactory.PATH, ServletFactory.cometServlet);
+            ServletFactory.cometServlet.addInitParameter(PACKAGE_KEY, HANDLER_PACKAGE);
+//            ServletFactory.cometServlet.addInitParameter(FILTERS_KEY, FILTERS);
+            String uri = servletHost.addServletMapping(PATH, cometServlet);
             return uri;
         }
         return null;
@@ -109,8 +120,8 @@ public final class ServletFactory {
     private static void registerJavascriptServlet(ServletHost servletHost) {
         if (ServletFactory.javascriptServlet == null) {
             ServletFactory.javascriptServlet = new AtmosphereServlet();
-            ServletFactory.javascriptServlet.addInitParameter(ServletFactory.PACKAGE_KEY,
ServletFactory.JS_PACKAGE);
-            servletHost.addServletMapping(ServletFactory.JS_PATH, ServletFactory.javascriptServlet);
+            ServletFactory.javascriptServlet.addInitParameter(PACKAGE_KEY, JS_PACKAGE);
+            servletHost.addServletMapping(JS_PATH, javascriptServlet);
         }
     }
 
@@ -121,8 +132,8 @@ public final class ServletFactory {
      *            the underlying servlet host.
      */
     public static void unregisterServlet(final ServletHost servletHost) {
-        servletHost.removeServletMapping(ServletFactory.PATH);
-        servletHost.removeServletMapping(ServletFactory.JS_PATH);
+        servletHost.removeServletMapping(PATH);
+        servletHost.removeServletMapping(JS_PATH);
     }
 
 }

Modified: tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java?rev=1133713&r1=1133712&r2=1133713&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java
(original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java
Thu Jun  9 08:35:42 2011
@@ -43,6 +43,9 @@ import org.apache.tuscany.sca.interfaced
 import org.apache.tuscany.sca.invocation.Message;
 import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
 import org.atmosphere.cpr.Broadcaster;
+import org.atmosphere.cpr.BroadcasterLifeCyclePolicy;
+import org.atmosphere.cpr.BroadcasterLifeCyclePolicyListener;
+import org.atmosphere.cpr.BroadcasterLifeCyclePolicy.ATMOSPHERE_RESOURCE_POLICY;
 import org.atmosphere.jersey.JerseyBroadcaster;
 import org.atmosphere.jersey.SuspendResponse;
 
@@ -73,6 +76,10 @@ public class CometBindingHandler {
         Broadcaster broadcaster = CometSessionManager.get(sessionId);
         if (broadcaster == null) {
             broadcaster = new JerseyBroadcaster(sessionId);
+            BroadcasterLifeCyclePolicy policy = new BroadcasterLifeCyclePolicy.Builder().policy(
+                    ATMOSPHERE_RESOURCE_POLICY.EMPTY_DESTROY).build();
+            broadcaster.setBroadcasterLifeCyclePolicy(policy);
+            broadcaster.addBroadcasterLifeCyclePolicyListener(new CometBroadcasterLifeCyclePolicyListener(sessionId));
             CometSessionManager.add(sessionId, broadcaster);
         }
         return new SuspendResponse.SuspendResponseBuilder<String>().broadcaster(broadcaster).outputComments(true)
@@ -110,9 +117,8 @@ public class CometBindingHandler {
         if (!isVoidReturnType) {
             Object response = wire.invoke(operation, args);
             Broadcaster broadcaster = CometSessionManager.get(sessionId);
-            broadcaster.broadcast(callbackMethod + "($.secureEvalJSON('" + gson.toJson(response)
+ "'))");
-            if (broadcaster.getAtmosphereResources().isEmpty()) {
-                CometSessionManager.remove(sessionId);
+            if (broadcaster != null) {
+                broadcaster.broadcast(callbackMethod + "($.secureEvalJSON('" + gson.toJson(response)
+ "'))");
             }
         } else {
             wire.invoke(operation, msg);
@@ -205,4 +211,27 @@ public class CometBindingHandler {
         return objects.toArray(new String[] {});
     }
 
+    public class CometBroadcasterLifeCyclePolicyListener implements BroadcasterLifeCyclePolicyListener
{
+
+        private String sessionId;
+
+        public CometBroadcasterLifeCyclePolicyListener(String sessionId) {
+            this.sessionId = sessionId;
+        }
+
+        @Override
+        public void onDestroy() {
+        }
+
+        @Override
+        public void onEmpty() {
+            CometSessionManager.remove(sessionId);
+        }
+
+        @Override
+        public void onIdle() {
+        }
+
+    }
+
 }



Mime
View raw message