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/11/04 11:47:54 UTC
svn commit: r330790 - in
/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment:
./ repository/util/
Author: deepal
Date: Fri Nov 4 02:47:43 2005
New Revision: 330790
URL: http://svn.apache.org/viewcvs?rev=330790&view=rev
Log:
revert back to my original classloader hierarchy
Modified:
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ModuleBuilder.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ServiceBuilder.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ServiceGroupBuilder.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveFileData.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java?rev=330790&r1=330789&r2=330790&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java Fri Nov 4 02:47:43 2005
@@ -25,13 +25,8 @@
import org.apache.axis2.deployment.scheduler.Scheduler;
import org.apache.axis2.deployment.scheduler.SchedulerTask;
import org.apache.axis2.deployment.util.PhasesInfo;
-import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.AxisServiceGroup;
-import org.apache.axis2.description.Flow;
-import org.apache.axis2.description.HandlerDescription;
-import org.apache.axis2.description.ModuleDescription;
-import org.apache.axis2.description.Parameter;
+import org.apache.axis2.deployment.util.Utils;
+import org.apache.axis2.description.*;
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.engine.AxisConfigurationImpl;
import org.apache.axis2.engine.Handler;
@@ -43,19 +38,8 @@
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
-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.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
+import java.io.*;
+import java.util.*;
public class DeploymentEngine implements DeploymentConstants {
@@ -90,6 +74,7 @@
*/
private String folderName;
+ private File repository;
private String engineConfigName;
@@ -133,7 +118,7 @@
}
this.folderName = repositoryName;
axis2repository = repositoryName;
- File repository = new File(repositoryName);
+ repository = new File(repositoryName);
if (!repository.exists()) {
repository.mkdirs();
File services = new File(repository, "services");
@@ -161,7 +146,7 @@
} catch (IOException e) {
throw new DeploymentException(e);
} finally {
- if( out!=null) {
+ if (out != null) {
try {
out.close();
} catch (IOException e) {
@@ -224,8 +209,10 @@
try {
InputStream in = new FileInputStream(tempfile);
axisConfig = createEngineConfig();
- AxisConfigBuilder builder =new AxisConfigBuilder(in,this,axisConfig);
+ AxisConfigBuilder builder = new AxisConfigBuilder(in, this, axisConfig);
builder.populateConfig();
+ //setting the CLs
+ setClassLoaders(repository);
} catch (FileNotFoundException e) {
throw new DeploymentException(e);
}
@@ -267,11 +254,13 @@
cl.getResourceAsStream(AXIS2_CONFIGURATION_RESOURCE);
}
axisConfig = createEngineConfig();
- AxisConfigBuilder builder =new AxisConfigBuilder(in,this,axisConfig);
+ AxisConfigBuilder builder = new AxisConfigBuilder(in, this, axisConfig);
builder.populateConfig();
if (isRepositoryExist) {
hotDeployment = false;
hotUpdate = false;
+ //setting CLs
+ setClassLoaders(repository);
new RepositoryListenerImpl(folderName, this);
}
try {
@@ -289,7 +278,7 @@
private void checkClientHome(String clientHome) throws DeploymentException {
String clientXML = SERVER_XML_FILE;
this.folderName = clientHome;
- File repository = new File(clientHome);
+ repository = new File(clientHome);
if (!repository.exists()) {
repository.mkdirs();
File services = new File(repository, "services");
@@ -377,9 +366,9 @@
}
- private void addNewService(AxisServiceGroup axisServiceMetaData) throws AxisFault {
+ private void addnewService(AxisServiceGroup axisServiceMetaData) throws AxisFault {
// Iterator services = currentArchiveFile.getService().values().iterator();
- Iterator services = currentArchiveFile.getDeployableServices().iterator();
+ Iterator services = currentArchiveFile.getDeploybleServices().iterator();
while (services.hasNext()) {
AxisService axisService = (AxisService) services.next();
loadServiceProperties(axisService);
@@ -466,7 +455,7 @@
private void loadModuleClass(ModuleDescription module) throws AxisFault {
- Class moduleClass ;
+ Class moduleClass;
try {
String readInClass = currentArchiveFile.getModuleClass();
if (readInClass != null && !"".equals(readInClass)) {
@@ -488,7 +477,7 @@
ClassLoader loader1 = currentArchiveFile.getClassLoader();
for (int j = 0; j < count; j++) {
HandlerDescription handlermd = flow.getHandler(j);
- Class handlerClass ;
+ Class handlerClass;
Handler handler;
handlerClass = getHandlerClass(handlermd.getClassName(), loader1);
try {
@@ -507,7 +496,7 @@
public Class getHandlerClass(String className, ClassLoader loader1) throws AxisFault {
- Class handlerClass ;
+ Class handlerClass;
try {
handlerClass = Class.forName(className, true, loader1);
} catch (ClassNotFoundException e) {
@@ -568,41 +557,38 @@
StringWriter errorWriter = new StringWriter();
switch (type) {
case SERVICE:
- currentArchiveFile.setClassLoader(explodedDir);
+ currentArchiveFile.setClassLoader(explodedDir,axisConfig.getServiceClassLoader());
archiveReader = new ArchiveReader();
String serviceStatus = "";
try {
- archiveReader.processWSDLs(currentArchiveFile,this);
+ archiveReader.processWSDLs(currentArchiveFile, this);
// AxisService service = archiveReader.createService(currentArchiveFile.getAbsolutePath());
AxisServiceGroup sericeGroup =
new AxisServiceGroup(axisConfig);
archiveReader.processServiceGroup(currentArchiveFile.getAbsolutePath(),
this,
- sericeGroup,explodedDir);
- addNewService(sericeGroup);
+ sericeGroup, explodedDir);
+ addnewService(sericeGroup);
log.info(Messages.getMessage(
DeploymentErrorMsgs.DEPLOYING_WS, currentArchiveFile.getName()));
} catch (DeploymentException de) {
log.info(Messages.getMessage(DeploymentErrorMsgs.IN_VALID_SERVICE,
- currentArchiveFile.getName(),de.getMessage()));
+ currentArchiveFile.getName(), de.getMessage()));
PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
de.printStackTrace(error_ptintWriter);
serviceStatus = "Error:\n" +
errorWriter.toString();
- de.printStackTrace();
-
} catch (AxisFault axisFault) {
log.info(Messages.getMessage(DeploymentErrorMsgs.IN_VALID_SERVICE,
- currentArchiveFile.getName(),axisFault.getMessage()));
+ currentArchiveFile.getName(), axisFault.getMessage()));
PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
axisFault.printStackTrace(error_ptintWriter);
serviceStatus = "Error:\n" +
errorWriter.toString();
- axisFault.printStackTrace();
} catch (Exception e) {
log.info(Messages.getMessage(DeploymentErrorMsgs.IN_VALID_SERVICE,
- currentArchiveFile.getName(),e.getMessage()));
+ currentArchiveFile.getName(), e.getMessage()));
PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
e.printStackTrace(error_ptintWriter);
serviceStatus = "Error:\n" +
@@ -616,7 +602,7 @@
}
break;
case MODULE:
- currentArchiveFile.setClassLoader(explodedDir);
+ currentArchiveFile.setClassLoader(explodedDir,axisConfig.getModuleClassLoader());
archiveReader = new ArchiveReader();
String moduleStatus = "";
try {
@@ -624,7 +610,7 @@
metaData.setParent(axisConfig);
archiveReader.readModuleArchive(currentArchiveFile.getAbsolutePath(),
this,
- metaData,explodedDir);
+ metaData, explodedDir);
addNewModule(metaData);
log.info(Messages.getMessage(DeploymentErrorMsgs.DEPLOYING_MODULE,
metaData.getName().getLocalPart()));
@@ -696,7 +682,7 @@
*/
private String getAxisServiceName(String fileName) {
char seperator = '.';
- String value ;
+ String value;
int index = fileName.indexOf(seperator);
if (index > 0) {
value = fileName.substring(0, index);
@@ -756,16 +742,16 @@
* @throws DeploymentException
*/
public AxisService buildService(AxisService axisService,
- InputStream serviceInputStream,
- ClassLoader classLoader) throws DeploymentException {
+ InputStream serviceInputStream,
+ ClassLoader classLoader) throws DeploymentException {
try {
currentArchiveFile = new ArchiveFileData(SERVICE, "");
currentArchiveFile.setClassLoader(classLoader);
- ServiceBuilder builder = new ServiceBuilder(serviceInputStream,this,axisService);
+ ServiceBuilder builder = new ServiceBuilder(serviceInputStream, this, axisService);
builder.populateService(builder.buildOM());
loadServiceProperties(axisService);
- } catch (AxisFault axisFault) {
+ } catch (AxisFault axisFault) {
throw new DeploymentException(axisFault);
} catch (XMLStreamException e) {
throw new DeploymentException(e);
@@ -784,12 +770,12 @@
public ModuleDescription buildModule(File modulearchive, AxisConfiguration config) throws DeploymentException {
ModuleDescription axismodule;
try {
- this.setPhasesinfo(((AxisConfigurationImpl)config).getPhasesinfo());
+ this.setPhasesinfo(((AxisConfigurationImpl) config).getPhasesinfo());
currentArchiveFile = new ArchiveFileData(modulearchive, MODULE);
axismodule = new ModuleDescription();
ArchiveReader archiveReader = new ArchiveReader();
- currentArchiveFile.setClassLoader(false);
- archiveReader.readModuleArchive(currentArchiveFile.getAbsolutePath(), this, axismodule,false);
+ currentArchiveFile.setClassLoader(false,config.getModuleClassLoader());
+ archiveReader.readModuleArchive(currentArchiveFile.getAbsolutePath(), this, axismodule, false);
Flow inflow = axismodule.getInFlow();
if (inflow != null) {
addFlowHandlers(inflow);
@@ -815,4 +801,44 @@
return axismodule;
}
+ /**
+ * To set the all the classLoader hierarchy this method can be used , the top most parenet is
+ * CCL then SCL(system Class Loader)
+ * CCL
+ * :
+ * SCL
+ * : :
+ * MCCL SCCL
+ * : :
+ * MCL SCL
+ * <p/>
+ * <p/>
+ * MCCL : module common class loader
+ * SCCL : Service commin class loader
+ * MCL : module class loader
+ * SCL : Service class loader
+ *
+ * @param axis2repo : The repository folder of Axis2
+ * @throws DeploymentException
+ */
+ private void setClassLoaders(File axis2repo) throws DeploymentException {
+ ClassLoader sysClassLoader = Utils.getClassLoader(
+ Thread.currentThread().getContextClassLoader(), axis2repo);
+ axisConfig.setSystemClassLoader(sysClassLoader);
+
+ File services = new File(axis2repo, "services");
+ if (services.exists()) {
+ axisConfig.setServiceClassLoader(Utils.getClassLoader(
+ axisConfig.getSystemClassLoader(), services));
+ } else {
+ axisConfig.setServiceClassLoader(axisConfig.getSystemClassLoader());
+ }
+ File modules = new File(axis2repo, "modules");
+ if (modules.exists()) {
+ axisConfig.setModuleClassLoader(Utils.getClassLoader(
+ axisConfig.getSystemClassLoader(), modules));
+ } else {
+ axisConfig.setModuleClassLoader(axisConfig.getSystemClassLoader());
+ }
+ }
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ModuleBuilder.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ModuleBuilder.java?rev=330790&r1=330789&r2=330790&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ModuleBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ModuleBuilder.java Fri Nov 4 02:47:43 2005
@@ -115,9 +115,9 @@
//processing Operations
Iterator op_itr = moduleElement.getChildrenWithName(new QName(OPRATIONST));
- ArrayList opeartions = processOperations(op_itr);
- for (int i = 0; i < opeartions.size(); i++) {
- AxisOperation opeartion = (AxisOperation) opeartions.get(i);
+ ArrayList operations = processOperations(op_itr);
+ for (int i = 0; i < operations.size(); i++) {
+ AxisOperation opeartion = (AxisOperation) operations.get(i);
module.addOperation(opeartion);
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ServiceBuilder.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ServiceBuilder.java?rev=330790&r1=330789&r2=330790&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ServiceBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ServiceBuilder.java Fri Nov 4 02:47:43 2005
@@ -213,7 +213,7 @@
op_descrip.setMessageReceiver(messageReceiver);
} else {
//setting default message reciver
- MessageReceiver msgReceiver = loadDefaultMessageReceiver();
+ MessageReceiver msgReceiver =loadDefaultMessageReceiver();
op_descrip.setMessageReceiver(msgReceiver);
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ServiceGroupBuilder.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ServiceGroupBuilder.java?rev=330790&r1=330789&r2=330790&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ServiceGroupBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/ServiceGroupBuilder.java Fri Nov 4 02:47:43 2005
@@ -70,7 +70,7 @@
axisService.setName(new QName(serviceName));
}
// the service that has to be deploy
- engine.getCurrentFileItem().getDeployableServices().add(axisService);
+ engine.getCurrentFileItem().getDeploybleServices().add(axisService);
axisService.setParent(axisServiceGroup);
axisService.setClassLoader(engine.getCurrentFileItem().getClassLoader());
ServiceBuilder serviceBuilder = new ServiceBuilder(engine,axisService);
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveFileData.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveFileData.java?rev=330790&r1=330789&r2=330790&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveFileData.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveFileData.java Fri Nov 4 02:47:43 2005
@@ -19,13 +19,12 @@
import org.apache.axis2.AxisFault;
import org.apache.axis2.deployment.DeploymentClassLoader;
import org.apache.axis2.deployment.DeploymentErrorMsgs;
+import org.apache.axis2.deployment.util.Utils;
import org.apache.axis2.description.AxisService;
import org.apache.axis2.i18n.Messages;
import java.io.File;
-import java.net.MalformedURLException;
import java.net.URL;
-import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.HashMap;
@@ -38,7 +37,7 @@
private ClassLoader classLoader;
private File file = null;
private int type;
- private String messageReceiver;
+ private String messgeReceiver;
private String moduleClass;
private String name;
@@ -48,19 +47,19 @@
//in this table
private HashMap service = new HashMap();
- private ArrayList deployableServices = new ArrayList();
+ private ArrayList deploybleServices = new ArrayList();
public ArchiveFileData(int type, String name) {
this.type = type;
this.name = name;
}
- public String getMessageReceiver() {
- return messageReceiver;
+ public String getMessgeReceiver() {
+ return messgeReceiver;
}
- public void setMessageReceiver(String messageReceiver) {
- this.messageReceiver = messageReceiver;
+ public void setMessgeReceiver(String messgeReceiver) {
+ this.messgeReceiver = messgeReceiver;
}
public ArchiveFileData(File file, int type) {
@@ -107,8 +106,8 @@
this.moduleClass = moduleClass;
}
- public void setClassLoader(boolean extarctArichive) throws AxisFault {
- ClassLoader parent = Thread.currentThread().getContextClassLoader();
+ public void setClassLoader(boolean extarctArichive, ClassLoader parent) throws AxisFault {
+// ClassLoader parent = Thread.currentThread().getContextClassLoader();
if (! extarctArichive) {
// has to be craeted taking that file to the account
if (file != null) {
@@ -120,59 +119,17 @@
urlsToLoadFrom = new URL[]{file.toURL()};
classLoader =
new DeploymentClassLoader(urlsToLoadFrom, parent);
- // classLoader = new URLClassLoader(urlsToLoadFrom, parent);
} catch (Exception e) {
throw new AxisFault(e);
}
}
} else {
if (file != null) {
- try {
- ArrayList urls = new ArrayList();
- urls.add(file.toURL());
-
- //if lib is simple
- File libfiles = new File(file, "lib");
- if(libfiles.exists()){
- urls.add(libfiles.toURL());
- File jarfiles [] = libfiles.listFiles();
- for (int i = 0; i < jarfiles.length; i++) {
- File jarfile = jarfiles[i];
- if(jarfile.getName().endsWith(".jar")){
- urls.add(jarfile.toURL());
- }
- }
- }
-
- //if lib is capital
- libfiles = new File(file, "Lib");
- if(libfiles.exists()){
- urls.add(libfiles.toURL());
- File jarfiles [] = libfiles.listFiles();
- for (int i = 0; i < jarfiles.length; i++) {
- File jarfile = jarfiles[i];
- if(jarfile.getName().endsWith(".jar")){
- urls.add(jarfile.toURL());
- }
- }
- }
-
- URL urllist [] = new URL[urls.size()];
- for (int i = 0; i < urls.size(); i++) {
- urllist[i] = (URL) urls.get(i);
- }
- classLoader = new URLClassLoader(urllist,parent);
-
-
- } catch (MalformedURLException e) {
- throw new AxisFault(e);
- }
-
+ classLoader = Utils.getClassLoader(parent,file);
}
}
}
-
/**
* to check whthere a given file is a jar file
*
@@ -200,11 +157,11 @@
return service;
}
- public ArrayList getDeployableServices() {
- return deployableServices;
+ public ArrayList getDeploybleServices() {
+ return deploybleServices;
}
- public void setDeployableServices(ArrayList deployableServices) {
- this.deployableServices = deployableServices;
+ public void setDeploybleServices(ArrayList deploybleServices) {
+ this.deploybleServices = deploybleServices;
}
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java?rev=330790&r1=330789&r2=330790&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/repository/util/ArchiveReader.java Fri Nov 4 02:47:43 2005
@@ -115,7 +115,6 @@
bindings.remove(o) ;
}
-
Iterator iterator = womDescription.getServices().keySet()
.iterator();
if (iterator.hasNext()) {
@@ -159,6 +158,7 @@
log.info(e);
}
}
+
}
} else {
throw new DeploymentException(Messages.getMessage(
@@ -285,7 +285,7 @@
axisService.setClassLoader(engine.getCurrentFileItem().getClassLoader());
ServiceBuilder serviceBuilder = new ServiceBuilder(engine,axisService);
serviceBuilder.populateService(services);
- engine.getCurrentFileItem().getDeployableServices().add(axisService);
+ engine.getCurrentFileItem().getDeploybleServices().add(axisService);
} else if(SERVICE_GROUP_ELEMENT.equals(rootelementName)){
ServiceGroupBuilder groupBuilder = new ServiceGroupBuilder(services,engine);
groupBuilder.populateServiceGroup(axisServiceGroup);