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 de...@apache.org on 2005/02/16 15:12:37 UTC

svn commit: r154018 - in webservices/axis/trunk/java/dev/scratch/prototype2/src: java/org/apache/axis/deployment/DeploymentConstants.java java/org/apache/axis/deployment/DeploymentEngine.java java/org/apache/axis/deployment/repository/utill/WSInfoList.java java/org/apache/axis/deployment/server.xml test-resources/deployment/server.xml

Author: deepal
Date: Wed Feb 16 06:12:34 2005
New Revision: 154018

URL: http://svn.apache.org/viewcvs?view=rev&rev=154018
Log:
provide a way to confgure hot deployment and hot update using server.xml
putiing following paramers

<parameter name="hotdeployment" locked="xsd:false">true</parameter>
    <parameter name="hotupdate" locked="xsd:false">true</parameter>

Modified:
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentConstants.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentEngine.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/repository/utill/WSInfoList.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/server.xml
    webservices/axis/trunk/java/dev/scratch/prototype2/src/test-resources/deployment/server.xml

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentConstants.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentConstants.java?view=diff&r1=154017&r2=154018
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentConstants.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentConstants.java Wed Feb 16 06:12:34 2005
@@ -56,7 +56,7 @@
     String ATTNAME = "name";
     String ATTLOCKED = "locked";
 
-    // for operatiins
+   // for operatiins
     String ATQNAME = "name";
     String ATUSE = "use";
 
@@ -74,6 +74,10 @@
     String JAVAIMPL = "implementation";
 
     String TRANSPORTSTAG = "transports";
-    String TRANSPORTTAG = "transport";
+    String TRANSPORTTAG ="transport";
+
+
+    String HOTDEPLOYMENT = "hotdeployment";
+    String HOTUPDATE ="hotupdate";
 
 }

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentEngine.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentEngine.java?view=diff&r1=154017&r2=154018
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentEngine.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/DeploymentEngine.java Wed Feb 16 06:12:34 2005
@@ -1,28 +1,39 @@
 package org.apache.axis.deployment;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+
 import org.apache.axis.deployment.repository.utill.HDFileItem;
 import org.apache.axis.deployment.repository.utill.UnZipJAR;
 import org.apache.axis.deployment.repository.utill.WSInfo;
 import org.apache.axis.deployment.scheduler.DeploymentIterator;
 import org.apache.axis.deployment.scheduler.Scheduler;
 import org.apache.axis.deployment.scheduler.SchedulerTask;
+import org.apache.axis.deployment.listener.RepositoryListenerImpl;
 import org.apache.axis.description.*;
-import org.apache.axis.engine.*;
+import org.apache.axis.engine.AxisFault;
+import org.apache.axis.engine.EngineRegistry;
+import org.apache.axis.engine.EngineRegistryImpl;
+import org.apache.axis.engine.Handler;
+import org.apache.axis.engine.Provider;
 import org.apache.axis.phaseresolver.PhaseException;
 import org.apache.axis.phaseresolver.PhaseResolver;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 
 /**
  * Copyright 2001-2004 The Apache Software Foundation.
@@ -42,6 +53,12 @@
 public class DeploymentEngine implements DeploymentConstants {
     private Log log = LogFactory.getLog(getClass());
     private final Scheduler scheduler = new Scheduler();
+
+    private boolean hotdeployment = true;   //to do hot deployment or not
+    private boolean hotupdate = true;  // to do hot update or not
+
+
+
     /**
      * This will store all the web Services to deploy
      */
@@ -84,33 +101,32 @@
      */
 
     public DeploymentEngine(String RepositaryName) throws DeploymentException {
-        this(RepositaryName, "server.xml");
+        this(RepositaryName,"server.xml");
 
     }
-
     public DeploymentEngine(String RepositaryName, String serverXMLFile) throws DeploymentException {
         this.folderName = RepositaryName;
         File repository = new File(RepositaryName);
-        if (!repository.exists()) {
+        if(!repository.exists()){
             repository.mkdirs();
-            File servcies = new File(repository, "services");
-            File modules = new File(repository, "modules");
+            File servcies = new File(repository,"services");
+            File modules = new File(repository,"modules");
             modules.mkdirs();
             servcies.mkdirs();
         }
-        File serverConf = new File(repository, serverXMLFile);
-        if (!serverConf.exists()) {
+        File serverConf = new File(repository,serverXMLFile);
+        if(!serverConf.exists()){
             ClassLoader cl = Thread.currentThread().getContextClassLoader();
             InputStream in = cl.getResourceAsStream("org/apache/axis/deployment/server.xml");
-            if (in != null) {
+            if(in != null){
                 try {
                     serverConf.createNewFile();
                     FileOutputStream out = new FileOutputStream(serverConf);
                     int BUFSIZE = 512; // since only a test file going to load , the size has selected
                     byte[] buf = new byte[BUFSIZE];
                     int read;
-                    while ((read = in.read(buf)) > 0) {
-                        out.write(buf, 0, read);
+                    while((read = in.read(buf)) > 0){
+                        out.write(buf,0,read);
                     }
                     in.close();
                     out.close();
@@ -119,7 +135,7 @@
                 }
 
 
-            } else {
+            } else{
                 throw new DeploymentException("can not found org/apache/axis/deployment/server.xml");
 
             }
@@ -139,7 +155,6 @@
 
     /**
      * tio get ER
-     *
      * @return
      */
     public EngineRegistry getEngineRegistry() {
@@ -155,7 +170,7 @@
      */
     public EngineRegistry start() throws AxisFault, PhaseException, DeploymentException, XMLStreamException {
         //String fileName;
-        if (serverconfigName == null) {
+        if(serverconfigName == null) {
             throw new DeploymentException("path to Server.xml can not be NUll");
         }
         File tempfile = new File(serverconfigName);
@@ -165,23 +180,48 @@
             DeploymentParser parser = new DeploymentParser(in, this);
             parser.procesServerXML(server);
         } catch (FileNotFoundException e) {
-            throw new AxisFault("Exception at deployment", e);
+            throw new AxisFault("Exception at deployment",e);
         }
-
-        startSearch(this);
-        valideServerModule();
+        setDeploymentFeatures();
+        if(hotdeployment){
+            startSearch(this);
+        } else {
+            RepositoryListenerImpl repository = new RepositoryListenerImpl(folderName,this);
+        }
+        valideServerModule() ;
         return engineRegistry;
     }
 
     /**
+     * To set hotdeployment and hot update
+     */
+    private void setDeploymentFeatures() {
+        String value;
+        Parameter parahotdeployment = server.getParameter(HOTDEPLOYMENT);
+        Parameter parahotupdate = server.getParameter(HOTUPDATE);
+        if(parahotdeployment != null ){
+            value = (String)parahotdeployment.getValue();
+            if("false".equals(value))
+                hotdeployment=  false;
+        }
+        if(parahotupdate != null){
+            value =(String)parahotupdate.getValue();
+            if("false".equals(value))
+                hotupdate =false;
+
+        }
+
+    }
+
+    /**
      * This methode used to check the modules referd by server.xml
      * are exist , or they have deployed
      */
-    private void valideServerModule() throws AxisFault, PhaseException {
-        Iterator itr = server.getModules().iterator();
+    private void valideServerModule() throws AxisFault, PhaseException{
+        Iterator itr= server.getModules().iterator();
         while (itr.hasNext()) {
             QName qName = (QName) itr.next();
-            if (getModule(qName) == null) {
+            if(getModule(qName) == null ){
                 throw new AxisFault(server + " Refer to invalid module " + qName + " has not bean deployed yet !");
             }
         }
@@ -204,7 +244,7 @@
         scheduler.schedule(new SchedulerTask(engine, folderName), new DeploymentIterator());
     }
 
-    private EngineRegistry createEngineRegistry() {
+    private EngineRegistry createEngineRegistry()  {
         EngineRegistry newEngineRegisty;
 
         server = new AxisGlobal();
@@ -218,28 +258,28 @@
 
         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
 
-        loadServiceClass(serviceMetaData, classLoader);
+        loadServiceClass(serviceMetaData,classLoader);
 
         Flow inflow = serviceMetaData.getInFlow();
-        if (inflow != null) {
-            addFlowHandlers(inflow, classLoader);
+        if(inflow != null ){
+            addFlowHandlers(inflow,classLoader);
         }
 
         Flow outFlow = serviceMetaData.getOutFlow();
-        if (outFlow != null) {
-            addFlowHandlers(outFlow, classLoader);
+        if(outFlow != null){
+            addFlowHandlers(outFlow,classLoader);
         }
 
         Flow faultFlow = serviceMetaData.getFaultFlow();
-        if (faultFlow != null) {
-            addFlowHandlers(faultFlow, classLoader);
+        if(faultFlow != null) {
+            addFlowHandlers(faultFlow,classLoader);
         }
-        PhaseResolver reolve = new PhaseResolver(engineRegistry, serviceMetaData);
+        PhaseResolver reolve = new PhaseResolver(engineRegistry,serviceMetaData);
         reolve.buildchains();
         engineRegistry.addService(serviceMetaData);
     }
 
-    private void loadServiceClass(AxisService service, ClassLoader parent) throws AxisFault {
+    private void loadServiceClass(AxisService service, ClassLoader parent) throws AxisFault{
         File file = currentFileItem.getFile();
         Class serviceclass = null;
         URLClassLoader loader1 = null;
@@ -255,20 +295,20 @@
 
                 String readInClass = currentFileItem.getClassName();
 
-                if (readInClass != null && !"".equals(readInClass)) {
+                if(readInClass != null && !"".equals(readInClass)){
                     serviceclass = Class.forName(currentFileItem.getClassName(), true, loader1);
                 }
                 service.setServiceClass(serviceclass);
 
                 String readInProviderName = currentFileItem.getProvideName();
-                if (readInProviderName != null && !"".equals(readInProviderName)) {
-                    Class provider = Class.forName(currentFileItem.getProvideName(), true, loader1);
-                    service.setProvider((Provider) provider.newInstance());
+                if(readInProviderName != null && ! "".equals(readInProviderName)){
+                    Class provider =Class.forName(currentFileItem.getProvideName(), true, loader1);
+                    service.setProvider((Provider)provider.newInstance());
                 }
             } catch (MalformedURLException e) {
-                throw new AxisFault(e.getMessage(), e);
+                throw new AxisFault(e.getMessage(),e);
             } catch (Exception e) {
-                throw new AxisFault(e.getMessage(), e);
+                throw new AxisFault(e.getMessage(),e);
             }
 
         }
@@ -331,13 +371,13 @@
         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
 
         Flow inflow = moduelmetada.getInFlow();
-        addFlowHandlers(inflow, classLoader);
+        addFlowHandlers(inflow,classLoader);
 
         Flow outFlow = moduelmetada.getOutFlow();
-        addFlowHandlers(outFlow, classLoader);
+        addFlowHandlers(outFlow,classLoader);
 
         Flow faultFlow = moduelmetada.getFaultFlow();
-        addFlowHandlers(faultFlow, classLoader);
+        addFlowHandlers(faultFlow,classLoader);
 
         engineRegistry.addMdoule(moduelmetada);
     }
@@ -405,15 +445,42 @@
 
     public void doUnDeploye() {
         //todo complete this
-        if (wsToUnDeploy.size() > 0) {
-            for (int i = 0; i < wsToUnDeploy.size(); i++) {
-                WSInfo wsInfo = (WSInfo) wsToUnDeploy.get(i);
-                log.info("UnDeployement WS Name  " + wsInfo.getFilename());
-            }
+        String serviceName ="";
+        try{
+            if (wsToUnDeploy.size() > 0) {
+                for (int i = 0; i < wsToUnDeploy.size(); i++) {
+                    WSInfo wsInfo = (WSInfo) wsToUnDeploy.get(i);
+                    serviceName = getAxisServiceName(wsInfo.getFilename());
+                    engineRegistry.removeService(new QName(serviceName));
+                    log.info("UnDeployement WS Name  " + wsInfo.getFilename());
+                }
 
+            }
+        }catch(AxisFault e){
+            throw new RuntimeException(e.getMessage());
         }
         wsToUnDeploy.clear();
     }
 
+    public boolean isHotupdate() {
+        return hotupdate;
+    }
+
+    /**
+     * This method is used to retrive service name form the arechive file name
+     * if the archive file name is service1.aar , then axis service name would be service1
+     * @param fileName
+     * @return
+     */
+    private String getAxisServiceName(String fileName){
+        char seperator = '.';
+        String value = null;
+        int index = fileName.indexOf(seperator);
+        if (index > 0) {
+            value = fileName.substring(0 , index);
+            return value;
+        }
+        return fileName;
+    }
 
 }

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/repository/utill/WSInfoList.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/repository/utill/WSInfoList.java?view=diff&r1=154017&r2=154018
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/repository/utill/WSInfoList.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/repository/utill/WSInfoList.java Wed Feb 16 06:12:34 2005
@@ -201,8 +201,10 @@
      *
      */
     public void update() {
-        checkForUndeploye();
-        deplorer.doUnDeploye();
+        if(deplorer.isHotupdate()) {
+            checkForUndeploye();
+            deplorer.doUnDeploye();
+        }
         deplorer.doDeploy();
 
     }

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/server.xml
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/server.xml?view=diff&r1=154017&r2=154018
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/server.xml (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/deployment/server.xml Wed Feb 16 06:12:34 2005
@@ -1,4 +1,6 @@
 <server name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="xsd:false">true</parameter>
+    <parameter name="hotupdate" locked="xsd:false">true</parameter>
     <transports>
         <transport name="http"/>
         <transport name="smtp"/>

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/test-resources/deployment/server.xml
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/test-resources/deployment/server.xml?view=diff&r1=154017&r2=154018
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/test-resources/deployment/server.xml (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/test-resources/deployment/server.xml Wed Feb 16 06:12:34 2005
@@ -1,6 +1,10 @@
 <server name ="AxisJava2.0" >
     <parameter name="para1" locked="xsd:true">10</parameter>
     <parameter name="para2" locked="xsd:false">Colombo</parameter>
+
+    <parameter name="hotdeployment" locked="xsd:false">true</parameter>
+        <parameter name="hotupdate" locked="xsd:false">true</parameter>
+    
     <module ref="module1"> </module>
     <transports>
         <transport name ="HTTP"/>