OW2 Consortium
Search OW2 Mail Archive: 

Advanced Search - Powered by Google


Mail Archive Home | orchestra-commits List | September 2007 Index

<--  Date Index  --> <--  Thread Index  -->

[763] trunk/OrchestraPVM: - put JMXAgent config in a xml file


Title: [763] trunk/OrchestraPVM: - put JMXAgent config in a xml file
Revision
763
Author
porcherg
Date
2007-09-19 17:13:56 +0200 (Wed, 19 Sep 2007)

Log Message

- put JMXAgent config in a xml file
- more axis packaging

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/OrchestraPVM/.classpath (762 => 763)


--- trunk/OrchestraPVM/.classpath	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/.classpath	2007-09-19 15:13:56 UTC (rev 763)
@@ -14,6 +14,7 @@
 	<classpathentry kind="src" path="modules/ws/src/main/java"/>
 	<classpathentry kind="src" path="modules/jmx/src/main/java"/>
 	<classpathentry kind="src" path="modules/axisws/src/main/resources"/>
+	<classpathentry kind="src" path="modules/jmx/src/main/resources"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>

Modified: trunk/OrchestraPVM/.project (762 => 763)


--- trunk/OrchestraPVM/.project	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/.project	2007-09-19 15:13:56 UTC (rev 763)
@@ -1,30 +1,30 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>OrchestraPVM</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.maven.ide.eclipse.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.maven.ide.eclipse.maven2Nature</nature>
-		<nature>com.tssap.selena.cmf.TemplateNature</nature>
-		<nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>OrchestraPVM</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+		<nature>com.tssap.selena.cmf.TemplateNature</nature>
+		<nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
+	</natures>
+</projectDescription>

Modified: trunk/OrchestraPVM/assembly.xml (762 => 763)


--- trunk/OrchestraPVM/assembly.xml	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/assembly.xml	2007-09-19 15:13:56 UTC (rev 763)
@@ -1,57 +1,59 @@
 <assembly>
-  <!-- TODO: a jarjar format would be better -->
-  <id>bin</id>
-  <formats>
-    <format>zip</format>
-  </formats>
-  <includeBaseDirectory>true</includeBaseDirectory>
+	<!-- TODO: a jarjar format would be better -->
+	<id>bin</id>
+	<formats>
+		<format>zip</format>
+	</formats>
+	<includeBaseDirectory>true</includeBaseDirectory>
 
-  <moduleSets>
-    <moduleSet>
-      <includes>
-        <include>org.ow2.orchestra:orchestra-*</include>
-      </includes>
-      <binaries>
-        <outputDirectory>modules</outputDirectory>
-        <unpack>false</unpack>
-        <dependencySets>
-          <dependencySet>
-            <outputDirectory>lib</outputDirectory>
-            <excludes>
-              <exclude>
-                org.ow2.orchestra:orchestra-*
-              </exclude>
-            </excludes>
-          </dependencySet>
-        </dependencySets>
-      </binaries>
-    </moduleSet>
-  </moduleSets>
-  <fileSets>
-    <fileSet>
-      <directory>lib</directory>
-      <outputDirectory>lib</outputDirectory>
-      <includes>
-        <include>*.jar</include>
-      </includes>
-      <excludes>
-        <exclude>pvm.jar</exclude>
-      </excludes>
-    </fileSet>
-    <fileSet>
-      <directory>packaging</directory>
-      <outputDirectory>/</outputDirectory>
-      <includes>
-        <include>*.xml</include>
-      </includes>
-    </fileSet>
-    <fileSet>
-      <includes>
-        <include>README*</include>
-        <include>LICENSE*</include>
-        <include>NOTICE*</include>
-      </includes>
-    </fileSet>
-  </fileSets>
+	<moduleSets>
+		<moduleSet>
+			<includes>
+				<include>org.ow2.orchestra:orchestra-*</include>
+			</includes>
+			<binaries>
+				<outputDirectory>webapp/WEB-INF/lib</outputDirectory>
+				<unpack>false</unpack>
+				<dependencySets>
+					<dependencySet>
+						<outputDirectory>
+							webapp/WEB-INF/lib
+						</outputDirectory>
+						<excludes>
+							<exclude>
+								org.ow2.orchestra:orchestra-*
+							</exclude>
+						</excludes>
+					</dependencySet>
+				</dependencySets>
+			</binaries>
+		</moduleSet>
+	</moduleSets>
+	<fileSets>
+		<fileSet>
+			<directory>lib</directory>
+			<outputDirectory>webapp/WEB-INF/lib</outputDirectory>
+			<includes>
+				<include>*.jar</include>
+			</includes>
+			<excludes>
+				<exclude>pvm.jar</exclude>
+			</excludes>
+		</fileSet>
+		<fileSet>
+			<directory>packaging</directory>
+			<outputDirectory>/</outputDirectory>
+			<includes>
+				<include>**/*</include>
+			</includes>
+		</fileSet>
+		<fileSet>
+			<includes>
+				<include>README*</include>
+				<include>LICENSE*</include>
+				<include>NOTICE*</include>
+			</includes>
+		</fileSet>
+	</fileSets>
 
 </assembly>

Deleted: trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/Axis1Deployer.java (762 => 763)


--- trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/Axis1Deployer.java	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/Axis1Deployer.java	2007-09-19 15:13:56 UTC (rev 763)
@@ -1,751 +0,0 @@
-package org.ow2.orchestra.axisws;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import javax.wsdl.Binding;
-import javax.wsdl.Definition;
-import javax.wsdl.OperationType;
-import javax.wsdl.Port;
-import javax.wsdl.Service;
-import javax.wsdl.WSDLException;
-import javax.wsdl.extensions.ExtensibilityElement;
-import javax.wsdl.extensions.soap.SOAPBinding;
-import javax.wsdl.extensions.soap.SOAPBody;
-import javax.wsdl.extensions.soap12.SOAP12Binding;
-import javax.wsdl.extensions.soap12.SOAP12Body;
-import javax.wsdl.factory.WSDLFactory;
-import javax.wsdl.xml.WSDLWriter;
-import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.apache.axis.deployment.wsdd.WSDDConstants;
-import org.apache.axis.deployment.wsdd.WSDDProvider;
-import org.apache.axis.tools.ant.axis.AdminClientTask;
-import org.apache.axis.tools.ant.wsdl.TypeMappingVersionEnum;
-import org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask;
-import org.apache.axis.wsdl.toJava.Utils;
-import org.apache.tools.ant.DefaultLogger;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.Copy;
-import org.apache.tools.ant.taskdefs.Delete;
-import org.apache.tools.ant.taskdefs.Expand;
-import org.apache.tools.ant.taskdefs.Jar;
-import org.apache.tools.ant.taskdefs.Javac;
-import org.apache.tools.ant.taskdefs.Property;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.types.Path;
-import org.jbpm.JbpmException;
-import org.ow2.orchestra.ws.WSDeployer;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-/**
- * Axis engine WS deployer.
- */
-public class Axis1Deployer extends WSDeployer {
-
-  // WSDD constants
-  /** deploy.wsdd. */
-  public static final String WSDD_DEPLOY_FILE_NAME = "deploy.wsdd";
-  /** undeploy.wsdd. */
-  public static final String WSDD_UNDEPLOY_FILE_NAME = "undeploy.wsdd";
-  /** axis deployment namespace. */
-  public static final String WSDD_NS = "http://xml.apache.org/axis/wsdd/";
-  /** wsdd root element name. */
-  public static final String WSDD_SERVICE = "service";
-  /** wsdd root element style attribute name. */
-  public static final String WSDD_SERVICE_STYLE_ATTR = "style";
-  /** wsdd root element provider attribute name. */
-  public static final String WSDD_SERVICE_PROVIDER_ATTR = "provider";
-  /** wsdd style attribute message value. */
-  public static final String MESSAGE_STYLE = "Message";
-  /** utility var to rename wsdd file with a suffix. */
-  public static final String NEW_WSDD_SUFFIX = ".message";
-  /** scope of the wsdd generated. */
-  public static final String SCOPE = "Request";
-  /** jdkVersion used to compile generated java files. */
-  public static final String JDK_VERSION = "1.5";
-  /** utility variable to define ant environment.*/
-  public static final String ANT_ENV = "antEnv";
-
-  private Project antProject;
-  private File tmpDir;
-  private AxisConfiguration axisConfiguration;
-  private Definition wsdlDefinition;
-
-  /**
-   * Default constructor.
-   * @param wsId - id of the WS : in our case, processName
-   * @param wsdlUrl - url of the wsdl file to deploy.
-   * @param orchestraDirectory - Absolute path to the orchestra directory.
-   */
-  public Axis1Deployer(final QName processQName, Definition wsdlDefinition) {
-    super(processQName);
-    this.wsdlDefinition = wsdlDefinition;
-    setAntProject();
-    this.axisConfiguration = AxisConfiguration.getInstance();
-    setProxy();
-  }
-
-  /**
-   * return null if operation style is supported by Axis engine. Else, returns a message
-   * explaining the problem.
-   * @param operationStyle - operationStyle to check
-   * @return null if operation style is supported by Axis engine. Else, returns a message
-   * explaining the problem.
-   */
-  protected String checkOperationStyle(final String operationStyle) {
-    if (operationStyle == null) {
-      return "Style attribute of this operation must be specified";
-    } else if (!operationStyle.equals("document")) {
-      return "Style attribute of this operation must be : document";
-    }
-    return null;
-  }
-
-  /**
-   * return null if operation type is supported by Axis engine. Else, returns a message
-   * explaining the problem.
-   * @param operationType - operationType to check
-   * @return null if operation type is supported by Axis engine. Else, returns a message
-   * explaining the problem.
-   */
-  protected String checkOperationType(final OperationType operationType) {
-    if (!operationType.equals(OperationType.REQUEST_RESPONSE)
-        && !operationType.equals(OperationType.ONE_WAY)) {
-      return "Operation type : " + operationType
-      + " is not supported. Please use one of : "
-      + OperationType.ONE_WAY + "/"
-      + OperationType.REQUEST_RESPONSE;
-    }
-    return null;
-  }
-
-  /**
-   * return null if soapVersion is supported by Axis engine. Else, returns a message
-   * explaining the problem.
-   * @param soapBinding - soapBinding to check
-   * @return null if soapVersion is supported by Axis engine. Else, returns a message
-   * explaining the problem.
-   */
-  protected String checkSoapVersion(final ExtensibilityElement soapBinding) {
-    String soapVersion = null;
-    if (!(soapBinding instanceof SOAPBinding)
-        && !(soapBinding instanceof SOAP12Binding)) {
-      return "Supported Soap Version are " + URI_WSDL11_SOAP11 + "/"
-      + URI_WSDL11_SOAP12;
-    }
-    return null;
-  }
-
-  /**
-   * return null if transport is supported by Axis engine. Else, returns a message
-   * explaining the problem.
-   * @param soapBinding - soapBinding to check
-   * @return null if transport is supported by Axis engine. Else, returns a message
-   * explaining the problem.
-   */
-  protected String checkTransport(final ExtensibilityElement soapBinding) {
-    String transportUri = "";
-    if (soapBinding instanceof SOAPBinding) {
-      transportUri = ((SOAPBinding) soapBinding).getTransportURI();
-    } else if (soapBinding instanceof SOAP12Binding) {
-      transportUri = ((SOAP12Binding) soapBinding).getTransportURI();
-    }
-    if (!SOAP_HTTP_TRANSPORT_URI.equals(transportUri)) {
-      return "Transport URI : " + transportUri
-      + " is not supported. Please use "
-      + SOAP_HTTP_TRANSPORT_URI;
-    }
-    return null;
-  }
-
-  /**
-   * return null if use is supported by Axis engine. Else, returns a message
-   * explaining the problem.
-   * @param soapBody - soapBody to check
-   * @return null if use is supported by Axis engine. Else, returns a message
-   * explaining the problem.
-   */
-  protected String checkUse(final ExtensibilityElement soapBody) {
-    String use = "";
-    if (soapBody instanceof SOAPBody) {
-      use = ((SOAPBody) soapBody).getUse();
-    } else if (soapBody instanceof SOAP12Body) {
-      use = ((SOAP12Body) soapBody).getUse();
-    }
-    if (!"literal".equals(use)) {
-      return "Use : " + use + " is not supported. Please use " + "literal";
-    }
-    return null;
-  }
-
-  /**
-   * return null if soapBody attributes are supported by Axis engine. Else, returns a message
-   * explaining the problem.
-   * @param soapBody - soapBody to check
-   * @return null if soapBody attributes are supported supported by Axis engine. Else, returns a message
-   * explaining the problem.
-   */
-  protected String checkSoapBody(final ExtensibilityElement soapBody) {
-    List parts = null;
-    if (soapBody instanceof SOAPBody) {
-      parts = ((SOAPBody) soapBody).getParts();
-    } else if (soapBody instanceof SOAP12Body) {
-      parts = ((SOAP12Body) soapBody).getParts();
-    }
-    if (parts != null) {
-      return "SoapBody is using parts attribute which is not currently supported.";
-    }
-    return null;
-  }
-
-  /**
-   * Check if WS engine is available. Else throws an exception.
-   * @throws Exception - ex if ws engine is not available
-   */
-  protected void checkWSEngineIsAvailable() {
-    String urlString = "http://"
-      + this.axisConfiguration.getHost()
-      + ":" + this.axisConfiguration.getPort()
-      + "/" + this.axisConfiguration.getWebappName()
-      + "/" + this.axisConfiguration.getServletPath()
-      + "/" + this.axisConfiguration.getGetVersionSvc();
-    try {
-      connectURL(urlString);
-    } catch (Exception e) {
-      throw new JbpmException(
-          "Axis web container is not started or Axis engine is not deployed",
-          e);
-    }
-
-  }
-
-  /**
-   * This method will deploy the specified WS Service on the choosen ws engine.
-   * This method must be overriden by each ws engine Deployer.
-   *
-   * @param def - Definition object that represents a WS Service to deploy.
-   * @throws Exception the exception
-   */
-  protected void deployServices(List<Service> services) {
-    QName javaURI = new QName(WSDDConstants.URI_WSDD_JAVA, WSDDBPELMsgProvider.PROVIDER_NAME);
-    WSDDProvider.registerProvider(javaURI, new WSDDBPELMsgProvider());
-    synchronized (getProcessQName()) {
-      createTmpDir();
-      try {
-        File wsdl = generateWsdl(wsdlDefinition);
-        wsdl2java(wsdl);
-        File wsddFile = getDeployWsddFile(wsdlDefinition.getTargetNamespace());
-        File newWsddFile = updateWsddFile(wsddFile);
-        // remove old wsdd and rename new wsdd
-        if (!wsddFile.delete()) {
-          throw new JbpmException("Problem deleting old wsdd file : " + wsddFile);
-        }
-        if (!newWsddFile.renameTo(wsddFile)) {
-          throw new JbpmException("Problem renaming new wsdd file from : " + newWsddFile + " to : " + wsddFile);
-        }
-        // update implementations
-        List<String> writtenClasses = updateImplementationFiles(services);
-        // compile java classes, create a jar and deploy it into WEB-INF/lib
-        deployJarToWebServer();
-        // load wsdd file into axis webapp
-        callAdminClientTask(wsddFile);
-      } catch (Exception e) {
-        throw new JbpmException("Exception caught in " + this.getClass(), e);
-      } finally {
-        deleteTmpDir();
-      }
-    }
-  }
-  
-  private File generateWsdl(Definition wsdlDefinition) throws WSDLException, IOException {
-    WSDLFactory wsdlFactory = WSDLFactory.newInstance();
-    WSDLWriter writer = wsdlFactory.newWSDLWriter();
-    File wsdlFile = File.createTempFile(getProcessQName().getLocalPart(), ".wsdl", this.tmpDir);
-    FileOutputStream fileOutputStream = new FileOutputStream(wsdlFile);
-    writer.writeWSDL(wsdlDefinition, fileOutputStream);
-    fileOutputStream.close();
-    return wsdlFile;
-  }
-
-  /**
-   * This method will undeploy the specified WS Service from the choosen ws engine.
-   * This method must be overriden by each ws engine Deployer.
-   *
-   * @param def - Definition object that represents a WS Service to undeploy.
-   *
-   * @throws Exception the exception
-   */
-  protected void undeployServices(List<Service> services) {
-    synchronized (getProcessQName()) {
-      createTmpDir();
-      try {
-        //extract jar file to get undeploy service descriptor
-        extractJarFile();
-        File[] undeployFiles = getUndeployFiles();
-        for (File undeployWsdd : undeployFiles) {
-          callAdminClientTask(undeployWsdd);
-        }
-      } catch (Exception e) {
-        throw new JbpmException("Exception caught in " + this.getClass(), e);
-      } finally {
-        deleteTmpDir();
-      }
-    }
-  }
-
-  /**
-   * Extracts a jar deployed in web server to baseDir.
-   * @throws Exception - exception
-   */
-  private void extractJarFile() throws Exception {
-    String jarRepository = getJarRepository();
-    File jarFile = new File(
-        jarRepository
-        + File.separator + getProcessQName().getLocalPart()
-        + ".jar");
-    Expand unjar = new Expand();
-    unjar.setProject(this.antProject);
-    unjar.setSrc(jarFile);
-    unjar.setDest(this.tmpDir);
-    unjar.setTaskName("unjar");
-    unjar.execute();
-  }
-
-  /**
-   * Call axis admin client with the given wsdd file to deploy/undeploy services.
-   * @param wsddFile - wsdd file to use
-   */
-  private void callAdminClientTask(final File wsddFile) {
-    AdminClientTask adminClientTask = new AdminClientTask();
-    adminClientTask.setProject(this.antProject);
-    adminClientTask.init();
-    adminClientTask.setUrl(
-        "-lhttp://" + this.axisConfiguration.getHost()
-        + ":" + this.axisConfiguration.getPort()
-        + "/" + this.axisConfiguration.getWebappName() + "/servlet/AxisServlet");
-    adminClientTask.setXmlFile(wsddFile);
-    adminClientTask.setTaskName("adminClientTask");
-    adminClientTask.execute();
-  }
-
-  /**
-   * Deploy axis WS jar to web server. For that :
-   * - compile wsdl2java + new binding classes
-   * - create the jar file
-   * - deploy it in web server
-   *
-   * @throws Exception the exception
-   */
-  private void deployJarToWebServer() throws Exception {
-    compileClasses();
-    File jarFile = createJar();
-    File destJarFile = deployJar(jarFile);
-    ClassLoader parent = Axis1Deployer.class.getClassLoader();
-    URL url = ""
-    URL[] urls = new URL[]{url};
-    ProcessClassLoader cl = new ProcessClassLoader(getProcessQName(), urls, parent);
-    ClassLoaderMap.addCL(getProcessQName(), cl);
-  }
-
-  /**
-   * Creates the WS jar file based on generated classes.
-   * @return the created jar file
-   */
-  private File createJar() {
-    File jarFile = getWSJarFile();
-    Jar j = new Jar();
-    j.setTaskName("jar");
-    j.setProject(this.antProject);
-    j.setDestFile(jarFile);
-    FileSet fs1 = new FileSet();
-    fs1.setDir(this.tmpDir);
-    j.addFileset(fs1);
-    j.execute();
-    return jarFile;
-  }
-
-  /**
-   * Deploys the given jar file to web server.
-   *
-   * @param jarFile the jar file
-   *
-   * @throws Exception the exception
-   */
-  private File deployJar(final File jarFile) throws Exception {
-    String jarRepository = getJarRepository();
-    File destJarFile = new File(
-        jarRepository
-        + File.separator + getProcessQName().getLocalPart()
-        + ".jar");
-    Copy c = new Copy();
-    c.setProject(this.antProject);
-    c.setFile(jarFile);
-    c.setTofile(destJarFile);
-    c.setTaskName("copy");
-    c.execute();
-    return destJarFile;
-  }
-
-  /**
-   * Compiles java classes from basedir.
-   */
-  private void compileClasses() {
-    Javac j = new Javac();
-    j.setProject(this.antProject);
-    j.setDestdir(this.tmpDir);
-    Path srcDir = new Path(this.antProject);
-    srcDir.setLocation(this.tmpDir);
-    j.setSrcdir(srcDir);
-
-    FileSet fileset = new FileSet();
-    fileset.setDir(new File(getWebappLibDir()));
-    fileset.setIncludes("**/*.jar");
-
-    Path classpath = new Path(this.antProject);
-    classpath.addFileset(fileset);
-
-    j.setClasspath(classpath);
-
-
-    j.setVerbose(false);
-    j.setFork(true);
-    j.setIncludes("**/*.java");
-    j.setTaskName("javac");
-    j.setSource(JDK_VERSION);
-    j.setDebug(true);
-    j.init();
-    j.execute();
-  }
-
-  /**
-   * Create new java implementations for each binding of the given definition.
-   * @param def - the definition to analyse.
-   * @return a list of created classes
-   * @throws Exception - ex
-   */
-  private List<String> updateImplementationFiles(List<Service> services) throws Exception {
-    List<String> writtenClasses = new ArrayList<String>();
-    for (Service service : services) {
-      for (Port port : (Collection<Port>)service.getPorts().values()) {
-        Binding binding = port.getBinding();
-        writtenClasses.add(new BindingFileWriter(this.tmpDir, binding, getProcessQName()).write());
-      }
-    }
-    return writtenClasses;
-  }
-
-  /**
-   * Updates the given wsddFile to make it using message style service.
-   * @param wsddFile : wsddFile to update
-   * @return the updated wsddFile
-   */
-  private File updateWsddFile(final File wsddFile) throws Exception {
-    //parse wsdd file
-
-
-    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
-    DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
-    Document wsddDoc = documentBuilder.parse(wsddFile);
-
-    //for each service, set style to Message
-    Element deploymentElement = wsddDoc.getDocumentElement();
-    NodeList services = deploymentElement.getElementsByTagName(WSDD_SERVICE);
-    for (int i = 0; i < services.getLength(); i++) {
-      Element service = (Element) services.item(i);
-
-      Element processNameParameter = service.getOwnerDocument().createElement("parameter");
-      processNameParameter.setAttribute("name", "bpelProcessName");
-      processNameParameter.setAttribute("value", getProcessQName().getLocalPart());
-
-      Element processNamespaceParameter = service.getOwnerDocument().createElement("parameter");
-      processNamespaceParameter.setAttribute("name", "bpelProcessNamespace");
-      processNamespaceParameter.setAttribute("value", getProcessQName().getNamespaceURI());
-
-      Attr providerAttribute = service.getOwnerDocument().createAttribute(WSDD_SERVICE_PROVIDER_ATTR);
-      providerAttribute.setValue("java:BPELMsg");
-
-      service.getOwnerDocument().importNode(processNameParameter, true);
-      service.getOwnerDocument().importNode(processNamespaceParameter, true);
-      service.getOwnerDocument().importNode(providerAttribute, true);
-
-      service.appendChild(processNameParameter);
-      service.appendChild(processNamespaceParameter);
-      service.setAttributeNode(providerAttribute);
-
-      service.setAttribute(WSDD_SERVICE_STYLE_ATTR, MESSAGE_STYLE);
-    }
-    File newWsddFile = getWsddCopy(wsddFile);
-    writeXmlFile(wsddDoc, newWsddFile);
-    return newWsddFile;
-  }
-
-  /**
-   * Return a copy of the given wsdd file.
-   * @param originalWsddFile : original wsdd file
-   * @return the copied wsdd file (the new created one)
-   */
-  private File getWsddCopy(final File originalWsddFile) {
-    return new File(originalWsddFile.getAbsolutePath() + NEW_WSDD_SUFFIX);
-  }
-
-  /**
-   * Return the deploy wsdd file of the given definition.
-   * @param def : def to analyse
-   * @return the deploy wsdd file used by the given def
-   */
-  private File getDeployWsddFile(String wsdlTargetnamespace) {
-    return new File(getWsddFilesDir(wsdlTargetnamespace) + File.separator + WSDD_DEPLOY_FILE_NAME);
-  }
-
-  /**
-   * Return the undeploy wsdd file of the given definition.
-   * @param def : def to analyse
-   * @return the undeploy wsdd file used by the given def
-   */
-  private File[] getUndeployFiles() {
-    FilenameFilter filter = new UndeployFilter();
-    return this.tmpDir.listFiles(filter);
-  }
-
-  private class UndeployFilter implements FilenameFilter {
-      public boolean accept(File dir, String name) {
-        return dir.exists() && name.equals("undeploy.wsdd");
-    }
-  }
-  /**
-   * Returns the directory where wsdd files of this definition could be found.
-   * @param def : def to analyse
-   * @return the directory where wsdd files of this definition could be found
-   */
-  private String getWsddFilesDir(String wsdlTargetnamespace) {
-    String wsddFilesDir = this.tmpDir
-      + File.separator
-      + getDirectoryFromPackage(getPackageFromNamespace(wsdlTargetnamespace));
-    return wsddFilesDir;
-  }
-
-  /**
-   * Performs a wsdl2java task on the given definition.
-   * @throws MalformedURLException - if the wsdl url is not correct
-   */
-  private void wsdl2java(File wsdl) throws MalformedURLException {
-    Wsdl2javaAntTask wsdl2java = new Wsdl2javaAntTask();
-    wsdl2java.setProject(this.antProject);
-    wsdl2java.setTaskName("wsdl2java");
-    wsdl2java.setOutput(this.tmpDir);
-    wsdl2java.setURL(wsdl.toString());
-    wsdl2java.setAll(true);
-    wsdl2java.setHelperGen(true);
-    wsdl2java.setServerSide(true);
-    wsdl2java.setVerbose(true);
-    wsdl2java.setNoWrapped(true);
-    wsdl2java.setWrapArrays(true);
-    wsdl2java.setDebug(false);
-    wsdl2java.setAllowInvalidUrl(false);
-    wsdl2java.setDeployScope(SCOPE);
-    TypeMappingVersionEnum tmve = new TypeMappingVersionEnum();
-    tmve.setValue(this.axisConfiguration.getTypeMapping());
-    wsdl2java.setTypeMappingVersion(tmve);
-    wsdl2java.setAll(true);
-    wsdl2java.execute();
-  }
-
-  /*
-   * UTILITY METHODS
-   */
-
-  /**
-   * Set basedir field.
-   */
-  private void createTmpDir() {
-    try {
-      new File(System.getProperty("java.io.tmpdir")).mkdirs();
-      this.tmpDir = File.createTempFile("orch", null, null);
-      tmpDir.delete();
-      if (!tmpDir.mkdirs()) {
-        throw new IOException("Cannot create the temporary directory '" + tmpDir + "'.");
-      }
-
-    } catch (Exception e) {
-      throw new JbpmException("Error creating " + this.tmpDir, e);
-    }
-  }
-
-  /**
-   * Returns the jar file of the current ws deployed in web server.
-   * @return the jar file of the current ws deployed in web server.
-   */
-  private String getJarRepository() {
-    File repo = new File(getWebappLibDir() + File.separator + "WS_Repo");
-    repo.mkdirs();
-    return repo.getAbsolutePath();
-  }
-
-  private String getWebappLibDir() {
-    String dir = this.axisConfiguration.getWebappDir()
-    + File.separator + this.axisConfiguration.getWebappName()
-    + File.separator + "WEB-INF" + File.separator + "lib";
-    return dir;
-  }
-
-  /**
-   * Returns the jar file of the current ws : this jar is in basedir (not already deployed).
-   * @return the jar file of the current ws : this jar is in basedir (not already deployed).
-   */
-  private File getWSJarFile() {
-    return new File(this.tmpDir + File.separator + getProcessQName().getLocalPart() + ".jar");
-  }
-
-  /**
-   * Create a connection to the given url.
-   * @param urlString : url to connect
-   * @return the created connection
-   * @throws MalformedURLException - ex
-   * @throws IOException - ex
-   * @throws Exception - ex
-   */
-  private URLConnection connectURL(final String urlString) throws Exception {
-    URL getVersionURL = new URL(urlString);
-    URLConnection connection = getVersionURL.openConnection();
-    try {
-      connection.connect();
-    } catch (Exception e) {
-      throw new Exception("Unable to get a connection on URL : ", e);
-    }
-    return connection;
-  }
-
-  /**
-   * Deletes the given directory.
-   * @param dir - dir to delete.
-   */
-  private void deleteDir(final File dir) {
-    Delete d = new Delete();
-    d.setTaskName("delete");
-    d.setDir(dir);
-    d.setProject(this.antProject);
-    d.execute();
-  }
-
-  /**
-   * Deletes the given File.
-   * @param f - file to delete
-   */
-  private void deleteFile(final File f) {
-    Delete d = new Delete();
-    d.setTaskName("delete");
-    d.setFile(f);
-    d.setProject(this.antProject);
-    d.execute();
-  }
-
-  /**
-   * Deletes all generated files of this ws.
-   * @throws Exception - ex
-   */
-  private void deleteTmpDir() {
-    try {
-      //deleteDir(this.tmpDir);
-    } catch (Exception e) {
-      throw new JbpmException(this.getClass() + ".deleteGeneratedFiles, unable to delete directory : " + this.tmpDir, e);
-    }
-  }
-
-  /**
-   * Set the used ant project.
-   *
-   */
-  private void setAntProject() {
-    this.antProject = new Project();
-
-    //Class to Write build events to a PrintStream
-    DefaultLogger dl = new DefaultLogger();
-    dl.setMessageOutputLevel(Project.MSG_INFO);
-    dl.setErrorPrintStream(System.out);
-    dl.setOutputPrintStream(System.out);
-    dl.setEmacsMode(false);
-    this.antProject.addBuildListener(dl);
-
-    //Initialise the project. This involves setting the default
-    //task definitions and loading the system properties.
-    this.antProject.init();
-
-    Property p = new Property();
-    p.setEnvironment(ANT_ENV);
-    p.setProject(this.antProject);
-    p.execute();
-
-
-  }
-
-  /**
-   * This method writes a DOM document to a file.
-   * @param doc - doc to write
-   * @param file - dest file;
-   */
-  private static void writeXmlFile(final Document doc, final File file) {
-    try {
-      // Prepare the DOM document for writing
-      Source source = new DOMSource(doc);
-      Result result = new StreamResult("file://" + file.getAbsolutePath());
-      // Write the DOM document to the file
-      Transformer xformer = TransformerFactory.newInstance().newTransformer();
-      xformer.transform(source, result);
-    } catch (TransformerConfigurationException e) {
-      e.printStackTrace();
-    } catch (TransformerException e) {
-      e.printStackTrace();
-    }
-  }
-
-  /**
-   * Returns the java package that maps to the given namespace.
-   * @param ns - ns
-   * @return the java package that maps to the given namespace.
-   */
-  public static String getPackageFromNamespace(final String ns) {
-    String packag = Utils.makePackageName(ns);
-    return packag;
-  }
-
-  /**
-   * Returns the directory structure corresponding to the given package.
-   * @param packag - packag
-   * @return the directory structure corresponding to the given package.
-   */
-  public static String getDirectoryFromPackage(final String packag) {
-    String dir = packag.replace('.', File.separatorChar);
-    return dir;
-  }
-
-  /**
-   * Set the proxy (if needed) from the Axis configuration.
-   */
-  private void setProxy() {
-    System.getProperties().put("http.proxyHost", this.axisConfiguration.getHttpProxyHost());
-    System.getProperties().put("http.proxyPort", this.axisConfiguration.getHttpProxyPort());
-    System.getProperties().put("http.nonProxyHosts", this.axisConfiguration.getHttpNonProxyHosts());
-  }
-}

Modified: trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisConfiguration.java (762 => 763)


--- trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisConfiguration.java	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisConfiguration.java	2007-09-19 15:13:56 UTC (rev 763)
@@ -16,7 +16,7 @@
 public class AxisConfiguration {
 
   // Axis classes are run from WEB-INF/classes/, the axis configuration file is in WEB-INF/ 
-  private static String axisConfigFile = "../axis-conf.xml"; 
+  private static String axisConfigFile = "../orchestra-axis-conf.xml"; 
 
   private static AxisConfiguration configuration;
   

Modified: trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisConfigurationFileParser.java (762 => 763)


--- trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisConfigurationFileParser.java	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisConfigurationFileParser.java	2007-09-19 15:13:56 UTC (rev 763)
@@ -29,8 +29,6 @@
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
-import javax.xml.transform.Source;
-import javax.xml.transform.stream.StreamSource;
 import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
 

Copied: trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisDeployer.java (from rev 758, trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/Axis1Deployer.java) (758 => 763)


--- trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/Axis1Deployer.java	2007-09-19 12:40:24 UTC (rev 758)
+++ trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisDeployer.java	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,751 @@
+package org.ow2.orchestra.axisws;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import javax.wsdl.Binding;
+import javax.wsdl.Definition;
+import javax.wsdl.OperationType;
+import javax.wsdl.Port;
+import javax.wsdl.Service;
+import javax.wsdl.WSDLException;
+import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.soap.SOAPBinding;
+import javax.wsdl.extensions.soap.SOAPBody;
+import javax.wsdl.extensions.soap12.SOAP12Binding;
+import javax.wsdl.extensions.soap12.SOAP12Body;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLWriter;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.axis.deployment.wsdd.WSDDConstants;
+import org.apache.axis.deployment.wsdd.WSDDProvider;
+import org.apache.axis.tools.ant.axis.AdminClientTask;
+import org.apache.axis.tools.ant.wsdl.TypeMappingVersionEnum;
+import org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask;
+import org.apache.axis.wsdl.toJava.Utils;
+import org.apache.tools.ant.DefaultLogger;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Copy;
+import org.apache.tools.ant.taskdefs.Delete;
+import org.apache.tools.ant.taskdefs.Expand;
+import org.apache.tools.ant.taskdefs.Jar;
+import org.apache.tools.ant.taskdefs.Javac;
+import org.apache.tools.ant.taskdefs.Property;
+import org.apache.tools.ant.types.FileSet;
+import org.apache.tools.ant.types.Path;
+import org.jbpm.JbpmException;
+import org.ow2.orchestra.ws.WSDeployer;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+/**
+ * Axis engine WS deployer.
+ */
+public class AxisDeployer extends WSDeployer {
+
+  // WSDD constants
+  /** deploy.wsdd. */
+  public static final String WSDD_DEPLOY_FILE_NAME = "deploy.wsdd";
+  /** undeploy.wsdd. */
+  public static final String WSDD_UNDEPLOY_FILE_NAME = "undeploy.wsdd";
+  /** axis deployment namespace. */
+  public static final String WSDD_NS = "http://xml.apache.org/axis/wsdd/";
+  /** wsdd root element name. */
+  public static final String WSDD_SERVICE = "service";
+  /** wsdd root element style attribute name. */
+  public static final String WSDD_SERVICE_STYLE_ATTR = "style";
+  /** wsdd root element provider attribute name. */
+  public static final String WSDD_SERVICE_PROVIDER_ATTR = "provider";
+  /** wsdd style attribute message value. */
+  public static final String MESSAGE_STYLE = "Message";
+  /** utility var to rename wsdd file with a suffix. */
+  public static final String NEW_WSDD_SUFFIX = ".message";
+  /** scope of the wsdd generated. */
+  public static final String SCOPE = "Request";
+  /** jdkVersion used to compile generated java files. */
+  public static final String JDK_VERSION = "1.5";
+  /** utility variable to define ant environment.*/
+  public static final String ANT_ENV = "antEnv";
+
+  private Project antProject;
+  private File tmpDir;
+  private AxisConfiguration axisConfiguration;
+  private Definition wsdlDefinition;
+
+  /**
+   * Default constructor.
+   * @param wsId - id of the WS : in our case, processName
+   * @param wsdlUrl - url of the wsdl file to deploy.
+   * @param orchestraDirectory - Absolute path to the orchestra directory.
+   */
+  public AxisDeployer(final QName processQName, Definition wsdlDefinition) {
+    super(processQName);
+    this.wsdlDefinition = wsdlDefinition;
+    setAntProject();
+    this.axisConfiguration = AxisConfiguration.getInstance();
+    setProxy();
+  }
+
+  /**
+   * return null if operation style is supported by Axis engine. Else, returns a message
+   * explaining the problem.
+   * @param operationStyle - operationStyle to check
+   * @return null if operation style is supported by Axis engine. Else, returns a message
+   * explaining the problem.
+   */
+  protected String checkOperationStyle(final String operationStyle) {
+    if (operationStyle == null) {
+      return "Style attribute of this operation must be specified";
+    } else if (!operationStyle.equals("document")) {
+      return "Style attribute of this operation must be : document";
+    }
+    return null;
+  }
+
+  /**
+   * return null if operation type is supported by Axis engine. Else, returns a message
+   * explaining the problem.
+   * @param operationType - operationType to check
+   * @return null if operation type is supported by Axis engine. Else, returns a message
+   * explaining the problem.
+   */
+  protected String checkOperationType(final OperationType operationType) {
+    if (!operationType.equals(OperationType.REQUEST_RESPONSE)
+        && !operationType.equals(OperationType.ONE_WAY)) {
+      return "Operation type : " + operationType
+      + " is not supported. Please use one of : "
+      + OperationType.ONE_WAY + "/"
+      + OperationType.REQUEST_RESPONSE;
+    }
+    return null;
+  }
+
+  /**
+   * return null if soapVersion is supported by Axis engine. Else, returns a message
+   * explaining the problem.
+   * @param soapBinding - soapBinding to check
+   * @return null if soapVersion is supported by Axis engine. Else, returns a message
+   * explaining the problem.
+   */
+  protected String checkSoapVersion(final ExtensibilityElement soapBinding) {
+    String soapVersion = null;
+    if (!(soapBinding instanceof SOAPBinding)
+        && !(soapBinding instanceof SOAP12Binding)) {
+      return "Supported Soap Version are " + URI_WSDL11_SOAP11 + "/"
+      + URI_WSDL11_SOAP12;
+    }
+    return null;
+  }
+
+  /**
+   * return null if transport is supported by Axis engine. Else, returns a message
+   * explaining the problem.
+   * @param soapBinding - soapBinding to check
+   * @return null if transport is supported by Axis engine. Else, returns a message
+   * explaining the problem.
+   */
+  protected String checkTransport(final ExtensibilityElement soapBinding) {
+    String transportUri = "";
+    if (soapBinding instanceof SOAPBinding) {
+      transportUri = ((SOAPBinding) soapBinding).getTransportURI();
+    } else if (soapBinding instanceof SOAP12Binding) {
+      transportUri = ((SOAP12Binding) soapBinding).getTransportURI();
+    }
+    if (!SOAP_HTTP_TRANSPORT_URI.equals(transportUri)) {
+      return "Transport URI : " + transportUri
+      + " is not supported. Please use "
+      + SOAP_HTTP_TRANSPORT_URI;
+    }
+    return null;
+  }
+
+  /**
+   * return null if use is supported by Axis engine. Else, returns a message
+   * explaining the problem.
+   * @param soapBody - soapBody to check
+   * @return null if use is supported by Axis engine. Else, returns a message
+   * explaining the problem.
+   */
+  protected String checkUse(final ExtensibilityElement soapBody) {
+    String use = "";
+    if (soapBody instanceof SOAPBody) {
+      use = ((SOAPBody) soapBody).getUse();
+    } else if (soapBody instanceof SOAP12Body) {
+      use = ((SOAP12Body) soapBody).getUse();
+    }
+    if (!"literal".equals(use)) {
+      return "Use : " + use + " is not supported. Please use " + "literal";
+    }
+    return null;
+  }
+
+  /**
+   * return null if soapBody attributes are supported by Axis engine. Else, returns a message
+   * explaining the problem.
+   * @param soapBody - soapBody to check
+   * @return null if soapBody attributes are supported supported by Axis engine. Else, returns a message
+   * explaining the problem.
+   */
+  protected String checkSoapBody(final ExtensibilityElement soapBody) {
+    List parts = null;
+    if (soapBody instanceof SOAPBody) {
+      parts = ((SOAPBody) soapBody).getParts();
+    } else if (soapBody instanceof SOAP12Body) {
+      parts = ((SOAP12Body) soapBody).getParts();
+    }
+    if (parts != null) {
+      return "SoapBody is using parts attribute which is not currently supported.";
+    }
+    return null;
+  }
+
+  /**
+   * Check if WS engine is available. Else throws an exception.
+   * @throws Exception - ex if ws engine is not available
+   */
+  protected void checkWSEngineIsAvailable() {
+    String urlString = "http://"
+      + this.axisConfiguration.getHost()
+      + ":" + this.axisConfiguration.getPort()
+      + "/" + this.axisConfiguration.getWebappName()
+      + "/" + this.axisConfiguration.getServletPath()
+      + "/" + this.axisConfiguration.getGetVersionSvc();
+    try {
+      connectURL(urlString);
+    } catch (Exception e) {
+      throw new JbpmException(
+          "Axis web container is not started or Axis engine is not deployed",
+          e);
+    }
+
+  }
+
+  /**
+   * This method will deploy the specified WS Service on the choosen ws engine.
+   * This method must be overriden by each ws engine Deployer.
+   *
+   * @param def - Definition object that represents a WS Service to deploy.
+   * @throws Exception the exception
+   */
+  protected void deployServices(List<Service> services) {
+    QName javaURI = new QName(WSDDConstants.URI_WSDD_JAVA, WSDDBPELMsgProvider.PROVIDER_NAME);
+    WSDDProvider.registerProvider(javaURI, new WSDDBPELMsgProvider());
+    synchronized (getProcessQName()) {
+      createTmpDir();
+      try {
+        File wsdl = generateWsdl(wsdlDefinition);
+        wsdl2java(wsdl);
+        File wsddFile = getDeployWsddFile(wsdlDefinition.getTargetNamespace());
+        File newWsddFile = updateWsddFile(wsddFile);
+        // remove old wsdd and rename new wsdd
+        if (!wsddFile.delete()) {
+          throw new JbpmException("Problem deleting old wsdd file : " + wsddFile);
+        }
+        if (!newWsddFile.renameTo(wsddFile)) {
+          throw new JbpmException("Problem renaming new wsdd file from : " + newWsddFile + " to : " + wsddFile);
+        }
+        // update implementations
+        List<String> writtenClasses = updateImplementationFiles(services);
+        // compile java classes, create a jar and deploy it into WEB-INF/lib
+        deployJarToWebServer();
+        // load wsdd file into axis webapp
+        callAdminClientTask(wsddFile);
+      } catch (Exception e) {
+        throw new JbpmException("Exception caught in " + this.getClass(), e);
+      } finally {
+        deleteTmpDir();
+      }
+    }
+  }
+  
+  private File generateWsdl(Definition wsdlDefinition) throws WSDLException, IOException {
+    WSDLFactory wsdlFactory = WSDLFactory.newInstance();
+    WSDLWriter writer = wsdlFactory.newWSDLWriter();
+    File wsdlFile = File.createTempFile(getProcessQName().getLocalPart(), ".wsdl", this.tmpDir);
+    FileOutputStream fileOutputStream = new FileOutputStream(wsdlFile);
+    writer.writeWSDL(wsdlDefinition, fileOutputStream);
+    fileOutputStream.close();
+    return wsdlFile;
+  }
+
+  /**
+   * This method will undeploy the specified WS Service from the choosen ws engine.
+   * This method must be overriden by each ws engine Deployer.
+   *
+   * @param def - Definition object that represents a WS Service to undeploy.
+   *
+   * @throws Exception the exception
+   */
+  protected void undeployServices(List<Service> services) {
+    synchronized (getProcessQName()) {
+      createTmpDir();
+      try {
+        //extract jar file to get undeploy service descriptor
+        extractJarFile();
+        File[] undeployFiles = getUndeployFiles();
+        for (File undeployWsdd : undeployFiles) {
+          callAdminClientTask(undeployWsdd);
+        }
+      } catch (Exception e) {
+        throw new JbpmException("Exception caught in " + this.getClass(), e);
+      } finally {
+        deleteTmpDir();
+      }
+    }
+  }
+
+  /**
+   * Extracts a jar deployed in web server to baseDir.
+   * @throws Exception - exception
+   */
+  private void extractJarFile() throws Exception {
+    String jarRepository = getJarRepository();
+    File jarFile = new File(
+        jarRepository
+        + File.separator + getProcessQName().getLocalPart()
+        + ".jar");
+    Expand unjar = new Expand();
+    unjar.setProject(this.antProject);
+    unjar.setSrc(jarFile);
+    unjar.setDest(this.tmpDir);
+    unjar.setTaskName("unjar");
+    unjar.execute();
+  }
+
+  /**
+   * Call axis admin client with the given wsdd file to deploy/undeploy services.
+   * @param wsddFile - wsdd file to use
+   */
+  private void callAdminClientTask(final File wsddFile) {
+    AdminClientTask adminClientTask = new AdminClientTask();
+    adminClientTask.setProject(this.antProject);
+    adminClientTask.init();
+    adminClientTask.setUrl(
+        "-lhttp://" + this.axisConfiguration.getHost()
+        + ":" + this.axisConfiguration.getPort()
+        + "/" + this.axisConfiguration.getWebappName() + "/servlet/AxisServlet");
+    adminClientTask.setXmlFile(wsddFile);
+    adminClientTask.setTaskName("adminClientTask");
+    adminClientTask.execute();
+  }
+
+  /**
+   * Deploy axis WS jar to web server. For that :
+   * - compile wsdl2java + new binding classes
+   * - create the jar file
+   * - deploy it in web server
+   *
+   * @throws Exception the exception
+   */
+  private void deployJarToWebServer() throws Exception {
+    compileClasses();
+    File jarFile = createJar();
+    File destJarFile = deployJar(jarFile);
+    ClassLoader parent = AxisDeployer.class.getClassLoader();
+    URL url = ""
+    URL[] urls = new URL[]{url};
+    ProcessClassLoader cl = new ProcessClassLoader(getProcessQName(), urls, parent);
+    ClassLoaderMap.addCL(getProcessQName(), cl);
+  }
+
+  /**
+   * Creates the WS jar file based on generated classes.
+   * @return the created jar file
+   */
+  private File createJar() {
+    File jarFile = getWSJarFile();
+    Jar j = new Jar();
+    j.setTaskName("jar");
+    j.setProject(this.antProject);
+    j.setDestFile(jarFile);
+    FileSet fs1 = new FileSet();
+    fs1.setDir(this.tmpDir);
+    j.addFileset(fs1);
+    j.execute();
+    return jarFile;
+  }
+
+  /**
+   * Deploys the given jar file to web server.
+   *
+   * @param jarFile the jar file
+   *
+   * @throws Exception the exception
+   */
+  private File deployJar(final File jarFile) throws Exception {
+    String jarRepository = getJarRepository();
+    File destJarFile = new File(
+        jarRepository
+        + File.separator + getProcessQName().getLocalPart()
+        + ".jar");
+    Copy c = new Copy();
+    c.setProject(this.antProject);
+    c.setFile(jarFile);
+    c.setTofile(destJarFile);
+    c.setTaskName("copy");
+    c.execute();
+    return destJarFile;
+  }
+
+  /**
+   * Compiles java classes from basedir.
+   */
+  private void compileClasses() {
+    Javac j = new Javac();
+    j.setProject(this.antProject);
+    j.setDestdir(this.tmpDir);
+    Path srcDir = new Path(this.antProject);
+    srcDir.setLocation(this.tmpDir);
+    j.setSrcdir(srcDir);
+
+    FileSet fileset = new FileSet();
+    fileset.setDir(new File(getWebappLibDir()));
+    fileset.setIncludes("**/*.jar");
+
+    Path classpath = new Path(this.antProject);
+    classpath.addFileset(fileset);
+
+    j.setClasspath(classpath);
+
+
+    j.setVerbose(false);
+    j.setFork(true);
+    j.setIncludes("**/*.java");
+    j.setTaskName("javac");
+    j.setSource(JDK_VERSION);
+    j.setDebug(true);
+    j.init();
+    j.execute();
+  }
+
+  /**
+   * Create new java implementations for each binding of the given definition.
+   * @param def - the definition to analyse.
+   * @return a list of created classes
+   * @throws Exception - ex
+   */
+  private List<String> updateImplementationFiles(List<Service> services) throws Exception {
+    List<String> writtenClasses = new ArrayList<String>();
+    for (Service service : services) {
+      for (Port port : (Collection<Port>)service.getPorts().values()) {
+        Binding binding = port.getBinding();
+        writtenClasses.add(new BindingFileWriter(this.tmpDir, binding, getProcessQName()).write());
+      }
+    }
+    return writtenClasses;
+  }
+
+  /**
+   * Updates the given wsddFile to make it using message style service.
+   * @param wsddFile : wsddFile to update
+   * @return the updated wsddFile
+   */
+  private File updateWsddFile(final File wsddFile) throws Exception {
+    //parse wsdd file
+
+
+    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+    DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
+    Document wsddDoc = documentBuilder.parse(wsddFile);
+
+    //for each service, set style to Message
+    Element deploymentElement = wsddDoc.getDocumentElement();
+    NodeList services = deploymentElement.getElementsByTagName(WSDD_SERVICE);
+    for (int i = 0; i < services.getLength(); i++) {
+      Element service = (Element) services.item(i);
+
+      Element processNameParameter = service.getOwnerDocument().createElement("parameter");
+      processNameParameter.setAttribute("name", "bpelProcessName");
+      processNameParameter.setAttribute("value", getProcessQName().getLocalPart());
+
+      Element processNamespaceParameter = service.getOwnerDocument().createElement("parameter");
+      processNamespaceParameter.setAttribute("name", "bpelProcessNamespace");
+      processNamespaceParameter.setAttribute("value", getProcessQName().getNamespaceURI());
+
+      Attr providerAttribute = service.getOwnerDocument().createAttribute(WSDD_SERVICE_PROVIDER_ATTR);
+      providerAttribute.setValue("java:BPELMsg");
+
+      service.getOwnerDocument().importNode(processNameParameter, true);
+      service.getOwnerDocument().importNode(processNamespaceParameter, true);
+      service.getOwnerDocument().importNode(providerAttribute, true);
+
+      service.appendChild(processNameParameter);
+      service.appendChild(processNamespaceParameter);
+      service.setAttributeNode(providerAttribute);
+
+      service.setAttribute(WSDD_SERVICE_STYLE_ATTR, MESSAGE_STYLE);
+    }
+    File newWsddFile = getWsddCopy(wsddFile);
+    writeXmlFile(wsddDoc, newWsddFile);
+    return newWsddFile;
+  }
+
+  /**
+   * Return a copy of the given wsdd file.
+   * @param originalWsddFile : original wsdd file
+   * @return the copied wsdd file (the new created one)
+   */
+  private File getWsddCopy(final File originalWsddFile) {
+    return new File(originalWsddFile.getAbsolutePath() + NEW_WSDD_SUFFIX);
+  }
+
+  /**
+   * Return the deploy wsdd file of the given definition.
+   * @param def : def to analyse
+   * @return the deploy wsdd file used by the given def
+   */
+  private File getDeployWsddFile(String wsdlTargetnamespace) {
+    return new File(getWsddFilesDir(wsdlTargetnamespace) + File.separator + WSDD_DEPLOY_FILE_NAME);
+  }
+
+  /**
+   * Return the undeploy wsdd file of the given definition.
+   * @param def : def to analyse
+   * @return the undeploy wsdd file used by the given def
+   */
+  private File[] getUndeployFiles() {
+    FilenameFilter filter = new UndeployFilter();
+    return this.tmpDir.listFiles(filter);
+  }
+
+  private class UndeployFilter implements FilenameFilter {
+      public boolean accept(File dir, String name) {
+        return dir.exists() && name.equals("undeploy.wsdd");
+    }
+  }
+  /**
+   * Returns the directory where wsdd files of this definition could be found.
+   * @param def : def to analyse
+   * @return the directory where wsdd files of this definition could be found
+   */
+  private String getWsddFilesDir(String wsdlTargetnamespace) {
+    String wsddFilesDir = this.tmpDir
+      + File.separator
+      + getDirectoryFromPackage(getPackageFromNamespace(wsdlTargetnamespace));
+    return wsddFilesDir;
+  }
+
+  /**
+   * Performs a wsdl2java task on the given definition.
+   * @throws MalformedURLException - if the wsdl url is not correct
+   */
+  private void wsdl2java(File wsdl) throws MalformedURLException {
+    Wsdl2javaAntTask wsdl2java = new Wsdl2javaAntTask();
+    wsdl2java.setProject(this.antProject);
+    wsdl2java.setTaskName("wsdl2java");
+    wsdl2java.setOutput(this.tmpDir);
+    wsdl2java.setURL(wsdl.toString());
+    wsdl2java.setAll(true);
+    wsdl2java.setHelperGen(true);
+    wsdl2java.setServerSide(true);
+    wsdl2java.setVerbose(true);
+    wsdl2java.setNoWrapped(true);
+    wsdl2java.setWrapArrays(true);
+    wsdl2java.setDebug(false);
+    wsdl2java.setAllowInvalidUrl(false);
+    wsdl2java.setDeployScope(SCOPE);
+    TypeMappingVersionEnum tmve = new TypeMappingVersionEnum();
+    tmve.setValue(this.axisConfiguration.getTypeMapping());
+    wsdl2java.setTypeMappingVersion(tmve);
+    wsdl2java.setAll(true);
+    wsdl2java.execute();
+  }
+
+  /*
+   * UTILITY METHODS
+   */
+
+  /**
+   * Set basedir field.
+   */
+  private void createTmpDir() {
+    try {
+      new File(System.getProperty("java.io.tmpdir")).mkdirs();
+      this.tmpDir = File.createTempFile("orch", null, null);
+      tmpDir.delete();
+      if (!tmpDir.mkdirs()) {
+        throw new IOException("Cannot create the temporary directory '" + tmpDir + "'.");
+      }
+
+    } catch (Exception e) {
+      throw new JbpmException("Error creating " + this.tmpDir, e);
+    }
+  }
+
+  /**
+   * Returns the jar file of the current ws deployed in web server.
+   * @return the jar file of the current ws deployed in web server.
+   */
+  private String getJarRepository() {
+    File repo = new File(getWebappLibDir() + File.separator + "WS_Repo");
+    repo.mkdirs();
+    return repo.getAbsolutePath();
+  }
+
+  private String getWebappLibDir() {
+    String dir = this.axisConfiguration.getWebappDir()
+    + File.separator + this.axisConfiguration.getWebappName()
+    + File.separator + "WEB-INF" + File.separator + "lib";
+    return dir;
+  }
+
+  /**
+   * Returns the jar file of the current ws : this jar is in basedir (not already deployed).
+   * @return the jar file of the current ws : this jar is in basedir (not already deployed).
+   */
+  private File getWSJarFile() {
+    return new File(this.tmpDir + File.separator + getProcessQName().getLocalPart() + ".jar");
+  }
+
+  /**
+   * Create a connection to the given url.
+   * @param urlString : url to connect
+   * @return the created connection
+   * @throws MalformedURLException - ex
+   * @throws IOException - ex
+   * @throws Exception - ex
+   */
+  private URLConnection connectURL(final String urlString) throws Exception {
+    URL getVersionURL = new URL(urlString);
+    URLConnection connection = getVersionURL.openConnection();
+    try {
+      connection.connect();
+    } catch (Exception e) {
+      throw new Exception("Unable to get a connection on URL : ", e);
+    }
+    return connection;
+  }
+
+  /**
+   * Deletes the given directory.
+   * @param dir - dir to delete.
+   */
+  private void deleteDir(final File dir) {
+    Delete d = new Delete();
+    d.setTaskName("delete");
+    d.setDir(dir);
+    d.setProject(this.antProject);
+    d.execute();
+  }
+
+  /**
+   * Deletes the given File.
+   * @param f - file to delete
+   */
+  private void deleteFile(final File f) {
+    Delete d = new Delete();
+    d.setTaskName("delete");
+    d.setFile(f);
+    d.setProject(this.antProject);
+    d.execute();
+  }
+
+  /**
+   * Deletes all generated files of this ws.
+   * @throws Exception - ex
+   */
+  private void deleteTmpDir() {
+    try {
+      //deleteDir(this.tmpDir);
+    } catch (Exception e) {
+      throw new JbpmException(this.getClass() + ".deleteGeneratedFiles, unable to delete directory : " + this.tmpDir, e);
+    }
+  }
+
+  /**
+   * Set the used ant project.
+   *
+   */
+  private void setAntProject() {
+    this.antProject = new Project();
+
+    //Class to Write build events to a PrintStream
+    DefaultLogger dl = new DefaultLogger();
+    dl.setMessageOutputLevel(Project.MSG_INFO);
+    dl.setErrorPrintStream(System.out);
+    dl.setOutputPrintStream(System.out);
+    dl.setEmacsMode(false);
+    this.antProject.addBuildListener(dl);
+
+    //Initialise the project. This involves setting the default
+    //task definitions and loading the system properties.
+    this.antProject.init();
+
+    Property p = new Property();
+    p.setEnvironment(ANT_ENV);
+    p.setProject(this.antProject);
+    p.execute();
+
+
+  }
+
+  /**
+   * This method writes a DOM document to a file.
+   * @param doc - doc to write
+   * @param file - dest file;
+   */
+  private static void writeXmlFile(final Document doc, final File file) {
+    try {
+      // Prepare the DOM document for writing
+      Source source = new DOMSource(doc);
+      Result result = new StreamResult("file://" + file.getAbsolutePath());
+      // Write the DOM document to the file
+      Transformer xformer = TransformerFactory.newInstance().newTransformer();
+      xformer.transform(source, result);
+    } catch (TransformerConfigurationException e) {
+      e.printStackTrace();
+    } catch (TransformerException e) {
+      e.printStackTrace();
+    }
+  }
+
+  /**
+   * Returns the java package that maps to the given namespace.
+   * @param ns - ns
+   * @return the java package that maps to the given namespace.
+   */
+  public static String getPackageFromNamespace(final String ns) {
+    String packag = Utils.makePackageName(ns);
+    return packag;
+  }
+
+  /**
+   * Returns the directory structure corresponding to the given package.
+   * @param packag - packag
+   * @return the directory structure corresponding to the given package.
+   */
+  public static String getDirectoryFromPackage(final String packag) {
+    String dir = packag.replace('.', File.separatorChar);
+    return dir;
+  }
+
+  /**
+   * Set the proxy (if needed) from the Axis configuration.
+   */
+  private void setProxy() {
+    System.getProperties().put("http.proxyHost", this.axisConfiguration.getHttpProxyHost());
+    System.getProperties().put("http.proxyPort", this.axisConfiguration.getHttpProxyPort());
+    System.getProperties().put("http.nonProxyHosts", this.axisConfiguration.getHttpNonProxyHosts());
+  }
+}

Copied: trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisPublisher.java (from rev 757, trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisWSPublisher.java) (757 => 763)


--- trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisWSPublisher.java	2007-09-17 15:07:59 UTC (rev 757)
+++ trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisPublisher.java	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,60 @@
+package org.ow2.orchestra.axisws;
+
+import java.util.List;
+
+import javax.wsdl.Definition;
+import javax.wsdl.Service;
+import javax.xml.namespace.QName;
+
+import org.jbpm.env.Environment;
+import org.ow2.orchestra.execution.BpelProcess;
+import org.ow2.orchestra.execution.services.OperationKey;
+import org.ow2.orchestra.execution.services.Receiver;
+import org.ow2.orchestra.execution.services.memory.MemoryPublisher;
+import org.ow2.orchestra.execution.services.memory.http.HttpReceiver;
+import org.ow2.orchestra.wsdl.WsdlsInfos;
+
+/**
+ * AxisServicePublisher.java.
+ * Implementation of the service publisher with axis.
+ *
+ * @author Charles Souillard
+ *
+ * Created on : Jun 26, 2007
+ */
+public class AxisPublisher extends MemoryPublisher {
+
+  public void publishServices(Definition wsdlDefinition, BpelProcess bpelProcess, Environment environment) {
+    super.publishServices(wsdlDefinition, bpelProcess, environment);
+    AxisDeployer axisDeployer = new AxisDeployer(bpelProcess.getQName(), wsdlDefinition);
+    WsdlsInfos wsdlInfos = bpelProcess.getWsdlInfos();
+    for (OperationKey operationKey : receivers.keySet()) {
+      QName portTypeQName = operationKey.getPortTypeQName();
+      List<Service> services = wsdlInfos.getServicesOfPortType(portTypeQName);
+      if (services != null) {
+        axisDeployer.deploy(services);
+      }
+    }
+  }
+
+  public void unpublishServices(BpelProcess bpelProcess) {
+    QName processQName = bpelProcess.getQName();
+    AxisDeployer axisDeployer = new AxisDeployer(processQName, null);
+    WsdlsInfos wsdlInfos = bpelProcess.getWsdlInfos();
+    for (OperationKey operationKey : receivers.keySet()) {
+      QName portTypeQName = operationKey.getPortTypeQName();
+      List<Service> services = wsdlInfos.getServicesOfPortType(portTypeQName);
+      if (services != null) {
+        axisDeployer.undeploy(services);
+      }
+    }
+    super.unpublishServices(bpelProcess);
+  }
+
+  protected Receiver getReceiverInstance(OperationKey operationKey) {
+    return new HttpReceiver(operationKey);
+  }
+
+}
+
+

Deleted: trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisWSPublisher.java (762 => 763)


--- trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisWSPublisher.java	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/AxisWSPublisher.java	2007-09-19 15:13:56 UTC (rev 763)
@@ -1,60 +0,0 @@
-package org.ow2.orchestra.axisws;
-
-import java.util.List;
-
-import javax.wsdl.Definition;
-import javax.wsdl.Service;
-import javax.xml.namespace.QName;
-
-import org.jbpm.env.Environment;
-import org.ow2.orchestra.execution.BpelProcess;
-import org.ow2.orchestra.execution.services.OperationKey;
-import org.ow2.orchestra.execution.services.Receiver;
-import org.ow2.orchestra.execution.services.memory.MemoryPublisher;
-import org.ow2.orchestra.execution.services.memory.http.HttpReceiver;
-import org.ow2.orchestra.wsdl.WsdlsInfos;
-
-/**
- * AxisServicePublisher.java.
- * Implementation of the service publisher with axis.
- *
- * @author Charles Souillard
- *
- * Created on : Jun 26, 2007
- */
-public class AxisWSPublisher extends MemoryPublisher {
-
-  public void publishServices(Definition wsdlDefinition, BpelProcess bpelProcess, Environment environment) {
-    super.publishServices(wsdlDefinition, bpelProcess, environment);
-    Axis1Deployer axisDeployer = new Axis1Deployer(bpelProcess.getQName(), wsdlDefinition);
-    WsdlsInfos wsdlInfos = bpelProcess.getWsdlInfos();
-    for (OperationKey operationKey : receivers.keySet()) {
-      QName portTypeQName = operationKey.getPortTypeQName();
-      List<Service> services = wsdlInfos.getServicesOfPortType(portTypeQName);
-      if (services != null) {
-        axisDeployer.deploy(services);
-      }
-    }
-  }
-
-  public void unpublishServices(BpelProcess bpelProcess) {
-    QName processQName = bpelProcess.getQName();
-    Axis1Deployer axisDeployer = new Axis1Deployer(processQName, null);
-    WsdlsInfos wsdlInfos = bpelProcess.getWsdlInfos();
-    for (OperationKey operationKey : receivers.keySet()) {
-      QName portTypeQName = operationKey.getPortTypeQName();
-      List<Service> services = wsdlInfos.getServicesOfPortType(portTypeQName);
-      if (services != null) {
-        axisDeployer.undeploy(services);
-      }
-    }
-    super.unpublishServices(bpelProcess);
-  }
-
-  protected Receiver getReceiverInstance(OperationKey operationKey) {
-    return new HttpReceiver(operationKey);
-  }
-
-}
-
-

Modified: trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/BindingFileWriter.java (762 => 763)


--- trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/BindingFileWriter.java	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/modules/axisws/src/main/java/org/ow2/orchestra/axisws/BindingFileWriter.java	2007-09-19 15:13:56 UTC (rev 763)
@@ -83,8 +83,8 @@
     String nextLetters = this.className.substring(1);
     this.className = firstLetter.toUpperCase() + nextLetters;
 
-    String bindingPackage = Axis1Deployer.getPackageFromNamespace(bindingQN.getNamespaceURI());
-    String bindingDir = Axis1Deployer.getDirectoryFromPackage(bindingPackage);
+    String bindingPackage = AxisDeployer.getPackageFromNamespace(bindingQN.getNamespaceURI());
+    String bindingDir = AxisDeployer.getDirectoryFromPackage(bindingPackage);
     String bindingFilePath = this.baseDir + File.separator + bindingDir + File.separator + className + ".java";
     File fout = new File(bindingFilePath);
     replaceFile(fout);
@@ -107,7 +107,7 @@
     addImport(EnvironmentParser.class);
     addImport(Environment.class);
     addImport(org.ow2.orchestra.var.Message.class);
-    addImport(AxisWSPublisher.class);
+    addImport(AxisPublisher.class);
     addImport(HttpReceiver.class);
     addImport(InformationItem.class);
     addImport(Deployer.class);
@@ -154,7 +154,7 @@
         //it is a rpc style!!
         buildRpcMessage(operation);
       }
-      write("      AxisWSPublisher servicePublisher = (AxisWSPublisher) environment.find(Publisher.DEFAULT_KEY);");
+      write("      AxisPublisher servicePublisher = (AxisPublisher) environment.find(Publisher.DEFAULT_KEY);");
       write("      OperationKey operationKey = new OperationKey(processQName, portTypeQName, operationName);");
       write("      HttpReceiver receiver = (HttpReceiver) servicePublisher.getReceiver(operationKey);");
 

Modified: trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXAgent.java (762 => 763)


--- trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXAgent.java	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXAgent.java	2007-09-19 15:13:56 UTC (rev 763)
@@ -30,23 +30,23 @@
   private MBeanServer mbs;
   private ObjectName objectName;
   private JMXConnectorServer cs;
-  private int port = 9999;
-
+  
+  private JMXConfiguration configuration = JMXConfiguration.getInstance();
+  
   public void contextInitialized(ServletContextEvent arg0) {
     try {
       if (System.getSecurityManager() == null) {
         System.setSecurityManager(new SecurityManager());
       }
       //start rmiregistry
-      java.rmi.registry.LocateRegistry.createRegistry(port);
+      java.rmi.registry.LocateRegistry.createRegistry(configuration.getPort());
 
-
       mbs = ManagementFactory.getPlatformMBeanServer();
       RemoteDeployer remoteDeployer = new RemoteDeployer();
       // Uniquely identify the MBeans and register them with the MBeanServer
-      objectName = ObjectName.getInstance("JMXAgent:name=orchestraRemoteDeployer");
+      objectName = ObjectName.getInstance(configuration.getObjectName());
       mbs.registerMBean(remoteDeployer, objectName);
-      JMXServiceURL url = "" JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:" + port + "/orchestraServer");
+      JMXServiceURL url = "" JMXServiceURL(configuration.getServiceUrl());
       cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
       cs.start();
 

Added: trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXConfiguration.java (762 => 763)


--- trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXConfiguration.java	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXConfiguration.java	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,95 @@
+package org.ow2.orchestra.jmx;
+
+import java.io.InputStream;
+
+
+
+
+/**
+ * JMXConfiguration.
+ * Keeps all configuration parameters for the Jmx agent.
+ *
+ * @author Goulven Le Jeune, Charles Souillard, Candy Chlad, Stanislas Giraudet De Boudemange, Guillaume Porcher
+ *
+ */
+public class JMXConfiguration {
+
+  // Axis classes are run from WEB-INF/classes/, the jmx configuration file is in WEB-INF/ 
+  private static String jmxConfigFile = "../orchestra-jmx-conf.xml"; 
+
+  private static JMXConfiguration configuration;
+  
+  private int port = 9999;
+  private String objectName = "JMXAgent:name=orchestraRemoteDeployer";
+  private String serviceUrl = "service:jmx:rmi:///jndi/rmi://localhost:9999/orchestraServer";
+  
+
+  public static JMXConfiguration getInstance() {
+    if(configuration == null) {
+      ClassLoader classLoader = JMXConfiguration.class.getClassLoader();
+      InputStream input = classLoader.getResourceAsStream(jmxConfigFile);
+      configuration = new JMXConfigurationFileParser().getConfiguration(input);
+    }
+    return configuration;
+  }
+  
+  /**
+   * Returns the configuration parameters in a string.
+   * @return the string representing the configuration parameters
+   */
+  public String toString() {
+    String s = "\n";
+    s += "JMXConfiguration:"
+      + "\n\t port: " + this.port 
+      + "\n\t objectName: " + this.objectName 
+      + "\n\t serviceUrl: " + this.serviceUrl 
+      + "\n";
+    return s;
+  }
+
+  /**
+   * @return the port
+   */
+  public int getPort() {
+    return port;
+  }
+
+  /**
+   * @param port the port to set
+   */
+  public void setPort(String port) {
+    this.port = Integer.parseInt(port);
+  }
+
+  /**
+   * @return the objectName
+   */
+  public String getObjectName() {
+    return objectName;
+  }
+
+  /**
+   * @param objectName the objectName to set
+   */
+  public void setObjectName(String objectName) {
+    this.objectName = objectName;
+  }
+
+  /**
+   * @return the serviceUrl
+   */
+  public String getServiceUrl() {
+    return serviceUrl;
+  }
+
+  /**
+   * @param serviceUrl the serviceUrl to set
+   */
+  public void setServiceUrl(String serviceUrl) {
+    this.serviceUrl = serviceUrl;
+  }
+
+  
+}
+
+
Property changes on: trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXConfiguration.java
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXConfigurationFileParser.java (762 => 763)


--- trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXConfigurationFileParser.java	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXConfigurationFileParser.java	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,105 @@
+/**
+ * Copyright (C) 2007  Bull S. A. S.
+ * Bull, Rue Jean Jaures, B.P.68, 78340, Les Clayes-sous-Bois
+ * This library is free software; you can redistribute it and/or modify it under the terms
+ * of the GNU Lesser General Public License as published by the Free Software Foundation
+ * version 2.1 of the License.
+ * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License along with this
+ * program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
+ * Floor, Boston, MA  02110-1301, USA.
+ *
+ * ConfigurationFileParser.java
+ *
+ * @author Goulven Le Jeune, Charles Souillard, Candy Chlad, Stanislas Giraudet De Boudemange
+ *
+ * Created on : Feb 21st 07
+ *
+ * $Id$
+ **/
+package org.ow2.orchestra.jmx;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import javax.xml.XMLConstants;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+
+import org.xml.sax.SAXException;
+
+
+/**
+ * ConfigurationFileParser.
+ * Parses the engine and processes configuration files to build the Configuration
+ * class of this process.
+ *
+ * @author Goulven Le Jeune, Charles Souillard, Candy Chlad, Stanislas Giraudet De Boudemange, Guillaume Porcher
+ *
+ * Created on : Feb 21st 07
+ */
+public class JMXConfigurationFileParser {
+
+  /** XML Scheme to use to parse the conf file.   */
+  private final String JMX_CONF_SCHEME = "orchestra-jmx-config.xsd";
+
+  /**
+   * Returns the schema to use to parse the conf file.
+   * @return the schema to use to parse the conf file.
+   */
+  protected String getSchema() {
+    return JMX_CONF_SCHEME;
+  }
+
+  /**
+   * Set up a SAX parser and return the process Configuration generated according to
+   * the configuration file.
+   * @param file The configuration file to be parsed
+   * @return The process Configuration
+   */
+  public JMXConfiguration getConfiguration(final InputStream inputStream) {
+    JMXConfigurationHandler handler;
+    try {
+      // Create the Parser factory
+      handler = new JMXConfigurationHandler();
+      
+      SAXParserFactory parserFactory = SAXParserFactory.newInstance();
+
+      // Create a Schema with a Schema factory
+      SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+
+      //look for the schema in the Orchestra archive.
+      URL schemaUrl = getClass().getClassLoader().getResource(getSchema());
+      
+      Schema schema = schemaFactory.newSchema(schemaUrl);
+      parserFactory.setSchema(schema);
+      parserFactory.setValidating(true);
+      
+      // Parse the configuration file with the validating parser
+      SAXParser saxParser = parserFactory.newSAXParser();
+      saxParser.parse(inputStream, handler);
+      
+      // Return the Configuration filled by the parser
+      return handler.getConf();
+
+    } catch (ParserConfigurationException e) {
+      // TODO Handle errors appropriately
+      e.printStackTrace();
+    } catch (SAXException e) {
+      // TODO  Handle errors appropriately
+      e.printStackTrace();
+    } catch (IOException e) {
+      // TODO  Handle errors appropriately
+      e.printStackTrace();
+    }
+    return null;
+  }
+}
+
+
Property changes on: trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXConfigurationFileParser.java
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXConfigurationHandler.java (762 => 763)


--- trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXConfigurationHandler.java	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXConfigurationHandler.java	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,132 @@
+/**
+ * Copyright (C) 2007  Bull S. A. S.
+ * Bull, Rue Jean Jaures, B.P.68, 78340, Les Clayes-sous-Bois
+ * This library is free software; you can redistribute it and/or modify it under the terms
+ * of the GNU Lesser General Public License as published by the Free Software Foundation
+ * version 2.1 of the License.
+ * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License along with this
+ * program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
+ * Floor, Boston, MA  02110-1301, USA.
+ *
+ * DefaultConfigurationHandler.java
+ *
+ * @author Goulven Le Jeune, Charles Souillard, Candy Chlad, Stanislas Giraudet De Boudemange
+ *
+ * Created on : Mar 8, 2007
+ *
+ * $Id$
+ **/
+package org.ow2.orchestra.jmx;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ *
+ * JMXConfigurationHandler.
+ * Generates the Configuration of a Process using SAX events during the
+ * parsing of the configuration file.
+ *
+ * @author Goulven Le Jeune, Charles Souillard, Candy Chlad, Stanislas Giraudet De Boudemange, Guillaume Porcher
+ */
+public class JMXConfigurationHandler extends DefaultHandler {
+
+  /**
+   * conf.
+   */
+  private JMXConfiguration conf;
+
+  /**
+   * The name of the current element, with its first letter capitalized.
+   * (to enable us to find the matching setter method in the Configuration class).
+   */
+  private String currentElementCapitalizedName;
+
+  /**
+   * The value of the element being parsed.
+   */
+  private String currentElementValue;
+
+  /**
+   * Set up a new ConfigurationHandler with an existing configuration to
+   * parse the configuration file.
+   * @param existingConf An existing configuration that will be overwritten.
+   */
+  public JMXConfigurationHandler() {
+    super();
+    this.conf = new JMXConfiguration();
+  }
+
+  /**
+   * returns the conf.
+   * @return conf
+   */
+  public JMXConfiguration getConf() {
+    return this.conf;
+  }
+
+  /**
+   * This method overrides the default characters() method of the SAX parser.
+   * It sets the value of the current element.
+   *
+   * @param buf The characters.
+   * @param offset The start position in the character array.
+   * @param len The number of characters to use from the character array.
+   *
+   * @throws SAXException Any SAX exception, possibly wrapping another exception.
+   */
+  public void characters(final char[] buf, final int offset, final int len) throws SAXException {
+    String value = new String(buf, offset, len);
+    this.currentElementValue = value;
+  }
+
+  /**
+   * This method overrides the default endElement() method of the SAX parser.
+   * It calls the appropriate setter method in the Configuration class and
+   * set the attributes which name matches the name of the element.
+   * @param namespaceURI namespace
+   * @param sName localname
+   * @param qName qualified name
+   * @throws SAXException any SAX exception
+   */
+  public void endElement(final String namespaceURI, final String sName, final String qName) throws SAXException {
+    try {
+      // Capitalize the first letter of the element name for the setter method
+      currentElementCapitalizedName = qName.substring(0, 1).toUpperCase();
+      currentElementCapitalizedName += qName.substring(1);
+
+      //Find the setter method of the element (only if it is present in the configuration file)
+      if (this.currentElementValue.trim().length() > 0) {
+        Method setterMethod = conf.getClass().getMethod("set" + this.currentElementCapitalizedName,
+            new Class[] {java.lang.String.class});
+        setterMethod.invoke(conf, this.currentElementValue);
+      }
+      // Set the attributes to null to avoid problems
+      currentElementCapitalizedName = null;
+      currentElementValue = null;
+
+    } catch (NoSuchMethodException e) {
+      // If no setter method has been found, it means that the element
+      // does not enclose any value and that it can be safely skipped.
+      // (This is the normal behaviour of top level elements for instance.)
+      currentElementCapitalizedName = null;
+      currentElementValue = null;
+    } catch (IllegalAccessException e) {
+      // TODO Handle errors appropriately
+      e.printStackTrace();
+    } catch (InvocationTargetException e) {
+      // TODO Handle errors appropriately
+      e.printStackTrace();
+    }
+
+  }
+  
+}
+
+
Property changes on: trunk/OrchestraPVM/modules/jmx/src/main/java/org/ow2/orchestra/jmx/JMXConfigurationHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/OrchestraPVM/modules/jmx/src/main/resources/orchestra-jmx-config.xsd (762 => 763)


--- trunk/OrchestraPVM/modules/jmx/src/main/resources/orchestra-jmx-config.xsd	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/modules/jmx/src/main/resources/orchestra-jmx-config.xsd	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://orchestra.ow2.org/orchestra-jmx-config"
+  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+  xmlns:ns="http://orchestra.ow2.org/orchestra-jmx-config">
+
+  <xsd:complexType name="orchestraJmxSettings">
+    <xsd:sequence>
+      <xsd:element name="port" type="xsd:string" default="9999"/>
+      <xsd:element name="objectName" type="xsd:string" default="JMXAgent:name=orchestraRemoteDeployer"/>
+  	  <xsd:element name="serviceUrl" type="xsd:string" default="service:jmx:rmi:///jndi/rmi://localhost:9999/orchestraServer"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="orchestraJmxSettings" type="ns:orchestraJmxSettings"></xsd:element>
+
+
+</xsd:schema>
\ No newline at end of file

Deleted: trunk/OrchestraPVM/packaging/axis-conf.xml (762 => 763)


--- trunk/OrchestraPVM/packaging/axis-conf.xml	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/axis-conf.xml	2007-09-19 15:13:56 UTC (rev 763)
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<orchestraAxisSettings
-	xmlns="http://orchestra.ow2.org/orchestra-axis-config">
-	<host>@HOST@</host>
-	<port>@PORT@</port>
-	<webappName>@WEBAPPNAME@</webappName>
-	<servletPath>@SERVLETPATH@</servletPath>
-	<typeMapping>@TYPEMAPPING@</typeMapping>
-	<getVersionSvc>@VERSIONSERVICE@</getVersionSvc>
-	<webappDir>@WEBAPPDIR@</webappDir>
-  	<httpProxyHost>@HTTPPROXYHOST@</httpProxyHost>
-  	<httpProxyPort>@HTTPPROXYPORT@</httpProxyPort>
-  	<httpNonProxyHosts>@HTTPNONPROXYPORT@</httpNonProxyHosts>
-</orchestraAxisSettings>
\ No newline at end of file

Modified: trunk/OrchestraPVM/packaging/build.xml (762 => 763)


--- trunk/OrchestraPVM/packaging/build.xml	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/build.xml	2007-09-19 15:13:56 UTC (rev 763)
@@ -1,114 +1,144 @@
 <project name="OrchestraPVM" default="install" basedir=".">
-    <description>
+	<description>
         Install OrchestraPVM.
       Prerequies:
         Axis must be installed on TomCat.
     </description>
-  <!-- set global properties for this build -->
+	<!-- set global properties for this build -->
 
-  <property environment="env"/>
+	<property environment="env"/>
 
-  <!--Classpath definition-->
-  <target name="askAxisConfProperties">
-  	<description>Ask for configuration properties</description>
-  	<input message="Catalina home" addproperty="catalina.home" defaultvalue="${env.CATALINA_HOME}"/>
-  	<input message="Catalina base" addproperty="catalina.base" defaultvalue="${env.CATALINA_BASE}"/>
-  	<input message="Axis host" addproperty="axis.host" defaultvalue="localhost"/>
-    <input message="Axis port" addproperty="axis.port" defaultvalue="8080"/>
-    <input message="Name of axis webapp:" addproperty="axis.webappName" defaultvalue="axis"/>
-  	<input message="Axis servlet path:" addproperty="axis.servletPath" defaultvalue="services"/>
-  	<input message="Axis mapping type" addproperty="axis.typeMapping" defaultvalue="1.3"/>
-  	<input message="Axis getVersion service" addproperty="axis.getVersionSvc" defaultvalue="Version?method=getVersion"/>
-  	<input message="Axis webappDir" addproperty="axis.webappDir" defaultvalue="${catalina.base}/webapps"/>
-  	<input message="Http Proxy Host" addproperty="http_proxy.host" defaultvalue="" />
-  	<input message="Http Proxy Port" addproperty="http_proxy.port" defaultvalue="" />
-  	<input message="Non Proxy Hosts" addproperty="http_proxy.no_proxy" defaultvalue="" />
-  </target>
+	<!--Classpath definition-->
+	<target name="askAxisConfProperties">
+		<description>Ask for configuration properties</description>
+		<input message="Catalina home" addproperty="catalina.home" defaultvalue="${env.CATALINA_HOME}"/>
+		<input message="Catalina base" addproperty="catalina.base" defaultvalue="${env.CATALINA_BASE}"/>
+		<input message="Axis host" addproperty="axis.host" defaultvalue="localhost"/>
+		<input message="Axis port" addproperty="axis.port" defaultvalue="8080"/>
+		<input message="Name of axis webapp:" addproperty="axis.webappName" defaultvalue="orchestra"/>
+		<input message="Axis servlet path:" addproperty="axis.servletPath" defaultvalue="services"/>
+		<input message="Axis mapping type" addproperty="axis.typeMapping" defaultvalue="1.3"/>
+		<input message="Axis getVersion service" addproperty="axis.getVersionSvc" defaultvalue="Version?method=getVersion"/>
+		<input message="Axis webappDir" addproperty="axis.webappDir" defaultvalue="${catalina.base}/webapps"/>
+		<input message="Http Proxy Host" addproperty="http_proxy.host" defaultvalue="" />
+		<input message="Http Proxy Port" addproperty="http_proxy.port" defaultvalue="" />
+		<input message="Non Proxy Hosts" addproperty="http_proxy.no_proxy" defaultvalue="" />
+	</target>
 
-  <target name="generateAxisConf" depends="askAxisConfProperties">
-    <copy todir="${axis.webappDir}/${axis.webappName}/WEB-INF" file="axis-conf.xml">
-      <filterset>
-        <filter token="HOST" value="${axis.host}"/>
-        <filter token="PORT" value="${axis.port}"/>
-        <filter token="WEBAPPNAME" value="${axis.webappName}"/>
-        <filter token="SERVLETPATH" value="${axis.servletPath}"/>
-        <filter token="TYPEMAPPING" value="${axis.typeMapping}"/>
-        <filter token="VERSIONSERVICE" value="${axis.getVersionSvc}"/>
-        <filter token="WEBAPPDIR" value="${axis.webappDir}"/>
-        <filter token="HTTPPROXYHOST" value="${http_proxy.host}"/>
-        <filter token="HTTPPROXYPORT" value="${http_proxy.port}"/>
-        <filter token="HTTPNONPROXYPORT" value="${http_proxy.no_proxy}"/>
-      </filterset>
-    </copy>	
-  </target>
-      		
-  <target name="install" depends="generateAxisConf">
-    <property name="orchestra.axis_dir" value="${axis.webappDir}/${axis.webappName}/WEB-INF/lib"/>
-  	<delete includeemptydirs="true" failonerror="false" verbose="true">
-		<fileset dir="${catalina.base}/work" includes="**/*" />
-        <fileset dir="${catalina.base}/logs" includes="**/*" />
-      	<fileset dir="${orchestra.axis_dir}" includes="wsdl4j*"/>
-        <fileset dir="${orchestra.axis_dir}/WS_Repo" />
-	</delete>
-    <!-- TODO: add compilation -->
+	<target name="generateAxisConf" depends="askAxisConfProperties">
+		<copy todir="webapp/WEB-INF" file="orchestra-axis-conf.xml">
+			<filterset>
+				<filter token="HOST" value="${axis.host}"/>
+				<filter token="PORT" value="${axis.port}"/>
+				<filter token="WEBAPPNAME" value="${axis.webappName}"/>
+				<filter token="SERVLETPATH" value="${axis.servletPath}"/>
+				<filter token="TYPEMAPPING" value="${axis.typeMapping}"/>
+				<filter token="VERSIONSERVICE" value="${axis.getVersionSvc}"/>
+				<filter token="WEBAPPDIR" value="${axis.webappDir}"/>
+				<filter token="HTTPPROXYHOST" value="${http_proxy.host}"/>
+				<filter token="HTTPPROXYPORT" value="${http_proxy.port}"/>
+				<filter token="HTTPNONPROXYPORT" value="${http_proxy.no_proxy}"/>
+			</filterset>
+		</copy>
+	</target>
 
-    <copy todir="${orchestra.axis_dir}" verbose="true">
-  	  <fileset dir="lib" includes="pvm*.jar"/>
-    </copy>
-    <copy todir="${orchestra.axis_dir}" verbose="true">
-      <fileset dir="modules" includes="*.jar"/>
-    </copy>
-    <copy todir="${orchestra.axis_dir}" verbose="true" file="lib/jaxen-1.1.1.jar"/>
-    <copy todir="${orchestra.axis_dir}" verbose="true" file="lib/wsdl4j-1.6.2.jar"/>
-    <copy todir="${orchestra.axis_dir}" verbose="true" file="lib/ant-1.6.5.jar"/>
-    <copy todir="${orchestra.axis_dir}" verbose="true" file="lib/gnu-jaf.jar"/>
-    <copy todir="${orchestra.axis_dir}" verbose="true" file="lib/gnu-mail.jar"/>
-	<copy todir="${orchestra.axis_dir}" verbose="true">
-	  <fileset dir="lib" includes="xercesImpl*.jar"/>
-	</copy>
-	<copy todir="${orchestra.axis_dir}" verbose="true">
-	  <fileset dir="lib" includes="xml-apis*.jar"/>
-	</copy>
-	<copy todir="${orchestra.axis_dir}" verbose="true" file="lib/xmlsec-1.4.0.jar"/>
 
-  	<antcall target="start_catalina"/>
-  </target>
+	<target name="askJmxConfProperties">
+		<description>Ask for configuration properties</description>
+		<input message="JMX server port" addproperty="jmx.port" defaultvalue="9999"/>
+		<input message="JMX orchestra remote deployer object name" addproperty="jmx.objectname" defaultvalue="JMXAgent:name=orchestraRemoteDeployer"/>
+		<input message="JMX orchestra remote deployer service url" addproperty="jmx.serviceurl" defaultvalue="service:jmx:rmi:///jndi/rmi://localhost:9999/orchestraServer"/>
+	</target>
 
-		
-  <target name="checkEnv">
-	<description>Check that environment variables have been set up.</description>
-	<condition property="sys.failure">
-	  <or>
-	    <not>
-	       <isset property="env.CATALINA_HOME"/>
-	    </not>
-	    <equals arg1="" arg2="${env.CATALINA_HOME}"/>
-        <not>
-           <isset property="env.CATALINA_BASE"/>
-	    </not>
-	    <equals arg1="" arg2="${env.CATALINA_BASE}"/>
-	  </or>
-    </condition>
-  </target>
+	<target name="generateJmxConf" depends="askJmxConfProperties">
+		<copy todir="webapp/WEB-INF" file="orchestra-jmx-conf.xml">
+			<filterset>
+				<filter token="PORT" value="${jmx.port}"/>
+				<filter token="OBJECTNAME" value="${jmx.objectname}"/>
+				<filter token="SERVICEURL" value="${jmx.serviceurl}"/>
+			</filterset>
+		</copy>
+	</target>
 
-  <target name="failure" depends="checkEnv" if="sys.failure">
-	<echo>CATALINA_HOME and CATALINA_BASE must be defined.</echo>
-  </target>
 
-  <target name="start"  depends="failure" unless="sys.failure">
-	<property name="${catalina.home}" value="${env.CATALINA_HOME}"/>
-	<property name="${catalina.base}" value="${env.CATALINA_BASE}"/>
-	<antcall target="start_catalina"/>
-  </target>
+	<target name="checkInstallDir" depends="generateAxisConf, generateJmxConf">
+		<property name="orchestra.axis_dir" value="${axis.webappDir}/${axis.webappName}"/>
+		<available file="${orchestra.axis_dir}" type="dir" property="orchestra.dir.present"/>
+	</target>
 
-  <target name="start_catalina">
-  	<exec executable="${catalina.home}/bin/catalina.sh">
-  		<env key="CATALINA_HOME" value="${catalina.home}"/>
-  		<env key="CATALINA_BASE" value="${catalina.base}"/>
-  	    <arg value="run"/>
-  	    <arg value="-security"/>
-  	</exec>
-  </target>
+	<target name="failInstall" depends="checkInstallDir" if="orchestra.dir.present">
+		<echo>ERROR: Orchestra webapp dir exists. Please remove ${orchestra.axis_dir} directory and restart installation.</echo>
+	</target>
+
+	<target name="install" depends="failInstall" unless="orchestra.dir.present">
+		<delete includeemptydirs="true" failonerror="false" verbose="true">
+			<fileset dir="${catalina.base}/work" includes="**/*" />
+			<fileset dir="${catalina.base}/logs" includes="**/*" />
+			<fileset dir="${orchestra.axis_dir}" />
+		</delete>
+
+		<copy todir="${axis.webappDir}/${axis.webappName}" includeemptydirs="true" verbose="true">
+			<fileset dir="webapp"/>
+		</copy>
+
+		<condition property="server.down">
+			<not>
+				<socket server="${axis.host}" port="${axis.port}"/>
+			</not>
+		</condition>
+		<antcall target="askCatalinaStart"/>
+	</target>
+
+	<target name="CatalinaAllreadyStarted" unless="server.down">
+		<echo>CATALINA is allready started. Please restart catalina manually.</echo>
+	</target>
+
+	<target name="askCatalinaStart" depends="CatalinaAllreadyStarted" if="server.down">
+		<input message="Do you want to start catalina ? [yes/no]" addproperty="inputStartCatalina" defaultvalue="yes"/>
+		<condition property="startCatalina">
+			<or>
+				<equals arg1="yes" arg2="${inputStartCatalina}" casesensitive="no"/>
+				<equals arg1="y" arg2="${inputStartCatalina}" casesensitive="no"/>
+			</or>
+		</condition>
+		<antcall target="start_catalina"/>
+	</target>
+
+	<target name="checkEnv">
+		<description>Check that environment variables have been set up.</description>
+		<condition property="sys.failure">
+			<or>
+				<not>
+					<isset property="env.CATALINA_HOME"/>
+				</not>
+				<equals arg1="" arg2="${env.CATALINA_HOME}"/>
+				<not>
+					<isset property="env.CATALINA_BASE"/>
+				</not>
+				<equals arg1="" arg2="${env.CATALINA_BASE}"/>
+			</or>
+		</condition>
+	</target>
+
+	<target name="failure" depends="checkEnv" if="sys.failure">
+		<echo>CATALINA_HOME and CATALINA_BASE must be defined.</echo>
+	</target>
+
+	<target name="start"  depends="failure" unless="sys.failure">
+		<property name="catalina.home" value="${env.CATALINA_HOME}"/>
+		<property name="catalina.base" value="${env.CATALINA_BASE}"/>
+		<property name="startCatalina" value="1"/>
+		<antcall target="start_catalina"/>
+	</target>
+
+	<target name="start_catalina" if="startCatalina">
+		<exec executable="${catalina.home}/bin/catalina.sh">
+			<env key="CATALINA_HOME" value="${catalina.home}"/>
+			<env key="CATALINA_BASE" value="${catalina.base}"/>
+			<arg value="run"/>
+			<arg value="-security"/>
+		</exec>
+	</target>
 </project>
 
 

Added: trunk/OrchestraPVM/packaging/orchestra-axis-conf.xml (762 => 763)


--- trunk/OrchestraPVM/packaging/orchestra-axis-conf.xml	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/orchestra-axis-conf.xml	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<orchestraAxisSettings
+	xmlns="http://orchestra.ow2.org/orchestra-axis-config">
+	<host>@HOST@</host>
+	<port>@PORT@</port>
+	<webappName>@WEBAPPNAME@</webappName>
+	<servletPath>@SERVLETPATH@</servletPath>
+	<typeMapping>@TYPEMAPPING@</typeMapping>
+	<getVersionSvc>@VERSIONSERVICE@</getVersionSvc>
+	<webappDir>@WEBAPPDIR@</webappDir>
+  	<httpProxyHost>@HTTPPROXYHOST@</httpProxyHost>
+  	<httpProxyPort>@HTTPPROXYPORT@</httpProxyPort>
+  	<httpNonProxyHosts>@HTTPNONPROXYPORT@</httpNonProxyHosts>
+</orchestraAxisSettings>
\ No newline at end of file
Property changes on: trunk/OrchestraPVM/packaging/orchestra-axis-conf.xml
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/OrchestraPVM/packaging/orchestra-jmx-conf.xml (762 => 763)


--- trunk/OrchestraPVM/packaging/orchestra-jmx-conf.xml	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/orchestra-jmx-conf.xml	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<orchestraJmxSettings
+	xmlns="http://orchestra.ow2.org/orchestra-jmx-config">
+	<port>@PORT@</port>
+	<objectName>@OBJECTNAME@</objectName>
+	<serviceUrl>@SERVICEURL@</serviceUrl>
+</orchestraJmxSettings>
\ No newline at end of file
Property changes on: trunk/OrchestraPVM/packaging/orchestra-jmx-conf.xml
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/OrchestraPVM/packaging/webapp/EchoHeaders.jws (762 => 763)


--- trunk/OrchestraPVM/packaging/webapp/EchoHeaders.jws	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/webapp/EchoHeaders.jws	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2002,2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.axis.AxisFault;
+import org.apache.axis.MessageContext;
+import org.apache.axis.transport.http.HTTPConstants;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Enumeration;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+/**
+ * class to list headers sent in request as a string array
+ */
+public class EchoHeaders {
+
+    /**
+     * demo message context stuff
+     * @return list of request headers
+     */
+    public String[] list() {
+        HttpServletRequest request = getRequest();
+        Enumeration headers=request.getHeaderNames();
+        ArrayList list=new ArrayList();
+        while (headers.hasMoreElements()) {
+            String h = (String) headers.nextElement();
+            String header=h+':'+request.getHeader(h);
+            list.add(header);
+        }
+        String[] results=new String[list.size()];
+        for(int i=0;i<list.size();i++) {
+            results[i]=(String) list.get(i);
+        }
+        return results;
+    }
+
+    /**
+     * get the caller; may involve reverse DNS
+     * @return
+     */
+    public String whoami() {
+        HttpServletRequest request = getRequest();
+        String remote=request.getRemoteHost();
+        return "Hello caller from "+remote;
+    }
+
+    /**
+     * very simple method to echo the param.
+     * @param param
+     * @return
+     */
+    public String echo(String param) {
+        return param;
+    }
+    
+    /**
+     * throw an axis fault with the text included
+     */
+    public void throwAxisFault(String param) throws AxisFault {
+        throw new AxisFault(param);
+    }
+    
+    public void throwException(String param) throws Exception { 
+        throw new Exception(param);
+    }
+
+    /**
+     * thow a runtime exception
+     */
+    public void throwRuntimeException(String param) { 
+        throw new RuntimeException(param);
+    }
+    
+    /**
+     * helper
+     * @return
+     */
+    private HttpServletRequest getRequest() {
+        MessageContext context = MessageContext.getCurrentContext();
+        HttpServletRequest req = (HttpServletRequest) context.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
+        return req;
+    }
+
+}
\ No newline at end of file

Added: trunk/OrchestraPVM/packaging/webapp/SOAPMonitorApplet.java (762 => 763)


--- trunk/OrchestraPVM/packaging/webapp/SOAPMonitorApplet.java	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/webapp/SOAPMonitorApplet.java	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,1482 @@
+/*
+ * Copyright 2001,2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+import java.io.*;
+import java.net.*;
+import java.text.*;
+import java.util.*;
+import javax.swing.*;
+import javax.swing.border.*;
+import javax.swing.event.*;
+import javax.swing.table.*;
+
+import org.apache.axis.monitor.SOAPMonitorConstants;
+
+/**
+ * This is a SOAP Mointor Applet class.  This class provides
+ * the user interface for displaying data from the SOAP
+ * monitor service.
+ *
+ * @author Brian Price (pricebe@xxxxxxxxxx)
+ *
+ */
+public class SOAPMonitorApplet extends JApplet {
+
+    /**
+     * Private data
+     */
+    private JPanel      main_panel = null;
+    private JTabbedPane tabbed_pane = null;
+    private int         port = 0;
+    private Vector      pages = null;
+
+    /**
+     * Constructor
+     */
+    public SOAPMonitorApplet() {
+    }
+
+    /**
+     * Applet initialization
+     */
+    public void init() {
+        // Get the port to be used
+        String port_str = getParameter("port");
+        if (port_str != null) {
+            port = Integer.parseInt(port_str);
+        }
+        // Try to use the system look and feel
+        try {
+           UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e){
+        }
+        // Create main panel to hold notebook
+        main_panel = new JPanel();
+        main_panel.setBackground(Color.white);
+        main_panel.setLayout(new BorderLayout());
+        setContentPane(main_panel);
+        // Create the notebook
+        tabbed_pane = new JTabbedPane(JTabbedPane.TOP);
+        main_panel.add(tabbed_pane,BorderLayout.CENTER);
+        // Add notebook page for default host connection
+        pages = new Vector();
+        addPage(new SOAPMonitorPage(getCodeBase().getHost()));
+    }
+
+    /**
+     * Add a page to the notebook
+     */
+    private void addPage(SOAPMonitorPage pg) {
+        tabbed_pane.addTab("  "+pg.getHost()+"  ", pg);
+        pages.addElement(pg);
+    }
+
+    /** 
+     * Applet is being displayed 
+     */
+    public void start() {
+        // Tell all pages to start talking to the server
+        Enumeration e = pages.elements();
+        while (e.hasMoreElements()) {
+            SOAPMonitorPage pg = (SOAPMonitorPage) e.nextElement();
+            if (pg != null) {
+                pg.start();
+            }
+        }
+    }
+
+    /*
+     * Applet is no longer displayed
+     */
+    public void stop() {
+        // Tell all pages to stop talking to the server
+        Enumeration e = pages.elements();
+        while (e.hasMoreElements()) {
+            SOAPMonitorPage pg = (SOAPMonitorPage) e.nextElement();
+            if (pg != null) {
+                pg.stop();
+            }
+        }
+    }
+
+    /**
+     * Applet cleanup
+     */
+    public void destroy() {
+        tabbed_pane = null;
+        main_panel = null;
+    }
+
+    /**
+     * This class provides the contents of a notebook page
+     * representing a server connection.
+     */
+    class SOAPMonitorPage extends JPanel 
+                          implements Runnable,
+                                     ListSelectionListener,
+                                     ActionListener {
+
+        /**
+         * Status Strings
+         */
+        private final String STATUS_ACTIVE    = "The SOAP Monitor is started.";
+        private final String STATUS_STOPPED   = "The SOAP Monitor is stopped.";
+        private final String STATUS_CLOSED    = "The server communication has been terminated.";
+        private final String STATUS_NOCONNECT = "The SOAP Monitor is unable to communcate with the server.";
+
+        /**
+         * Private data
+         */
+        private String                host = null;
+        private Socket                socket = null;
+        private ObjectInputStream     in = null;
+        private ObjectOutputStream    out = null;
+        private SOAPMonitorTableModel model = null;
+        private JTable                table = null;
+        private JScrollPane           scroll = null;
+        private JPanel                list_panel = null;
+        private JPanel                list_buttons = null;
+        private JButton               remove_button = null;
+        private JButton               remove_all_button = null;
+        private JButton               filter_button = null;
+        private JPanel                details_panel = null;
+        private JPanel                details_header = null;
+        private JSplitPane            details_soap = null;
+        private JPanel                details_buttons = null;
+        private JLabel                details_time = null;
+        private JLabel                details_target = null;
+        private JLabel                details_status = null;
+        private JLabel                details_time_value = null;
+        private JLabel                details_target_value = null;
+        private JLabel                details_status_value = null;
+        private EmptyBorder           empty_border = null;
+        private EtchedBorder          etched_border = null;
+        private JPanel                request_panel = null;
+        private JPanel                response_panel = null;
+        private JLabel                request_label = null;
+        private JLabel                response_label = null;
+        private SOAPMonitorTextArea   request_text = null;
+        private SOAPMonitorTextArea   response_text = null;
+        private JScrollPane           request_scroll = null;
+        private JScrollPane           response_scroll = null;
+        private JButton               layout_button = null;
+        private JSplitPane            split = null;
+        private JPanel                status_area = null;
+        private JPanel                status_buttons = null;
+        private JButton               start_button = null;
+        private JButton               stop_button = null;
+        private JLabel                status_text = null;
+        private JPanel                status_text_panel = null;
+        private SOAPMonitorFilter     filter = null;
+        private GridBagLayout         details_header_layout = null;
+        private GridBagConstraints    details_header_constraints = null;
+        private JCheckBox             reflow_xml = null;
+
+        /**
+         * Constructor (create and layout page)
+         */
+        public SOAPMonitorPage(String host_name) {
+            host = host_name;
+            // Set up default filter (show all messages)
+            filter = new SOAPMonitorFilter();
+            // Use borders to help improve appearance
+            etched_border = new EtchedBorder();
+            // Build top portion of split (list panel) 
+            model = new SOAPMonitorTableModel();
+            table = new JTable(model);
+            table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+            table.setRowSelectionInterval(0,0);
+            table.setPreferredScrollableViewportSize(new Dimension(600, 96));
+            table.getSelectionModel().addListSelectionListener(this);
+            scroll = new JScrollPane(table);
+            remove_button = new JButton("Remove");
+            remove_button.addActionListener(this);
+            remove_button.setEnabled(false);
+            remove_all_button = new JButton("Remove All");
+            remove_all_button.addActionListener(this);
+            filter_button = new JButton("Filter ...");
+            filter_button.addActionListener(this);
+            list_buttons = new JPanel();
+            list_buttons.setLayout(new FlowLayout());
+            list_buttons.add(remove_button);
+            list_buttons.add(remove_all_button);
+            list_buttons.add(filter_button);
+            list_panel = new JPanel();
+            list_panel.setLayout(new BorderLayout());
+            list_panel.add(scroll,BorderLayout.CENTER);
+            list_panel.add(list_buttons, BorderLayout.SOUTH);
+            list_panel.setBorder(empty_border);
+            // Build bottom portion of split (message details) 
+            details_time = new JLabel("Time: ", SwingConstants.RIGHT);
+            details_target = new JLabel("Target Service: ", SwingConstants.RIGHT);
+            details_status = new JLabel("Status: ", SwingConstants.RIGHT);
+            details_time_value = new JLabel();
+            details_target_value = new JLabel();
+            details_status_value = new JLabel();
+            Dimension preferred_size = details_time.getPreferredSize();
+            preferred_size.width = 1;
+            details_time.setPreferredSize(preferred_size); 
+            details_target.setPreferredSize(preferred_size); 
+            details_status.setPreferredSize(preferred_size); 
+            details_time_value.setPreferredSize(preferred_size); 
+            details_target_value.setPreferredSize(preferred_size); 
+            details_status_value.setPreferredSize(preferred_size);
+            details_header = new JPanel();
+            details_header_layout = new GridBagLayout();
+            details_header.setLayout(details_header_layout);
+            details_header_constraints = new GridBagConstraints();
+            details_header_constraints.fill=GridBagConstraints.BOTH;
+            details_header_constraints.weightx=0.5;
+            details_header_layout.setConstraints(details_time,details_header_constraints);
+            details_header.add(details_time);
+            details_header_layout.setConstraints(details_time_value,details_header_constraints);
+            details_header.add(details_time_value);
+            details_header_layout.setConstraints(details_target,details_header_constraints);
+            details_header.add(details_target);
+            details_header_constraints.weightx=1.0;
+            details_header_layout.setConstraints(details_target_value,details_header_constraints);
+            details_header.add(details_target_value);
+            details_header_constraints.weightx=.5;
+            details_header_layout.setConstraints(details_status,details_header_constraints);
+            details_header.add(details_status);
+            details_header_layout.setConstraints(details_status_value,details_header_constraints);
+            details_header.add(details_status_value);
+            details_header.setBorder(etched_border);
+            request_label = new JLabel("SOAP Request", SwingConstants.CENTER);
+            request_text = new SOAPMonitorTextArea();
+            request_text.setEditable(false);
+            request_scroll = new JScrollPane(request_text);
+            request_panel = new JPanel();
+            request_panel.setLayout(new BorderLayout());
+            request_panel.add(request_label, BorderLayout.NORTH);
+            request_panel.add(request_scroll, BorderLayout.CENTER);
+            response_label = new JLabel("SOAP Response", SwingConstants.CENTER);
+            response_text = new SOAPMonitorTextArea();
+            response_text.setEditable(false);
+            response_scroll = new JScrollPane(response_text);
+            response_panel = new JPanel();
+            response_panel.setLayout(new BorderLayout());
+            response_panel.add(response_label, BorderLayout.NORTH);
+            response_panel.add(response_scroll, BorderLayout.CENTER);
+            details_soap = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
+            details_soap.setTopComponent(request_panel);
+            details_soap.setRightComponent(response_panel);
+            details_soap.setResizeWeight(.5);
+            details_panel = new JPanel();
+            layout_button = new JButton("Switch Layout");
+            layout_button.addActionListener(this);
+            reflow_xml = new JCheckBox("Reflow XML text");
+            reflow_xml.addActionListener(this);
+            details_buttons = new JPanel();
+            details_buttons.setLayout(new FlowLayout());
+            details_buttons.add(reflow_xml);
+            details_buttons.add(layout_button);
+            details_panel.setLayout(new BorderLayout());
+            details_panel.add(details_header,BorderLayout.NORTH);
+            details_panel.add(details_soap,BorderLayout.CENTER);
+            details_panel.add(details_buttons,BorderLayout.SOUTH);
+            details_panel.setBorder(empty_border);
+            // Add the two parts to the age split pane
+            split = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
+            split.setTopComponent(list_panel);
+            split.setRightComponent(details_panel);
+            // Build status area
+            start_button = new JButton("Start");
+            start_button.addActionListener(this);
+            stop_button = new JButton("Stop");
+            stop_button.addActionListener(this);
+            status_buttons = new JPanel();
+            status_buttons.setLayout(new FlowLayout());
+            status_buttons.add(start_button);
+            status_buttons.add(stop_button);
+            status_text = new JLabel();
+            status_text.setBorder(new BevelBorder(BevelBorder.LOWERED));
+            status_text_panel = new JPanel();
+            status_text_panel.setLayout(new BorderLayout());
+            status_text_panel.add(status_text, BorderLayout.CENTER);
+            status_text_panel.setBorder(empty_border);
+            status_area = new JPanel();
+            status_area.setLayout(new BorderLayout());
+            status_area.add(status_buttons, BorderLayout.WEST);
+            status_area.add(status_text_panel, BorderLayout.CENTER);
+            status_area.setBorder(etched_border);
+            // Add the split and status area to page
+            setLayout(new BorderLayout());
+            add(split, BorderLayout.CENTER);
+            add(status_area, BorderLayout.SOUTH);
+        }
+
+        /**
+         * Get the name of the host we are displaying
+         */
+        public String getHost() {
+            return host;
+        }
+
+        /**
+         * Set the status text
+         */
+        public void setStatus(String txt) {
+            status_text.setForeground(Color.black);
+            status_text.setText("  "+txt);
+        }
+
+        /**
+         * Set the status text to an error
+         */
+        public void setErrorStatus(String txt) {
+            status_text.setForeground(Color.red);
+            status_text.setText("  "+txt);
+        }
+
+        /**
+         * Start talking to the server
+         */
+        public void start() {
+            String codehost = getCodeBase().getHost();
+            if (socket == null) {
+                try {
+                    // Open the socket to the server
+                    socket = new Socket(codehost, port);
+                    // Create output stream
+                    out = new ObjectOutputStream(socket.getOutputStream());
+                    out.flush();
+                    // Create input stream and start background
+                    // thread to read data from the server
+                    in = new ObjectInputStream(socket.getInputStream());
+                    new Thread(this).start();
+                } catch (Exception e) {
+                    // Exceptions here are unexpected, but we can't
+                    // really do anything (so just write it to stdout
+                    // in case someone cares and then ignore it)
+                    System.out.println("Exception! "+e.toString());
+                    e.printStackTrace();
+                    setErrorStatus(STATUS_NOCONNECT);
+                    socket = null;
+                }
+            } else {
+                // Already started
+            }
+            if (socket != null) {
+                // Make sure the right buttons are enabled
+                start_button.setEnabled(false);
+                stop_button.setEnabled(true);
+                setStatus(STATUS_ACTIVE);
+            }
+        }
+
+        /**
+         * Stop talking to the server
+         */
+        public void stop() {
+            if (socket != null) {
+                // Close all the streams and socket
+                if (out != null) {
+                    try {
+                        out.close();
+                    } catch (IOException ioe) {
+                    }
+                    out = null;
+                }
+                if (in != null) {
+                    try {
+                        in.close();
+                    } catch (IOException ioe) {
+                    }
+                    in = null;
+                }
+                if (socket != null) {
+                    try {
+                        socket.close();
+                    } catch (IOException ioe) {
+                    }
+                    socket = null;
+                }
+            } else {
+                // Already stopped
+            }
+            // Make sure the right buttons are enabled
+            start_button.setEnabled(true);
+            stop_button.setEnabled(false);
+            setStatus(STATUS_STOPPED);
+        }
+
+        /**
+         * Background thread used to receive data from
+         * the server.
+         */
+        public void run() {
+            Long            id;
+            Integer         message_type;
+            String          target;
+            String          soap;
+            SOAPMonitorData data;
+            int             selected;
+            int             row;
+            boolean         update_needed;
+            while (socket != null) {
+                try {
+                    // Get the data from the server
+                    message_type = (Integer) in.readObject();
+                    // Process the data depending on its type
+                    switch (message_type.intValue()) {
+                        case SOAPMonitorConstants.SOAP_MONITOR_REQUEST:
+                            // Get the id, target and soap info
+                            id = (Long) in.readObject();
+                            target = (String) in.readObject();
+                            soap = (String) in.readObject();
+                            // Add new request data to the table
+                            data = "" SOAPMonitorData(id,target,soap);
+                            model.addData(data);
+                            // If "most recent" selected then update
+                            // the details area if needed
+                            selected = table.getSelectedRow();
+                            if ((selected == 0) && model.filterMatch(data)) {
+                                valueChanged(null);
+                            }
+                            break;
+                        case SOAPMonitorConstants.SOAP_MONITOR_RESPONSE:
+                            // Get the id and soap info
+                            id = (Long) in.readObject();
+                            soap = (String) in.readObject();
+                            data = ""
+                            if (data != null) {
+                                update_needed = false;
+                                // Get the selected row
+                                selected = table.getSelectedRow();
+                                // If "most recent", then always
+                                // update details area
+                                if (selected == 0) {
+                                    update_needed = true;
+                                }
+                                // If the data being updated is
+                                // selected then update details
+                                row = model.findRow(data);
+                                if ((row != -1) && (row == selected)) {
+                                    update_needed = true;
+                                }
+                                // Set the response and update table
+                                data.setSOAPResponse(soap);
+                                model.updateData(data);
+                                // Refresh details area (if needed)
+                                if (update_needed) {
+                                    valueChanged(null);
+                                }
+                            }
+                            break;
+                    }
+
+                } catch (Exception e) {
+                    // Exceptions are expected here when the
+                    // server communication has been terminated.
+                    if (stop_button.isEnabled()) {
+                        stop();
+                        setErrorStatus(STATUS_CLOSED);
+                    }
+                }
+            }
+        }
+
+        /**
+         * Listener to handle table selection changes
+         */
+        public void valueChanged(ListSelectionEvent e) {
+            int row = table.getSelectedRow();
+            // Check if they selected a specific row
+            if (row > 0) {
+                remove_button.setEnabled(true);
+            } else {
+                remove_button.setEnabled(false);
+            }
+            // Check for "most recent" selection
+            if (row == 0) {
+                row = model.getRowCount() - 1;
+                if (row == 0) {
+                    row = -1;
+                }
+            }
+            if (row == -1) {
+                // Clear the details panel
+                details_time_value.setText("");
+                details_target_value.setText("");
+                details_status_value.setText("");
+                request_text.setText("");
+                response_text.setText("");
+            } else {
+                // Show the details for the row
+                SOAPMonitorData soap = model.getData(row);
+                details_time_value.setText(soap.getTime());
+                details_target_value.setText(soap.getTargetService());
+                details_status_value.setText(soap.getStatus());
+                if (soap.getSOAPRequest() == null) {
+                    request_text.setText("");
+                } else {
+                    request_text.setText(soap.getSOAPRequest());
+                    request_text.setCaretPosition(0);
+                }
+                if (soap.getSOAPResponse() == null) {
+                    response_text.setText("");
+                } else {
+                    response_text.setText(soap.getSOAPResponse());
+                    response_text.setCaretPosition(0);
+                }
+            }
+        }
+
+        /**
+         * Listener to handle button actions
+         */
+        public void actionPerformed(ActionEvent e) {
+            // Check if the user pressed the remove button
+            if (e.getSource() == remove_button) {
+                int row = table.getSelectedRow();
+                model.removeRow(row);
+                table.clearSelection();
+                table.repaint();
+                valueChanged(null);
+            }
+            // Check if the user pressed the remove all button
+            if (e.getSource() == remove_all_button) {
+                model.clearAll();
+                table.setRowSelectionInterval(0,0);
+                table.repaint();
+                valueChanged(null);
+            }
+            // Check if the user pressed the filter button
+            if (e.getSource() == filter_button) {
+                filter.showDialog();
+                if (filter.okPressed()) {
+                    // Update the display with new filter
+                    model.setFilter(filter);
+                    table.repaint();
+                }
+            }
+            // Check if the user pressed the start button
+            if (e.getSource() == start_button) {
+                start();
+            }
+            // Check if the user pressed the stop button
+            if (e.getSource() == stop_button) {
+                stop();
+            }
+            // Check if the user wants to switch layout
+            if (e.getSource() == layout_button) {
+                details_panel.remove(details_soap);
+                details_soap.removeAll();
+                if (details_soap.getOrientation() == JSplitPane.HORIZONTAL_SPLIT) {
+                    details_soap = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
+                } else {
+                    details_soap = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
+                }
+                details_soap.setTopComponent(request_panel);
+                details_soap.setRightComponent(response_panel);
+                details_soap.setResizeWeight(.5);
+                details_panel.add(details_soap, BorderLayout.CENTER);
+                details_panel.validate();
+                details_panel.repaint();
+            }
+            // Check if the user is changing the reflow option
+            if (e.getSource() == reflow_xml) {
+                request_text.setReflowXML(reflow_xml.isSelected());
+                response_text.setReflowXML(reflow_xml.isSelected());
+            }
+        }
+    }
+
+    /**
+     * This class represend the data for a SOAP request/response pair
+     */
+    class SOAPMonitorData {
+
+        /**
+         * Private data
+         */
+        private Long    id;
+        private String  time;
+        private String  target;
+        private String  soap_request;
+        private String  soap_response;
+
+        /**
+         * Constructor
+         */
+        public SOAPMonitorData(Long id, String target, String soap_request) {
+            this.id = id;
+            // A null id is used to signal that the "most recent" entry
+            // is being created.
+            if (id == null) {
+                this.time = "Most Recent";
+                this.target = "---";
+                this.soap_request = null;
+                this.soap_response = null;
+            } else {
+                this.time = DateFormat.getTimeInstance().format(new Date());
+                this.target = target;
+                this.soap_request = soap_request;
+                this.soap_response = null;
+            }
+        }
+
+        /**
+         * Get the id for the SOAP message
+         */
+        public Long getId() {
+            return id;
+        }
+
+        /**
+         * Get the time the SOAP request was received by the applet
+         */
+        public String getTime() {
+            return time;
+        }
+
+        /**
+         * Get the SOAP request target service name
+         */
+        public String getTargetService() {
+            return target;
+        }
+
+        /**
+         * Get the status of the request
+         */
+        public String getStatus() {
+            String status = "---";
+            if (id != null) {
+                status = "Complete";
+                if (soap_response == null) {
+                    status = "Active";
+                }
+            }
+            return status;
+        }
+
+        /**
+         * Get the request SOAP contents
+         */
+        public String getSOAPRequest() {
+            return soap_request;
+        }
+
+        /**
+         * Set the resposne SOAP contents
+         */
+        public void setSOAPResponse(String response) {
+            soap_response = response;
+        }
+
+        /**
+         * Get the response SOAP contents
+         */
+        public String getSOAPResponse() {
+            return soap_response;
+        }
+    }
+
+    /**
+     * This table model is used to manage the table displayed
+     * at the top of the page to show all the SOAP messages
+     * we have received and to control which message details are
+     * to be displayed on the bottom of the page.
+     */
+    class SOAPMonitorTableModel extends AbstractTableModel {
+
+        /**
+         * Column titles
+         */
+        private final String[] column_names = { "Time",
+                                                "Target Service",
+                                                "Status" };
+        /**                                        
+         * Private data
+         */
+        private Vector  data;
+        private Vector  filter_include;
+        private Vector  filter_exclude;
+        private boolean filter_active;
+        private boolean filter_complete;
+        private Vector  filter_data;
+
+        /**
+         * Constructor
+         */
+        public SOAPMonitorTableModel() {
+            data = "" Vector();
+            // Add "most recent" entry to top of table
+            SOAPMonitorData soap = new SOAPMonitorData(null,null,null);
+            data.addElement(soap);
+            filter_include = null;
+            filter_exclude = null;
+            filter_active = false;
+            filter_complete = false;
+            filter_data = null;
+            // By default, exclude NotificationService and
+            // EventViewerService messages
+            filter_exclude = new Vector();
+            filter_exclude.addElement("NotificationService");
+            filter_exclude.addElement("EventViewerService");
+            filter_data = new Vector();
+            filter_data.addElement(soap);
+        }
+
+        /**
+         * Get column count (part of table model interface)
+         */
+        public int getColumnCount() {
+            return column_names.length;
+        }
+        
+        /**
+         * Get row count (part of table model interface)
+         */
+        public int getRowCount() {
+            int count = data.size();
+            if (filter_data != null) {
+                count = filter_data.size();
+            }
+            return count;
+        }
+
+        /**
+         * Get column name (part of table model interface)
+         */
+        public String getColumnName(int col) {
+            return column_names[col];
+        }
+
+        /**
+         * Get value at (part of table model interface)
+         */
+        public Object getValueAt(int row, int col) {
+            SOAPMonitorData soap;
+            String          value = null;
+            soap = (SOAPMonitorData) data.elementAt(row);
+            if (filter_data != null) {
+                soap = (SOAPMonitorData) filter_data.elementAt(row);
+            }
+            switch (col) {
+                case 0:
+                    value = soap.getTime();
+                    break;
+                case 1:
+                    value = soap.getTargetService();
+                    break;
+                case 2:
+                    value = soap.getStatus();
+                    break;
+            }
+            return value;
+        }
+
+        /**
+         * Check if soap data matches filter 
+         */
+        public boolean filterMatch(SOAPMonitorData soap) {
+            boolean match = true;
+            if (filter_include != null) {
+                // Check for service match
+                Enumeration e = filter_include.elements();
+                match = false;
+                while (e.hasMoreElements() && !match) {
+                    String service = (String) e.nextElement();
+                    if (service.equals(soap.getTargetService())) {
+                        match = true;
+                    }
+                }
+            }
+            if (filter_exclude != null) {
+                // Check for service match
+                Enumeration e = filter_exclude.elements();
+                while (e.hasMoreElements() && match) {
+                    String service = (String) e.nextElement();
+                    if (service.equals(soap.getTargetService())) {
+                        match = false;
+                    }
+                }
+            }
+            if (filter_active) {
+                // Check for active status match
+                if (soap.getSOAPResponse() != null) {
+                    match = false;
+                }
+            }
+            if (filter_complete) {
+                // Check for complete status match
+                if (soap.getSOAPResponse() == null) {
+                    match = false;
+                }
+            }
+            // The "most recent" is always a match
+            if (soap.getId() == null) {
+                match = true;
+            }
+            return match;
+        }
+
+        /**
+         * Add data to the table as a new row
+         */
+        public void addData(SOAPMonitorData soap) {
+            int row = data.size();
+            data.addElement(soap);
+            if (filter_data != null) {
+                if (filterMatch(soap)) {
+                    row = filter_data.size();
+                    filter_data.addElement(soap);
+                    fireTableRowsInserted(row,row);
+                }
+            } else {
+                fireTableRowsInserted(row,row);
+            }
+        }
+
+        /**
+         * Find the data for a given id
+         */
+        public SOAPMonitorData findData(Long id) {
+            SOAPMonitorData soap = null;
+            for (int row=data.size(); (row > 0) && (soap == null); row--) {
+                soap = (SOAPMonitorData) data.elementAt(row-1);
+                if (soap.getId().longValue() != id.longValue()) {
+                    soap = null;
+                }
+            }
+            return soap;
+        }
+
+        /**
+         * Find the row in the table for a given message id
+         */
+        public int findRow(SOAPMonitorData soap) {
+            int row = -1;
+            if (filter_data != null) {
+                row = filter_data.indexOf(soap);
+            } else {
+                row = data.indexOf(soap);
+            }
+            return row;
+        }
+
+        /**
+         * Remove all messages from the table (but leave "most recent")
+         */
+        public void clearAll() {
+            int last_row = data.size() - 1;
+            if (last_row > 0) {
+                data.removeAllElements();
+                SOAPMonitorData soap = new SOAPMonitorData(null,null,null);
+                data.addElement(soap);
+                if (filter_data != null) {
+                    filter_data.removeAllElements();
+                    filter_data.addElement(soap);
+                }
+                fireTableDataChanged();
+            }
+        }
+
+        /**
+         * Remove a message from the table
+         */
+        public void removeRow(int row) {
+            SOAPMonitorData soap = null;
+            if (filter_data == null) {
+                soap = (SOAPMonitorData) data.elementAt(row);
+                data.remove(soap);
+            } else {
+                soap = (SOAPMonitorData) filter_data.elementAt(row);
+                filter_data.remove(soap);
+                data.remove(soap);
+            }         
+            fireTableRowsDeleted(row,row);
+        }
+
+        /**
+         * Set a new filter
+         */
+        public void setFilter(SOAPMonitorFilter filter) {
+            // Save new filter criteria
+            filter_include = filter.getFilterIncludeList();
+            filter_exclude = filter.getFilterExcludeList();
+            filter_active = filter.getFilterActive();
+            filter_complete = filter.getFilterComplete();
+            applyFilter();
+        }
+
+        /**
+         * Refilter the list of messages
+         */
+        public void applyFilter() {
+            // Re-filter using new criteria
+            filter_data = null;
+            if ((filter_include != null) || 
+                (filter_exclude != null) ||
+                 filter_active || filter_complete ) {
+                filter_data = new Vector();
+                Enumeration e = data.elements();
+                SOAPMonitorData soap;
+                while (e.hasMoreElements()) {
+                    soap = (SOAPMonitorData) e.nextElement();
+                    if (filterMatch(soap)) {
+                        filter_data.addElement(soap);
+                    }
+                }
+            }
+            fireTableDataChanged();
+        }
+
+        /**
+         * Get the data for a row
+         */
+        public SOAPMonitorData getData(int row) {
+            SOAPMonitorData soap = null;
+            if (filter_data == null) {
+                soap = (SOAPMonitorData) data.elementAt(row);
+            } else {
+                soap = (SOAPMonitorData) filter_data.elementAt(row);
+            }
+            return soap;
+        }
+
+        /**
+         * Update a message
+         */
+        public void updateData (SOAPMonitorData soap) {
+           int row;
+           if (filter_data == null) {
+               // No filter, so just fire table updated
+               row = data.indexOf(soap);
+               if (row != -1) {
+                   fireTableRowsUpdated(row,row);
+               }
+           } else {
+               // Check if the row was being displayed
+               row = filter_data.indexOf(soap);
+               if (row == -1) {
+                   // Row was not displayed, so check for if it
+                   // now needs to be displayed
+                   if (filterMatch(soap)) {
+                       int index = -1;
+                       row = data.indexOf(soap) + 1;
+                       while ((row < data.size()) && (index == -1)) {
+                           index = filter_data.indexOf(data.elementAt(row));
+                           if (index != -1) {                   
+                               // Insert at this location
+                               filter_data.add(index,soap);
+                           }
+                           row++;
+                       }
+                       if (index == -1) {
+                           // Insert at end
+                           index = filter_data.size();
+                           filter_data.addElement(soap);
+                       }
+                       fireTableRowsInserted(index,index);
+                   }
+               } else {
+                   // Row was displayed, so check if it needs to
+                   // be updated or removed
+                   if (filterMatch(soap)) {
+                       fireTableRowsUpdated(row,row);
+                   } else {
+                       filter_data.remove(soap);
+                       fireTableRowsDeleted(row,row);
+                   }
+               }
+           }
+        }
+
+    }
+
+    /**
+     * Panel with checkbox and list
+     */
+    class ServiceFilterPanel extends JPanel 
+                             implements ActionListener,
+                                        ListSelectionListener,
+                                        DocumentListener {
+
+        private JCheckBox    service_box = null;
+        private Vector       filter_list = null;
+        private Vector       service_data = null;
+        private JList        service_list = null;
+        private JScrollPane  service_scroll = null;
+        private JButton      remove_service_button = null;
+        private JPanel       remove_service_panel = null;
+        private EmptyBorder  indent_border = null;
+        private EmptyBorder  empty_border = null;
+        private JPanel       service_area = null;
+        private JPanel       add_service_area = null;
+        private JTextField   add_service_field = null;
+        private JButton      add_service_button = null;
+        private JPanel       add_service_panel = null;
+
+        /**
+         * Constructor
+         */
+        public ServiceFilterPanel(String text, Vector list) {
+            empty_border = new EmptyBorder(5,5,0,5);
+            indent_border = new EmptyBorder(5,25,5,5);
+            service_box = new JCheckBox(text);
+            service_box.addActionListener(this);
+            service_data = new Vector();
+            if (list != null) {
+                service_box.setSelected(true);
+                service_data = (Vector) list.clone();
+            }
+            service_list = new JList(service_data);
+            service_list.setBorder(new EtchedBorder());
+            service_list.setVisibleRowCount(5);
+            service_list.addListSelectionListener(this);
+            service_list.setEnabled(service_box.isSelected());
+            service_scroll = new JScrollPane(service_list);
+            service_scroll.setBorder(new EtchedBorder());
+            remove_service_button = new JButton("Remove");
+            remove_service_button.addActionListener(this);
+            remove_service_button.setEnabled(false);
+            remove_service_panel = new JPanel();
+            remove_service_panel.setLayout(new FlowLayout());
+            remove_service_panel.add(remove_service_button);
+            service_area = new JPanel();
+            service_area.setLayout(new BorderLayout());
+            service_area.add(service_scroll, BorderLayout.CENTER);
+            service_area.add(remove_service_panel, BorderLayout.EAST);
+            service_area.setBorder(indent_border);
+            add_service_field = new JTextField();
+            add_service_field.addActionListener(this);
+            add_service_field.getDocument().addDocumentListener(this);
+            add_service_field.setEnabled(service_box.isSelected());
+            add_service_button = new JButton("Add");
+            add_service_button.addActionListener(this);
+            add_service_button.setEnabled(false);
+            add_service_panel = new JPanel();
+            add_service_panel.setLayout(new BorderLayout());
+            JPanel dummy = new JPanel();
+            dummy.setBorder(empty_border);
+            add_service_panel.add(dummy, BorderLayout.WEST);
+            add_service_panel.add(add_service_button, BorderLayout.EAST);
+            add_service_area = new JPanel();
+            add_service_area.setLayout(new BorderLayout());
+            add_service_area.add(add_service_field, BorderLayout.CENTER);
+            add_service_area.add(add_service_panel, BorderLayout.EAST);
+            add_service_area.setBorder(indent_border);
+            setLayout(new BorderLayout());
+            add(service_box, BorderLayout.NORTH);
+            add(service_area, BorderLayout.CENTER);
+            add(add_service_area, BorderLayout.SOUTH);
+            setBorder(empty_border);
+        }
+
+        /**
+         * Get the current list of services
+         */
+        public Vector getServiceList() {
+            Vector list = null;
+            if (service_box.isSelected()) {
+                list = service_data;
+            }
+            return list;
+        }
+
+        /**
+         * Listener to handle button actions
+         */
+        public void actionPerformed(ActionEvent e) {
+            // Check if the user changed the service filter option
+            if (e.getSource() == service_box) {
+                service_list.setEnabled(service_box.isSelected());
+                service_list.clearSelection();
+                remove_service_button.setEnabled(false);
+                add_service_field.setEnabled(service_box.isSelected());
+                add_service_field.setText("");
+                add_service_button.setEnabled(false);
+            }
+            // Check if the user pressed the add service button
+            if ((e.getSource() == add_service_button) ||
+                (e.getSource() == add_service_field)) {
+                String text = add_service_field.getText();
+                if ((text != null) && (text.length() > 0)) {
+                    service_data.addElement(text);
+                    service_list.setListData(service_data);
+                }
+                add_service_field.setText("");
+                add_service_field.requestFocus();
+            }
+            // Check if the user pressed the remove service button
+            if (e.getSource() == remove_service_button) {
+                Object[] sels = service_list.getSelectedValues();
+                for (int i=0; i<sels.length; i++) {
+                    service_data.removeElement(sels[i]);
+                }
+                service_list.setListData(service_data);
+                service_list.clearSelection();
+            }
+        }
+
+        /**
+         * Handle changes to the text field
+         */
+        public void changedUpdate(DocumentEvent e) {
+            String text = add_service_field.getText();
+            if ((text != null) && (text.length() > 0)) {
+                add_service_button.setEnabled(true);
+            } else {
+                add_service_button.setEnabled(false);
+            }
+        }
+
+        /**
+         * Handle changes to the text field
+         */
+        public void insertUpdate(DocumentEvent e) {
+            changedUpdate(e);
+        }
+
+        /**
+         * Handle changes to the text field
+         */
+        public void removeUpdate(DocumentEvent e) {
+            changedUpdate(e);
+        }
+
+        /**
+         * Listener to handle service list selection changes
+         */
+        public void valueChanged(ListSelectionEvent e) {
+            if (service_list.getSelectedIndex() == -1) {
+                remove_service_button.setEnabled(false);
+            } else {
+                remove_service_button.setEnabled(true);
+            }
+        }
+    }
+
+    /**
+     * Class for showing the filter dialog
+     */
+    class SOAPMonitorFilter implements ActionListener {
+
+        /**
+         * Private data
+         */
+        private JDialog            dialog = null;
+        private JPanel             panel = null;
+        private JPanel             buttons = null;
+        private JButton            ok_button = null;
+        private JButton            cancel_button = null;
+        private ServiceFilterPanel include_panel = null;
+        private ServiceFilterPanel exclude_panel = null;
+        private JPanel             status_panel = null;
+        private JCheckBox          status_box = null;
+        private EmptyBorder  empty_border = null;
+        private EmptyBorder  indent_border = null;
+        private JPanel             status_options = null;
+        private ButtonGroup        status_group = null;
+        private JRadioButton       status_active = null;
+        private JRadioButton       status_complete = null;
+        private Vector             filter_include_list = null;
+        private Vector             filter_exclude_list = null;
+        private boolean            filter_active = false;
+        private boolean            filter_complete = false;
+        private boolean            ok_pressed = false;
+
+        /**
+         * Constructor
+         */
+        public SOAPMonitorFilter() {
+            // By default, exclude NotificationService and
+            // EventViewerService messages
+            filter_exclude_list = new Vector();
+            filter_exclude_list.addElement("NotificationService");
+            filter_exclude_list.addElement("EventViewerService");
+        }
+
+        /**
+         * Get list of services to be included
+         */
+        public Vector getFilterIncludeList() {
+            return filter_include_list;
+        }
+
+        /**
+         * Get list of services to be excluded
+         */
+        public Vector getFilterExcludeList() {
+            return filter_exclude_list;
+        }
+
+        /**
+         * Check if filter active messages
+         */
+        public boolean getFilterActive() {
+            return filter_active;
+        }
+
+        /**
+         * Check if filter complete messages
+         */
+        public boolean getFilterComplete() {
+            return filter_complete;
+        }
+
+        /**
+         * Show the filter dialog
+         */
+        public void showDialog() {
+            empty_border = new EmptyBorder(5,5,0,5);
+            indent_border = new EmptyBorder(5,25,5,5);
+            include_panel = new ServiceFilterPanel("Include messages based on target service:",
+                                                   filter_include_list);
+            exclude_panel = new ServiceFilterPanel("Exclude messages based on target service:",
+                                                   filter_exclude_list);
+            status_box = new JCheckBox("Filter messages based on status:");
+            status_box.addActionListener(this);
+            status_active = new JRadioButton("Active messages only");
+            status_active.setSelected(true);
+            status_active.setEnabled(false);
+            status_complete = new JRadioButton("Complete messages only");
+            status_complete.setEnabled(false);
+            status_group = new ButtonGroup();
+            status_group.add(status_active);
+            status_group.add(status_complete);
+            if (filter_active || filter_complete) {
+                status_box.setSelected(true);
+                status_active.setEnabled(true);
+                status_complete.setEnabled(true);
+                if (filter_complete) {
+                    status_complete.setSelected(true);
+                }
+            }
+            status_options = new JPanel();
+            status_options.setLayout(new BoxLayout(status_options, BoxLayout.Y_AXIS));
+            status_options.add(status_active);
+            status_options.add(status_complete);
+            status_options.setBorder(indent_border);
+            status_panel = new JPanel();
+            status_panel.setLayout(new BorderLayout());
+            status_panel.add(status_box, BorderLayout.NORTH);
+            status_panel.add(status_options, BorderLayout.CENTER);
+            status_panel.setBorder(empty_border);
+            ok_button = new JButton("Ok");
+            ok_button.addActionListener(this);
+            cancel_button = new JButton("Cancel");
+            cancel_button.addActionListener(this);
+            buttons = new JPanel();
+            buttons.setLayout(new FlowLayout());
+            buttons.add(ok_button);
+            buttons.add(cancel_button);
+            panel = new JPanel();
+            panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
+            panel.add(include_panel);
+            panel.add(exclude_panel);
+            panel.add(status_panel);
+            panel.add(buttons);
+            dialog = new JDialog();
+            dialog.setTitle("SOAP Monitor Filter");
+            dialog.setContentPane(panel);
+            dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+            dialog.setModal(true);
+            dialog.pack();
+            Dimension d = dialog.getToolkit().getScreenSize();
+            dialog.setLocation((d.width-dialog.getWidth())/2,
+                               (d.height-dialog.getHeight())/2);
+            ok_pressed = false;
+            dialog.show();
+        }
+
+        /**
+         * Listener to handle button actions
+         */
+        public void actionPerformed(ActionEvent e) {
+            // Check if the user pressed the ok button
+            if (e.getSource() == ok_button) {
+                filter_include_list = include_panel.getServiceList();
+                filter_exclude_list = exclude_panel.getServiceList();
+                if (status_box.isSelected()) {
+                    filter_active = status_active.isSelected();
+                    filter_complete = status_complete.isSelected();
+                } else {
+                    filter_active = false;
+                    filter_complete = false;
+                }
+                ok_pressed = true;
+                dialog.dispose();
+            }
+            // Check if the user pressed the cancel button
+            if (e.getSource() == cancel_button) {
+                dialog.dispose();
+            }
+            // Check if the user changed the status filter option
+            if (e.getSource() == status_box) {
+                status_active.setEnabled(status_box.isSelected());
+                status_complete.setEnabled(status_box.isSelected());
+            }
+        }
+
+        /**
+         * Check if the user pressed the ok button
+         */
+        public boolean okPressed() {
+            return ok_pressed;
+        }
+    }
+
+    /**
+     * Text panel class that supports XML reflow
+     */
+    class SOAPMonitorTextArea extends JTextArea {
+
+        /**
+         * Private data
+         */
+        private boolean format = false;
+        private String  original = "";
+        private String  formatted = null; 
+
+        /**
+         * Constructor
+         */
+        public SOAPMonitorTextArea() {
+        }
+
+        /** 
+         * Override setText to do formatting
+         */
+        public void setText(String text) {
+            original = text;
+            formatted = null;
+            if (format) {
+                doFormat();
+                super.setText(formatted);
+            } else {
+                super.setText(original);
+            }
+        }
+
+        /**
+         * Turn reflow on or off
+         */
+        public void setReflowXML(boolean reflow) {
+            format = reflow;
+            if (format) {
+                if (formatted == null) {
+                    doFormat();
+                }
+                super.setText(formatted);
+            } else {
+                super.setText(original);
+            }
+        }
+
+        /**
+         * Reflow XML
+         */
+        public void doFormat() {
+            Vector       parts = new Vector();
+            char[]       chars = original.toCharArray();
+            int          index = 0;
+            int          first = 0;
+            String       part = null;
+            while (index < chars.length) {
+                // Check for start of tag
+                if (chars[index] == '<') {
+                    // Did we have data before this tag?
+                    if (first < index) {
+                        part = new String(chars,first,index-first);
+                        part = part.trim();
+                        // Save non-whitespace data
+                        if (part.length() > 0) {
+                            parts.addElement(part);
+                        }
+                    }
+                    // Save the start of tag
+                    first = index;
+                }
+                // Check for end of tag
+                if (chars[index] == '>') {
+                    // Save the tag
+                    part = new String(chars,first,index-first+1);
+                    parts.addElement(part);
+                    first = index+1;
+                }
+                // Check for end of line
+                if ((chars[index] == '\n') || (chars[index] == '\r')) {
+                    // Was there data on this line?
+                    if (first < index) {
+                        part = new String(chars,first,index-first);
+                        part = part.trim();
+                        // Save non-whitespace data
+                        if (part.length() > 0) {
+                            parts.addElement(part);
+                        }
+                    }
+                    first = index+1;
+                }
+                index++;
+            }
+            // Reflow as XML
+            StringBuffer buf = new StringBuffer();
+            Object[] list = parts.toArray();
+            int indent = 0;
+            int pad = 0;
+            index = 0;
+            while (index < list.length) {
+                part = (String) list[index];
+                if (buf.length() == 0) {
+                    // Just add first tag (should be XML header)
+                    buf.append(part);
+                } else {
+                    // All other parts need to start on a new line
+                    buf.append('\n');
+                    // If we're at an end tag then decrease indent
+                    if (part.startsWith("</")) {
+                        indent--;
+                    }            
+                    // Add any indent
+                    for (pad = 0; pad < indent; pad++) {
+                        buf.append("  ");
+                    }
+                    // Add the tag or data
+                    buf.append(part);
+                    // If this is a start tag then increase indent
+                    if (part.startsWith("<") &&
+                        !part.startsWith("</") &&
+                        !part.endsWith("/>")) {
+                        indent++;
+                        // Check for special <tag>data</tag> case
+                        if ((index + 2) < list.length) {
+                            part = (String) list[index+2];
+                            if (part.startsWith("</")) {
+                                part = (String) list[index+1];
+                                if (!part.startsWith("<")) {
+                                    buf.append(part);
+                                    part = (String) list[index+2];
+                                    buf.append(part);
+                                    index = index + 2;
+                                    indent--;
+                                }
+                            }
+                        }
+                    }
+                }
+                index++;
+            }
+            formatted = new String(buf);
+        }
+    }
+}
Property changes on: trunk/OrchestraPVM/packaging/webapp/SOAPMonitorApplet.java
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/OrchestraPVM/packaging/webapp/StockQuoteService.jws (762 => 763)


--- trunk/OrchestraPVM/packaging/webapp/StockQuoteService.jws	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/webapp/StockQuoteService.jws	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2001,2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.axis.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+/**
+ * See \samples\stock\readme for info.
+ *
+ * @author Sanjiva Weerawarana (sanjiva@xxxxxxxxxxxxxx)
+ * @author Doug Davis (dug@xxxxxxxxxx)
+ */
+public class StockQuoteService {
+  public float getQuote (String symbol) throws Exception {
+    // get a real (delayed by 20min) stockquote from 
+    // http://www.xmltoday.com/examples/stockquote/. The IP addr 
+    // below came from the host that the above form posts to ..
+
+    if ( symbol.equals("XXX") ) return( (float) 66.25 );
+
+
+    Document doc = null ;
+    
+    doc = XMLUtils.newDocument( "http://www.xmltoday.com/examples/" +
+                                "stockquote/getxmlquote.vep?s="+symbol );
+
+    Element  elem = doc.getDocumentElement();
+    NodeList list = elem.getElementsByTagName("stock_quote");
+
+    elem = (Element) list.item(0);
+    list = elem.getElementsByTagName( "price" );
+    elem = (Element) list.item( 0 );
+    String quoteStr = elem.getAttribute("value");
+    try {
+      return Float.valueOf(quoteStr).floatValue();
+    } catch (NumberFormatException e1) {
+      // maybe its an int?
+      try {
+        return Integer.valueOf(quoteStr).intValue() * 1.0F;
+      } catch (NumberFormatException e2) {
+        return -1.0F;
+      }
+    }
+  }
+}

Added: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet$SOAPMonitorData.class


(Binary files differ)
Property changes on: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet$SOAPMonitorData.class ___________________________________________________________________ Name: svn:mime-type + application/octet-stream

Added: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet$SOAPMonitorFilter.class


(Binary files differ)
Property changes on: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet$SOAPMonitorFilter.class ___________________________________________________________________ Name: svn:mime-type + application/octet-stream

Added: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet$SOAPMonitorPage.class


(Binary files differ)
Property changes on: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet$SOAPMonitorPage.class ___________________________________________________________________ Name: svn:mime-type + application/octet-stream

Added: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet$SOAPMonitorTableModel.class


(Binary files differ)
Property changes on: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet$SOAPMonitorTableModel.class ___________________________________________________________________ Name: svn:mime-type + application/octet-stream

Added: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet$SOAPMonitorTextArea.class


(Binary files differ)
Property changes on: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet$SOAPMonitorTextArea.class ___________________________________________________________________ Name: svn:mime-type + application/octet-stream

Added: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet$ServiceFilterPanel.class


(Binary files differ)
Property changes on: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet$ServiceFilterPanel.class ___________________________________________________________________ Name: svn:mime-type + application/octet-stream

Added: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet.class


(Binary files differ)
Property changes on: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/SOAPMonitorApplet.class ___________________________________________________________________ Name: svn:mime-type + application/octet-stream

Added: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/i18n.properties (762 => 763)


--- trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/i18n.properties	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/i18n.properties	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,132 @@
+############################################################
+# i18n settings for the Axis Web-Application
+#
+
+#################### [i18n global setting] #################
+#
+locales=en ja
+
+#################### [index.jsp] ###########################
+#
+
+### Header ###
+#
+language=Language
+welcomeMessage=Hello! Welcome to Apache-Axis.
+
+### Operation list ###
+#
+operationType=What do you want to do today?
+
+# Validation
+validation=Validation
+validationURL=happyaxis.jsp
+validationFootnote00=Validate the local installation's configuration
+validationFootnote01=see below if this does not work.
+
+# List
+serviceList=List
+serviceListURL=servlet/AxisServlet
+serviceListFootnote=View the list of deployed Web services 
+
+# Call
+callAnEndpoint=Call
+callAnEndpointURL=EchoHeaders.jws?method=list
+callAnEndpointFootnote00=Call a local endpoint that list's the caller's http headers
+callAnEndpointFootnote01=(or see its <a href=""
+
+# Visit
+visit=Visit
+visitURL=http://ws.apache.org/axis/
+visitFootnote=Visit the Apache-Axis Home Page
+
+# Admin
+admin=Administer Axis
+adminURL=servlet/AdminServlet
+adminFootnote=[disabled by default for security reasons]
+
+# SOAPMonitor
+soapMonitor=SOAPMonitor 
+soapMonitorURL=SOAPMonitor
+soapMonitorFootnote=[disabled by default for security reasons]
+
+# Sidenote
+sideNote=To enable the disabled features, uncomment the appropriate declarations in WEB-INF/web.xml in the webapplication and restart it. 
+
+### Validating Axis ###
+#
+
+# Title
+validatingAxis=Validating Axis
+
+# Note 0
+validationNote00=If the "happyaxis" validation page displays an exception instead of a status page, the likely cause is that you have multiple XML parsers in your classpath. Clean up your classpath by eliminating extraneous parsers.
+
+# Note 1
+validationNote01=If you have problems getting Axis to work, consult the Axis <a href="" and then try the Axis user mailing list. 
+
+#
+#################### [index.jsp] ###########################
+
+#################### [happyaxis.jsp] #######################
+#
+
+pageTitle=Axis Happiness Page
+pageRole=Examining webapp configuration
+
+### Needed Components ###
+#
+neededComponents=Needed Components
+error=Error
+warning=Warning
+criticalErrorMessage=Axis will not work.
+uncertainErrorMessage=Axis may not work.
+# parameters = url, name
+seeHomepage=<br> See <a href=""
+# parameters = category, classname, jarFile, errorText, url
+couldNotFound=<p> {0}: could not find class {1} from file <b>{2}</b><br> {3} {4}<p>
+# parameters = description, classname
+foundClass00=Found {0} ( {1} )
+# parameters = description, classname
+foundClass01=Found {0} ( {1} ) at {2}
+# parameters = category, classname, errorText, url
+couldNotFoundDep=<p> {0}: could not find a dependency of class {1} from file <b>{2}</b><br> {3} {4}
+# parameters = ncdfe.getMessage(), classname
+theRootCause=<br>The root cause was: {0}<br>This can happen e.g. if {1} is in the 'common' classpath, but a dependency like activation.jar is only in the webapp classpath.<p>
+# parameters = location
+invalidSAAJ=<b>Error:</b> Invalid version of SAAJ API found in {0}. Make sure that Axis' saaj.jar precedes {0} in CLASSPATH.<br>
+axisInstallation=Axis installation instructions
+
+### Optional Components ###
+#
+
+optionalComponents=Optional Components
+attachmentsError=Attachments will not work.
+xmlSecurityError=XML Security is not supported.
+httpsError=https is not supported.
+
+happyResult00=<i>The core axis libraries are present.</i>
+happyResult01=<i>The optional components are present.</i>
+# parameters = needed(num of missing libraries)
+unhappyResult00=<i>{0} core axis library(ies) are missing</i>
+# parameters = wanted(num of missing libraries)
+unhappyResult01=<i>{0} wanted optional axis librar(ies) are missing</i>
+
+hintString=<B><I>Note:</I></B> On Tomcat 4.x and Java1.4, you may need to put libraries that contain java.* or javax.* packages into CATALINA_HOME/common/lib <br>jaxrpc.jar and saaj.jar are two such libraries.<p/>
+noteString=<B><I>Note:</I></B> Even if everything this page probes for is present, there is no guarantee your web service will work, because there are many configuration options that we do not check for. These tests are <i>necessary</i> but not <i>sufficient</i><hr>
+
+### Examining Application Server ###
+#
+apsExamining=Examining Application Server
+recommendedParser=<b>We recommend <a href="" 2</a> over Crimson as the XML parser for Axis</b>
+couldNotCreateParser=Could not create an XML Parser
+
+### Examining System Properties ###
+#
+sysExamining=Examining System Properties
+sysPropError=System properties are not accessible.<p>
+classFoundError=an unknown location
+apsPlatform=Platform
+
+#
+#################### [happyaxis.jsp] #######################
\ No newline at end of file
Property changes on: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/i18n.properties
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/i18n_ja.properties (762 => 763)


--- trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/i18n_ja.properties	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/i18n_ja.properties	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,127 @@
+############################################################
+# Japanese settings for the Axis Web-Application
+#
+
+#################### [index.jsp] ###########################
+#
+
+### Header ###
+#
+language=\u8a00\u8a9e
+welcomeMessage=\u3053\u3093\u306b\u3061\u306f\uff01 Apache-Axis\u3078\u3088\u3046\u3053\u305d 
+
+### Operation list ###
+#
+operationType=\u4eca\u65e5\u306f\u4f55\u3092\u3057\u305f\u3044\u3067\u3059\u304b\uff1f
+
+# Validation
+validation=\u691c\u8a3c
+validationURL=happyaxis.jsp
+validationFootnote00=\u30ed\u30fc\u30ab\u30eb\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u72b6\u6cc1\u3092\u691c\u8a3c\u3059\u308b
+validationFootnote01=\u3046\u307e\u304f\u6a5f\u80fd\u3057\u306a\u3044\u5834\u5408\u306f\u3001\u4e0b\u8a18\u300cAxis\u306e\u691c\u8a3c\u300d\u3092\u53c2\u7167
+
+# List
+serviceList=\u30ea\u30b9\u30c8
+serviceListURL=servlet/AxisServlet
+serviceListFootnote=\u30c7\u30d7\u30ed\u30a4\u6e08\u307f\u306eWeb\u30b5\u30fc\u30d3\u30b9\u30ea\u30b9\u30c8\u3092\u898b\u308b 
+
+# Call
+callAnEndpoint=\u547c\u51fa\u3057
+callAnEndpointURL=EchoHeaders.jws?method=list
+callAnEndpointFootnote00=HTTP\u30d8\u30c3\u30c0\u306e\u4e00\u89a7\u8868\u793a\u3092\u884c\u3046\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u8d77\u52d5\u3059\u308b
+callAnEndpointFootnote01=(\u3082\u3057\u304f\u306f<a href=""
+
+# Visit
+visit=\u8a2a\u554f
+visitURL=http://ws.apache.org/axis/ja/index.html
+visitFootnote=Apache Axis\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u3092\u8a2a\u554f\u3059\u308b
+
+# Admin
+admin=Axis\u306e\u7ba1\u7406
+adminURL=servlet/AdminServlet
+adminFootnote=[\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4e0a\u306e\u7406\u7531\u304b\u3089\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u5229\u7528\u4e0d\u53ef]
+
+# SOAPMonitor
+soapMonitor=SOAP\u30e2\u30cb\u30bf
+soapMonitorURL=SOAPMonitor
+soapMonitorFootnote=[\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4e0a\u306e\u7406\u7531\u304b\u3089\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u5229\u7528\u4e0d\u53ef]
+
+# Sidenote
+sideNote=\u4e0a\u8a18\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u5229\u7528\u3067\u304d\u306a\u3044\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306eWEB-INF/web.xml\u30d5\u30a1\u30a4\u30eb\u306e\u8a72\u5f53\u3059\u308b\u5ba3\u8a00\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u5916\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u518d\u8d77\u52d5\u3057\u3066\u4e0b\u3055\u3044\u3002 
+
+### Validating Axis ###
+#
+
+# Title
+validatingAxis=Axis\u306e\u691c\u8a3c
+
+# Note 0
+validationNote00="happyaxis"\u691c\u8a3c\u30da\u30fc\u30b8\u304c\u72b6\u614b\u8868\u793a\u3067\u306f\u306a\u304f\u4f8b\u5916\u3092\u8868\u793a\u3059\u308b\u5834\u5408\u3001\u539f\u56e0\u3068\u3057\u3066\u306f\u30af\u30e9\u30b9\u30d1\u30b9\u5185\u306b\u8907\u6570\u306eXML\u30d1\u30fc\u30b5\u3092\u6307\u5b9a\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u8003\u3048\u3089\u308c\u307e\u3059\u3002\u95a2\u4fc2\u306a\u3044\u30d1\u30fc\u30b5\u3092\u30af\u30e9\u30b9\u30d1\u30b9\u304b\u3089\u53d6\u308a\u9664\u3044\u3066\u307f\u3066\u4e0b\u3055\u3044\u3002 
+
+# Note 1
+validationNote01=Axis\u3092\u52d5\u4f5c\u3055\u305b\u308b\u4e0a\u3067\u554f\u984c\u3092\u62b1\u3048\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u307e\u305a<a href="" Wiki</a>\u3092\u53c2\u8003\u306b\u3057\u3001\u305d\u306e\u5f8c\u3067Axis\u30e6\u30fc\u30b6\u30e1\u30fc\u30ea\u30f3\u30b0\u30ea\u30b9\u30c8\u306b\u6295\u7a3f\u3057\u3066\u307f\u3066\u4e0b\u3055\u3044\u3002 
+
+#
+#################### [index.jsp] ###########################
+
+#################### [happyaxis.jsp] #######################
+#
+pageTitle=Axis Happiness Page
+pageRole=webapp\u306e\u69cb\u6210\u306b\u95a2\u3059\u308b\u8abf\u67fb
+
+### Needed Components ###
+#
+neededComponents=\u5fc5\u9808\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8
+error=\u30a8\u30e9\u30fc
+warning=\u8b66\u544a
+criticalErrorMessage=\u304a\u305d\u3089\u304fAxis\u306f\u52d5\u304d\u307e\u305b\u3093\u3002
+uncertainErrorMessage=Axis\u306f\u52d5\u304b\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+# parameters = url, name
+seeHomepage=<br> <a href=""
+# parameters = category, classname, jarFile, errorText, url
+couldNotFound=<p> {0}: <b>{2}</b>\u30d5\u30a1\u30a4\u30eb\u304c\u63d0\u4f9b\u3059\u308b{1}\u30af\u30e9\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002<br> {3} {4}<p>
+# parameters = description, classname
+foundClass00={0} ( {1} ) \u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002
+# parameters = description, classname, location
+foundClass01={0} ( {1} ) \u304c{2}\u3067\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002
+# parameters = category, classname, errorText, url
+couldNotFoundDep=<p> {0}: <b>{2}</b>\u30d5\u30a1\u30a4\u30eb\u304c\u63d0\u4f9b\u3059\u308b{1}\u30af\u30e9\u30b9\u306e\u4f9d\u5b58\u95a2\u4fc2\u304c\u89e3\u6c7a\u3067\u304d\u307e\u305b\u3093\u3002<br> {3} {4}
+# parameters = ncdfe.getMessage(), classname
+theRootCause=<br>\u6839\u672c\u539f\u56e0: {0}<br>\u3053\u306e\u30a8\u30e9\u30fc\u306f\u6b21\u306e\u3088\u3046\u306a\u5834\u5408\u306b\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u300c\u5171\u901a\u306e\u300d\u30af\u30e9\u30b9\u30d1\u30b9\u306b{1}\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001activation.jar \u306e\u3088\u3046\u306a\u4f9d\u5b58\u3059\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u304cwebapp\u306e\u30af\u30e9\u30b9\u30d1\u30b9\u3060\u3051\u306b\u3057\u304b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u3088\u3046\u306a\u5834\u5408\u3067\u3059\u3002<p>
+# parameters = location
+invalidSAAJ=<b>\u30a8\u30e9\u30fc:</b> {0}\u306b\u9069\u5207\u3067\u306a\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306eSAAJ API\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002Axis\u306esaaj.jar\u3092\u3001CLASSPATH\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b{0} \u3088\u308a\u3082\u524d\u65b9\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br>
+axisInstallation=Axis\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806
+
+### Optional Components ###
+#
+optionalComponents=\u30aa\u30d7\u30b7\u30e7\u30ca\u30eb\uff65\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8
+attachmentsError=\u304a\u305d\u3089\u304fAttachments\u306f\u6a5f\u80fd\u3057\u307e\u305b\u3093\u3002
+xmlSecurityError=XML Security\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3002
+httpsError=https\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3002
+
+happyResult00=<i>axis\u306e\u30b3\u30a2\uff65\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u5168\u3066\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002</i>
+happyResult01=<i>\u30aa\u30d7\u30b7\u30e7\u30ca\u30eb\uff65\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306f\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002</i>
+# parameters = needed(num of missing libraries)
+unhappyResult00=<i>axis\u306e\u30b3\u30a2\uff65\u30e9\u30a4\u30d6\u30e9\u30ea\u304c{0}\u3064\u6b20\u3051\u3066\u3044\u307e\u3059\u3002</i>
+# parameters = wanted(num of missing libraries)
+unhappyResult01=<i>axis\u306e\u30aa\u30d7\u30b7\u30e7\u30ca\u30eb\uff65\u30e9\u30a4\u30d6\u30e9\u30ea\u304c{0}\u3064\u6b20\u3051\u3066\u3044\u307e\u3059\u3002</i>
+
+hintString=<B><I>\u6ce8\u610f:</I></B> Tomcat 4.x \u3068 Java1.4 \u4e0a\u3067\u306f\u3001CATALINA_HOME/common/lib \u306b\u3001java.* \u3082\u3057\u304f\u306f javax.* \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u542b\u3080\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u914d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<br>\u4f8b\u3048\u3070 jaxrpc.jar \u3068 saaj.jar \u306f\u3001\u305d\u306e\u3088\u3046\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002<p/>
+noteString=<B><I>\u6ce8\u610f:</I></B> \u30da\u30fc\u30b8\u306b\u5168\u3066\u306e\u8abf\u67fb\u7d50\u679c\u304c\u8868\u793a\u3055\u308c\u305f\u3068\u3057\u3066\u3082\u3001\u30c1\u30a7\u30c3\u30af\u3067\u304d\u306a\u3044\u69cb\u6210\u30aa\u30d7\u30b7\u30e7\u30f3\u3082\u591a\u3044\u305f\u3081\u3001\u3042\u306a\u305f\u306eWeb\u30b5\u30fc\u30d3\u30b9\u304c\u6b63\u5e38\u306b\u6a5f\u80fd\u3059\u308b\u4fdd\u969c\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3053\u308c\u3089\u306e\u30c6\u30b9\u30c8\u306f<i>\u5fc5\u8981</i>\u306a\u3082\u306e\u3067\u3059\u304c\u3001<i>\u5341\u5206</i>\u306a\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+
+### Examining Application Server ###
+#
+apsExamining=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\uff65\u30b5\u30fc\u30d0\u30fc\u306b\u95a2\u3059\u308b\u8abf\u67fb
+recommendedParser=<b>Axis\u3067\u4f7f\u7528\u3059\u308bXML\u30d1\u30fc\u30b5\u30fc\u306b\u306f Crimson \u3067\u306f\u306a\u304f\u3001<a href="" 2</a> \u3092\u63a8\u5968\u3057\u3066\u3044\u307e\u3059\u3002</b>
+couldNotCreateParser=XML Parser\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
+
+### Examining System Properties ###
+#
+sysExamining=\u30b7\u30b9\u30c6\u30e0\uff65\u30d7\u30ed\u30d1\u30c6\u30a3\u306b\u95a2\u3059\u308b\u8abf\u67fb
+sysPropError=\u30b7\u30b9\u30c6\u30e0\uff65\u30d7\u30ed\u30d1\u30c6\u30a3\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002<p>
+
+classFoundError=\u4e0d\u660e\u306a\u5834\u6240
+apsPlatform=\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0
+
+#
+#################### [happyaxis.jsp] #######################
Property changes on: trunk/OrchestraPVM/packaging/webapp/WEB-INF/classes/i18n_ja.properties
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/OrchestraPVM/packaging/webapp/WEB-INF/web.xml (762 => 763)


--- trunk/OrchestraPVM/packaging/webapp/WEB-INF/web.xml	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/webapp/WEB-INF/web.xml	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
+Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+  <display-name>Apache-Axis</display-name>
+  
+  <listener>
+	  <listener-class>org.ow2.orchestra.jmx.JMXAgent</listener-class>
+  </listener>
+  
+  <init-param>
+  	<param-name>axis.development.system</param-name>
+  	<param-value>true</param-value>
+  </init-param>
+
+  <listener>
+    <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>
+  </listener>
+    
+  <servlet>
+    <servlet-name>AxisServlet</servlet-name>
+    <display-name>Apache-Axis Servlet</display-name>
+    <servlet-class>
+        org.apache.axis.transport.http.AxisServlet
+    </servlet-class>
+  </servlet>
+
+  <servlet>
+    <servlet-name>AdminServlet</servlet-name>
+    <display-name>Axis Admin Servlet</display-name>
+    <servlet-class>
+        org.apache.axis.transport.http.AdminServlet
+    </servlet-class>
+    <load-on-startup>100</load-on-startup>
+  </servlet>
+
+  <servlet>
+    <servlet-name>SOAPMonitorService</servlet-name>
+    <display-name>SOAPMonitorService</display-name>
+    <servlet-class>
+        org.apache.axis.monitor.SOAPMonitorService
+    </servlet-class>
+    <init-param>
+      <param-name>SOAPMonitorPort</param-name>
+      <param-value>5001</param-value>
+    </init-param>
+    <load-on-startup>100</load-on-startup>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>AxisServlet</servlet-name>
+    <url-pattern>/servlet/AxisServlet</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>AxisServlet</servlet-name>
+    <url-pattern>*.jws</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>AxisServlet</servlet-name>
+    <url-pattern>/services/*</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>SOAPMonitorService</servlet-name>
+    <url-pattern>/SOAPMonitor</url-pattern>
+  </servlet-mapping>
+
+ <!-- uncomment this if you want the admin servlet -->
+ <!--
+  <servlet-mapping>
+    <servlet-name>AdminServlet</servlet-name>
+    <url-pattern>/servlet/AdminServlet</url-pattern>
+  </servlet-mapping>
+ -->
+
+    <session-config>
+        <!-- Default to 5 minute session timeouts -->
+        <session-timeout>5</session-timeout>
+    </session-config>
+
+    <!-- currently the W3C havent settled on a media type for WSDL;
+    http://www.w3.org/TR/2003/WD-wsdl12-20030303/#ietf-draft
+    for now we go with the basic 'it's XML' response -->
+  <mime-mapping>
+    <extension>wsdl</extension>
+     <mime-type>text/xml</mime-type>
+  </mime-mapping>
+  
+
+  <mime-mapping>
+    <extension>xsd</extension>
+    <mime-type>text/xml</mime-type>
+  </mime-mapping>
+
+  <welcome-file-list id="WelcomeFileList">
+    <welcome-file>index.jsp</welcome-file>
+    <welcome-file>index.html</welcome-file>
+    <welcome-file>index.jws</welcome-file>
+  </welcome-file-list>
+
+</web-app>
Property changes on: trunk/OrchestraPVM/packaging/webapp/WEB-INF/web.xml
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/OrchestraPVM/packaging/webapp/fingerprint.jsp (762 => 763)


--- trunk/OrchestraPVM/packaging/webapp/fingerprint.jsp	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/webapp/fingerprint.jsp	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,272 @@
+<%@ page import="java.io.File,
+                 java.io.IOException,
+                 java.util.Date"
+    session="false" %>
+<html>
+<head>
+<title>System Fingerprint</title>
+</head>
+<body bgcolor=#ffffff>
+<%!
+
+    /*
+     * Fingerprint the users system. This is mainly for use in
+     * diagnosing classpath problems. It is intended to dump out
+     * a copy of the environment this webapp is running in,
+     * and additionally attempt to identify versions of each jar
+     * in the classpath.
+     *
+     * @author Brian Ewins
+     */
+
+    private java.util.Properties versionProps=new java.util.Properties();
+
+    /**
+     * Identify the version of a jar file. This uses a properties file
+     * containing known names and sizes in the format
+     * 'name(size)=version'. Version strings should be like 'xerces-1.4'
+     * ie they should include the name of the library.
+     */
+    public String getFileVersion(File file) throws IOException {
+        String key="<td>"+file.getName()+"</td>";
+        key+= "<td>"+file.length()+"</td>";
+        Date timestamp=new Date(file.lastModified());
+        key+= "<td>"+timestamp.toString()+"</td>";
+        return key;
+
+        /* TODO: implement
+        String value=versionProps.getProperty(key);
+        if (value==null) {
+            // make it possible to have jars without version nos
+            value=versionProps.getProperty(file.getName());
+        }
+        if (value==null) {
+            // fall back on something obvious
+            value=key;
+            Date timestamp=new Date(file.lastModified());
+            value+=" / "+timestamp.toString();
+        }
+        return value;
+        */
+    }
+
+    /**
+     * Split up a classpath-like variable. Returns a list of files.
+     * TODO: this can't cope with relative paths. I think theres code in BCEL that
+     * can be used for this?
+     */
+    File[] splitClasspath(String path) throws IOException {
+        java.util.StringTokenizer st=
+            new java.util.StringTokenizer(path,
+                            System.getProperty("path.separator"));
+        int toks=st.countTokens();
+        File[] files=new File[toks];
+        for(int i=0;i<toks;i++) {
+            files[i]=new File(st.nextToken());
+        }
+        return files;
+    }
+
+    /** given a list of files, return a list of jars which actually exist */
+    File[] scanFiles(File[] files) throws IOException {
+        File[] jars=new File[files.length];
+        int found=0;
+        for (int i=0; i<files.length; i++) {
+            if (files[i].getName().toLowerCase().endsWith(".jar")
+                    && files[i].exists()) {
+                jars[found]=files[i];
+                found++;
+            }
+        }
+        if (found<files.length) {
+            File[] temp=new File[found];
+            System.arraycopy(jars,0,temp,0,found);
+            jars=temp;
+        }
+        return jars;    
+    }
+
+    private static final File[] NO_FILES=new File[0];
+
+    /** scan a directory for jars */    
+    public File[] scanDir(String dir) throws IOException 
+        {
+        if(dir==null) {
+            return NO_FILES;
+        }
+        return scanDir(new File(dir));
+        }
+        
+    public File[] scanDir(File dir) throws IOException {
+        if (!dir.exists() || !dir.isDirectory()) {
+            return NO_FILES;
+        }
+        return scanFiles(dir.listFiles());
+    }
+
+    /** scan a classpath for jars */    
+    public File[] scanClasspath(String path) throws IOException {
+        if (path==null) {
+            return NO_FILES;
+        }
+        return scanFiles(splitClasspath(path));
+    }
+
+    /** 
+     * scan a 'dirpath' (like the java.ext.dirs system property) for jars 
+     */   
+    public File[] scanDirpath(String path) throws IOException {
+        if (path==null) {
+            return NO_FILES;
+        }
+        File[] current=new File[0];
+        File[] dirs=splitClasspath(path);
+        for(int i=0; i<dirs.length; i++) {
+            File[] jars=scanDir(dirs[i]);
+            File[] temp=new File[current.length+jars.length];
+            System.arraycopy(current,0,temp,0,current.length);
+            System.arraycopy(jars,0,temp,current.length,jars.length);
+            current=temp;
+        }
+        return scanFiles(current);
+    }
+
+    /** print out the jar versions for a directory */
+    public void listDirectory(String title, JspWriter out,String dir, String comment) throws IOException {
+        listVersions(title, out,scanDir(dir), comment);
+    }
+
+    /** print out the jar versions for a directory-like system property */
+    public void listDirProperty(String title, JspWriter out,String key, String comment) throws IOException {
+        listVersions(title, out,scanDir(System.getProperty(key)), comment);
+    }
+
+    /** print out the jar versions for a classpath-like system property */
+    public void listClasspathProperty(String title, JspWriter out,String key, String comment) throws IOException {
+        listVersions(title, out,scanClasspath(System.getProperty(key)), comment);
+    }
+
+    /** print out the jar versions for a 'java.ext.dirs'-like system property */
+    public void listDirpathProperty(String title, JspWriter out,String key, String comment) throws IOException {
+        listVersions(title, out,scanDirpath(System.getProperty(key)), comment);
+    }
+
+    /** print out the jar versions for a context-relative directory */
+    public void listContextPath(String title, JspWriter out, String path, String comment)  throws IOException {
+        listVersions(title, out,scanDir(getServletConfig().getServletContext().getRealPath(path)), comment);
+    }
+
+    /** print out the jar versions for a given list of files */
+    public void listVersions(String title, JspWriter out,File[] jars, String comment) throws IOException {
+        out.print("<h2>");
+        out.print(title);
+        out.println("</h2>");
+        out.println("<table>");
+        for (int i=0; i<jars.length; i++) {
+            out.println("<tr>"+getFileVersion(jars[i])+"</tr>");
+        }
+        out.println("</table>");
+        if(comment!=null && comment.length()>0) {
+            out.println("<p>");
+            out.println(comment);
+            out.println("<p>");
+        }
+    }
+
+%>
+<h1>System Fingerprint</h1>
+<h2>JVM and Server Version</h2>
+<table>
+<tr>
+    <td>Servlet Engine</td>
+    <td><%= getServletConfig().getServletContext().getServerInfo() %></td>
+    <td><%= getServletConfig().getServletContext().getMajorVersion() %></td>
+    <td><%= getServletConfig().getServletContext().getMinorVersion() %></td>
+</tr>
+<tr>
+    <td>Java VM</td>
+    <td><%= System.getProperty("java.vm.vendor") %></td>
+    <td><%= System.getProperty("java.vm.name") %></td>
+    <td><%= System.getProperty("java.vm.version") %></td>
+</tr>
+<tr>
+    <td>Java RE</td>
+    <td><%= System.getProperty("java.vendor") %></td>
+    <td><%= System.getProperty("java.version") %></td>
+    <td> </td>
+</tr>
+<tr>
+    <td>Platform</td>
+    <td><%= System.getProperty("os.name") %></td>
+    <td><%= System.getProperty("os.arch") %></td>
+    <td><%= System.getProperty("os.version") %></td>
+</tr>
+</table>
+
+<%
+listClasspathProperty("Boot jars", out,"sun.boot.class.path", "Only valid on a sun jvm");
+listClasspathProperty("System jars", out,"java.class.path", null);
+listDirpathProperty("Extra system jars", out,"java.ext.dirs", null);
+listContextPath("Webapp jars", out, "/WEB-INF/lib", null);
+// identify the container...
+String container=getServletConfig().getServletContext().getServerInfo();
+if (container.startsWith("Tomcat Web Server/3.2")) {
+    String home=System.getProperty("tomcat.home");
+    if(home!=null) {
+        listDirectory("Tomcat 3.2 Common Jars", out,
+                      home+File.separator
+                      +"lib",
+                      null);
+    }
+} else if (container.startsWith("Tomcat Web Server/3.3")) {
+    String home=System.getProperty("tomcat.home");
+    if(home!=null) {
+        listDirectory("Tomcat 3.3 Container Jars", out,
+                      home+File.separator
+                      +"lib"+File.separator
+                      +"container",
+                      null);
+        listDirectory("Tomcat 3.3 Common Jars", out,
+                      home+File.separator
+                      +"lib"+File.separator
+                      +"common",
+                      null);
+    }
+} else if (container.startsWith("Apache Tomcat/4.0")) {
+    //handle catalina common dir
+    String home=System.getProperty("catalina.home");
+    if(home!=null) {
+        listDirectory("Tomcat 4.0 Common Jars", out,
+                      home+File.separator
+                      +"common"+File.separator
+                      +"lib",
+                      null);
+    }
+} else if (container.startsWith("Apache Tomcat/4.1")) {
+    //handle catalina common dir
+    String home=System.getProperty("catalina.home");
+    if(home!=null) {
+        listDirectory("Tomcat 4.1 Common Jars", out,
+                      home+File.separator
+                      +"shared"+File.separator
+                      +"lib",
+                      null);
+    }
+} else if (System.getProperty("resin.home")!=null) {
+    String home=System.getProperty("resin.home");
+    if(home!=null) {
+        listDirectory("Resin Common Jars", out,
+                      home+File.separator
+                      +"lib",
+                      null);
+    }    
+} else if (System.getProperty("weblogic.httpd.servlet.classpath")!=null) {
+    listClasspathProperty("Weblogic Servlet Jars", out,
+                  "weblogic.httpd.servlet.classpath",
+                  null);
+} else {
+    //TODO: identify more servlet engine classpaths.
+}
+%>
+</body>
+</html>
\ No newline at end of file
Property changes on: trunk/OrchestraPVM/packaging/webapp/fingerprint.jsp
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/OrchestraPVM/packaging/webapp/happyaxis.jsp (762 => 763)


--- trunk/OrchestraPVM/packaging/webapp/happyaxis.jsp	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/webapp/happyaxis.jsp	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,491 @@
+<html>
+<%@ page contentType="text/html; charset=utf-8"
+         import="java.io.InputStream,
+                 java.io.IOException,
+                 javax.xml.parsers.SAXParser,
+                 java.lang.reflect.*,
+                 javax.xml.parsers.SAXParserFactory"
+   session="false" %>
+<%
+/*
+ * Copyright 2002,2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+%>
+
+<%!
+    /*
+     * Happiness tests for axis. These look at the classpath and warn if things
+     * are missing. Normally addng this much code in a JSP page is mad
+     * but here we want to validate JSP compilation too, and have a drop-in
+     * page for easy re-use
+     * @author Steve 'configuration problems' Loughran
+     * @author dims
+     * @author Brian Ewins
+     */
+
+    /**
+     * test for a class existing
+     * @param classname
+     * @return class iff present
+     */
+    Class classExists(String classname) {
+        try {
+            return Class.forName(classname);
+        } catch (ClassNotFoundException e) {
+            return null;
+        }
+    }
+
+    /**
+     * test for resource on the classpath
+     * @param resource
+     * @return true iff present
+     */
+    boolean resourceExists(String resource) {
+        boolean found;
+        InputStream instream=this.getClass().getResourceAsStream(resource);
+        found=instream!=null;
+        if(instream!=null) {
+            try {
+                instream.close();
+            } catch (IOException e) {
+            }
+        }
+        return found;
+    }
+
+    /**
+     * probe for a class, print an error message is missing
+     * @param out stream to print stuff
+     * @param category text like "warning" or "error"
+     * @param classname class to look for
+     * @param jarFile where this class comes from
+     * @param errorText extra error text
+     * @param homePage where to d/l the library
+     * @return the number of missing classes
+     * @throws IOException
+     */
+    int probeClass(JspWriter out,
+                   String category,
+                   String classname,
+                   String jarFile,
+                   String description,
+                   String errorText,
+                   String homePage) throws IOException {
+        try {
+            Class clazz = classExists(classname);
+            if(clazz == null)  {
+               String url=""
+               if(homePage!=null) {
+                  url=""
+               }
+               out.write(getMessage("couldNotFound",category,classname,jarFile,errorText,url));
+               return 1;
+            } else {
+               String location = getLocation(out, clazz);
+
+               if(location == null) {
+                  out.write("<li>"+getMessage("foundClass00",description,classname)+"</li><br>");
+               }
+               else {
+                  out.write("<li>"+getMessage("foundClass01",description,classname,location)+"</li><br>");
+               }
+               return 0;
+            }
+        } catch(NoClassDefFoundError ncdfe) {
+            String url=""
+            if(homePage!=null) {
+                url=""
+            }
+            out.write(getMessage("couldNotFoundDep",category, classname, errorText, url));
+            out.write(getMessage("theRootCause",ncdfe.getMessage(), classname));
+            return 1;
+        }
+    }
+
+    /**
+     * get the location of a class
+     * @param out
+     * @param clazz
+     * @return the jar file or path where a class was found
+     */
+
+    String getLocation(JspWriter out,
+                       Class clazz) {
+        try {
+            java.net.URL url = ""
+            String location = url.toString();
+            if(location.startsWith("jar")) {
+                url = ""
+                location = url.toString();
+            }
+
+            if(location.startsWith("file")) {
+                java.io.File file = new java.io.File(url.getFile());
+                return file.getAbsolutePath();
+            } else {
+                return url.toString();
+            }
+        } catch (Throwable t){
+        }
+        return getMessage("classFoundError");
+    }
+
+    /**
+     * a class we need if a class is missing
+     * @param out stream to print stuff
+     * @param classname class to look for
+     * @param jarFile where this class comes from
+     * @param errorText extra error text
+     * @param homePage where to d/l the library
+     * @throws IOException when needed
+     * @return the number of missing libraries (0 or 1)
+     */
+    int needClass(JspWriter out,
+                   String classname,
+                   String jarFile,
+                   String description,
+                   String errorText,
+                   String homePage) throws IOException {
+        return probeClass(out,
+                "<b>"+getMessage("error")+"</b>",
+                classname,
+                jarFile,
+                description,
+                errorText,
+                homePage);
+    }
+
+    /**
+     * print warning message if a class is missing
+     * @param out stream to print stuff
+     * @param classname class to look for
+     * @param jarFile where this class comes from
+     * @param errorText extra error text
+     * @param homePage where to d/l the library
+     * @throws IOException when needed
+     * @return the number of missing libraries (0 or 1)
+     */
+    int wantClass(JspWriter out,
+                   String classname,
+                   String jarFile,
+                   String description,
+                   String errorText,
+                   String homePage) throws IOException {
+        return probeClass(out,
+                "<b>"+getMessage("warning")+"</b>",
+                classname,
+                jarFile,
+                description,
+                errorText,
+                homePage);
+    }
+
+    /**
+     *  get servlet version string
+     *
+     */
+
+    public String getServletVersion() {
+        ServletContext context=getServletConfig().getServletContext();
+        int major = context.getMajorVersion();
+        int minor = context.getMinorVersion();
+        return Integer.toString(major) + '.' + Integer.toString(minor);
+    }
+
+    /**
+     * what parser are we using.
+     * @return the classname of the parser
+     */
+    private String getParserName() {
+        SAXParser saxParser = getSAXParser();
+        if (saxParser == null) {
+            return getMessage("couldNotCreateParser");
+        }
+
+        // check to what is in the classname
+        String saxParserName = saxParser.getClass().getName();
+        return saxParserName;
+    }
+
+    /**
+     * Create a JAXP SAXParser
+     * @return parser or null for trouble
+     */
+    private SAXParser getSAXParser() {
+        SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
+        if (saxParserFactory == null) {
+            return null;
+        }
+        SAXParser saxParser = null;
+        try {
+            saxParser = saxParserFactory.newSAXParser();
+        } catch (Exception e) {
+        }
+        return saxParser;
+    }
+
+    /**
+     * get the location of the parser
+     * @return path or null for trouble in tracking it down
+     */
+
+    private String getParserLocation(JspWriter out) {
+        SAXParser saxParser = getSAXParser();
+        if (saxParser == null) {
+            return null;
+        }
+        String location = getLocation(out,saxParser.getClass());
+        return location;
+    }
+
+    /**
+     * Check if class implements specified interface.
+     * @param Class clazz
+     * @param String interface name
+     * @return boolean
+     */
+    private boolean implementsInterface(Class clazz, String interfaceName) {
+        if (clazz == null) {
+            return false;
+        }
+        Class[] interfaces = clazz.getInterfaces();
+        if (interfaces.length != 0) {
+            for (int i = 0; i < interfaces.length; i++) {
+                if (interfaces[i].getName().equals(interfaceName)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    %>
+
+<%@ include file="i18nLib.jsp" %>
+
+<%
+    // initialize a private HttpServletRequest
+    setRequest(request);
+
+    // set a resouce base
+    setResouceBase("i18n");
+%>
+
+<head>
+<title><%= getMessage("pageTitle") %></title>
+</head>
+<body bgcolor='#ffffff'>
+
+<%
+    out.print("<h1>"+ getMessage("pageTitle") +"</h1>");
+    out.print("<h2>"+ getMessage("pageRole") +"</h2><p/>");
+%>
+
+<%= getLocaleChoice() %>
+
+<%
+    out.print("<h3>"+ getMessage("neededComponents") +"</h3>");
+%>
+
+<UL>
+<%
+    int needed=0,wanted=0;
+
+    /**
+     * the essentials, without these Axis is not going to work
+     */
+
+    // need to check if the available version of SAAJ API meets requirements
+    String className = "javax.xml.soap.SOAPPart";
+    String interfaceName = "org.w3c.dom.Document";
+    Class clazz = classExists(className);
+    if (clazz == null || implementsInterface(clazz, interfaceName)) {
+        needed = needClass(out, "javax.xml.soap.SOAPMessage",
+        	"saaj.jar",
+                "SAAJ API",
+                getMessage("criticalErrorMessage"),
+                "http://ws.apache.org/axis/");
+    } else {
+        String location = getLocation(out, clazz);
+
+        out.print(getMessage("invalidSAAJ",location));
+        out.print(getMessage("criticalErrorMessage"));
+        out.print(getMessage("seeHomepage","http://ws.apache.org/axis/java/install.html",getMessage("axisInstallation")));
+        out.print("<br>");
+    }
+
+    needed+=needClass(out, "javax.xml.rpc.Service",
+            "jaxrpc.jar",
+            "JAX-RPC API",
+            getMessage("criticalErrorMessage"),
+            "http://ws.apache.org/axis/");
+
+    needed+=needClass(out, "org.apache.axis.transport.http.AxisServlet",
+            "axis.jar",
+            "Apache-Axis",
+            getMessage("criticalErrorMessage"),
+            "http://ws.apache.org/axis/");
+
+    needed+=needClass(out, "org.apache.commons.discovery.Resource",
+            "commons-discovery.jar",
+            "Jakarta-Commons Discovery",
+            getMessage("criticalErrorMessage"),
+            "http://jakarta.apache.org/commons/discovery/");
+
+    needed+=needClass(out, "org.apache.commons.logging.Log",
+            "commons-logging.jar",
+            "Jakarta-Commons Logging",
+            getMessage("criticalErrorMessage"),
+            "http://jakarta.apache.org/commons/logging/");
+
+    needed+=needClass(out, "org.apache.log4j.Layout",
+            "log4j-1.2.8.jar",
+            "Log4j",
+            getMessage("uncertainErrorMessage"),
+            "http://jakarta.apache.org/log4j");
+
+    //should we search for a javax.wsdl file here, to hint that it needs
+    //to go into an approved directory? because we dont seem to need to do that.
+    needed+=needClass(out, "com.ibm.wsdl.factory.WSDLFactoryImpl",
+            "wsdl4j.jar",
+            "IBM's WSDL4Java",
+            getMessage("criticalErrorMessage"),
+            null);
+
+    needed+=needClass(out, "javax.xml.parsers.SAXParserFactory",
+            "xerces.jar",
+            "JAXP implementation",
+            getMessage("criticalErrorMessage"),
+            "http://xml.apache.org/xerces-j/");
+
+    needed+=needClass(out,"javax.activation.DataHandler",
+            "activation.jar",
+            "Activation API",
+            getMessage("criticalErrorMessage"),
+            "http://java.sun.com/products/javabeans/glasgow/jaf.html");
+%>
+</UL>
+<%
+    out.print("<h3>"+ getMessage("optionalComponents") +"</h3>");
+%>
+<UL>
+<%
+    /*
+     * now the stuff we can live without
+     */
+    wanted+=wantClass(out,"javax.mail.internet.MimeMessage",
+            "mail.jar",
+            "Mail API",
+            getMessage("attachmentsError"),
+            "http://java.sun.com/products/javamail/");
+
+    wanted+=wantClass(out,"org.apache.xml.security.Init",
+            "xmlsec.jar",
+            "XML Security API",
+            getMessage("xmlSecurityError"),
+            "http://xml.apache.org/security/");
+
+    wanted += wantClass(out, "javax.net.ssl.SSLSocketFactory",
+            "jsse.jar or java1.4+ runtime",
+            "Java Secure Socket Extension",
+            getMessage("httpsError"),
+            "http://java.sun.com/products/jsse/");
+    /*
+     * resources on the classpath path
+     */
+    /* add more libraries here */
+
+%>
+</UL>
+<%
+    out.write("<h3>");
+    //is everythng we need here
+    if(needed==0) {
+       //yes, be happy
+        out.write(getMessage("happyResult00"));
+    } else {
+        //no, be very unhappy
+        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+        out.write(getMessage("unhappyResult00",Integer.toString(needed)));
+    }
+    //now look at wanted stuff
+    if(wanted>0) {
+        out.write(getMessage("unhappyResult01",Integer.toString(wanted)));
+    } else {
+        out.write(getMessage("happyResult01"));
+    }
+    out.write("</h3>");
+%>
+<UL>
+<%
+
+    //hint if anything is missing
+    if(needed>0 || wanted>0 ) {
+        out.write(getMessage("hintString"));
+    }
+
+    out.write(getMessage("noteString"));
+%>
+</UL>
+
+    <h2><%= getMessage("apsExamining") %></h2>
+
+<UL>
+    <%
+        String servletVersion=getServletVersion();
+        String xmlParser=getParserName();
+        String xmlParserLocation = getParserLocation(out);
+    %>
+    <table border="1" cellpadding="10">
+        <tr><td>Servlet version</td><td><%= servletVersion %></td></tr>
+        <tr><td>XML Parser</td><td><%= xmlParser %></td></tr>
+        <tr><td>XML ParserLocation</td><td><%= xmlParserLocation %></td></tr>
+    </table>
+</UL>
+
+<% if(xmlParser.indexOf("crimson")>=0) { %>
+    <p>
+    <%= getMessage("recommendedParser") %>
+    </p>
+<%    } %>
+
+    <h2><%= getMessage("sysExamining") %></h2>
+<UL>
+<%
+    /**
+     * Dump the system properties
+     */
+    java.util.Enumeration e=null;
+    try {
+        e= System.getProperties().propertyNames();
+    } catch (SecurityException se) {
+    }
+    if(e!=null) {
+        out.write("<pre>");
+        for (;e.hasMoreElements();) {
+            String key = (String) e.nextElement();
+            out.write(key + "=" + System.getProperty(key)+"\n");
+        }
+        out.write("</pre><p>");
+    } else {
+        out.write(getMessage("sysPropError"));
+    }
+%>
+</UL>
+    <hr>
+    <%= getMessage("apsPlatform") %>:
+    <%= getServletConfig().getServletContext().getServerInfo() %>
+</body>
+</html>
Property changes on: trunk/OrchestraPVM/packaging/webapp/happyaxis.jsp
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/OrchestraPVM/packaging/webapp/i18nLib.jsp (762 => 763)


--- trunk/OrchestraPVM/packaging/webapp/i18nLib.jsp	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/webapp/i18nLib.jsp	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,221 @@
+<%@ page import="java.util.*" %>
+<%
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+%>
+
+<%!
+    /*
+     * A library file to produce i18n web applications. This can be easily
+     * reused from your jsp(s) - just include and call any methods.
+     * @author toshi
+     */
+
+    // private variable
+    HttpServletRequest _req = null;
+
+    // private variable
+    String _strResourceName = null;
+
+    /**
+     * Set a HttpServletRequest to a private variable.
+     * @param request HttpServletRequest
+     */
+    void setRequest(HttpServletRequest request) {
+        _req = request;
+    }
+
+    /**
+     * Get the private variable of the HttpServletRequest.
+     * @return HttpServletRequest
+     */
+    HttpServletRequest getRequest() {
+        return _req;
+    }
+
+    /**
+     * Set a resouce base name to a private variable.
+     * @param resouce The resouce base name
+     */
+    void setResouceBase(String resource) {
+        _strResourceName = resource;
+    }
+
+    /**
+     * Get the private variable of the resouce base name.
+     * @return resouce The resouce base name
+     */
+    String getResouceBase() {
+        return _strResourceName;
+    }
+
+    /**
+     * Get a ResourceBundle object.
+     * @return a ResourceBundle object
+     */
+    ResourceBundle getRB() {
+        String strLocale = getRequest().getParameter("locale");
+        ResourceBundle objRb = null;
+        Locale objLcl = null;
+
+        if (strLocale!=null) {
+            objLcl=new Locale(strLocale,"");
+        } else {
+            objLcl=getRequest().getLocale();
+        }
+
+        Locale.setDefault(objLcl);
+        objRb = ResourceBundle.getBundle(getResouceBase(),objLcl);
+
+        return objRb;
+    }
+
+    /**
+     * Get a list of locale choice
+     * @return a list of supported locales
+     */
+    String getLocaleChoice() {
+        String choice = getMessage("locales");
+        StringBuffer buf = new StringBuffer();
+        
+        buf.append("<div align=\"right\">\n");
+        buf.append(getMessage("language"));
+        buf.append(": ");
+
+        StringTokenizer st = new StringTokenizer(choice);
+        String locale = null;
+        while (st.hasMoreTokens()) {
+            locale = st.nextToken();
+            buf.append("[<a href="" locale +"\">"+ locale +"</a>] ");
+        }
+        buf.append("\n</div>\n");
+
+        return buf.toString();
+    }
+
+    /**
+     * Get a message from i18n.properties with several arguments.
+     * @param key The resource key
+     * @return The formatted message
+     */
+    String getMessage(String key) {
+        return getMessage(key, null, null, null, null, null);
+    }
+
+    /**
+     * Get a message from i18n.properties with several arguments.
+     * @param key The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @return The formatted message
+     */
+    String getMessage(String key, String arg0) {
+        return getMessage(key, arg0, null, null, null, null);
+    }
+
+    /**
+     * Get a message from i18n.properties with several arguments.
+     * @param key The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @return The formatted message
+     */
+    String getMessage(String key, String arg0, String arg1) {
+        return getMessage(key, arg0, arg1, null, null, null);
+    }
+
+    /**
+     * Get a message from i18n.properties with several arguments.
+     * @param key The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @return The formatted message
+     */
+    String getMessage(String key, String arg0, String arg1, String arg2) {
+        return getMessage(key, arg0, arg1, arg2, null, null);
+    }
+
+    /**
+     * Get a message from i18n.properties with several arguments.
+     * @param key The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @param arg3 The argument to place in variable {3}
+     * @return The formatted message
+     */
+    String getMessage(String key, String arg0, String arg1,
+                      String arg2, String arg3) {
+        return getMessage(key, arg0, arg1, arg2, arg3, null);
+    }
+
+    /**
+     * Get a message from i18n.properties with several arguments.
+     * @param key The resource key
+     * @param arg0 The argument to place in variable {0}
+     * @param arg1 The argument to place in variable {1}
+     * @param arg2 The argument to place in variable {2}
+     * @param arg3 The argument to place in variable {3}
+     * @param arg4 The argument to place in variable {4}
+     * @return The formatted message
+     */
+    String getMessage(String key, String arg0, String arg1,
+                      String arg2, String arg3, String arg4) {
+        String strPattern = getRB().getString(key);
+
+        String [] params = { arg0, arg1, arg2, arg3, arg4 };
+        for (int i=0; i<5; i++) {
+            if (params[i]!=null) params[i]=replaceAll(params[i],"%20"," ");
+        }
+
+        if (arg0!=null) strPattern = replaceAll(strPattern,"{0}",params[0]);
+        if (arg1!=null) strPattern = replaceAll(strPattern,"{1}",params[1]);
+        if (arg2!=null) strPattern = replaceAll(strPattern,"{2}",params[2]);
+        if (arg3!=null) strPattern = replaceAll(strPattern,"{3}",params[3]);
+        if (arg4!=null) strPattern = replaceAll(strPattern,"{4}",params[4]);
+
+        return strPattern;
+    }
+
+    /**
+     * Get a replaced string by the specified message.
+     * @param source  The original message
+     * @param pattern The key message for replacing
+     * @param replace The message to place in the key variable - 'pattern'
+     * @return The replaced message
+     */
+    String replaceAll(String source, String pattern, String replace)
+    {
+        int i=0;
+        boolean ret = false;
+        StringBuffer buf = new StringBuffer();
+
+        int lenSource  = source.length();
+        int lenPattern = pattern.length();
+
+        for (i=0; i<lenSource; i++) {
+            ret = source.regionMatches(i, pattern, 0, lenPattern);
+            if (ret) {
+                buf.append(source.substring(0,i));
+                buf.append(replace);
+                buf.append(source.substring(i+lenPattern));
+                source = replaceAll(buf.toString(), pattern, replace);
+                break;
+            }
+        }
+        return source;
+    }
+%>
\ No newline at end of file
Property changes on: trunk/OrchestraPVM/packaging/webapp/i18nLib.jsp
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/OrchestraPVM/packaging/webapp/index.html (762 => 763)


--- trunk/OrchestraPVM/packaging/webapp/index.html	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/webapp/index.html	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,21 @@
+<html>
+
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+  <meta http-equiv="Refresh" content="5;url=""
+  <title>Apache-Axis</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+
+<h1 align="center">Apache-AXIS</h1>
+
+<blockquote>
+ We've moved to an internationalized <a href="" page</a>. The new URL should be automatically loaded after 5 seconds.<br>
+If you want to visit the new site immediately, please click the above link.
+</blockquote>
+
+<hr>
+Copyright &copy 2005 The Apache Software Foundation. All rights reserved. 
+</body>
+</html>

Added: trunk/OrchestraPVM/packaging/webapp/index.jsp (762 => 763)


--- trunk/OrchestraPVM/packaging/webapp/index.jsp	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/packaging/webapp/index.jsp	2007-09-19 15:13:56 UTC (rev 763)
@@ -0,0 +1,112 @@
+<html>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+%>
+
+<%@ include file="i18nLib.jsp" %>
+
+<%
+    // initialize a private HttpServletRequest
+    setRequest(request);
+
+    // set a resouce base
+    setResouceBase("i18n");
+%>
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>Apache-Axis</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+
+<h1 align="center">Apache-AXIS</h1>
+
+<%= getLocaleChoice() %>
+
+<%
+  out.print(getMessage("welcomeMessage")+"<p/>");
+  out.print(getMessage("operationType"));
+%>
+
+<ul>
+
+  <li>
+    <%
+      out.print("<a href="" getMessage("validationURL") +"\">");
+      out.print(getMessage("validation") +"</a> - ");
+      out.print(getMessage("validationFootnote00") +"<br>");
+      out.print("<i>"+ getMessage("validationFootnote01") +"</i>");
+    %>
+  </li>
+
+  <li>
+    <%
+      out.print("<a href="" getMessage("serviceListURL") +"\">");
+      out.print(getMessage("serviceList") +"</a> - ");
+      out.print(getMessage("serviceListFootnote"));
+    %>
+  </li>
+
+  <li>
+    <%
+      out.print("<a href="" getMessage("callAnEndpointURL") +"\">");
+      out.print(getMessage("callAnEndpoint") +"</a> - ");
+      out.print(getMessage("callAnEndpointFootnote00") +" ");
+      out.print(getMessage("callAnEndpointFootnote01"));
+    %>
+  </li>
+
+  <li>
+    <%
+      out.print("<a href="" getMessage("visitURL") +"\">");
+      out.print(getMessage("visit") +"</a> - ");
+      out.print(getMessage("visitFootnote"));
+    %>
+  </li>
+
+  <li>
+    <%
+      out.print("<a href="" getMessage("adminURL") +"\">");
+      out.print(getMessage("admin") +"</a> - ");
+      out.print(getMessage("adminFootnote"));
+    %>
+  </li>
+
+  <li>
+    <%
+      out.print("<a href="" getMessage("soapMonitorURL") +"\">");
+      out.print(getMessage("soapMonitor") +"</a> - ");
+      out.print(getMessage("soapMonitorFootnote"));
+    %>
+  </li>
+
+</ul>
+
+<%
+  out.print(getMessage("sideNote") +"<p/>");
+%>
+
+<%
+  out.print("<h3>"+ getMessage("validatingAxis") +"</h3>");
+
+  out.print(getMessage("validationNote00") +"<p/>");
+  out.print(getMessage("validationNote01"));
+%>
+</body>
+</html>
Property changes on: trunk/OrchestraPVM/packaging/webapp/index.jsp
___________________________________________________________________
Name: svn:keywords
   + Id

Modified: trunk/OrchestraPVM/tests/functionnal/src/main/java/org/ow2/orchestra/tests/functionnal/ws/axis/helloworld/HelloworldTest.java (762 => 763)


--- trunk/OrchestraPVM/tests/functionnal/src/main/java/org/ow2/orchestra/tests/functionnal/ws/axis/helloworld/HelloworldTest.java	2007-09-19 14:56:18 UTC (rev 762)
+++ trunk/OrchestraPVM/tests/functionnal/src/main/java/org/ow2/orchestra/tests/functionnal/ws/axis/helloworld/HelloworldTest.java	2007-09-19 15:13:56 UTC (rev 763)
@@ -36,7 +36,7 @@
 
 import junit.framework.TestCase;
 
-import org.ow2.orchestra.axisws.AxisWSPublisher;
+import org.ow2.orchestra.axisws.AxisPublisher;
 import org.ow2.orchestra.deployment.Deployer;
 import org.ow2.orchestra.execution.function.ExpressionExecutor;
 import org.ow2.orchestra.execution.function.GetVariablePropertyFunction;
@@ -99,7 +99,7 @@
       + "      <field name='" + ProcessRepository.DEFAULT_KEY + "'><ref object='" + ProcessRepository.DEFAULT_KEY + "' /></field>"
       + "      <field name='" + Publisher.DEFAULT_KEY + "'><ref object='" + Publisher.DEFAULT_KEY + "' /></field>"
       + "    </object>"
-      + "    <object name='" + Publisher.DEFAULT_KEY + "' class='" + AxisWSPublisher.class.getName() + "' init='eager'/>"
+      + "    <object name='" + Publisher.DEFAULT_KEY + "' class='" + AxisPublisher.class.getName() + "' init='eager'/>"
       + "    <object name='" + Invoker.DEFAULT_KEY + "' class='" + UnsupportedInvoker.class.getName() + "' init='eager'/>"
       + "    <object name='" + ProcessRepository.DEFAULT_KEY + "' class='" + MemoryProcessRepository.class.getName() + "' init='eager'/>"
       + "    <object name='" + GetVariablePropertyFunction.DEFAULT_KEY + "' class='" + JaxenGetVariablePropertyFunction.class.getName() + "' init='eager'/>"


<--  Date Index  --> <--  Thread Index  -->

Reply via email to:

Powered by MHonArc.

Copyright © 2006-2007, OW2 Consortium | contact | webmaster.