You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2007/11/19 17:23:04 UTC
svn commit: r596355 [2/3] - in /servicemix/branches/servicemix-4.0: ./
apache-servicemix/ apache-servicemix/src/main/descriptors/
apache-servicemix/src/main/release/conf/
apache-servicemix/src/main/release/etc/ examples/intermediary/
examples/intermedi...
Added: servicemix/branches/servicemix-4.0/itests/tests/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/itests/tests/pom.xml?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/itests/tests/pom.xml (added)
+++ servicemix/branches/servicemix-4.0/itests/tests/pom.xml Mon Nov 19 08:22:57 2007
@@ -0,0 +1,544 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!--
+
+ 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.
+ -->
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.servicemix.itests</groupId>
+ <artifactId>itests</artifactId>
+ <version>4.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.apache.servicemix.itests</groupId>
+ <artifactId>org.apache.servicemix.itests.tests</artifactId>
+ <packaging>jar</packaging>
+ <version>4.0-SNAPSHOT</version>
+ <name>ServiceMix Integration Tests</name>
+
+ <properties>
+ <osgi.test.platform>org.springframework.osgi.test.platform.EquinoxPlatform</osgi.test.platform>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.aopalliance</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.cxf</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.httpcore</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.jaxb-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.jaxb-impl</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.jaxws-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.openejb</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.openjpa</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.wsdl4j</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.nmr</groupId>
+ <artifactId>org.apache.servicemix.nmr.api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.nmr</groupId>
+ <artifactId>org.apache.servicemix.nmr.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.nmr</groupId>
+ <artifactId>org.apache.servicemix.nmr.osgi</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.nmr</groupId>
+ <artifactId>org.apache.servicemix.nmr.spring</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.jbi</groupId>
+ <artifactId>org.apache.servicemix.jbi.api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix</groupId>
+ <artifactId>org.apache.servicemix.camel</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix</groupId>
+ <artifactId>org.apache.servicemix.jaxws</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.openejb</groupId>
+ <artifactId>org.apache.servicemix.openejb</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.examples</groupId>
+ <artifactId>org.apache.servicemix.examples.intermediary</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.examples</groupId>
+ <artifactId>org.apache.servicemix.examples.jaxws</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.examples</groupId>
+ <artifactId>org.apache.servicemix.examples.jaxws</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.itests</groupId>
+ <artifactId>org.apache.servicemix.itests.ejbjar</artifactId>
+ <version>4.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>${spring.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ <version>${spring.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>${spring.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aop</artifactId>
+ <version>${spring.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-pool</groupId>
+ <artifactId>commons-pool</artifactId>
+ <version>1.3</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <version>${spring.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>spring-osgi-core</artifactId>
+ <version>${spring.osgi.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>spring-osgi-io</artifactId>
+ <version>${spring.osgi.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>spring-osgi-extender</artifactId>
+ <version>${spring.osgi.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>spring-osgi-test</artifactId>
+ <version>${spring.osgi.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>spring-osgi-annotation</artifactId>
+ <version>${spring.osgi.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>junit.osgi</artifactId>
+ <version>3.8.2-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>asm.osgi</artifactId>
+ <version>2.2.3-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-spring</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-jms</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-osgi</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-jhc</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>spring-osgi-test</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>spring-osgi-extender</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>spring-osgi-annotation</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jms</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ <version>3.0</version>
+ <scope>provided</scope>
+ </dependency>
+<!--
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.4.3</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl104-over-slf4j</artifactId>
+ <version>1.4.3</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.4.3</version>
+ <scope>provided</scope>
+ </dependency>
+-->
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-ejb_3.0_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-j2ee-connector_1.5_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jacc_1.1_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jaxr_1.0_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-interceptor_3.0_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-javamail_1.4_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jpa_3.0_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jta_1.1_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jms_1.1_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jta_1.1_spec</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-saaj_1.1_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-stax-api_1.0_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-servlet_2.5_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-activation_1.1_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-annotation_1.0_spec</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-core</artifactId>
+ <version>5.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-finder</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-naming</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-reflect</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix</groupId>
+ <artifactId>org.apache.servicemix.activemq</artifactId>
+ <version>4.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <!--
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.servicemix</artifactId>
+ <version>${felix.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ -->
+ <dependency>
+ <groupId>org.eclipse.osgi</groupId>
+ <artifactId>org.eclipse.osgi</artifactId>
+ <version>3.2.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <!--
+ <dependency>
+ <groupId>knopflerfish</groupId>
+ <artifactId>framework</artifactId>
+ <version>2.0.1</version>
+ <scope>provided</scope>
+ </dependency>
+ -->
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>junit.osgi</artifactId>
+ <version>3.8.2-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>asm.osgi</artifactId>
+ <version>2.2.3-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.osgi.foundation</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>javax.servlet</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.configadmin</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.logging</groupId>
+ <artifactId>pax-logging-api</artifactId>
+ <version>0.9.7-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.logging</groupId>
+ <artifactId>pax-logging-service</artifactId>
+ <version>0.9.7-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.confman</groupId>
+ <artifactId>pax-confman-propsloader</artifactId>
+ <version>0.3.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <!-- generate dependencies versions -->
+ <plugin>
+ <groupId>org.apache.servicemix.tooling</groupId>
+ <artifactId>depends-maven-plugin</artifactId>
+ <version>4.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <id>generate-depends-file</id>
+ <goals>
+ <goal>generate-depends-file</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- run tests during the integration-test phase, not
+ the normal test phase -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ <executions>
+ <execution>
+ <id>default</id>
+ <phase>test</phase>
+ <goals></goals>
+ </execution>
+ <execution>
+ <id>integration-test</id>
+ <phase>integration-test</phase>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <configuration>
+ <skip>false</skip>
+ <forkMode>pertest</forkMode>
+ <systemProperties>
+ <property>
+ <name>org.springframework.osgi.test.framework</name>
+ <value>${osgi.test.platform}</value>
+ </property>
+ </systemProperties>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
Added: servicemix/branches/servicemix-4.0/itests/tests/src/test/conf/services/org.ops4j.pax.logging.properties
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/itests/tests/src/test/conf/services/org.ops4j.pax.logging.properties?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/itests/tests/src/test/conf/services/org.ops4j.pax.logging.properties (added)
+++ servicemix/branches/servicemix-4.0/itests/tests/src/test/conf/services/org.ops4j.pax.logging.properties Mon Nov 19 08:22:57 2007
@@ -0,0 +1,32 @@
+#
+# 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.
+#
+#
+log4j.rootLogger=DEBUG, stdout
+
+# CONSOLE appender not used by default
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
+
+# File appender
+log4j.appender.out=org.apache.log4j.FileAppender
+log4j.appender.out.layout=org.apache.log4j.PatternLayout
+log4j.appender.out.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
+log4j.appender.out.file=target/servicemix.log
+log4j.appender.out.append=true
Added: servicemix/branches/servicemix-4.0/itests/tests/src/test/java/org/apache/servicemix/AbstractIntegrationTest.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/itests/tests/src/test/java/org/apache/servicemix/AbstractIntegrationTest.java?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/itests/tests/src/test/java/org/apache/servicemix/AbstractIntegrationTest.java (added)
+++ servicemix/branches/servicemix-4.0/itests/tests/src/test/java/org/apache/servicemix/AbstractIntegrationTest.java Mon Nov 19 08:22:57 2007
@@ -0,0 +1,179 @@
+/*
+ * 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.servicemix;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.log4j.PropertyConfigurator;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+import org.springframework.osgi.internal.util.concurrent.Counter;
+import org.springframework.osgi.test.AbstractConfigurableBundleCreatorTests;
+import org.springframework.osgi.util.OsgiFilterUtils;
+import org.springframework.osgi.util.OsgiListenerUtils;
+
+public class AbstractIntegrationTest extends AbstractConfigurableBundleCreatorTests {
+
+ static {
+ try {
+ System.setProperty("bundles.configuration.location", new File("src/test/conf").getAbsolutePath());
+ PropertyConfigurator.configure("target/test-classes/log4j.properties");
+ } catch (Throwable t) {}
+ }
+
+ private Properties dependencies;
+
+ protected String getBundle(String groupId, String artifactId) {
+ return groupId + "," + artifactId + "," + getBundleVersion(groupId, artifactId);
+ }
+
+ protected String getBundleVersion(String groupId, String artifactId) {
+ if (dependencies == null) {
+ try {
+ File f = new File(System.getProperty("basedir"), "target/classes/META-INF/maven/dependencies.properties");
+ Properties prop = new Properties();
+ prop.load(new FileInputStream(f));
+ dependencies = prop;
+ } catch (IOException e) {
+ throw new IllegalStateException("Unable to load dependencies informations", e);
+ }
+ }
+ String version = dependencies.getProperty(groupId + "/" + artifactId + "/version");
+ if (version == null) {
+ throw new IllegalStateException("Unable to find dependency information for: " + groupId + "/" + artifactId + "/version");
+ }
+ return version;
+ }
+
+ protected String[] getTestFrameworkBundlesNames() {
+ return new String[] {
+ getBundle("org.apache.geronimo.specs", "geronimo-servlet_2.5_spec"),
+ getBundle("org.apache.felix", "org.osgi.compendium"),
+ getBundle("org.apache.felix", "org.apache.felix.configadmin"),
+ getBundle("org.ops4j.pax.confman", "pax-confman-propsloader"),
+ getBundle("org.ops4j.pax.logging", "pax-logging-api"),
+ getBundle("org.ops4j.pax.logging", "pax-logging-service"),
+ getBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.aopalliance"),
+ getBundle("org.springframework", "spring-beans"),
+ getBundle("org.springframework", "spring-core"),
+ getBundle("org.springframework", "spring-context"),
+ getBundle("org.springframework", "spring-aop"),
+ getBundle("org.springframework", "spring-test"),
+ getBundle("org.springframework.osgi", "spring-osgi-core"),
+ getBundle("org.springframework.osgi", "spring-osgi-io"),
+ getBundle("org.springframework.osgi", "spring-osgi-extender"),
+ getBundle("org.springframework.osgi", "spring-osgi-test"),
+ getBundle("org.springframework.osgi", "spring-osgi-annotation"),
+ getBundle("org.springframework.osgi", "junit.osgi"),
+ getBundle("org.springframework.osgi", "asm.osgi"),
+ };
+ }
+
+ protected void installBundle(String groupId, String artifactId, String classifier, String type) throws Exception {
+ String version = getBundleVersion(groupId, artifactId);
+ File loc = localMavenBundle(groupId, artifactId, version, classifier, type);
+ Bundle bundle = bundleContext.installBundle(loc.toURI().toString());
+ bundle.start();
+ }
+
+ protected File localMavenBundle(String groupId, String artifact, String version, String classifier, String type) {
+ String defaultHome = new File(new File(System.getProperty("user.home")), ".m2/repository").getAbsolutePath();
+ File repositoryHome = new File(System.getProperty("localRepository", defaultHome));
+
+ StringBuffer location = new StringBuffer(groupId.replace('.', '/'));
+ location.append('/');
+ location.append(artifact);
+ location.append('/');
+ location.append(version);
+ location.append('/');
+ location.append(artifact);
+ location.append('-');
+ location.append(version);
+ if (classifier != null) {
+ location.append('-');
+ location.append(classifier);
+ }
+ location.append(".");
+ location.append(type);
+
+ return new File(repositoryHome, location.toString());
+ }
+
+ public <T> T getOsgiService(Class<T> type) {
+ return getOsgiService(type, DEFAULT_WAIT_TIME);
+ }
+
+ public <T> T getOsgiService(Class<T> type, long timeout) {
+ // translate from seconds to miliseconds
+ long time = timeout * 1000;
+
+ // use the counter to make sure the threads block
+ final Counter counter = new Counter("waitForOsgiService on bnd=" + type.getName());
+
+ counter.increment();
+
+ final List<T> services = new ArrayList<T>();
+
+ ServiceListener listener = new ServiceListener() {
+ public void serviceChanged(ServiceEvent event) {
+ if (event.getType() == ServiceEvent.REGISTERED) {
+ services.add((T) bundleContext.getService(event.getServiceReference()));
+ counter.decrement();
+ }
+ }
+ };
+
+ String filter = OsgiFilterUtils.unifyFilter(type.getName(), null);
+ OsgiListenerUtils.addServiceListener(bundleContext, listener, filter);
+
+ if (logger.isDebugEnabled())
+ logger.debug("start waiting for OSGi service=" + type.getName());
+
+ try {
+ if (counter.waitForZero(time)) {
+ logger.warn("waiting for OSGi service=" + type.getName() + " timed out");
+ throw new RuntimeException("Gave up waiting for OSGi service '" + type.getName() + "' to be created");
+ }
+ else if (logger.isDebugEnabled()) {
+ logger.debug("found OSGi service=" + type.getName());
+ }
+ return services.get(0);
+ }
+ finally {
+ // inform waiting thread
+ bundleContext.removeServiceListener(listener);
+ }
+ }
+
+ protected void checkBundleStarted(String name) {
+ assertNotNull(bundleContext);
+ for (int i = 0; i < bundleContext.getBundles().length; i++) {
+ Bundle b = bundleContext.getBundles()[i];
+ if (b.getSymbolicName().equals(name)) {
+ assertEquals("Bundle '" + name + "' is not active", Bundle.ACTIVE, b.getState());
+ return;
+ }
+ }
+ fail("Bundle '" + name + "' not found");
+ }
+}
\ No newline at end of file
Added: servicemix/branches/servicemix-4.0/itests/tests/src/test/java/org/apache/servicemix/EjbIntegrationTest.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/itests/tests/src/test/java/org/apache/servicemix/EjbIntegrationTest.java?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/itests/tests/src/test/java/org/apache/servicemix/EjbIntegrationTest.java (added)
+++ servicemix/branches/servicemix-4.0/itests/tests/src/test/java/org/apache/servicemix/EjbIntegrationTest.java Mon Nov 19 08:22:57 2007
@@ -0,0 +1,106 @@
+/*
+ * 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.servicemix;
+
+import java.util.Properties;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class EjbIntegrationTest extends AbstractIntegrationTest {
+
+ private static final Log LOGGER = LogFactory.getLog(EjbIntegrationTest.class);
+
+ private Properties dependencies;
+
+ /**
+ * The manifest to use for the "virtual bundle" created
+ * out of the test classes and resources in this project
+ *
+ * This is actually the boilerplate manifest with one additional
+ * import-package added. We should provide a simpler customization
+ * point for such use cases that doesn't require duplication
+ * of the entire manifest...
+ */
+ protected String getManifestLocation() {
+ return "classpath:org/apache/servicemix/MANIFEST.MF";
+ }
+
+ /**
+ * The location of the packaged OSGi bundles to be installed
+ * for this test. Values are Spring resource paths. The bundles
+ * we want to use are part of the same multi-project maven
+ * build as this project is. Hence we use the localMavenArtifact
+ * helper method to find the bundles produced by the package
+ * phase of the maven build (these tests will run after the
+ * packaging phase, in the integration-test phase).
+ *
+ * JUnit, commons-logging, spring-core and the spring OSGi
+ * test bundle are automatically included so do not need
+ * to be specified here.
+ */
+ protected String[] getTestBundlesNames() {
+ return new String[] {
+ getBundle("org.apache.xbean", "xbean-finder"),
+ getBundle("org.apache.xbean", "xbean-naming"),
+ getBundle("org.apache.xbean", "xbean-reflect"),
+ getBundle("org.apache.geronimo.specs", "geronimo-activation_1.1_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-annotation_1.0_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-ejb_3.0_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-interceptor_3.0_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-j2ee-connector_1.5_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-j2ee-management_1.1_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-jacc_1.1_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-javamail_1.4_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-jaxr_1.0_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-jms_1.1_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-jpa_3.0_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-jta_1.1_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-saaj_1.1_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-stax-api_1.0_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-ws-metadata_2.0_spec"),
+ getBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.cxf"),
+ getBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.jaxb-api"),
+ getBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.jaxb-impl"),
+ getBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.jaxws-api"),
+ getBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.openejb"),
+ getBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.openjpa"),
+ getBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.wsdl4j"),
+ getBundle("org.apache.servicemix.jbi", "org.apache.servicemix.jbi.api"),
+ getBundle("org.apache.servicemix.nmr", "org.apache.servicemix.nmr.api"),
+ getBundle("org.apache.servicemix.nmr", "org.apache.servicemix.nmr.core"),
+ getBundle("org.apache.servicemix.nmr", "org.apache.servicemix.nmr.spring"),
+ getBundle("org.apache.servicemix.nmr", "org.apache.servicemix.nmr.osgi"),
+ getBundle("org.apache.servicemix.openejb", "org.apache.servicemix.openejb"),
+ };
+ }
+
+ /**
+ * The superclass provides us access to the root bundle
+ * context via the 'getBundleContext' operation
+ */
+ public void testOSGiStartedOk() throws Exception {
+ System.out.println("Checking that EJB bundle is started");
+ checkBundleStarted("org.apache.servicemix.openejb");
+ Thread.sleep(1000);
+ System.out.println("Installing ejbjar bundle");
+ installBundle("org.apache.servicemix.itests", "org.apache.servicemix.itests.ejbjar", null, "jar");
+ System.out.println("ejbjar bundle installed");
+ Thread.sleep(1000);
+ }
+
+}
\ No newline at end of file
Added: servicemix/branches/servicemix-4.0/itests/tests/src/test/java/org/apache/servicemix/IntegrationTest.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/itests/tests/src/test/java/org/apache/servicemix/IntegrationTest.java?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/itests/tests/src/test/java/org/apache/servicemix/IntegrationTest.java (added)
+++ servicemix/branches/servicemix-4.0/itests/tests/src/test/java/org/apache/servicemix/IntegrationTest.java Mon Nov 19 08:22:57 2007
@@ -0,0 +1,136 @@
+/*
+ * 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.servicemix;
+
+import java.io.IOException;
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.Properties;
+
+import javax.jms.ConnectionFactory;
+
+import org.apache.servicemix.nmr.api.Endpoint;
+import org.apache.servicemix.nmr.api.NMR;
+import org.osgi.framework.ServiceReference;
+import org.springframework.osgi.test.AbstractConfigurableBundleCreatorTests;
+
+public class IntegrationTest extends AbstractIntegrationTest {
+
+ private Properties dependencies;
+
+ /**
+ * The manifest to use for the "virtual bundle" created
+ * out of the test classes and resources in this project
+ *
+ * This is actually the boilerplate manifest with one additional
+ * import-package added. We should provide a simpler customization
+ * point for such use cases that doesn't require duplication
+ * of the entire manifest...
+ */
+ protected String getManifestLocation() {
+ return "classpath:org/apache/servicemix/MANIFEST.MF";
+ }
+
+ /**
+ * The location of the packaged OSGi bundles to be installed
+ * for this test. Values are Spring resource paths. The bundles
+ * we want to use are part of the same multi-project maven
+ * build as this project is. Hence we use the localMavenArtifact
+ * helper method to find the bundles produced by the package
+ * phase of the maven build (these tests will run after the
+ * packaging phase, in the integration-test phase).
+ *
+ * JUnit, commons-logging, spring-core and the spring OSGi
+ * test bundle are automatically included so do not need
+ * to be specified here.
+ */
+ protected String[] getTestBundlesNames() {
+ return new String[] {
+ getBundle("org.apache.geronimo.specs", "geronimo-interceptor_3.0_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-jms_1.1_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-j2ee-management_1.1_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-stax-api_1.0_spec"),
+ getBundle("org.apache.geronimo.specs", "geronimo-activation_1.1_spec"),
+ getBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.jaxws-api"),
+ getBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.jaxb-api"),
+ getBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.jaxb-impl"),
+ getBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.httpcore"),
+ getBundle("org.apache.activemq", "activemq-core"),
+ getBundle("org.springframework", "spring-tx"),
+ getBundle("org.springframework", "spring-jms"),
+ getBundle("org.apache.camel", "camel-core"),
+ getBundle("org.apache.camel", "camel-spring"),
+ getBundle("org.apache.camel", "camel-osgi"),
+ getBundle("org.apache.camel", "camel-jms"),
+ getBundle("org.apache.camel", "camel-jhc"),
+ getBundle("org.apache.servicemix.jbi", "org.apache.servicemix.jbi.api"),
+ getBundle("org.apache.servicemix.nmr", "org.apache.servicemix.nmr.api"),
+ getBundle("org.apache.servicemix.nmr", "org.apache.servicemix.nmr.core"),
+ getBundle("org.apache.servicemix.nmr", "org.apache.servicemix.nmr.spring"),
+ getBundle("org.apache.servicemix.nmr", "org.apache.servicemix.nmr.osgi"),
+ getBundle("org.apache.servicemix", "org.apache.servicemix.camel"),
+ getBundle("org.apache.servicemix", "org.apache.servicemix.jaxws"),
+ getBundle("org.apache.servicemix.examples", "org.apache.servicemix.examples.intermediary"),
+ getBundle("org.apache.servicemix.examples", "org.apache.servicemix.examples.jaxws"),
+ getBundle("org.apache.felix","org.apache.felix.configadmin"),
+ getBundle("org.apache.geronimo.specs","geronimo-jta_1.1_spec"),
+ getBundle("org.apache.servicemix","org.apache.servicemix.activemq")
+ };
+ }
+
+ /**
+ * The superclass provides us access to the root bundle
+ * context via the 'getBundleContext' operation
+ */
+ public void testOSGiStartedOk() {
+ assertNotNull(bundleContext);
+ }
+
+ /**
+ * The simple service should have been exported as an
+ * OSGi service, which we can verify using the OSGi
+ * service APIs.
+ *
+ * In a Spring bundle, using osgi:reference is a much
+ * easier way to get a reference to a published service.
+ *
+ */
+ public void testSimpleServiceExported() {
+ waitOnContextCreation("org.apache.servicemix.examples.intermediary");
+ ServiceReference ref = bundleContext.getServiceReference(NMR.class.getName());
+ ServiceReference endpointRef = bundleContext.getServiceReference(Endpoint.class.getName());
+ ServiceReference connectionFactoryRef = bundleContext.getServiceReference(ConnectionFactory.class.getName());
+ assertNotNull("Service Reference is null", ref);
+ assertNotNull("Endpoint Reference is null", endpointRef);
+ assertNotNull("ConnectionFacotory Reference is null", connectionFactoryRef);
+ try {
+ NMR nmr = (NMR) bundleContext.getService(ref);
+ assertNotNull("Cannot find the service", nmr);
+ Endpoint jaxwsProvider = (Endpoint) bundleContext.getService(endpointRef);
+ assertNotNull(jaxwsProvider);
+ assertEquals(jaxwsProvider.getClass().getName(),
+ "org.apache.servicemix.jaxws.JAXWSProvider");
+
+ ConnectionFactory connFactory = (ConnectionFactory)bundleContext.getService(connectionFactoryRef);
+ assertNotNull(connFactory);
+ assertEquals(connFactory.getClass().getName(), "org.apache.activemq.pool.PooledConnectionFactory");
+ } finally {
+ bundleContext.ungetService(ref);
+ }
+ }
+
+}
\ No newline at end of file
Added: servicemix/branches/servicemix-4.0/itests/tests/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/itests/tests/src/test/resources/log4j.properties?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/itests/tests/src/test/resources/log4j.properties (added)
+++ servicemix/branches/servicemix-4.0/itests/tests/src/test/resources/log4j.properties Mon Nov 19 08:22:57 2007
@@ -0,0 +1,29 @@
+#
+# 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.
+#
+################################################################################
+
+log4j.rootLogger=DEBUG, stdout
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
+
+log4j.logger.org.springframework.osgi=DEBUG
+log4j.logger.org.apache.camel=DEBUG
+log4j.logger.org.apache.servicemix=DEBUG
+
+#log4j.debug=false
\ No newline at end of file
Added: servicemix/branches/servicemix-4.0/itests/tests/src/test/resources/org/apache/servicemix/MANIFEST.MF
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/itests/tests/src/test/resources/org/apache/servicemix/MANIFEST.MF?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/itests/tests/src/test/resources/org/apache/servicemix/MANIFEST.MF (added)
+++ servicemix/branches/servicemix-4.0/itests/tests/src/test/resources/org/apache/servicemix/MANIFEST.MF Mon Nov 19 08:22:57 2007
@@ -0,0 +1,31 @@
+Manifest-Version: 1.0
+License-00:
+License-01: Licensed to the Apache Software Foundation (ASF) under one or more
+License-02: contributor license agreements. See the NOTICE file distributed with
+License-03: this work for additional information regarding copyright ownership.
+License-04: The ASF licenses this file to You under the Apache License, Version 2.0
+License-05: (the "License"); you may not use this file except in compliance with
+License-06: the License. You may obtain a copy of the License at
+License-07:
+License-08: http://www.apache.org/licenses/LICENSE-2.0
+License-09:
+License-10: Unless required by applicable law or agreed to in writing, software
+License-11: distributed under the License is distributed on an "AS IS" BASIS,
+License-12: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+License-13: See the License for the specific language governing permissions and
+License-14: limitations under the License.
+License-15:
+Bundle-Name: org.apache.servicemix.test
+Bundle-SymbolicName: org.apache.servicemix.test
+Bundle-Vendor: Spring Framework
+Bundle-Activator: org.springframework.osgi.test.JUnitTestActivator
+Import-Package: junit.framework,
+ org.osgi.framework;specification-version="1.3.0",
+ org.apache.commons.logging,
+ org.springframework.core.io,
+ org.springframework.osgi.test,
+ org.springframework.osgi.internal.util.concurrent,
+ org.apache.servicemix.nmr.api,
+ org.apache.servicemix.nmr.core,
+ javax.jms
+
Propchange: servicemix/branches/servicemix-4.0/jaxws/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Nov 19 08:22:57 2007
@@ -0,0 +1,4 @@
+target
+*.iml
+*.ipr
+*.iws
Added: servicemix/branches/servicemix-4.0/openejb/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/openejb/pom.xml?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/openejb/pom.xml (added)
+++ servicemix/branches/servicemix-4.0/openejb/pom.xml Mon Nov 19 08:22:57 2007
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <!--
+
+ 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.
+ -->
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.servicemix</groupId>
+ <artifactId>servicemix</artifactId>
+ <version>4.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.apache.servicemix.openejb</groupId>
+ <artifactId>org.apache.servicemix.openejb</artifactId>
+ <packaging>bundle</packaging>
+ <version>4.0-SNAPSHOT</version>
+ <name>ServiceMix OpenEJB</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.openejb</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.openjpa</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.cxf</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>spring-osgi-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.web</groupId>
+ <artifactId>pax-web-service</artifactId>
+ <version>0.3.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.logging</groupId>
+ <artifactId>pax-logging-api</artifactId>
+ <version>0.9.7-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.logging</groupId>
+ <artifactId>pax-logging-service</artifactId>
+ <version>0.9.7-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aop</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>spring-osgi-io</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>spring-osgi-extender</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>spring-osgi-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>spring-osgi-annotation</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>junit.osgi</artifactId>
+ <version>3.8.2-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.osgi</groupId>
+ <artifactId>asm.osgi</artifactId>
+ <version>2.2.3-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.15</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>com.sun.jdmk</groupId>
+ <artifactId>jmxtools</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.jmx</groupId>
+ <artifactId>jmxri</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <!-- Bundle generation -->
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+ <Import-Package>
+ javax.xml.rpc*;resolution:=optional,
+ *
+ </Import-Package>
+ <Export-Package>${pom.artifactId}*</Export-Package>
+ <Private-Package></Private-Package>
+ <Spring-Context>*;publish-context:=false</Spring-Context>
+ </instructions>
+ </configuration>
+ </plugin>
+ <!-- generate dependencies versions -->
+ <plugin>
+ <groupId>org.apache.servicemix.tooling</groupId>
+ <artifactId>depends-maven-plugin</artifactId>
+ <version>4.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <id>generate-depends-file</id>
+ <goals>
+ <goal>generate-depends-file</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
Added: servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/Deployer.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/Deployer.java?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/Deployer.java (added)
+++ servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/Deployer.java Mon Nov 19 08:22:57 2007
@@ -0,0 +1,155 @@
+/*
+ * 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.servicemix.openejb;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.config.AppModule;
+import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.config.ReadDescriptors;
+import org.apache.openejb.config.WsModule;
+import org.apache.openejb.config.ConfigurationFactory;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.JavaWsdlMapping;
+import org.apache.openejb.jee.WebserviceDescription;
+import org.apache.openejb.jee.Webservices;
+import org.apache.xbean.finder.ResourceFinder;
+
+/**
+ * The Deployer contains the code to deploy EJBs given a classloader and a url location.
+ *
+ */
+public class Deployer {
+
+ private static final Log LOGGER = LogFactory.getLog(Deployer.class);
+
+ public void deploy(ClassLoader classLoader, String location) throws Exception {
+ Map<String, URL> descriptors = new ResourceFinder(null, classLoader).getResourcesMap("META-INF/");
+
+ URL ejbJarXmlUrl = descriptors.get("ejb-jar.xml");
+ if (ejbJarXmlUrl == null) {
+ return;
+ }
+ EjbJar ejbJar = ReadDescriptors.readEjbJar(ejbJarXmlUrl);
+ // create the EJB Module
+ EjbModule ejbModule = new EjbModule(classLoader, location, ejbJar, null);
+ ejbModule.getAltDDs().putAll(descriptors);
+
+ // load webservices descriptor
+ addWebservices(ejbModule);
+
+ // wrap the EJB Module with an Application Module
+ AppModule appModule = new AppModule(classLoader, ejbModule.getJarLocation());
+ appModule.getEjbModules().add(ejbModule);
+ ejbModule.setJarLocation(location);
+
+ // Persistence Units
+ addPersistenceUnits(appModule, classLoader);
+
+ // Create application
+ ConfigurationFactory configurationFactory = new ConfigurationFactory();
+ Assembler assembler = (Assembler) SystemInstance.get().getComponent(org.apache.openejb.spi.Assembler.class);
+ AppInfo appInfo = configurationFactory.configureApplication(appModule);
+ assembler.createApplication(appInfo, classLoader);
+ }
+
+ private Map<String, URL> getDescriptors(URL moduleUrl) throws OpenEJBException {
+ try {
+ ResourceFinder finder = new ResourceFinder(moduleUrl);
+ return finder.getResourcesMap("META-INF/");
+
+ } catch (IOException e) {
+ throw new OpenEJBException("Unable to determine descriptors in jar.", e);
+ }
+ }
+
+ private void addWebservices(WsModule wsModule) throws OpenEJBException {
+ // get location of webservices.xml file
+ Object webservicesObject = wsModule.getAltDDs().get("webservices.xml");
+ if (!(webservicesObject instanceof URL)) {
+ return;
+ }
+ URL webservicesUrl = (URL) webservicesObject;
+
+ // determine the base url for this module (either file: or jar:)
+ URL moduleUrl = null;
+ try {
+ File jarFile = new File(wsModule.getJarLocation());
+ moduleUrl = jarFile.toURL();
+ if (jarFile.isFile()) {
+ moduleUrl = new URL("jar", "", -1, moduleUrl + "!/");
+ }
+ } catch (MalformedURLException e) {
+ LOGGER.warn("Invalid module location " + wsModule.getJarLocation());
+ return;
+ }
+
+ // parse the webservices.xml file
+ Map<URL,JavaWsdlMapping> jaxrpcMappingCache = new HashMap<URL,JavaWsdlMapping>();
+ Webservices webservices = ReadDescriptors.readWebservices(webservicesUrl);
+ wsModule.setWebservices(webservices);
+ if (webservicesUrl != null && "file".equals(webservicesUrl.getProtocol())) {
+ wsModule.getWatchedResources().add(webservicesUrl.getPath());
+ }
+
+ // parse any jaxrpc-mapping-files mentioned in the webservices.xml file
+ for (WebserviceDescription webserviceDescription : webservices.getWebserviceDescription()) {
+ String jaxrpcMappingFile = webserviceDescription.getJaxrpcMappingFile();
+ if (jaxrpcMappingFile != null) {
+ URL jaxrpcMappingUrl = null;
+ try {
+ jaxrpcMappingUrl = new URL(moduleUrl, jaxrpcMappingFile);
+ JavaWsdlMapping jaxrpcMapping = jaxrpcMappingCache.get(jaxrpcMappingUrl);
+ if (jaxrpcMapping == null) {
+ jaxrpcMapping = ReadDescriptors.readJaxrpcMapping(jaxrpcMappingUrl);
+ jaxrpcMappingCache.put(jaxrpcMappingUrl, jaxrpcMapping);
+ }
+ webserviceDescription.setJaxrpcMapping(jaxrpcMapping);
+ if (jaxrpcMappingUrl != null && "file".equals(jaxrpcMappingUrl.getProtocol())) {
+ wsModule.getWatchedResources().add(jaxrpcMappingUrl.getPath());
+ }
+ } catch (MalformedURLException e) {
+ LOGGER.warn("Invalid jaxrpc-mapping-file location " + jaxrpcMappingFile);
+ }
+ }
+ }
+
+ }
+
+ private void addPersistenceUnits(AppModule appModule, ClassLoader classLoader, URL... urls) {
+ try {
+ ResourceFinder finder = new ResourceFinder("", classLoader, urls);
+ List<URL> persistenceUrls = finder.findAll("META-INF/persistence.xml");
+ appModule.getAltDDs().put("persistence.xml", persistenceUrls);
+ } catch (IOException e) {
+ LOGGER.warn("Cannot load persistence-units from 'META-INF/persistence.xml' : " + e.getMessage(), e);
+ }
+ }
+
+}
Added: servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/OpenEjbFactory.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/OpenEjbFactory.java?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/OpenEjbFactory.java (added)
+++ servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/OpenEjbFactory.java Mon Nov 19 08:22:57 2007
@@ -0,0 +1,130 @@
+/*
+ * 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.servicemix.openejb;
+
+import java.util.Properties;
+
+import javax.transaction.TransactionManager;
+
+import org.apache.openejb.OpenEJB;
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.SecurityServiceInfo;
+import org.apache.openejb.assembler.classic.TransactionServiceInfo;
+import org.apache.openejb.assembler.dynamic.PassthroughFactory;
+import org.apache.openejb.core.ServerFederation;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.ri.sp.PseudoSecurityService;
+import org.apache.openejb.server.ServiceManager;
+import org.apache.openejb.server.webservices.WsRegistry;
+import org.apache.openejb.spi.ApplicationServer;
+import org.apache.openejb.spi.ContainerSystem;
+import org.apache.openejb.spi.SecurityService;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.Messages;
+
+/**
+ * Factory for OpenEJB to intitialize everything.
+ *
+ */
+public class OpenEjbFactory {
+
+ private static Messages messages = new Messages("org.apache.openejb.util.resources");
+
+ private Properties properties;
+ private TransactionManager transactionManager;
+ private WsRegistry wsRegistry;
+ private SecurityService securityService;
+
+ public void setProperties(Properties properties) {
+ this.properties = properties;
+ }
+
+ public void setTransactionManager(TransactionManager transactionManager) {
+ this.transactionManager = transactionManager;
+ }
+
+ public void setWsRegistry(WsRegistry wsRegistry) {
+ this.wsRegistry = wsRegistry;
+ }
+
+ public void setSecurityService(SecurityService securityService) {
+ this.securityService = securityService;
+ }
+
+ public void init() throws Exception {
+ Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP, "org.apache.openejb.util.resources");
+
+ if (properties == null) {
+ properties = new Properties();
+ }
+
+ try {
+ SystemInstance.init(properties);
+ } catch (Exception e) {
+ throw new OpenEJBException(e);
+ }
+ SystemInstance system = SystemInstance.get();
+
+ ApplicationServer appServer = new ServerFederation();
+ system.setComponent(ApplicationServer.class, appServer);
+
+ Assembler assembler = new Assembler();
+ SystemInstance.get().setComponent(org.apache.openejb.spi.Assembler.class, assembler);
+
+ ContainerSystem containerSystem = assembler.getContainerSystem();
+ if (containerSystem == null) {
+ String msg = messages.message("startup.assemblerReturnedNullContainer");
+ logger.fatal(msg);
+ throw new OpenEJBException(msg);
+ }
+ system.setComponent(ContainerSystem.class, containerSystem);
+
+ if (securityService == null) {
+ securityService = new PseudoSecurityService();
+ }
+ if (securityService != null) {
+ SecurityServiceInfo securityServiceInfo = new SecurityServiceInfo();
+ PassthroughFactory.add(securityServiceInfo, securityService);
+ securityServiceInfo.id = "Default Security Service";
+ securityServiceInfo.service = "SecurityService";
+ assembler.createSecurityService(securityServiceInfo);
+ system.setComponent(SecurityService.class, securityService);
+ }
+
+ if (transactionManager != null) {
+ TransactionServiceInfo transactionServiceInfo = new TransactionServiceInfo();
+ PassthroughFactory.add(transactionServiceInfo, transactionManager);
+ transactionServiceInfo.id = "Default Transaction Manager";
+ transactionServiceInfo.service = "TransactionManager";
+ assembler.createTransactionManager(transactionServiceInfo);
+ }
+
+ if (wsRegistry != null) {
+ SystemInstance.get().setComponent(WsRegistry.class, wsRegistry);
+ }
+
+ ServiceManager.getManager().init();
+ ServiceManager.getManager().start(false);
+ }
+
+ public void destroy() throws Exception {
+ ServiceManager.getManager().stop();
+ OpenEJB.destroy();
+ }
+}
Added: servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/OsgiDeployer.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/OsgiDeployer.java?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/OsgiDeployer.java (added)
+++ servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/OsgiDeployer.java Mon Nov 19 08:22:57 2007
@@ -0,0 +1,66 @@
+/*
+ * 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.servicemix.openejb;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleEvent;
+import org.osgi.framework.BundleListener;
+import org.springframework.beans.factory.DisposableBean;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.osgi.context.BundleContextAware;
+import org.springframework.osgi.internal.context.support.BundleDelegatingClassLoader;
+
+/**
+ *
+ */
+public class OsgiDeployer implements BundleListener, BundleContextAware, InitializingBean, DisposableBean {
+
+ private static final Log LOGGER = LogFactory.getLog(OsgiDeployer.class);
+
+ private BundleContext context;
+ private Deployer deployer = new Deployer();
+
+ public void setBundleContext(BundleContext context) {
+ this.context = context;
+ }
+
+ public void afterPropertiesSet() throws Exception {
+ System.out.println("Registering EJB deployer bundle listener");
+ this.context.addBundleListener(this);
+ }
+
+ public void destroy() throws Exception {
+ this.context.removeBundleListener(this);
+ }
+
+ public void bundleChanged(BundleEvent event) {
+ try {
+ if (event.getType() == BundleEvent.INSTALLED) {
+ System.out.println("Checking bundle: " + event.getBundle().getSymbolicName());
+
+ ClassLoader classLoader = BundleDelegatingClassLoader.createBundleClassLoaderFor(
+ event.getBundle(), BundleContext.class.getClassLoader());
+ deployer.deploy(classLoader, event.getBundle().getLocation());
+ }
+ } catch (Exception e) {
+ LOGGER.error("Error handling bundle event", e);
+ }
+ }
+
+}
\ No newline at end of file
Added: servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/OsgiWsRegistry.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/OsgiWsRegistry.java?rev=596355&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/OsgiWsRegistry.java (added)
+++ servicemix/branches/servicemix-4.0/openejb/src/main/java/org/apache/servicemix/openejb/OsgiWsRegistry.java Mon Nov 19 08:22:57 2007
@@ -0,0 +1,50 @@
+package org.apache.servicemix.openejb;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openejb.server.httpd.HttpListener;
+import org.apache.openejb.server.webservices.WsRegistry;
+import org.osgi.service.http.HttpService;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: gnodet
+ * Date: Nov 14, 2007
+ * Time: 11:59:12 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class OsgiWsRegistry implements WsRegistry {
+
+ private HttpService httpService;
+
+ public void setHttpService(HttpService httpService) {
+ this.httpService = httpService;
+ }
+
+ public List<String> setWsContainer(String virtualHost, String contextRoot, String servletName, HttpListener wsContainer) throws Exception {
+ System.err.println("setWsContainer");
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void clearWsContainer(String virtualHost, String contextRoot, String servletName) {
+ System.err.println("clearWsContainer");
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public List<String> addWsContainer(String path, HttpListener httpListener, String virtualHost, String realmName, String transportGuarantee, String authMethod, ClassLoader classLoader) throws Exception {
+ if (path == null) throw new NullPointerException("contextRoot is null");
+ if (httpListener == null) throw new NullPointerException("httpListener is null");
+
+ // assure context root with a leading slash
+ if (!path.startsWith("/")) path = "/" + path;
+
+ httpService.registerServlet(path, new WsServlet(httpListener), null, httpService.createDefaultHttpContext());
+
+ return Arrays.asList("http://localhost" + path); //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void removeWsContainer(String path) {
+ httpService.unregister(path);
+ }
+}