From: <dai...@us...> - 2009-08-04 12:38:15
|
Revision: 5059 http://unicore.svn.sourceforge.net/unicore/?rev=5059&view=rev Author: daivandy Date: 2009-08-04 12:38:07 +0000 (Tue, 04 Aug 2009) Log Message: ----------- Added new AdminTool features: now administrators are able to remotely (de)activate dynamic service deployment. Modified Paths: -------------- wsrflite/wsrfcore/trunk/pom.xml wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/admin/service/AdminTool.java wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/admin/service/AdminToolImpl.java wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/utils/deployment/DeploymentCenter.java wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/xmlbeans/client/AdminToolClient.java wsrflite/wsrfcore/trunk/src/test/java/de/fzj/unicore/wsrflite/admin/admintool/Test_AdminTool.java wsrflite/wsrfcore/trunk/src/test/java/de/fzj/unicore/wsrflite/utils/deployment/Deployment_TestBase.java wsrflite/wsrfcore/trunk/src/test/java/de/fzj/unicore/wsrflite/utils/deployment/Test_UndeployService.java Modified: wsrflite/wsrfcore/trunk/pom.xml =================================================================== --- wsrflite/wsrfcore/trunk/pom.xml 2009-08-04 12:33:58 UTC (rev 5058) +++ wsrflite/wsrfcore/trunk/pom.xml 2009-08-04 12:38:07 UTC (rev 5059) @@ -3,7 +3,7 @@ <groupId>de.fzj.unicore.wsrflite</groupId> <artifactId>wsrflite</artifactId> <name>UNICORE Lightweight WSRF Environment</name> - <version>1.8.15-SNAPSHOT</version> + <version>1.8.16-SNAPSHOT</version> <url>http://unicore.sourceforge.net/wsrflite</url> <developers> <developer> @@ -141,7 +141,7 @@ <dependency> <groupId>de.fzj.unicore.wsrflite</groupId> <artifactId>wsrftypes</artifactId> - <version>1.8.14</version> + <version>1.8.15-SNAPSHOT</version> </dependency> <dependency> <groupId>log4j</groupId> Modified: wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/admin/service/AdminTool.java =================================================================== --- wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/admin/service/AdminTool.java 2009-08-04 12:33:58 UTC (rev 5058) +++ wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/admin/service/AdminTool.java 2009-08-04 12:38:07 UTC (rev 5059) @@ -37,15 +37,17 @@ import javax.jws.WebService; import javax.xml.namespace.QName; -import de.fzj.unicore.wsrflite.utils.Dependency; -import de.fzj.unicore.wsrflite.utils.DependsOn; import de.fzj.unicore.wsrflite.xmlbeans.ActivateAutomaticDeploymentRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.ActivateAutomaticDeploymentResponseDocument; +import de.fzj.unicore.wsrflite.xmlbeans.ActivateDynamicDeploymentRequestDocument; +import de.fzj.unicore.wsrflite.xmlbeans.ActivateDynamicDeploymentResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.BaseFault; import de.fzj.unicore.wsrflite.xmlbeans.CreateServiceInstanceRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.CreateServiceInstanceResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeactivateAutomaticDeploymentRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeactivateAutomaticDeploymentResponseDocument; +import de.fzj.unicore.wsrflite.xmlbeans.DeactivateDynamicDeploymentRequestDocument; +import de.fzj.unicore.wsrflite.xmlbeans.DeactivateDynamicDeploymentResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeleteServiceInstanceRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeleteServiceInstanceResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeployServiceRequestDocument; @@ -140,6 +142,19 @@ @WebMethod(action = "http://www.fz-juelich.de/unicore/wsrflite/GetProperty") public GetPropertyResponseDocument getProperty(GetPropertyRequestDocument req); + + /** Activates dynamic service deployment.<br> + * Note: this method should be used if dynamic service deployment has been deactivated in the WSRFLite configuration file, + * but is temporarily needed during WSRFLite uptime. No changes will be made to said configuration file. + */ + @WebMethod(action = "http://www.fz-juelich.de/unicore/wsrflite/ActivateDynamicDeployment") + public ActivateDynamicDeploymentResponseDocument activateDynamicDeployment(ActivateDynamicDeploymentRequestDocument req); + + /** Deactivates dynamic service deployment.<br> + * Note: no changes will be made to said configuration file. + */ + @WebMethod(action = "http://www.fz-juelich.de/unicore/wsrflite/DeactivateDynamicDeployment") + public DeactivateDynamicDeploymentResponseDocument deactivateDynamicDeployment(DeactivateDynamicDeploymentRequestDocument req); } Modified: wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/admin/service/AdminToolImpl.java =================================================================== --- wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/admin/service/AdminToolImpl.java 2009-08-04 12:33:58 UTC (rev 5058) +++ wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/admin/service/AdminToolImpl.java 2009-08-04 12:38:07 UTC (rev 5059) @@ -60,10 +60,14 @@ import de.fzj.unicore.wsrflite.xfire.XFireKernel; import de.fzj.unicore.wsrflite.xmlbeans.ActivateAutomaticDeploymentRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.ActivateAutomaticDeploymentResponseDocument; +import de.fzj.unicore.wsrflite.xmlbeans.ActivateDynamicDeploymentRequestDocument; +import de.fzj.unicore.wsrflite.xmlbeans.ActivateDynamicDeploymentResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.CreateServiceInstanceRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.CreateServiceInstanceResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeactivateAutomaticDeploymentRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeactivateAutomaticDeploymentResponseDocument; +import de.fzj.unicore.wsrflite.xmlbeans.DeactivateDynamicDeploymentRequestDocument; +import de.fzj.unicore.wsrflite.xmlbeans.DeactivateDynamicDeploymentResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeleteServiceInstanceRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeleteServiceInstanceResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeployServiceRequestDocument; @@ -729,6 +733,22 @@ return w.toString(); } + public ActivateDynamicDeploymentResponseDocument activateDynamicDeployment(ActivateDynamicDeploymentRequestDocument req) { + ActivateDynamicDeploymentResponseDocument res = ActivateDynamicDeploymentResponseDocument.Factory.newInstance(); + res.addNewActivateDynamicDeploymentResponse(); + DeploymentCenter.getInstance().activateDynamicDeployment(); + + return res; + } + + public DeactivateDynamicDeploymentResponseDocument deactivateDynamicDeployment(DeactivateDynamicDeploymentRequestDocument req) { + DeactivateDynamicDeploymentResponseDocument res = DeactivateDynamicDeploymentResponseDocument.Factory.newInstance(); + res.addNewDeactivateDynamicDeploymentResponse(); + DeploymentCenter.getInstance().deactivateDynamicDeployment(); + + return res; + } + } Modified: wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/utils/deployment/DeploymentCenter.java =================================================================== --- wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/utils/deployment/DeploymentCenter.java 2009-08-04 12:33:58 UTC (rev 5058) +++ wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/utils/deployment/DeploymentCenter.java 2009-08-04 12:38:07 UTC (rev 5059) @@ -224,9 +224,7 @@ automaticDeploymentInterval = 10; - lockedJars = new HashMap<String, FileChannel>(); - tmpCopies = new HashMap<String, String>(); - checksums = new HashMap<String, String>(); + initSpecialFields(); info.append("\nDynamic deployment of service jars activated."); info.append("\n* configuration file for static services: "+Kernel.getKernel().getProperty(Kernel.WSRF_DEPLOYMENT_SERVICES_CONFIG)); @@ -239,6 +237,26 @@ logger.info(info); } + + private void initSpecialFields() { + lockedJars = new HashMap<String, FileChannel>(); + tmpCopies = new HashMap<String, String>(); + checksums = new HashMap<String, String>(); + } + + public void activateDynamicDeployment() { + dynamicDeploymentActivated = true; + + // if dynamic deployment hasn't been initially activated, deploy the plugin services + if(Kernel.getKernel().getProperty(Kernel.WSRF_DEPLOYMENT).equalsIgnoreCase("false")) { + initSpecialFields(); + deployPluginServices(); + } + } + + public void deactivateDynamicDeployment() { + dynamicDeploymentActivated = false; + } @@ -612,73 +630,75 @@ * @category WEB SERVICE DEPLOYMENT */ public void deployServiceAutomatically(String serviceName, File jarFile) throws Exception { - - try { - - // Don't automatically deploy a jar file that has been created by a deployment request to AdminTool and is in the process of being deployed - if(inDeployment.contains(serviceName)) return; - - // Don't automatically deploy a jar file that has just been unlocked in the process of being undeployed. - if(inUndeployment.contains(serviceName)) return; - - String iFace=null, impl=null; - boolean isWSRF=false, isPersistent=false; - - // try to get deployment-specific metadata for this service from its annotation - DeploymentMetadata info = extractDeploymentMetadata(jarFile); - if(info!=null) { - iFace = info.iFace(); - impl = info.impl(); - isWSRF = info.isWSRF(); - isPersistent = info.isPersistent(); - info = null; - } - - // read the iface and impl class names from this service jar's manifest - else { - JarFile jf = new JarFile(jarFile); - iFace = jf.getManifest().getMainAttributes().getValue("IFace-Class"); - impl = jf.getManifest().getMainAttributes().getValue("Impl-Class"); - String b1 = jf.getManifest().getMainAttributes().getValue("IsWSRF"); - String b2 = jf.getManifest().getMainAttributes().getValue("IsPersistent"); - jf.close(); + if(dynamicDeploymentActivated && automaticDeploymentActivated) { + try { - // abort process in case of insufficient data - if(iFace==null || impl==null || b1==null || b2==null) { - throw new ServiceJarFileManifestFormatException(); + // Don't automatically deploy a jar file that has been created by a deployment request to AdminTool and is in the process of being deployed + if(inDeployment.contains(serviceName)) return; + + // Don't automatically deploy a jar file that has just been unlocked in the process of being undeployed. + if(inUndeployment.contains(serviceName)) return; + + String iFace=null, impl=null; + boolean isWSRF=false, isPersistent=false; + + // try to get deployment-specific metadata for this service from its annotation + DeploymentMetadata info = extractDeploymentMetadata(jarFile); + if(info!=null) { + iFace = info.iFace(); + impl = info.impl(); + isWSRF = info.isWSRF(); + isPersistent = info.isPersistent(); + info = null; } - isWSRF = Boolean.parseBoolean(b1); - isPersistent = Boolean.parseBoolean(b2); + // read the iface and impl class names from this service jar's manifest + else { + JarFile jf = new JarFile(jarFile); + iFace = jf.getManifest().getMainAttributes().getValue("IFace-Class"); + impl = jf.getManifest().getMainAttributes().getValue("Impl-Class"); + String b1 = jf.getManifest().getMainAttributes().getValue("IsWSRF"); + String b2 = jf.getManifest().getMainAttributes().getValue("IsPersistent"); + jf.close(); + + // abort process in case of insufficient data + if(iFace==null || impl==null || b1==null || b2==null) { + throw new ServiceJarFileManifestFormatException(); + } + + isWSRF = Boolean.parseBoolean(b1); + isPersistent = Boolean.parseBoolean(b2); + } + + + lockJar(serviceName, jarFile); + loadClasses(jarFile, iFace, impl); + deployService(serviceName, iFace, impl, isWSRF, isPersistent); + + // update the plugin service configuration xml file + ServiceConfigAccess.getInstance("plugin").addService(serviceName, iFace, impl, isWSRF, isPersistent, tmpCopies.get(serviceName), checksums.get(serviceName)); + + logger.info("The Web Service '"+serviceName+"' has been deployed at "+Kernel.getKernel().getProperty(Kernel.WSRF_BASEURL)); + } + catch(IOException e) { + releaseAndDeleteJar(serviceName); + logger.warn("AUTOMATIC SERVICE DEPLOYMENT: couldn't deploy service '"+serviceName+". Reason: couldn't access jar file."); } + catch(XmlException e) { + releaseAndDeleteJar(serviceName); + String xmlFileName = Kernel.getKernel().getProperty(Kernel.WSRF_DEPLOYMENT_PLUGINSERVICES_CONFIG); + Log.logException("AUTOMATIC SERVICE DEPLOYMENT: couldn't deploy service '"+serviceName+". Reason: couldn't access '"+xmlFileName+"'.",e,logger); + } + catch(ClassNotFoundException e) { + releaseAndDeleteJar(serviceName); + Log.logException("AUTOMATIC SERVICE DEPLOYMENT: couldn't deploy service '"+serviceName+". Reason: couldn't find/load service classes.",e,logger); + } + catch(ServiceDeploymentException e) { + releaseAndDeleteJar(serviceName); + Log.logException("AUTOMATIC SERVICE DEPLOYMENT: "+e.getMessage(),e,logger); + } + } - - lockJar(serviceName, jarFile); - loadClasses(jarFile, iFace, impl); - deployService(serviceName, iFace, impl, isWSRF, isPersistent); - - // update the plugin service configuration xml file - ServiceConfigAccess.getInstance("plugin").addService(serviceName, iFace, impl, isWSRF, isPersistent, tmpCopies.get(serviceName), checksums.get(serviceName)); - - logger.info("The Web Service '"+serviceName+"' has been deployed at "+Kernel.getKernel().getProperty(Kernel.WSRF_BASEURL)); - } - catch(IOException e) { - releaseAndDeleteJar(serviceName); - logger.warn("AUTOMATIC SERVICE DEPLOYMENT: couldn't deploy service '"+serviceName+". Reason: couldn't access jar file."); - } - catch(XmlException e) { - releaseAndDeleteJar(serviceName); - String xmlFileName = Kernel.getKernel().getProperty(Kernel.WSRF_DEPLOYMENT_PLUGINSERVICES_CONFIG); - Log.logException("AUTOMATIC SERVICE DEPLOYMENT: couldn't deploy service '"+serviceName+". Reason: couldn't access '"+xmlFileName+"'.",e,logger); - } - catch(ClassNotFoundException e) { - releaseAndDeleteJar(serviceName); - Log.logException("AUTOMATIC SERVICE DEPLOYMENT: couldn't deploy service '"+serviceName+". Reason: couldn't find/load service classes.",e,logger); - } - catch(ServiceDeploymentException e) { - releaseAndDeleteJar(serviceName); - Log.logException("AUTOMATIC SERVICE DEPLOYMENT: "+e.getMessage(),e,logger); - } } Modified: wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/xmlbeans/client/AdminToolClient.java =================================================================== --- wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/xmlbeans/client/AdminToolClient.java 2009-08-04 12:33:58 UTC (rev 5058) +++ wsrflite/wsrfcore/trunk/src/main/java/de/fzj/unicore/wsrflite/xmlbeans/client/AdminToolClient.java 2009-08-04 12:38:07 UTC (rev 5059) @@ -2,17 +2,19 @@ import org.w3.x2005.x08.addressing.EndpointReferenceType; -import de.fzj.unicore.wsrflite.Kernel; import de.fzj.unicore.wsrflite.admin.service.AdminTool; import de.fzj.unicore.wsrflite.security.ISecurityProperties; import de.fzj.unicore.wsrflite.xfire.XFireClientFactory; import de.fzj.unicore.wsrflite.xmlbeans.ActivateAutomaticDeploymentRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.ActivateAutomaticDeploymentResponseDocument; -import de.fzj.unicore.wsrflite.xmlbeans.BaseFault; +import de.fzj.unicore.wsrflite.xmlbeans.ActivateDynamicDeploymentRequestDocument; +import de.fzj.unicore.wsrflite.xmlbeans.ActivateDynamicDeploymentResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.CreateServiceInstanceRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.CreateServiceInstanceResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeactivateAutomaticDeploymentRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeactivateAutomaticDeploymentResponseDocument; +import de.fzj.unicore.wsrflite.xmlbeans.DeactivateDynamicDeploymentRequestDocument; +import de.fzj.unicore.wsrflite.xmlbeans.DeactivateDynamicDeploymentResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeleteServiceInstanceRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeleteServiceInstanceResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeployServiceRequestDocument; @@ -169,6 +171,23 @@ return res; } + + public DeactivateDynamicDeploymentResponseDocument deactivateDynamicDeployment(DeactivateDynamicDeploymentRequestDocument req) throws Exception { + + DeactivateDynamicDeploymentResponseDocument res = null; + + res = admin.deactivateDynamicDeployment(req); + + return res; + } + + public ActivateDynamicDeploymentResponseDocument activateDynamicDeployment(ActivateDynamicDeploymentRequestDocument req) throws Exception { + ActivateDynamicDeploymentResponseDocument res = null; + + res = admin.activateDynamicDeployment(req); + + return res; + } Modified: wsrflite/wsrfcore/trunk/src/test/java/de/fzj/unicore/wsrflite/admin/admintool/Test_AdminTool.java =================================================================== --- wsrflite/wsrfcore/trunk/src/test/java/de/fzj/unicore/wsrflite/admin/admintool/Test_AdminTool.java 2009-08-04 12:33:58 UTC (rev 5058) +++ wsrflite/wsrfcore/trunk/src/test/java/de/fzj/unicore/wsrflite/admin/admintool/Test_AdminTool.java 2009-08-04 12:38:07 UTC (rev 5059) @@ -33,23 +33,20 @@ package de.fzj.unicore.wsrflite.admin.admintool; import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; import org.codehaus.xfire.util.UID; import org.w3.x2005.x08.addressing.EndpointReferenceType; -import de.fzj.unicore.wsrflite.Home; import de.fzj.unicore.wsrflite.Kernel; import de.fzj.unicore.wsrflite.admin.service.AdminTool; import de.fzj.unicore.wsrflite.utils.Utilities; -import de.fzj.unicore.wsrflite.utils.deployment.DeploymentCenter; import de.fzj.unicore.wsrflite.utils.deployment.Deployment_TestBase; import de.fzj.unicore.wsrflite.xmlbeans.ActivateAutomaticDeploymentRequestDocument; +import de.fzj.unicore.wsrflite.xmlbeans.ActivateDynamicDeploymentRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.CreateServiceInstanceRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeactivateAutomaticDeploymentRequestDocument; +import de.fzj.unicore.wsrflite.xmlbeans.DeactivateDynamicDeploymentRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.DeleteServiceInstanceRequestDocument; -import de.fzj.unicore.wsrflite.xmlbeans.DeployServiceRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.GetPropertyRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.GetPropertyResponseDocument; import de.fzj.unicore.wsrflite.xmlbeans.GetServiceInstanceRequestDocument; @@ -57,14 +54,11 @@ import de.fzj.unicore.wsrflite.xmlbeans.GetServiceNamesRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.SetPropertyRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.SetPropertyResponseDocument; -import de.fzj.unicore.wsrflite.xmlbeans.UndeployServiceRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.client.AdminToolClient; import de.fzj.unicore.wsrflite.xmlbeans.client.BaseWSRFClient; public class Test_AdminTool extends Deployment_TestBase { - static final String serviceName = UID.generate(); - static String[] instanceUIDs = null; static String uid; @@ -304,59 +298,56 @@ assertEquals(valueFromResponse, valueFromKernel); } + + + public void testDeactivateDynamicDeployment() { + + // activate automatic deployment + DeactivateDynamicDeploymentRequestDocument req = DeactivateDynamicDeploymentRequestDocument.Factory.newInstance(); + req.addNewDeactivateDynamicDeploymentRequest(); - - - private void deployService() { + try { + theClient.deactivateDynamicDeployment(req); + } + catch(Exception e) { + e.printStackTrace(); + } - String iFace = "org.example.AdderIFace"; - String impl = "org.example.AdderHomeImpl"; - boolean isWSRF = true; - boolean isPersistent = true; - String pathToJarFile = "src/test/resources/testfiles/adder.jar"; - + deployService(); - DeployServiceRequestDocument req = DeployServiceRequestDocument.Factory.newInstance(); - req.addNewDeployServiceRequest().setServiceName(serviceName); - req.getDeployServiceRequest().setIFace(iFace); - req.getDeployServiceRequest().setImpl(impl); - req.getDeployServiceRequest().setIsWSRF(isWSRF); - req.getDeployServiceRequest().setIsPersistent(isPersistent); + // verify that the service has NOT been correctly deployed + try { + assertFalse(verifyDeployment(serviceName)); + } + catch(Exception e) { + + } + } + + + public void testActivateDynamicDeployment() { + // activate automatic deployment + ActivateDynamicDeploymentRequestDocument req = ActivateDynamicDeploymentRequestDocument.Factory.newInstance(); + req.addNewActivateDynamicDeploymentRequest(); - - File jarFile = new File(pathToJarFile); - byte[] data = new byte[(int) jarFile.length()]; - FileInputStream fis = null; - try { - fis = new FileInputStream(jarFile); - fis.read(data); - fis.close(); - req.getDeployServiceRequest().setJarFile(data); + theClient.activateDynamicDeployment(req); } - catch(IOException e) { + catch(Exception e) { e.printStackTrace(); } - + + deployService(); - try{ - Home h = DeploymentCenter.getInstance().getServiceHome("AdminTool"); - h.getWSRFServiceInstance("default_admin"); - theClient.deployService(req); - }catch(Exception ex){ + // verify that the service has been correctly deployed + try { + assertTrue(verifyDeployment(serviceName)); + } + catch(Exception e) { fail(); } } - private void undeployService() { - UndeployServiceRequestDocument req = UndeployServiceRequestDocument.Factory.newInstance(); - req.addNewUndeployServiceRequest().setServiceName(serviceName); - try{ - theClient.undeployService(req); - }catch(Exception ex){ - fail(); - } - } } Modified: wsrflite/wsrfcore/trunk/src/test/java/de/fzj/unicore/wsrflite/utils/deployment/Deployment_TestBase.java =================================================================== --- wsrflite/wsrfcore/trunk/src/test/java/de/fzj/unicore/wsrflite/utils/deployment/Deployment_TestBase.java 2009-08-04 12:33:58 UTC (rev 5058) +++ wsrflite/wsrfcore/trunk/src/test/java/de/fzj/unicore/wsrflite/utils/deployment/Deployment_TestBase.java 2009-08-04 12:38:07 UTC (rev 5059) @@ -2,18 +2,24 @@ import java.io.BufferedWriter; import java.io.File; +import java.io.FileInputStream; import java.io.FileWriter; +import java.io.IOException; import junit.framework.TestCase; +import org.codehaus.xfire.util.UID; import org.w3.x2005.x08.addressing.EndpointReferenceType; +import de.fzj.unicore.wsrflite.Home; import de.fzj.unicore.wsrflite.Kernel; import de.fzj.unicore.wsrflite.admin.service.AdminTool; import de.fzj.unicore.wsrflite.admin.service.AdminToolHomeImpl; import de.fzj.unicore.wsrflite.security.ISecurityProperties; import de.fzj.unicore.wsrflite.security.SecurityProperties; import de.fzj.unicore.wsrflite.xmlbeans.CreateServiceInstanceRequestDocument; +import de.fzj.unicore.wsrflite.xmlbeans.DeployServiceRequestDocument; +import de.fzj.unicore.wsrflite.xmlbeans.UndeployServiceRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.client.AdminToolClient; import de.fzj.unicore.wsrflite.xmlbeans.client.BaseWSRFClient; @@ -30,9 +36,18 @@ protected EndpointReferenceType epr; protected AdminToolClient theClient; + protected static final String serviceName = UID.generate(); + protected static String[] instanceUIDs = null; + private static boolean serverStarted=false; + + + public Deployment_TestBase() { + init(); + } + /** configure and start the WSRFLite container */ protected void startServer() { try { @@ -49,37 +64,39 @@ * use a custom WSRFLite configuration with activated dynamic deployment feature * in order to be able to run dynamic deployment test cases in any case */ + String config="<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + - "<services xmlns=\"http://www.fz-juelich.de/unicore/wsrflite\">" + - "<!--hosting configuration: persistence, security etc.-->" + - "<property name=\"unicore.wsrflite.baseurl\" value=\"https://localhost:65321/services\"/>" + - "<property name=\"unicore.wsrflite.host\" value=\"localhost\"/>" + - "<property name=\"unicore.wsrflite.port\" value=\"65321\"/>" + - "<property name=\"wsrflite.lifetime.default\" value=\"86400\"/>" + - "<property name=\"unicore.wsrflite.persistence.persist\" value=\"de.fzj.unicore.wsrflite.persistence.HsqldbPersist\"/>" + - "<property name=\"unicore.wsrflite.persistence.storagedirectory\" value=\"target/test/resources/data\"/>" + - "<property name=\"unicore.wsrflite.ssl\" value=\"true\"/>" + - "<property name=\"unicore.wsrflite.ssl.clientauth\" value=\"true\"/>" + - "<property name=\"unicore.wsrflite.ssl.truststore\" value=\"src/test/resources/conf/keystore.jks\"/>" + - "<property name=\"unicore.wsrflite.ssl.truststorepass\" value=\"the!njs\"/>" + - "<property name=\"unicore.wsrflite.ssl.truststoretype\" value=\"JKS\"/>" + - "<property name=\"unicore.wsrflite.ssl.keystore\" value=\"src/test/resources/conf/keystore.jks\"/>" + - "<property name=\"unicore.wsrflite.ssl.keypass\" value=\"the!njs\"/>" + - "<property name=\"unicore.wsrflite.ssl.keytype\" value=\"jks\"/>" + - "<property name=\"unicore.wsrflite.ssl.keyalias\" value=\"njs test certificate\"/>" + - "<property name=\"unicore.wsrflite.sg.defaulttermtime\" value=\"1800\"/>" + - "<property name=\"unicore.wsrflite.dynamicdeployment\" value=\"true\"/>" + - "<property name=\"unicore.wsrflite.dynamicdeployment.pluginservices.config\" value=\"src/test/resources/conf/plugin_services.xml\"/>" + - "<property name=\"unicore.wsrflite.dynamicdeployment.pluginservices.jars\" value=\"target/test/resources/plugins\"/>" + - "<property name=\"unicore.wsrflite.dynamicdeployment.automatic\" value=\"true\"/>" + - "<property name=\"unicore.wsrflite.dynamicdeployment.automatic.interval\" value=\"5\"/>" + - "<!--the services to deploy-->" + - "<service name=\""+AdminTool.SERVICE_NAME+"\" wsrf=\"true\" persistent=\"true\">" + - "<interface class=\""+AdminTool.class.getName()+"\"/>" + - "<implementation class=\""+AdminToolHomeImpl.class.getName()+"\"/>" + - "</service>" + - "</services>"; + "<services xmlns=\"http://www.fz-juelich.de/unicore/wsrflite\">" + + "<!--hosting configuration: persistence, security etc.-->" + + "<property name=\"unicore.wsrflite.baseurl\" value=\"https://localhost:65321/services\"/>" + + "<property name=\"unicore.wsrflite.host\" value=\"localhost\"/>" + + "<property name=\"unicore.wsrflite.port\" value=\"65321\"/>" + + "<property name=\"wsrflite.lifetime.default\" value=\"86400\"/>" + + "<property name=\"unicore.wsrflite.persistence.persist\" value=\"de.fzj.unicore.wsrflite.persistence.HsqldbPersist\"/>" + + "<property name=\"unicore.wsrflite.persistence.storagedirectory\" value=\"target/test/resources/data\"/>" + + "<property name=\"unicore.wsrflite.ssl\" value=\"true\"/>" + + "<property name=\"unicore.wsrflite.ssl.clientauth\" value=\"true\"/>" + + "<property name=\"unicore.wsrflite.ssl.truststore\" value=\"src/test/resources/conf/keystore.jks\"/>" + + "<property name=\"unicore.wsrflite.ssl.truststorepass\" value=\"the!njs\"/>" + + "<property name=\"unicore.wsrflite.ssl.truststoretype\" value=\"JKS\"/>" + + "<property name=\"unicore.wsrflite.ssl.keystore\" value=\"src/test/resources/conf/keystore.jks\"/>" + + "<property name=\"unicore.wsrflite.ssl.keypass\" value=\"the!njs\"/>" + + "<property name=\"unicore.wsrflite.ssl.keytype\" value=\"jks\"/>" + + "<property name=\"unicore.wsrflite.ssl.keyalias\" value=\"njs test certificate\"/>" + + "<property name=\"unicore.wsrflite.sg.defaulttermtime\" value=\"1800\"/>" + + "<property name=\"unicore.wsrflite.dynamicdeployment\" value=\"true\"/>" + + "<property name=\"unicore.wsrflite.dynamicdeployment.pluginservices.config\" value=\"src/test/resources/conf/plugin_services.xml\"/>" + + "<property name=\"unicore.wsrflite.dynamicdeployment.pluginservices.jars\" value=\"target/test/resources/plugins\"/>" + + "<property name=\"unicore.wsrflite.dynamicdeployment.automatic\" value=\"true\"/>" + + "<property name=\"unicore.wsrflite.dynamicdeployment.automatic.interval\" value=\"5\"/>" + + "<!--the services to deploy-->" + + "<service name=\""+AdminTool.SERVICE_NAME+"\" wsrf=\"true\" persistent=\"true\">" + + "<interface class=\""+AdminTool.class.getName()+"\"/>" + + "<implementation class=\""+AdminToolHomeImpl.class.getName()+"\"/>" + + "</service>" + + "</services>"; + // save the aforementioned custom configuration to a file in a temporary directory String tmpPath = System.getProperty("java.io.tmpdir")+"/config.xml"; @@ -184,4 +201,56 @@ } } } + + + public void deployService() { + + String iFace = "org.example.AdderIFace"; + String impl = "org.example.AdderHomeImpl"; + boolean isWSRF = true; + boolean isPersistent = true; + String pathToJarFile = "src/test/resources/testfiles/adder.jar"; + + + DeployServiceRequestDocument req = DeployServiceRequestDocument.Factory.newInstance(); + req.addNewDeployServiceRequest().setServiceName(serviceName); + req.getDeployServiceRequest().setIFace(iFace); + req.getDeployServiceRequest().setImpl(impl); + req.getDeployServiceRequest().setIsWSRF(isWSRF); + req.getDeployServiceRequest().setIsPersistent(isPersistent); + + + File jarFile = new File(pathToJarFile); + byte[] data = new byte[(int) jarFile.length()]; + FileInputStream fis = null; + + try { + fis = new FileInputStream(jarFile); + fis.read(data); + fis.close(); + req.getDeployServiceRequest().setJarFile(data); + } + catch(IOException e) { + e.printStackTrace(); + } + + + try{ + theClient.deployService(req); + }catch(Exception ex){ + } + } + + + public void undeployService() { + UndeployServiceRequestDocument req = UndeployServiceRequestDocument.Factory.newInstance(); + req.addNewUndeployServiceRequest().setServiceName(serviceName); + try{ + theClient.undeployService(req); + }catch(Exception ex){ + fail(); + } + } + + } Modified: wsrflite/wsrfcore/trunk/src/test/java/de/fzj/unicore/wsrflite/utils/deployment/Test_UndeployService.java =================================================================== --- wsrflite/wsrfcore/trunk/src/test/java/de/fzj/unicore/wsrflite/utils/deployment/Test_UndeployService.java 2009-08-04 12:33:58 UTC (rev 5058) +++ wsrflite/wsrfcore/trunk/src/test/java/de/fzj/unicore/wsrflite/utils/deployment/Test_UndeployService.java 2009-08-04 12:38:07 UTC (rev 5059) @@ -1,12 +1,5 @@ package de.fzj.unicore.wsrflite.utils.deployment; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; - -import org.codehaus.xfire.util.UID; - -import de.fzj.unicore.wsrflite.xmlbeans.DeployServiceRequestDocument; import de.fzj.unicore.wsrflite.xmlbeans.UndeployServiceRequestDocument; /** @@ -18,16 +11,23 @@ */ public class Test_UndeployService extends Deployment_TestBase { - String serviceName; public void test() { init(); // deploy a sample service... - if(!deployService()) + deployService(); + try { + if(!verifyDeployment(serviceName)) + fail(); + } + catch(Exception e) { + e.printStackTrace(); fail(); + } + // ...and undeploy it UndeployServiceRequestDocument req = UndeployServiceRequestDocument.Factory.newInstance(); req.addNewUndeployServiceRequest().setServiceName(serviceName); @@ -44,58 +44,4 @@ catch(Exception e) { } } - - - private boolean deployService() { - - // deploy the sample service - serviceName = UID.generate(); - String iFace = "org.example.AdderIFace"; - String impl = "org.example.AdderHomeImpl"; - boolean isWSRF = true; - boolean isPersistent = true; - String pathToJarFile = "src/test/resources/testfiles/adder.jar"; - - DeployServiceRequestDocument req = DeployServiceRequestDocument.Factory.newInstance(); - req.addNewDeployServiceRequest().setServiceName(serviceName); - req.getDeployServiceRequest().setIFace(iFace); - req.getDeployServiceRequest().setImpl(impl); - req.getDeployServiceRequest().setIsWSRF(isWSRF); - req.getDeployServiceRequest().setIsPersistent(isPersistent); - - File jarFile = new File(pathToJarFile); - byte[] data = new byte[(int) jarFile.length()]; - FileInputStream fis = null; - - try { - fis = new FileInputStream(jarFile); - fis.read(data); - fis.close(); - req.getDeployServiceRequest().setJarFile(data); - } - catch(IOException e) { - fail(); - } - - try{ - theClient.deployService(req); - } - catch(Exception ex){ - fail(); - } - - boolean deployed = false; - - try { - deployed = verifyDeployment(serviceName); - } - catch(Exception e) { - fail(); - } - - - return deployed; - } - - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |