You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2008/06/03 06:04:19 UTC

svn commit: r662633 - in /webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi: Activator.java util/HttpServiceTracker.java util/Logger.java

Author: dims
Date: Mon Jun  2 21:04:19 2008
New Revision: 662633

URL: http://svn.apache.org/viewvc?rev=662633&view=rev
Log:
add a tracker for HttpService(s)

Added:
    webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/util/HttpServiceTracker.java
Modified:
    webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/Activator.java
    webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/util/Logger.java

Modified: webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/Activator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/Activator.java?rev=662633&r1=662632&r2=662633&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/Activator.java (original)
+++ webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/Activator.java Mon Jun  2 21:04:19 2008
@@ -19,13 +19,13 @@
 
 package org.apache.axis2.extensions.osgi;
 
+import org.apache.axis2.extensions.osgi.util.HttpServiceTracker;
 import org.apache.axis2.extensions.osgi.util.Logger;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleEvent;
 import org.osgi.framework.BundleListener;
-import org.osgi.framework.ServiceReference;
 import org.osgi.service.http.HttpService;
 import org.osgi.service.log.LogService;
 
@@ -34,26 +34,14 @@
     BundleContext context;
     OSGiAxis2Servlet servlet = new OSGiAxis2Servlet();
     ServiceRegistry registry = null;
-    HttpService httpServ = null;
+    HttpServiceTracker httpTracker = null;
     Logger logger;
 
     public void start(BundleContext context) throws Exception {
         this.context = context;
-        logger = new Logger(context);
-        logger.log(LogService.LOG_INFO,"[Axis2/OSGi] Registering Axis2 Servlet");
-
-        ServiceReference sr = context.getServiceReference(HttpService.class.getName());
-        if (sr != null) {
-            HttpService httpServ = (HttpService) context.getService(sr);
-            try {
-                httpServ.registerServlet("/axis2",
-                        servlet, null, null);
-            } catch (Exception e) {
-                logger.log(LogService.LOG_ERROR,"[Axis2/OSGi] Exception registering Axis Servlet",
-                        e);
-            }
-        }
 
+        logger = new Logger(context);
+        httpTracker = new HttpServiceTracker(context, servlet, logger); 
         registry = new ServiceRegistry(servlet, logger);
 
         logger.log(LogService.LOG_INFO, "[Axis2/OSGi] Starting Bundle Listener");
@@ -92,6 +80,7 @@
     public void stop(BundleContext context) throws Exception {
         logger.log(LogService.LOG_INFO,"[Axis2/OSGi] Stopping all services and the Bundle Listener");
         this.context.removeBundleListener(this);
+        httpTracker.close();
         logger.close();
         registry.close();
     }

Added: webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/util/HttpServiceTracker.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/util/HttpServiceTracker.java?rev=662633&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/util/HttpServiceTracker.java (added)
+++ webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/util/HttpServiceTracker.java Mon Jun  2 21:04:19 2008
@@ -0,0 +1,43 @@
+package org.apache.axis2.extensions.osgi.util;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.http.HttpService;
+import org.osgi.service.http.NamespaceException;
+import org.osgi.service.log.LogService;
+import org.osgi.util.tracker.ServiceTracker;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+
+
+public class HttpServiceTracker extends ServiceTracker {
+    int count;
+    Servlet servlet;
+    Logger logger;
+
+    public HttpServiceTracker(BundleContext context, Servlet servlet,
+        Logger logger) {
+        super(context, HttpService.class.getName(), null);
+        this.servlet = servlet;
+        this.logger = logger;
+        open();
+    }
+
+    public Object addingService(ServiceReference reference) {
+        try {
+            HttpService http = (HttpService) super.addingService(reference);
+            installServlet(http);
+            return http;
+        } catch (Exception nse) {
+            logger.log(LogService.LOG_ERROR,"Unable to install servlet: ", nse);
+        }
+
+        return null;
+    }
+
+    private void installServlet(HttpService http) throws ServletException, NamespaceException {
+        http.registerServlet("/axis2", servlet, null, null);
+        logger.log(LogService.LOG_INFO,"Installed Axis2 Servlet in http service " + http);
+    }
+}

Modified: webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/util/Logger.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/util/Logger.java?rev=662633&r1=662632&r2=662633&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/util/Logger.java (original)
+++ webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/util/Logger.java Mon Jun  2 21:04:19 2008
@@ -16,11 +16,11 @@
 
     public void log(int i, java.lang.String s) {
         LogService service = getLogService();
-        if(service == null){
-            print(i, s);
-        } else {
+        if(service != null){
             service.log(i, s);
+            //return;
         }
+        print(i, s);
     }
 
     private void print(int i, String s) {
@@ -32,7 +32,7 @@
                 System.out.print("[INFO]    ");
                 break;
             case LogService.LOG_WARNING: 
-                System.out.print("[WARNDING]");
+                System.out.print("[WARNING]");
                 break;
             case LogService.LOG_DEBUG: 
                 System.out.print("[DEBUG]   ");
@@ -43,11 +43,11 @@
 
     public void log(int i, java.lang.String s, java.lang.Throwable throwable) {
         LogService service = getLogService();
-        if(service == null){
-            print(i, s);
-            throwable.printStackTrace(System.out);
-        } else {
+        if(service != null){
             service.log(i, s, throwable);
+            //return;
         }
+        print(i, s);
+        throwable.printStackTrace(System.out);
     }
 }