You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ve...@apache.org on 2010/01/24 10:56:39 UTC

svn commit: r902543 - in /webservices/axis2/scratch/java/veithen: ./ AXIS2-4611/ AXIS2-4611/jaxws-aar-deployer/ AXIS2-4611/jaxws-aar-deployer/src/ AXIS2-4611/jaxws-aar-deployer/src/main/ AXIS2-4611/jaxws-aar-deployer/src/main/java/ AXIS2-4611/jaxws-aar...

Author: veithen
Date: Sun Jan 24 09:56:38 2010
New Revision: 902543

URL: http://svn.apache.org/viewvc?rev=902543&view=rev
Log:
Added a proof-of-concept for AXIS2-4611 to my scratch area.

Added:
    webservices/axis2/scratch/java/veithen/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/pom.xml   (with props)
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/main/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/main/java/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/main/java/org/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/main/java/org/apache/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/main/java/org/apache/axis2/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/main/java/org/apache/axis2/jaxws/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/main/java/org/apache/axis2/jaxws/deployer/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/main/java/org/apache/axis2/jaxws/deployer/JAXWSAARDeployer.java   (with props)
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/pom.xml   (with props)
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/org/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/org/apache/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/org/apache/axis2/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/org/apache/axis2/jaxws/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/org/apache/axis2/jaxws/calculator/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/org/apache/axis2/jaxws/calculator/impl/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/org/apache/axis2/jaxws/calculator/impl/CalculatorImpl.java   (with props)
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/CalculatorService.wsdl
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/CalculatorService_schema1.xsd
    webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/services.xml   (with props)

Added: webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/pom.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/pom.xml?rev=902543&view=auto
==============================================================================
--- webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/pom.xml (added)
+++ webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/pom.xml Sun Jan 24 09:56:38 2010
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you 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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.axis2</groupId>
+        <artifactId>axis2-parent</artifactId>
+        <version>SNAPSHOT</version>
+    </parent>
+    <artifactId>axis2-jaxws-aar-deployer</artifactId>
+    <name>Apache Axis2 - JAXWS AAR Deployer (PoC)</name>
+    <description>Proof of concept of a deployer capable of deploying JAX-WS services from an AAR file.</description>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-jaxws</artifactId>
+            <version>${version}</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-remote-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>legal-files</id>
+                        <goals>
+                            <goal>process</goal>
+                        </goals>
+                        <configuration>
+                            <resourceBundles>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                            </resourceBundles>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Propchange: webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/main/java/org/apache/axis2/jaxws/deployer/JAXWSAARDeployer.java
URL: http://svn.apache.org/viewvc/webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/main/java/org/apache/axis2/jaxws/deployer/JAXWSAARDeployer.java?rev=902543&view=auto
==============================================================================
--- webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/main/java/org/apache/axis2/jaxws/deployer/JAXWSAARDeployer.java (added)
+++ webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/main/java/org/apache/axis2/jaxws/deployer/JAXWSAARDeployer.java Sun Jan 24 09:56:38 2010
@@ -0,0 +1,290 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package org.apache.axis2.jaxws.deployer;
+
+import java.io.File;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.jws.WebService;
+import javax.xml.ws.WebServiceProvider;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.deployment.Deployer;
+import org.apache.axis2.deployment.DeploymentEngine;
+import org.apache.axis2.deployment.DeploymentErrorMsgs;
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.axis2.deployment.repository.util.ArchiveReader;
+import org.apache.axis2.deployment.repository.util.DeploymentFileData;
+import org.apache.axis2.deployment.util.Utils;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.jaxws.description.DescriptionFactory;
+import org.apache.axis2.jaxws.server.JAXWSMessageReceiver;
+import org.apache.axis2.util.Loader;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class JAXWSAARDeployer implements Deployer {
+    private static final Log log = LogFactory.getLog(JAXWSAARDeployer.class);
+    private AxisConfiguration axisConfig;
+    private ConfigurationContext configCtx;
+    private String directory;
+
+    //To initialize the deployer
+    public void init(ConfigurationContext configCtx) {
+        this.configCtx = configCtx;
+        this.axisConfig = this.configCtx.getAxisConfiguration();
+    }
+
+    protected HashMap<String,AxisService> deployClasses(URL location,
+            ClassLoader classLoader, List<String> classList)
+            throws ClassNotFoundException, InstantiationException,
+            IllegalAccessException, AxisFault {
+        HashMap<String,AxisService> services = new HashMap<String,AxisService>();
+        // Get the hierarchical path of the service
+        String serviceHierarchy = Utils.getServiceHierarchy(location.getPath(),
+                this.directory);
+        for (String className : classList) {
+            Class<?> pojoClass;
+            try {
+                pojoClass = Loader.loadClass(classLoader, className);
+            } catch (Exception e) {
+                continue;
+            }
+            WebService wsAnnotation = pojoClass.getAnnotation(WebService.class);
+            WebServiceProvider wspAnnotation = null;
+            if (wsAnnotation == null) {
+                wspAnnotation = pojoClass
+                        .getAnnotation(WebServiceProvider.class);
+            }
+
+            // Create an Axis Service only if the class is not an interface and
+            // it has either
+            // @WebService annotation or @WebServiceProvider annotation.
+            if ((wsAnnotation != null || wspAnnotation != null)
+                    && !pojoClass.isInterface()) {
+                AxisService axisService;
+                axisService = createAxisService(classLoader, className,
+                        location);
+                if (axisService != null) {
+                    log.info("Deploying JAXWS annotated class " + className
+                            + " as a service - " + serviceHierarchy
+                            + axisService.getName());
+                    services.put(axisService.getName(), axisService);
+                }
+            }
+        }
+        return services;
+    }
+
+    protected AxisService createAxisService(ClassLoader classLoader,
+            String className, URL serviceLocation)
+            throws ClassNotFoundException, InstantiationException,
+            IllegalAccessException, AxisFault {
+        Class<?> pojoClass = Loader.loadClass(classLoader, className);
+        AxisService axisService;
+        try {
+            axisService = DescriptionFactory.createAxisService(pojoClass,
+                    configCtx);
+        } catch (Throwable t) {
+            log.info("Exception creating Axis Service : " + t.getCause(), t);
+            return null;
+        }
+        if (axisService != null) {
+            Iterator<AxisOperation> operations = axisService.getOperations();
+            while (operations.hasNext()) {
+                AxisOperation axisOperation = operations.next();
+                if (axisOperation.getMessageReceiver() == null) {
+                    axisOperation
+                            .setMessageReceiver(new JAXWSMessageReceiver());
+                }
+            }
+            axisService.setElementFormDefault(false);
+            axisService.setFileName(serviceLocation);
+            axisService.setClassLoader(classLoader);
+            axisService.addParameter(new Parameter(
+                    org.apache.axis2.jaxws.spi.Constants.CACHE_CLASSLOADER,
+                    classLoader));
+        }
+        return axisService;
+    }
+
+    //Will process the file and add that to axisConfig
+
+    public void deploy(DeploymentFileData deploymentFileData) throws DeploymentException {
+        boolean isDirectory = deploymentFileData.getFile().isDirectory();
+        ArchiveReader archiveReader;
+        StringWriter errorWriter = new StringWriter();
+        archiveReader = new ArchiveReader();
+        String serviceStatus = "";
+        try {
+            deploymentFileData.setClassLoader(isDirectory,
+                                              axisConfig.getServiceClassLoader(),
+                    (File)axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR),
+                    axisConfig.isChildFirstClassLoading());
+//            HashMap<String,AxisService> wsdlservice = archiveReader.processWSDLs(deploymentFileData);
+//            if (wsdlservice != null && wsdlservice.size() > 0) {
+//                for (AxisService service : wsdlservice.values()) {
+//                    Iterator<AxisOperation> operations = service.getOperations();
+//                    while (operations.hasNext()) {
+//                        AxisOperation axisOperation = operations.next();
+//                        axisConfig.getPhasesInfo().setOperationPhases(axisOperation);
+//                    }
+//                }
+//            }
+            HashMap<String,AxisService> wsdlservice;
+            ClassLoader threadClassLoader = Thread.currentThread().getContextClassLoader();
+            try {
+                Thread.currentThread().setContextClassLoader(deploymentFileData.getClassLoader());
+                wsdlservice = deployClasses(deploymentFileData.getFile().toURL(), deploymentFileData.getClassLoader(), Utils.getListOfClasses(deploymentFileData));
+            } finally {
+                Thread.currentThread().setContextClassLoader(threadClassLoader);
+            }
+            AxisServiceGroup serviceGroup = new AxisServiceGroup(axisConfig);
+            serviceGroup.setServiceGroupClassLoader(deploymentFileData.getClassLoader());
+            ArrayList<AxisService> serviceList = archiveReader.processServiceGroup(
+                    deploymentFileData.getAbsolutePath(), deploymentFileData,
+                    serviceGroup, isDirectory, wsdlservice,
+                    configCtx);
+            URL location = deploymentFileData.getFile().toURL();
+
+            // Add the hierarchical path to the service group
+            if (location != null) {
+                String serviceHierarchy = Utils.getServiceHierarchy(location.getPath(),
+                        this.directory);
+                if (!"".equals(serviceHierarchy)) {
+                    serviceGroup.setServiceGroupName(serviceHierarchy
+                            + serviceGroup.getServiceGroupName());
+                    for (AxisService axisService : serviceList) {
+                        axisService.setName(serviceHierarchy + axisService.getName());
+                    }
+                }
+            }
+            DeploymentEngine.addServiceGroup(serviceGroup,
+                                             serviceList,
+                                             location,
+                                             deploymentFileData,
+                                             axisConfig);
+
+        } catch (DeploymentException de) {
+            de.printStackTrace();
+            log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_SERVICE,
+                                          deploymentFileData.getName(),
+                                          de.getMessage()),
+                      de);
+            PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+            de.printStackTrace(error_ptintWriter);
+            serviceStatus = "Error:\n" + errorWriter.toString();
+
+            throw de;
+
+        } catch (AxisFault axisFault) {
+            log.error(Messages.getMessage(DeploymentErrorMsgs.INVALID_SERVICE,
+                                          deploymentFileData.getName(),
+                                          axisFault.getMessage()),
+                      axisFault);
+            PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+            axisFault.printStackTrace(error_ptintWriter);
+            serviceStatus = "Error:\n" + errorWriter.toString();
+
+            throw new DeploymentException(axisFault);
+
+        } catch (Exception e) {
+            if (log.isInfoEnabled()) {
+                StringWriter sw = new StringWriter();
+                PrintWriter pw = new PrintWriter(sw);
+                e.printStackTrace(pw);
+                log.info(Messages.getMessage(
+                        DeploymentErrorMsgs.INVALID_SERVICE,
+                        deploymentFileData.getName(),
+                        sw.getBuffer().toString()));
+            }
+            PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+            e.printStackTrace(error_ptintWriter);
+            serviceStatus = "Error:\n" + errorWriter.toString();
+
+            throw new DeploymentException(e);
+
+        } catch (Throwable t) {
+            if (log.isInfoEnabled()) {
+                StringWriter sw = new StringWriter();
+                PrintWriter pw = new PrintWriter(sw);
+                t.printStackTrace(pw);
+                log.info(Messages.getMessage(
+                        DeploymentErrorMsgs.INVALID_SERVICE,
+                        deploymentFileData.getName(),
+                        sw.getBuffer().toString()));
+            }
+            PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
+            t.printStackTrace(error_ptintWriter);
+            serviceStatus = "Error:\n" + errorWriter.toString();
+
+            throw new DeploymentException(new Exception(t));
+
+        } finally {
+            if (serviceStatus.startsWith("Error:")) {
+                axisConfig.getFaultyServices().put(deploymentFileData.getFile().getAbsolutePath(),
+                                                   serviceStatus);
+            }
+        }
+    }
+
+    public void setDirectory(String directory) {
+        this.directory = directory;
+    }
+
+    public void setExtension(String extension) {
+    }
+
+    public void unDeploy(String fileName) throws DeploymentException {
+        try {
+            //find the hierarchical part of the service group name
+            String serviceHierarchy = Utils.getServiceHierarchy(fileName, this.directory);
+            fileName = Utils.getShortFileName(fileName);
+            fileName = DeploymentEngine.getAxisServiceName(fileName);
+            fileName = serviceHierarchy + fileName;
+            AxisServiceGroup serviceGroup = axisConfig.removeServiceGroup(fileName);
+            if (serviceGroup != null) {
+                configCtx.removeServiceGroupContext(serviceGroup);
+                log.info(Messages.getMessage(DeploymentErrorMsgs.SERVICE_REMOVED,
+                        fileName));
+            } else {
+                axisConfig.removeFaultyService(fileName);
+            }
+        } catch (AxisFault axisFault) {
+            //May be a faulty service
+            axisConfig.removeFaultyService(fileName);
+
+            throw new DeploymentException(axisFault);
+        }
+    }
+}

Propchange: webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-aar-deployer/src/main/java/org/apache/axis2/jaxws/deployer/JAXWSAARDeployer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/pom.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/pom.xml?rev=902543&view=auto
==============================================================================
--- webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/pom.xml (added)
+++ webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/pom.xml Sun Jan 24 09:56:38 2010
@@ -0,0 +1,111 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you 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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.axis2.samples</groupId>
+    <artifactId>jaxws-calculator-aar</artifactId>
+    <packaging>aar</packaging>
+    <version>SNAPSHOT</version>
+    <name>JAXWS Calculator Service (AAR packaging)</name>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>jaxws-maven-plugin</artifactId>
+                <version>1.12</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>wsimport</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <wsdlDirectory>src/main/resources/META-INF</wsdlDirectory>
+                    <wsdlFiles>
+                        <wsdlFile>CalculatorService.wsdl</wsdlFile>
+                    </wsdlFiles>
+                    <wsdlLocation>META-INF/CalculatorService.wsdl</wsdlLocation>
+                </configuration>
+                <dependencies>
+                    <dependency>
+                        <groupId>com.sun.xml.ws</groupId>
+                        <artifactId>jaxws-tools</artifactId>
+                        <version>2.1.7</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.axis2</groupId>
+                <artifactId>axis2-aar-maven-plugin</artifactId>
+                <version>1.5.1</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <includeDependencies>false</includeDependencies>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.xml.ws</groupId>
+            <artifactId>jaxws-rt</artifactId>
+            <version>2.1.7</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <repositories>
+        <repository>
+            <id>apache-m2</id>
+            <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
+        </repository>
+        <repository>
+            <id>apache-snapshots</id>
+            <url>http://people.apache.org/repo/m2-snapshot-repository/</url>
+        </repository>
+        <repository>
+            <id>maven2</id>
+            <url>http://repo1.maven.org/maven2/</url>
+        </repository>
+    </repositories>
+    <pluginRepositories>
+        <pluginRepository>
+            <id>apache-m2</id>
+            <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
+        </pluginRepository>
+        <pluginRepository>
+            <id>apache-snapshots</id>
+            <url>http://people.apache.org/repo/m2-snapshot-repository</url>
+        </pluginRepository>
+        <pluginRepository>
+            <id>maven2</id>
+            <url>http://repo1.maven.org/maven2/</url>
+        </pluginRepository>
+    </pluginRepositories>
+</project>

Propchange: webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/org/apache/axis2/jaxws/calculator/impl/CalculatorImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/org/apache/axis2/jaxws/calculator/impl/CalculatorImpl.java?rev=902543&view=auto
==============================================================================
--- webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/org/apache/axis2/jaxws/calculator/impl/CalculatorImpl.java (added)
+++ webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/org/apache/axis2/jaxws/calculator/impl/CalculatorImpl.java Sun Jan 24 09:56:38 2010
@@ -0,0 +1,37 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you 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.
+*/
+package org.apache.axis2.jaxws.calculator.impl;
+
+import javax.jws.WebService;
+import javax.xml.ws.soap.Addressing;
+
+import org.apache.axis2.jaxws.calculator.Calculator;
+
+@Addressing
+@WebService(endpointInterface = "org.apache.axis2.jaxws.calculator.Calculator",
+        serviceName = "CalculatorService",
+        portName = "CalculatorServicePort",
+        targetNamespace = "http://calculator.jaxws.axis2.apache.org",
+        wsdlLocation = "META-INF/CalculatorService.wsdl")
+public class CalculatorImpl implements Calculator {
+    public int add(int value1, int value2) {
+        System.out.println("value1: " + value1 + " value2: " + value2);
+        return value1 + value2;
+    }
+}
\ No newline at end of file

Propchange: webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/org/apache/axis2/jaxws/calculator/impl/CalculatorImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/CalculatorService.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/CalculatorService.wsdl?rev=902543&view=auto
==============================================================================
--- webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/CalculatorService.wsdl (added)
+++ webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/CalculatorService.wsdl Sun Jan 24 09:56:38 2010
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<definitions targetNamespace="http://calculator.jaxws.axis2.apache.org" name="CalculatorService"
+             xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://calculator.jaxws.axis2.apache.org"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+        <xsd:schema>
+            <xsd:import namespace="http://calculator.jaxws.axis2.apache.org"
+                        schemaLocation="CalculatorService_schema1.xsd"/>
+        </xsd:schema>
+    </types>
+    <message name="add">
+        <part name="parameters" element="tns:add"/>
+    </message>
+    <message name="addResponse">
+        <part name="parameters" element="tns:addResponse"/>
+    </message>
+    <portType name="Calculator">
+        <operation name="add">
+            <input wsaw:Action="http://calculator.jaxws.axis2.apache.org/add" message="tns:add"/>
+            <output wsaw:Action="http://calculator.jaxws.axis2.apache.org/addResponse" message="tns:addResponse"/>
+        </operation>
+    </portType>
+    <binding name="CalculatorServicePortBinding" type="tns:Calculator">
+        <wsaw:UsingAddressing/>
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="add">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="CalculatorService">
+        <port name="CalculatorServicePort" binding="tns:CalculatorServicePortBinding">
+            <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
+        </port>
+    </service>
+</definitions>
+

Added: webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/CalculatorService_schema1.xsd
URL: http://svn.apache.org/viewvc/webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/CalculatorService_schema1.xsd?rev=902543&view=auto
==============================================================================
--- webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/CalculatorService_schema1.xsd (added)
+++ webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/CalculatorService_schema1.xsd Sun Jan 24 09:56:38 2010
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<xs:schema version="1.0" targetNamespace="http://calculator.jaxws.axis2.apache.org"
+           xmlns:tns="http://calculator.jaxws.axis2.apache.org" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+    <xs:element name="add" type="tns:add"/>
+
+    <xs:element name="addResponse" type="tns:addResponse"/>
+
+    <xs:complexType name="add">
+        <xs:sequence>
+            <xs:element name="value1" type="xs:int" form="qualified"/>
+            <xs:element name="value2" type="xs:int" form="qualified"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="addResponse">
+        <xs:sequence>
+            <xs:element name="return" type="xs:int" form="qualified"/>
+        </xs:sequence>
+    </xs:complexType>
+</xs:schema>
+

Added: webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/services.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/services.xml?rev=902543&view=auto
==============================================================================
--- webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/services.xml (added)
+++ webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/services.xml Sun Jan 24 09:56:38 2010
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<service name="CalculatorService.CalculatorServicePort">
+    <description>Calculator service</description>
+    <messageReceivers>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>
+        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>
+    </messageReceivers>
+    <parameter name="ServiceClass">org.apache.axis2.jaxws.calculator.impl.CalculatorImpl</parameter>
+</service>

Propchange: webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/resources/META-INF/services.xml
------------------------------------------------------------------------------
    svn:eol-style = native