[jboss-cvs] JBossAS SVN: r78494 - in projects/ejb3/tags: jboss-ejb3-core-1.0.0-Beta3 and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Sep 12 13:04:49 EDT 2008


Author: ALRubinger
Date: 2008-09-12 13:04:49 -0400 (Fri, 12 Sep 2008)
New Revision: 78494

Added:
   projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/
   projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/pom.xml
   projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
Removed:
   projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/pom.xml
   projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
Log:
[maven-release-plugin]  copy for tag jboss-ejb3-core-1.0.0-Beta3

Copied: projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3 (from rev 78490, projects/ejb3/trunk/core)

Deleted: projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/pom.xml
===================================================================
--- projects/ejb3/trunk/core/pom.xml	2008-09-12 15:14:03 UTC (rev 78490)
+++ projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/pom.xml	2008-09-12 17:04:49 UTC (rev 78494)
@@ -1,577 +0,0 @@
-<!--
-  vi:ts=2:sw=2:expandtab
--->
-<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">
-
-  <!-- Parent -->
-  <parent>
-    <groupId>org.jboss.ejb3</groupId>
-    <artifactId>jboss-ejb3-build</artifactId>
-    <version>1.0.0-Beta1</version>
-    <relativePath>../build/pom.xml</relativePath>
-  </parent>
-
-  <!-- POM Model Version -->
-  <modelVersion>4.0.0</modelVersion>
-
-  <!-- Artifact Information -->
-  <artifactId>jboss-ejb3-core</artifactId>
-  <packaging>jar</packaging>
-  <version>1.0.0-SNAPSHOT</version>
-  <name>JBoss EJB 3.0 Core</name>
-  <url>http://labs.jboss.com/jbossejb3</url>
-  <description>JBoss EJB 3.0 Core</description>
-
-  <repositories>
-    <!-- APIviz repository -->
-    <repository>
-      <id>apiviz.release</id>
-      <name>APIviz releases</name>
-      <url>http://apiviz.googlecode.com/svn/site/repo/mvn/release</url>
-      <releases>
-
-        <enabled>true</enabled>
-      </releases>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-    </repository>
-  </repositories>
-
-  <!-- Properties -->
-
-  <properties>
-    <version.org.jboss.jboss-as>5.0.0.Beta4</version.org.jboss.jboss-as>
-  </properties>
-
-  <!-- Build Information -->
-  <build>
-
-    <plugins>
-
-      <!-- Assembly Plugin -->
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>2.2-beta-1</version>
-        <executions>
-          <execution>
-            <id>make-assembly</id><!-- this is used for inheritance merges -->
-            <phase>package</phase>
-            <goals>
-              <goal>attached</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <!-- JBoss EJB3 Client JAR -->
-          <descriptors>
-            <descriptor>jboss-ejb3-client.xml</descriptor>
-          </descriptors>
-          <attach>true</attach>
-        </configuration>
-        <inherited>false</inherited>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-<!--
-        <executions>
-          <execution>
-            <id>attach-javadoc</id>
-            <phase>package</phase>
-            <goals>
-              <goal>jar</goal>
-            </goals>
-          </execution>
-        </executions>
--->
-        <configuration>
-          <doclet>net.gleamynode.apiviz.APIviz</doclet>
-          <docletArtifact>
-            <groupId>net.gleamynode.apiviz</groupId>
-            <artifactId>apiviz</artifactId>
-            <version>1.0.3</version>
-          </docletArtifact>
-<!--
-          <aggregate>true</aggregate>
-          <encoding>UTF-8</encoding>
-          <locale>en_US</locale>
--->
-        </configuration>
-      </plugin>
-
-    </plugins>
-
-  </build>
-
-  <!-- Dependencies -->
-
-  <dependencies>
-
-    <!-- Because AOP doesn't declare a proper dependency -->
-    <dependency>
-      <groupId>javassist</groupId>
-      <artifactId>javassist</artifactId>
-      <version>3.7.1.GA</version>
-    </dependency>
-
-    <dependency>
-      <groupId>javax.xml.soap</groupId>
-      <artifactId>saaj-api</artifactId>
-      <version>1.3</version>
-      <scope>test</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>javax.mail</groupId>
-      <artifactId>mail</artifactId>
-      <version>1.4</version>
-      <scope>test</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>jboss.jbossts</groupId>
-      <artifactId>jbossjta</artifactId>
-      <version>4.3.0.GA</version>
-      <scope>test</scope>
-    </dependency>
-    
-    <!-- To actually run SimpleTransactionService -->
-    <dependency>
-      <groupId>jboss.jbossts</groupId>
-      <artifactId>jbossts-common</artifactId>
-      <version>4.3.0.GA</version>
-      <scope>test</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.hibernate</groupId>
-      <artifactId>hibernate</artifactId>
-      <version>3.2.6.ga</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.hibernate</groupId>
-      <artifactId>hibernate-annotations</artifactId>
-      <version>3.3.1.GA</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.hibernate</groupId>
-      <artifactId>hibernate-entitymanager</artifactId>
-      <version>3.3.2.GA</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.metadata</groupId>
-      <artifactId>jboss-metadata</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>org.jboss.javaee</groupId>
-          <artifactId>jboss-javaee</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.logging</groupId>
-      <artifactId>jboss-logging-spi</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.test</groupId>
-      <artifactId>jboss-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.jboss.jbossas</groupId>
-      <artifactId>jboss-server-manager</artifactId>
-      <scope>test</scope>      
-    </dependency>  
-      
-    <dependency>
-      <groupId>org.jboss</groupId>
-      <artifactId>jboss-transaction-spi</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss</groupId>
-      <artifactId>jboss-vfs</artifactId>
-      <version>2.0.0.Beta13</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.naming</groupId>
-      <artifactId>jnpserver</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.aop</groupId>
-      <artifactId>jboss-aop</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>org.jboss</groupId>
-          <artifactId>javassist</artifactId>
-        </exclusion>        
-        <exclusion>
-          <groupId>org.jboss.microcontainer</groupId>
-          <artifactId>jboss-container</artifactId>
-        </exclusion>        
-      </exclusions>      
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.aop</groupId>
-      <artifactId>jboss-aop-aspects</artifactId>
-    </dependency>
-    
-    <!-- used in the basicbootstrap-beans.xml -->
-    <dependency>
-      <groupId>org.jboss.aop</groupId>
-      <artifactId>jboss-aop-deployer-jdk50</artifactId>
-      <version>2.0.0.CR10</version>
-      <scope>test</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.cache</groupId>
-      <artifactId>jbosscache-core</artifactId>
-      <!-- not used anywhere else -->
-      <version>2.1.1.GA</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.jboss.javaee</groupId>
-          <artifactId>jboss-javaee</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.aspects</groupId>
-      <artifactId>jboss-aspects-test</artifactId>
-      <version>1.0.0.Beta1</version>
-      <scope>test</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.aspects</groupId>
-      <artifactId>jboss-remoting-aspects</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.cluster</groupId>
-      <artifactId>jboss-ha-client</artifactId>
-      <version>1.1.0.CR4</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.jboss.aspects</groupId>
-          <artifactId>jboss-remoting-aspects</artifactId>            
-        </exclusion>
-        <exclusion>
-          <groupId>jboss.remoting</groupId>
-          <artifactId>jboss-remoting</artifactId>            
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.aop</groupId>
-          <artifactId>jboss-aop</artifactId>            
-        </exclusion>
-      </exclusions>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.cluster</groupId>
-      <artifactId>jboss-ha-server-api</artifactId>
-      <version>1.1.0.CR4</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.jboss</groupId>
-          <artifactId>jboss-common-core</artifactId>            
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.logging</groupId>
-          <artifactId>jboss-logging-spi</artifactId>            
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.cache</groupId>
-          <artifactId>jbosscache-core</artifactId>            
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.cache</groupId>
-          <artifactId>jbosscache-pojo</artifactId>            
-        </exclusion>
-        <exclusion>
-          <groupId>jgroups</groupId>
-          <artifactId>jgroups</artifactId>            
-        </exclusion>
-      </exclusions>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.ejb3</groupId>
-      <artifactId>jboss-ejb3-async</artifactId>
-      <version>0.1.1</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.ejb3</groupId>
-      <artifactId>jboss-ejb3-cache</artifactId>
-      <version>0.13.0</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.ejb3</groupId>
-      <artifactId>jboss-ejb3-common</artifactId>
-      <version>0.1.6</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.jboss.ejb3</groupId>
-      <artifactId>jboss-ejb3-security</artifactId>
-      <version>1.0.0-Beta1</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.ejb3</groupId>
-      <artifactId>jboss-ejb3-ext-api</artifactId>
-      <version>0.4</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.ejb3</groupId>
-      <artifactId>jboss-ejb3-ext-api-impl</artifactId>
-      <version>0.4.1</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.ejb3</groupId>
-      <artifactId>jboss-ejb3-interceptors</artifactId>
-      <version>1.0.0-Beta1</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.ejb3</groupId>
-      <artifactId>jboss-ejb3-metadata</artifactId>
-      <version>0.13.0</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.ejb3</groupId>
-      <artifactId>jboss-ejb3-proxy</artifactId>
-      <version>0.1.5</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.ejb3</groupId>
-      <artifactId>jboss-ejb3-proxy-clustered</artifactId>
-      <version>0.1.3</version>
-    </dependency>
-   
-    <dependency>
-      <groupId>org.jboss.ejb3</groupId>
-      <artifactId>jboss-ejb3-test</artifactId>
-      <version>0.1.3</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.jboss.ejb3</groupId>
-      <artifactId>jboss-ejb3-transactions</artifactId>
-      <version>0.13.6</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.jboss.embedded</groupId>
-      <artifactId>jboss-embedded</artifactId>
-      <version>beta3</version>
-      <scope>test</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.javaee</groupId>
-      <artifactId>jboss-ejb-api</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.javaee</groupId>
-      <artifactId>jboss-jacc-api</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.javaee</groupId>
-      <artifactId>jboss-jca-api</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.jboss.javaee</groupId>
-      <artifactId>jboss-jms-api</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.javaee</groupId>
-      <artifactId>jboss-servlet-api</artifactId>
-    </dependency>
-    
-    <!-- those needs to be removed - EJBTHREE-1340 -->
-    <dependency>
-      <groupId>org.jboss.jbossas</groupId>
-      <artifactId>jboss-as-main</artifactId>
-      <version>${version.org.jboss.jboss-as}</version>
-      <scope>provided</scope>
-    </dependency>     
-    <dependency>
-      <groupId>org.jboss.jbossas</groupId>
-      <artifactId>jboss-as-system</artifactId>
-      <version>${version.org.jboss.jboss-as}</version>
-      <scope>provided</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>org.jboss</groupId>
-          <artifactId>javassist</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.microcontainer</groupId>
-          <artifactId>jboss-aop-mc-int</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.microcontainer</groupId>
-          <artifactId>jboss-container</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.microcontainer</groupId>
-          <artifactId>jboss-deployers-impl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.microcontainer</groupId>
-          <artifactId>jboss-deployers-spi</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.jboss.jbossas</groupId>
-      <artifactId>jboss-as-system-jmx</artifactId>
-      <version>${version.org.jboss.jboss-as}</version>
-      <scope>provided</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>org.jboss</groupId>
-          <artifactId>javassist</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.microcontainer</groupId>
-          <artifactId>jboss-aop-mc-int</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.microcontainer</groupId>
-          <artifactId>jboss-container</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.microcontainer</groupId>
-          <artifactId>jboss-deployers-impl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.microcontainer</groupId>
-          <artifactId>jboss-deployers-spi</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.jboss.jbossas</groupId>
-      <artifactId>jboss-as-mbeans</artifactId>
-      <version>${version.org.jboss.jboss-as}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.jboss</groupId>
-          <artifactId>jboss-test</artifactId>
-        </exclusion>        
-      </exclusions>      
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.jboss.jbossas</groupId>
-      <artifactId>jboss-as-j2se</artifactId>
-      <version>${version.org.jboss.jboss-as}</version>
-      <scope>provided</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>org.jboss.microcontainer</groupId>
-          <artifactId>jboss-container</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    
-    <!-- this needs to be removed - EJBTHREE-1343 -->
-    <dependency>
-      <groupId>org.jboss.jbossas</groupId>
-      <artifactId>jboss-as-server</artifactId>
-      <version>${version.org.jboss.jboss-as}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>jboss</groupId>
-          <artifactId>jboss-remoting</artifactId>
-        </exclusion>        
-        <exclusion>
-          <groupId>org.jboss</groupId>
-          <artifactId>jboss-metadata</artifactId>
-        </exclusion>        
-        <exclusion>
-          <groupId>org.jboss.jbossas</groupId>
-          <artifactId>jboss-as-security</artifactId>
-        </exclusion>        
-      </exclusions>      
-      <scope>provided</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.jpa</groupId>
-      <artifactId>jboss-jpa-deployers</artifactId>
-      <version>0.1.1</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.jboss.microcontainer</groupId>
-      <artifactId>jboss-deployers-core-spi</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.microcontainer</groupId>
-      <artifactId>jboss-kernel</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.security</groupId>
-      <artifactId>jboss-security-spi</artifactId>
-      <version>2.0.2.CR5</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.jboss.security</groupId>
-      <artifactId>jbosssx</artifactId>
-      <version>2.0.2.CR5</version>
-    </dependency>
-    
-     <dependency>
-      <groupId>org.jboss.ws</groupId>
-      <artifactId>jbossws-spi</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>quartz</groupId>
-      <artifactId>quartz</artifactId>
-      <version>1.6.0</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>trove</groupId>
-      <artifactId>trove</artifactId>
-    </dependency>
-    
-  </dependencies>
-</project>

Copied: projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/pom.xml (from rev 78493, projects/ejb3/trunk/core/pom.xml)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/pom.xml	                        (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/pom.xml	2008-09-12 17:04:49 UTC (rev 78494)
@@ -0,0 +1,583 @@
+<!--
+  vi:ts=2:sw=2:expandtab
+-->
+<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">
+
+  <!-- Parent -->
+  <parent>
+    <groupId>org.jboss.ejb3</groupId>
+    <artifactId>jboss-ejb3-build</artifactId>
+    <version>1.0.0-Beta1</version>
+    <relativePath>../build/pom.xml</relativePath>
+  </parent>
+
+  <!-- POM Model Version -->
+  <modelVersion>4.0.0</modelVersion>
+
+  <!-- Artifact Information -->
+  <artifactId>jboss-ejb3-core</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0.0-Beta3</version>
+  <name>JBoss EJB 3.0 Core</name>
+  <url>http://labs.jboss.com/jbossejb3</url>
+  <description>JBoss EJB 3.0 Core</description>
+
+  <repositories>
+    <!-- APIviz repository -->
+    <repository>
+      <id>apiviz.release</id>
+      <name>APIviz releases</name>
+      <url>http://apiviz.googlecode.com/svn/site/repo/mvn/release</url>
+      <releases>
+
+        <enabled>true</enabled>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
+  </repositories>
+
+  <!-- Properties -->
+
+  <properties>
+    <version.org.jboss.jboss-as>5.0.0.Beta4</version.org.jboss.jboss-as>
+  </properties>
+
+  <!-- Build Information -->
+  <build>
+
+    <plugins>
+
+      <!-- Assembly Plugin -->
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <version>2.2-beta-1</version>
+        <executions>
+          <execution>
+            <id>make-assembly</id><!-- this is used for inheritance merges -->
+            <phase>package</phase>
+            <goals>
+              <goal>attached</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <!-- JBoss EJB3 Client JAR -->
+          <descriptors>
+            <descriptor>jboss-ejb3-client.xml</descriptor>
+          </descriptors>
+          <attach>true</attach>
+        </configuration>
+        <inherited>false</inherited>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+<!--
+        <executions>
+          <execution>
+            <id>attach-javadoc</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+        </executions>
+-->
+        <configuration>
+          <doclet>net.gleamynode.apiviz.APIviz</doclet>
+          <docletArtifact>
+            <groupId>net.gleamynode.apiviz</groupId>
+            <artifactId>apiviz</artifactId>
+            <version>1.0.3</version>
+          </docletArtifact>
+<!--
+          <aggregate>true</aggregate>
+          <encoding>UTF-8</encoding>
+          <locale>en_US</locale>
+-->
+        </configuration>
+      </plugin>
+
+    </plugins>
+
+  </build>
+
+  <!-- Dependencies -->
+
+  <dependencies>
+
+    <!-- Because AOP doesn't declare a proper dependency -->
+    <dependency>
+      <groupId>javassist</groupId>
+      <artifactId>javassist</artifactId>
+      <version>3.7.1.GA</version>
+    </dependency>
+
+    <dependency>
+      <groupId>javax.xml.soap</groupId>
+      <artifactId>saaj-api</artifactId>
+      <version>1.3</version>
+      <scope>test</scope>
+    </dependency>
+    
+    <dependency>
+      <groupId>javax.mail</groupId>
+      <artifactId>mail</artifactId>
+      <version>1.4</version>
+      <scope>test</scope>
+    </dependency>
+    
+    <dependency>
+      <groupId>jboss.jbossts</groupId>
+      <artifactId>jbossjta</artifactId>
+      <version>4.3.0.GA</version>
+      <scope>test</scope>
+    </dependency>
+    
+    <!-- To actually run SimpleTransactionService -->
+    <dependency>
+      <groupId>jboss.jbossts</groupId>
+      <artifactId>jbossts-common</artifactId>
+      <version>4.3.0.GA</version>
+      <scope>test</scope>
+    </dependency>
+    
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.hibernate</groupId>
+      <artifactId>hibernate</artifactId>
+      <version>3.2.6.ga</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.hibernate</groupId>
+      <artifactId>hibernate-annotations</artifactId>
+      <version>3.3.1.GA</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.hibernate</groupId>
+      <artifactId>hibernate-entitymanager</artifactId>
+      <version>3.3.2.GA</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.metadata</groupId>
+      <artifactId>jboss-metadata</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss.javaee</groupId>
+          <artifactId>jboss-javaee</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.logging</groupId>
+      <artifactId>jboss-logging-spi</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.test</groupId>
+      <artifactId>jboss-test</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.jbossas</groupId>
+      <artifactId>jboss-server-manager</artifactId>
+      <scope>test</scope>      
+    </dependency>  
+      
+    <dependency>
+      <groupId>org.jboss</groupId>
+      <artifactId>jboss-transaction-spi</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss</groupId>
+      <artifactId>jboss-vfs</artifactId>
+      <version>2.0.0.Beta13</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.naming</groupId>
+      <artifactId>jnpserver</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.aop</groupId>
+      <artifactId>jboss-aop</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>javassist</artifactId>
+        </exclusion>        
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-container</artifactId>
+        </exclusion>        
+      </exclusions>      
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.aop</groupId>
+      <artifactId>jboss-aop-aspects</artifactId>
+    </dependency>
+    
+    <!-- used in the basicbootstrap-beans.xml -->
+    <dependency>
+      <groupId>org.jboss.aop</groupId>
+      <artifactId>jboss-aop-deployer-jdk50</artifactId>
+      <version>2.0.0.CR10</version>
+      <scope>test</scope>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.cache</groupId>
+      <artifactId>jbosscache-core</artifactId>
+      <!-- not used anywhere else -->
+      <version>2.1.1.GA</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss.javaee</groupId>
+          <artifactId>jboss-javaee</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.aspects</groupId>
+      <artifactId>jboss-aspects-test</artifactId>
+      <version>1.0.0.Beta1</version>
+      <scope>test</scope>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.aspects</groupId>
+      <artifactId>jboss-remoting-aspects</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.cluster</groupId>
+      <artifactId>jboss-ha-client</artifactId>
+      <version>1.1.0.CR4</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss.aspects</groupId>
+          <artifactId>jboss-remoting-aspects</artifactId>            
+        </exclusion>
+        <exclusion>
+          <groupId>jboss.remoting</groupId>
+          <artifactId>jboss-remoting</artifactId>            
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.aop</groupId>
+          <artifactId>jboss-aop</artifactId>            
+        </exclusion>
+      </exclusions>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.cluster</groupId>
+      <artifactId>jboss-ha-server-api</artifactId>
+      <version>1.1.0.CR4</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-common-core</artifactId>            
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.logging</groupId>
+          <artifactId>jboss-logging-spi</artifactId>            
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.cache</groupId>
+          <artifactId>jbosscache-core</artifactId>            
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.cache</groupId>
+          <artifactId>jbosscache-pojo</artifactId>            
+        </exclusion>
+        <exclusion>
+          <groupId>jgroups</groupId>
+          <artifactId>jgroups</artifactId>            
+        </exclusion>
+      </exclusions>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.ejb3</groupId>
+      <artifactId>jboss-ejb3-async</artifactId>
+      <version>0.1.1</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.ejb3</groupId>
+      <artifactId>jboss-ejb3-cache</artifactId>
+      <version>0.13.0</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.ejb3</groupId>
+      <artifactId>jboss-ejb3-common</artifactId>
+      <version>0.1.6</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.ejb3</groupId>
+      <artifactId>jboss-ejb3-security</artifactId>
+      <version>1.0.0-Beta1</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.ejb3</groupId>
+      <artifactId>jboss-ejb3-ext-api</artifactId>
+      <version>0.4</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.ejb3</groupId>
+      <artifactId>jboss-ejb3-ext-api-impl</artifactId>
+      <version>0.4.1</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.ejb3</groupId>
+      <artifactId>jboss-ejb3-interceptors</artifactId>
+      <version>1.0.0-Beta1</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.ejb3</groupId>
+      <artifactId>jboss-ejb3-metadata</artifactId>
+      <version>0.13.0</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.ejb3</groupId>
+      <artifactId>jboss-ejb3-proxy</artifactId>
+      <version>0.1.5</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.ejb3</groupId>
+      <artifactId>jboss-ejb3-proxy-clustered</artifactId>
+      <version>0.1.3</version>
+    </dependency>
+   
+    <dependency>
+      <groupId>org.jboss.ejb3</groupId>
+      <artifactId>jboss-ejb3-test</artifactId>
+      <version>0.1.3</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.ejb3</groupId>
+      <artifactId>jboss-ejb3-transactions</artifactId>
+      <version>0.13.6</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.embedded</groupId>
+      <artifactId>jboss-embedded</artifactId>
+      <version>beta3</version>
+      <scope>test</scope>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.javaee</groupId>
+      <artifactId>jboss-ejb-api</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.javaee</groupId>
+      <artifactId>jboss-jacc-api</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.javaee</groupId>
+      <artifactId>jboss-jca-api</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.javaee</groupId>
+      <artifactId>jboss-jms-api</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.javaee</groupId>
+      <artifactId>jboss-servlet-api</artifactId>
+    </dependency>
+    
+    <!-- those needs to be removed - EJBTHREE-1340 -->
+    <dependency>
+      <groupId>org.jboss.jbossas</groupId>
+      <artifactId>jboss-as-main</artifactId>
+      <version>${version.org.jboss.jboss-as}</version>
+      <scope>provided</scope>
+    </dependency>     
+    <dependency>
+      <groupId>org.jboss.jbossas</groupId>
+      <artifactId>jboss-as-system</artifactId>
+      <version>${version.org.jboss.jboss-as}</version>
+      <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>javassist</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-aop-mc-int</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-container</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-deployers-impl</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-deployers-spi</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.jbossas</groupId>
+      <artifactId>jboss-as-system-jmx</artifactId>
+      <version>${version.org.jboss.jboss-as}</version>
+      <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>javassist</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-aop-mc-int</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-container</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-deployers-impl</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-deployers-spi</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.jbossas</groupId>
+      <artifactId>jboss-as-mbeans</artifactId>
+      <version>${version.org.jboss.jboss-as}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-test</artifactId>
+        </exclusion>        
+      </exclusions>      
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.jbossas</groupId>
+      <artifactId>jboss-as-j2se</artifactId>
+      <version>${version.org.jboss.jboss-as}</version>
+      <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-container</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    
+    <!-- this needs to be removed - EJBTHREE-1343 -->
+    <dependency>
+      <groupId>org.jboss.jbossas</groupId>
+      <artifactId>jboss-as-server</artifactId>
+      <version>${version.org.jboss.jboss-as}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>jboss</groupId>
+          <artifactId>jboss-remoting</artifactId>
+        </exclusion>        
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-metadata</artifactId>
+        </exclusion>        
+        <exclusion>
+          <groupId>org.jboss.jbossas</groupId>
+          <artifactId>jboss-as-security</artifactId>
+        </exclusion>        
+      </exclusions>      
+      <scope>provided</scope>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.jpa</groupId>
+      <artifactId>jboss-jpa-deployers</artifactId>
+      <version>0.1.1</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.microcontainer</groupId>
+      <artifactId>jboss-deployers-core-spi</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.microcontainer</groupId>
+      <artifactId>jboss-kernel</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.security</groupId>
+      <artifactId>jboss-security-spi</artifactId>
+      <version>2.0.2.CR5</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.security</groupId>
+      <artifactId>jbosssx</artifactId>
+      <version>2.0.2.CR5</version>
+    </dependency>
+    
+     <dependency>
+      <groupId>org.jboss.ws</groupId>
+      <artifactId>jbossws-spi</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>quartz</groupId>
+      <artifactId>quartz</artifactId>
+      <version>1.6.0</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>trove</groupId>
+      <artifactId>trove</artifactId>
+    </dependency>
+    
+  </dependencies>
+
+  <scm>
+    <connection>scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3</connection>
+    <developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3</developerConnection>
+    <url>http://anonsvn.jboss.org/repos/jbossas/projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3</url>
+  </scm>
+</project>

Deleted: projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2008-09-12 15:14:03 UTC (rev 78490)
+++ projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2008-09-12 17:04:49 UTC (rev 78494)
@@ -1,785 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.ejb3.stateless;
-
-
-import java.io.Serializable;
-import java.lang.reflect.Method;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Map;
-import java.util.Set;
-
-import javax.ejb.EJBContext;
-import javax.ejb.EJBException;
-import javax.ejb.EJBObject;
-import javax.ejb.Handle;
-import javax.ejb.Timer;
-import javax.ejb.TimerService;
-import javax.naming.NamingException;
-
-import org.jboss.aop.Advisor;
-import org.jboss.aop.Domain;
-import org.jboss.aop.MethodInfo;
-import org.jboss.aop.joinpoint.Invocation;
-import org.jboss.aop.joinpoint.InvocationResponse;
-import org.jboss.aop.joinpoint.MethodInvocation;
-import org.jboss.aspects.asynch.FutureHolder;
-import org.jboss.ejb.AllowedOperationsAssociation;
-import org.jboss.ejb.AllowedOperationsFlags;
-import org.jboss.ejb3.BeanContext;
-import org.jboss.ejb3.BeanContextLifecycleCallback;
-import org.jboss.ejb3.EJBContainerInvocation;
-import org.jboss.ejb3.Ejb3Deployment;
-import org.jboss.ejb3.annotation.Clustered;
-import org.jboss.ejb3.annotation.LocalBinding;
-import org.jboss.ejb3.annotation.RemoteBinding;
-import org.jboss.ejb3.common.lang.SerializableMethod;
-import org.jboss.ejb3.proxy.ProxyUtils;
-import org.jboss.ejb3.proxy.clustered.objectstore.ClusteredObjectStoreBindings;
-import org.jboss.ejb3.proxy.container.InvokableContext;
-import org.jboss.ejb3.proxy.factory.ProxyFactoryHelper;
-import org.jboss.ejb3.proxy.factory.SessionProxyFactory;
-import org.jboss.ejb3.proxy.factory.stateless.BaseStatelessRemoteProxyFactory;
-import org.jboss.ejb3.proxy.factory.stateless.StatelessClusterProxyFactory;
-import org.jboss.ejb3.proxy.factory.stateless.StatelessLocalProxyFactory;
-import org.jboss.ejb3.proxy.factory.stateless.StatelessRemoteProxyFactory;
-import org.jboss.ejb3.proxy.objectstore.ObjectStoreBindings;
-import org.jboss.ejb3.proxy.remoting.SessionSpecRemotingMetadata;
-import org.jboss.ejb3.session.SessionContainer;
-import org.jboss.ejb3.session.SessionSpecContainer;
-import org.jboss.ejb3.stateful.StatefulRemoteInvocation;
-import org.jboss.ejb3.timerservice.TimedObjectInvoker;
-import org.jboss.ejb3.timerservice.TimerServiceFactory;
-import org.jboss.injection.WebServiceContextProxy;
-import org.jboss.injection.lang.reflect.BeanProperty;
-import org.jboss.logging.Logger;
-import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
-import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
-import org.jboss.proxy.ejb.handle.HomeHandleImpl;
-import org.jboss.wsf.spi.SPIProvider;
-import org.jboss.wsf.spi.SPIProviderResolver;
-import org.jboss.wsf.spi.invocation.ExtensibleWebServiceContext;
-import org.jboss.wsf.spi.invocation.InvocationType;
-import org.jboss.wsf.spi.invocation.WebServiceContextFactory;
-import org.jboss.wsf.spi.invocation.integration.InvocationContextCallback;
-import org.jboss.wsf.spi.invocation.integration.ServiceEndpointContainer;
-
-
-/**
- * Comment
- *
- * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
- * @version $Revision$
- */
-public class StatelessContainer extends SessionSpecContainer
-  implements TimedObjectInvoker, ServiceEndpointContainer, InvokableContext
-{
-   private static final Logger log = Logger.getLogger(StatelessContainer.class);
-
-   protected TimerService timerService;
-   private Method timeout;
-   private StatelessDelegateWrapper mbean = new StatelessDelegateWrapper(this);
-
-   public StatelessContainer(ClassLoader cl, String beanClassName, String ejbName, Domain domain,
-                             Hashtable ctxProperties, Ejb3Deployment deployment, JBossSessionBeanMetaData beanMetaData) throws ClassNotFoundException
-   {
-      super(cl, beanClassName, ejbName, domain, ctxProperties, deployment, beanMetaData);
-      
-      initializeTimeout();
-   }
-
-   @Override
-   public BeanContext<?> createBeanContext()
-   {
-      return new StatelessBeanContext(this, construct());
-   }
-   
-   @Override
-   protected StatelessLocalProxyFactory getProxyFactory(LocalBinding binding)
-   {
-      StatelessLocalProxyFactory factory = (StatelessLocalProxyFactory) this.proxyDeployer.getProxyFactory(binding);
-
-      if (factory == null)
-      {
-         factory = new StatelessLocalProxyFactory(this, binding);
-         try
-         {
-            factory.init();
-         }
-         catch (Exception e)
-         {
-            throw new RuntimeException(e);
-         }
-      }
-
-      return factory;
-   }
-   
-   @Override
-   protected BaseStatelessRemoteProxyFactory getProxyFactory(RemoteBinding binding)
-   {
-      BaseStatelessRemoteProxyFactory factory = (BaseStatelessRemoteProxyFactory) this.proxyDeployer
-            .getProxyFactory(binding);
-
-      if (factory == null)
-      {
-         Clustered clustered = getAnnotation(Clustered.class);
-         if (clustered != null)
-            factory = new StatelessClusterProxyFactory(this, binding, clustered);
-         else
-            factory = new StatelessRemoteProxyFactory(this, binding);
-         
-         try
-         {
-            factory.init();
-         }
-         catch (Exception e)
-         {
-            throw new RuntimeException(e);
-         }
-      }
-
-      return factory;
-   }
-   
-   /**
-    * Create a local proxy (EJBLocalObject) for an enterprise bean identified by id, with
-    * the specified LocalBinding
-    * 
-    * @param id
-    * @return
-    * @throws Exception
-    */
-   @Override
-   public Object createProxyLocalEjb21(LocalBinding binding, String businessInterfaceType) throws Exception
-   {
-      StatelessLocalProxyFactory proxyFactory = this.getProxyFactory(binding);
-      return proxyFactory.createProxyEjb21(businessInterfaceType);
-   }
-   
-   @Override
-   public Object createProxyRemoteEjb21(RemoteBinding binding, String businessInterfaceType) throws Exception
-   {
-      BaseStatelessRemoteProxyFactory proxyFactory = this.getProxyFactory(binding);
-      return proxyFactory.createProxyEjb21(businessInterfaceType);
-   }
-   
-   public Serializable createSession(Class<?> initTypes[], Object initArgs[])
-   {
-      if((initTypes != null && initTypes.length > 0) || (initArgs != null && initArgs.length > 0))
-         throw new IllegalArgumentException("stateless bean create method must take no arguments (EJB3 4.5)");
-      // a stateless bean has no sessions
-      // TODO: pool stuff
-      return null;
-   }
-   
-   public boolean isClustered()
-   {
-      return isAnnotationPresent(Clustered.class);
-   }
-   
-   public Object getMBean()
-   {
-      return mbean;
-   }
-   
-   private void initializeTimeout()
-   {
-      JBossSessionBeanMetaData metaData = getMetaData();
-      NamedMethodMetaData timeoutMethodMetaData = null;
-      if(metaData != null)
-         timeoutMethodMetaData = metaData.getTimeoutMethod();
-      this.timeout = getTimeoutCallback(timeoutMethodMetaData, getBeanClass());
-   }
-   
-   @Override
-   protected void lockedStart() throws Exception
-   {
-      try
-      {
-         super.lockedStart();
-         
-         timerService = TimerServiceFactory.getInstance().createTimerService(this, this);
-         
-         TimerServiceFactory.getInstance().restoreTimerService(timerService);
-      }
-      catch (Exception e)
-      {
-         try
-         {
-            this.lockedStop();
-         }
-         catch (Exception ignore)
-         {
-            log.debug("Failed to cleanup after start() failure", ignore);
-         }
-         throw e;
-      }
-   }
-
-   @Override
-   protected void lockedStop() throws Exception
-   {
-      if (timerService != null)
-      {
-         TimerServiceFactory.getInstance().removeTimerService(timerService);
-         timerService = null;
-      }
-      
-      super.lockedStop();
-   }
-
-   public TimerService getTimerService()
-   {
-      return timerService;
-   }
-
-   public TimerService getTimerService(Object pKey)
-   {
-      assert timerService != null : "Timer Service not yet initialized";
-      return timerService;
-   }
-   
-   public void callTimeout(Timer timer) throws Exception
-   {
-      if (timeout == null) throw new EJBException("No method has been annotated with @Timeout");
-      Object[] args = {timer};
-      ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
-      try
-      {
-         AllowedOperationsAssociation.pushInMethodFlag(AllowedOperationsFlags.IN_EJB_TIMEOUT);
-         try
-         {
-            MethodInfo info = super.getMethodInfo(timeout);
-            EJBContainerInvocation nextInvocation = new EJBContainerInvocation(info);
-            nextInvocation.setAdvisor(getAdvisor());
-            nextInvocation.setArguments(args);
-            nextInvocation.invokeNext();
-         }
-         catch (Throwable throwable)
-         {
-            if (throwable instanceof Exception) throw (Exception) throwable;
-            throw new RuntimeException(throwable);
-         }
-         finally
-         {
-            AllowedOperationsAssociation.popInMethodFlag();
-         }
-      }
-      finally
-      {
-         Thread.currentThread().setContextClassLoader(oldLoader);
-      }
-   }
-
-   /**
-    * Performs a synchronous local invocation
-    */
-   public Object localInvoke(Method method, Object[] args) throws Throwable
-   {
-      return localInvoke(method, args, null);
-   }
-
-   /**
-    * Performs a synchronous or asynchronous local invocation
-    *
-    * @param provider If null a synchronous invocation, otherwise an asynchronous
-    */
-   public Object localInvoke(Method method, Object[] args, FutureHolder provider) throws Throwable
-   {
-      return localInvoke(method, args, provider, null);
-   }
-   
-   public Object localInvoke(Object id, Method method, Object[] args, FutureHolder provider) throws Throwable
-   {
-      return localInvoke(method, args, provider);
-   }
-   
-   public Object localInvoke(Method method, Object[] args, FutureHolder provider, BeanContextLifecycleCallback<StatelessBeanContext> callback) throws Throwable
-   {
-      long start = System.currentTimeMillis();
-      
-      ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
-      try
-      {
-         MethodInfo info = getMethodInfo(method);
-         Method unadvisedMethod = info.getUnadvisedMethod();
-
-         try
-         {
-            invokeStats.callIn();
-            
-            //invokedMethod.push(new SerializableMethod(unadvisedMethod, unadvisedMethod.getClass()));
-
-            if (unadvisedMethod != null && isHomeMethod(unadvisedMethod))
-            {
-               return localHomeInvoke(unadvisedMethod, args);
-            }
-
-            EJBContainerInvocation<StatelessContainer, StatelessBeanContext> nextInvocation = new EJBContainerInvocation<StatelessContainer, StatelessBeanContext>(info);
-            nextInvocation.setAdvisor(getAdvisor());
-            nextInvocation.setArguments(args);
-            nextInvocation.setContextCallback(callback);
-
-            ProxyUtils.addLocalAsynchronousInfo(nextInvocation, provider);
-            return nextInvocation.invokeNext();
-         }
-         finally
-         {
-            if (unadvisedMethod != null)
-            {
-               long end = System.currentTimeMillis();
-               long elapsed = end - start;
-               invokeStats.updateStats(unadvisedMethod, elapsed);
-            }
-            
-            invokeStats.callOut();
-            
-            //invokedMethod.pop();
-         }
-      }
-      finally
-      {
-         Thread.currentThread().setContextClassLoader(oldLoader);
-      }
-   }
-   
-   /**
-    * Remote Invocation entry point, as delegated from
-    * ClassProxyHack (Remoting Dispatcher)
-    */
-   public InvocationResponse dynamicInvoke(Invocation invocation) throws Throwable
-   {
-      /*
-       * Initialize
-       */
-
-      // Mark the start time
-      long start = System.currentTimeMillis();
-
-      // Create a pointer to a new Invocation
-      EJBContainerInvocation newSi = null;
-
-      // Create a pointer to the response we'll return
-      InvocationResponse response = null;
-      
-
-      /*
-       * Setup Environment (Stack/Thread)
-       */
-
-      // Hold a reference to the existing TCL
-      ClassLoader originalLoader = Thread.currentThread().getContextClassLoader();
-
-      // Set the Container's CL as TCL, required to unmarshall methods from the bean impl class
-      Thread.currentThread().setContextClassLoader(this.getClassloader());
-
-      // Push the ENC onto the stack
-      pushEnc();
-      
-      try
-      {
-         
-         /*
-          * Obtain the target method (unmarshall from invocation)
-          */
-
-         // Cast
-         assert invocation instanceof StatefulRemoteInvocation : SessionContainer.class.getName()
-               + ".dynamicInoke supports only " + StatefulRemoteInvocation.class.getSimpleName()
-               + ", but has been passed: " + invocation;
-         MethodInvocation si = (MethodInvocation) invocation;
-
-         // Get the method hash
-         long methodHash = si.getMethodHash();
-         log.debug("Received dynamic invocation for method with hash: " + methodHash);
-
-         // Get the Method via MethodInfo from the Advisor
-         Advisor advisor = this.getAdvisor();
-         MethodInfo info = advisor.getMethodInfo(methodHash);
-         Method unadvisedMethod = info.getMethod();
-         SerializableMethod unadvisedMethodSerializable = new SerializableMethod(unadvisedMethod);
-         
-         try
-         {
-            invokeStats.callIn();
-            
-            /*
-             * Set the invoked method
-             */
-            //TODO Remove when CurrentInvocation is ironed out
-            
-            // Get the invoked method from invocation metadata
-            Object objInvokedMethod = si.getMetaData(SessionSpecRemotingMetadata.TAG_SESSION_INVOCATION,SessionSpecRemotingMetadata.KEY_INVOKED_METHOD);
-            assert objInvokedMethod !=null : "Invoked Method must be set on invocation metadata";
-            assert objInvokedMethod instanceof SerializableMethod : "Invoked Method set on invocation metadata is not of type " + SerializableMethod.class.getName() + ", instead: " + objInvokedMethod;
-            SerializableMethod invokedMethod = (SerializableMethod)objInvokedMethod;
-            
-            // Set onto stack
-            SessionSpecContainer.invokedMethod.push(invokedMethod);
-
-            //invokedMethod.push(new SerializableMethod(unadvisedMethod, unadvisedMethod.getClass()));
-            Map responseContext = null;
-            Object rtn = null;
-            if (unadvisedMethod != null && isHomeMethod(unadvisedMethodSerializable))
-            {
-               rtn = invokeHomeMethod(info, si);
-            }
-            else if (info != null && unadvisedMethod != null && isEjbObjectMethod(unadvisedMethodSerializable))
-            {
-               rtn = invokeEJBObjectMethod(info, si);
-            }
-            else
-            {
-
-               newSi = new EJBContainerInvocation<StatelessContainer, StatelessBeanContext>(info);
-               newSi.setArguments(si.getArguments());
-               newSi.setMetaData(si.getMetaData());
-               //newSi.setAdvisor(getAdvisor());               
-               
-               try
-               {
-                  rtn = newSi.invokeNext();
-                  responseContext = newSi.getResponseContextInfo();
-               }
-               catch (Throwable throwable)
-               {
-                  responseContext = newSi.getResponseContextInfo();
-                  return marshallException(invocation, throwable, responseContext);
-               }
-               finally
-               {
-                  SessionSpecContainer.invokedMethod.pop();
-               }
-            }
-
-            response = marshallResponse(invocation, rtn, responseContext);
-            return response;
-         }
-         finally
-         {
-            if (unadvisedMethod != null)
-            {
-               long end = System.currentTimeMillis();
-               long elapsed = end - start;
-               invokeStats.updateStats(unadvisedMethod, elapsed);
-            }
-
-            invokeStats.callOut();
-
-            //invokedMethod.pop();
-         }
-      }
-      finally
-      {
-         Thread.currentThread().setContextClassLoader(originalLoader);
-      }
-   }
-
-   @Deprecated
-   public InvocationResponse dynamicInvoke(Object target, Invocation invocation) throws Throwable
-   {
-      long start = System.currentTimeMillis();
-      
-      ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
-      try
-      {
-         Thread.currentThread().setContextClassLoader(classloader);
-         MethodInvocation si = (MethodInvocation) invocation;
-         MethodInfo info = getAdvisor().getMethodInfo(si.getMethodHash());
-         if (info == null)
-         {
-            throw new RuntimeException("Could not resolve beanClass method from proxy call " + invocation);
-         }
-
-         Method unadvisedMethod = info.getUnadvisedMethod();
-         try
-         {
-            invokeStats.callIn();
-            
-            //invokedMethod.push(new SerializableMethod(unadvisedMethod, unadvisedMethod.getClass()));
-            Map responseContext = null;
-            Object rtn = null;
-            if (unadvisedMethod != null && isHomeMethod(unadvisedMethod))
-            {
-               rtn = invokeHomeMethod(info, si);
-            }
-            else if (info != null && unadvisedMethod != null && isEJBObjectMethod(unadvisedMethod))
-            {
-               rtn = invokeEJBObjectMethod(info, si);
-            }
-            else
-            {
-
-               EJBContainerInvocation newSi = null;
-
-               newSi = new EJBContainerInvocation<StatelessContainer, StatelessBeanContext>(info);
-               newSi.setArguments(si.getArguments());
-               newSi.setMetaData(si.getMetaData());
-               newSi.setAdvisor(getAdvisor());
-               try
-               {
-                  rtn = newSi.invokeNext();
-                  responseContext = newSi.getResponseContextInfo();
-               }
-               catch (Throwable throwable)
-               {
-                  responseContext = newSi.getResponseContextInfo();
-                  return marshallException(invocation, throwable, responseContext);
-               }
-            }
-
-            InvocationResponse response = marshallResponse(invocation, rtn, responseContext);
-            return response;
-         }
-         finally
-         {
-            if (unadvisedMethod != null)
-            {
-               long end = System.currentTimeMillis();
-               long elapsed = end - start;
-               invokeStats.updateStats(unadvisedMethod, elapsed);
-            }
-            
-            invokeStats.callOut();
-            
-            //invokedMethod.pop();
-         }
-      }
-      finally
-      {
-         Thread.currentThread().setContextClassLoader(oldLoader);
-      }
-   }
-
-
-   protected Object invokeEJBObjectMethod(MethodInfo info, MethodInvocation invocation) throws Throwable
-   {
-      Method unadvisedMethod = info.getUnadvisedMethod();
-      if (unadvisedMethod.getName().equals("getHandle"))
-      {
-         
-         StatelessHandleRemoteImpl handle = null;
-         RemoteBinding binding = this.getAnnotation(RemoteBinding.class);
-         BaseStatelessRemoteProxyFactory factory = this.getProxyFactory(binding);
-         handle = factory.createHandle();
-
-         return handle;
-      }
-      else if (unadvisedMethod.getName().equals("remove"))
-      {
-         return null;
-      }
-      else if (unadvisedMethod.getName().equals("getEJBHome"))
-      {
-         HomeHandleImpl homeHandle = null;
-
-         RemoteBinding remoteBindingAnnotation = this.getAnnotation(RemoteBinding.class);
-         if (remoteBindingAnnotation != null)
-            homeHandle = new HomeHandleImpl(ProxyFactoryHelper.getHomeJndiName(this));
-
-         return homeHandle.getEJBHome();
-      }
-      else if (unadvisedMethod.getName().equals("getPrimaryKey"))
-      {
-         return null;
-      }
-      else if (unadvisedMethod.getName().equals("isIdentical"))
-      {
-         return false;
-      }
-      else
-      {
-         return null;
-      }
-   }
-
-   public Object localHomeInvoke(Method method, Object[] args) throws Throwable
-   {
-      if (method.getName().equals("create"))
-      {
-         LocalBinding binding = this.getAnnotation(LocalBinding.class);
-
-         // FIXME: why this binding? Could be another one. (there is only one local binding, but that's another bug)
-
-         StatelessLocalProxyFactory factory = this.getProxyFactory(binding);
-
-         Object proxy = factory.createProxyEjb21(method.getReturnType().getName());
-
-         return proxy;
-      }
-      else
-      // remove
-      {
-         return null;
-      }
-   }
-
-   protected Object invokeHomeMethod(MethodInfo info, MethodInvocation invocation) throws Throwable
-   {
-      Method unadvisedMethod = info.getUnadvisedMethod();
-      if (unadvisedMethod.getName().equals("create"))
-      {
-         RemoteBinding binding = this.getRemoteBinding();
-
-         BaseStatelessRemoteProxyFactory factory = this.getProxyFactory(binding);
-
-         return factory.createProxyEjb21(unadvisedMethod.getReturnType().getName());
-      }
-      else
-      // remove
-      {
-         return null;
-      }
-   }
-
-   @Override
-   public Object getBusinessObject(BeanContext ctx, Class intf)
-   {
-      assert intf != null : "intf is null";
-      
-      try
-      {
-         
-         /*
-          * Get all business interfaces
-          */
-         Set<String> businessInterfaceNames = new HashSet<String>();
-         JBossSessionBeanMetaData smd= (JBossSessionBeanMetaData)this.getXml();
-         businessInterfaceNames.addAll(smd.getBusinessRemotes());
-         businessInterfaceNames.addAll(smd.getBusinessLocals());
-         
-         String interfaceName = intf.getName();
-         
-         if (!businessInterfaceNames.contains(interfaceName))
-            throw new IllegalStateException("Cannot find BusinessObject for interface: " + interfaceName);
-         
-         String jndiName = this.getXml().determineResolvedJndiName(interfaceName);
-         return getInitialContext().lookup(jndiName);
-      }
-      catch (NamingException e)
-      {
-         throw new RuntimeException("failed to invoke getBusinessObject", e);
-      }
-   }
-
-   protected void removeHandle(Handle handle)
-   {
-      throw new RuntimeException("NYI");
-   }
-
-   /**
-    * WS integration
-    * @return
-    */
-   public Class getServiceImplementationClass()
-   {
-      return this.getBeanClass();
-   }
-
-   /**
-    * WS Integration
-    * @param method
-    * @param args
-    * @param invCtxCallback
-    * @return
-    * @throws Throwable
-    */
-   public Object invokeEndpoint(Method method, Object[] args, InvocationContextCallback invCtxCallback) throws Throwable
-   {
-      // JAX-RPC message context
-      javax.xml.rpc.handler.MessageContext jaxrpcContext = invCtxCallback.get(javax.xml.rpc.handler.MessageContext.class);
-
-      // JAX-WS webservice context
-      SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
-      WebServiceContextFactory contextFactory = spiProvider.getSPI(WebServiceContextFactory.class);
-      ExtensibleWebServiceContext jaxwsContext = contextFactory.newWebServiceContext(
-        InvocationType.JAXWS_EJB3,
-        invCtxCallback.get(javax.xml.ws.handler.MessageContext.class)
-      );
-
-      // ThreadLocal association
-      WebServiceContextProxy.associateMessageContext(jaxwsContext);
-
-      // EJB3 Injection Callbacks
-      WSCallbackImpl ejb3Callback = new WSCallbackImpl( jaxrpcContext, jaxwsContext );
-
-      // Actual invocation
-      return this.localInvoke(method, args, null, ejb3Callback);
-   }
-
-   public String getContainerName()
-   {
-      String name = this.getObjectName() != null ? this.getObjectName().getCanonicalName() : null;
-      return name;
-   }
-   
-   /**
-    * Returns the name under which the JNDI Registrar for this container is bound
-    * 
-    * @return
-    */
-   protected String getJndiRegistrarBindName()
-   {
-      return isClustered() ? ClusteredObjectStoreBindings.CLUSTERED_OBJECTSTORE_BEAN_NAME_JNDI_REGISTRAR_SLSB
-                           : ObjectStoreBindings.OBJECTSTORE_BEAN_NAME_JNDI_REGISTRAR_SLSB;
-   }
-   
-   static class WSCallbackImpl implements BeanContextLifecycleCallback
-   {
-      private ExtensibleWebServiceContext jaxwsContext;
-      private javax.xml.rpc.handler.MessageContext jaxrpcMessageContext;
-
-      public WSCallbackImpl(javax.xml.rpc.handler.MessageContext jaxrpc, ExtensibleWebServiceContext jaxws)
-      {
-         jaxrpcMessageContext = jaxrpc;
-         jaxwsContext = jaxws;
-      }
-
-      public void attached(BeanContext beanCtx)
-      {
-         // JAX-RPC MessageContext
-         StatelessBeanContext sbc = (StatelessBeanContext)beanCtx;
-         sbc.setMessageContextJAXRPC(jaxrpcMessageContext);
-
-         // JAX-WS MessageContext
-         BeanProperty beanProp = sbc.getWebServiceContextProperty();
-         if (beanProp != null)
-         {
-            EJBContext ejbCtx = beanCtx.getEJBContext();            
-            jaxwsContext.addAttachment(EJBContext.class, ejbCtx);
-            beanProp.set(beanCtx.getInstance(), jaxwsContext);
-         }
-      }
-
-      public void released(BeanContext beanCtx)
-      {
-         StatelessBeanContext sbc = (StatelessBeanContext)beanCtx;
-         sbc.setMessageContextJAXRPC(null);
-
-         BeanProperty beanProp = sbc.getWebServiceContextProperty();
-         if (beanProp != null)
-            beanProp.set(beanCtx.getInstance(), null);
-      }      
-   }
-}

Copied: projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java (from rev 78492, projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	                        (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-core-1.0.0-Beta3/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2008-09-12 17:04:49 UTC (rev 78494)
@@ -0,0 +1,786 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.stateless;
+
+
+import java.io.Serializable;
+import java.lang.reflect.Method;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Set;
+
+import javax.ejb.EJBContext;
+import javax.ejb.EJBException;
+import javax.ejb.EJBObject;
+import javax.ejb.Handle;
+import javax.ejb.Timer;
+import javax.ejb.TimerService;
+import javax.naming.NamingException;
+
+import org.jboss.aop.Advisor;
+import org.jboss.aop.Domain;
+import org.jboss.aop.MethodInfo;
+import org.jboss.aop.joinpoint.Invocation;
+import org.jboss.aop.joinpoint.InvocationResponse;
+import org.jboss.aop.joinpoint.MethodInvocation;
+import org.jboss.aspects.asynch.FutureHolder;
+import org.jboss.ejb.AllowedOperationsAssociation;
+import org.jboss.ejb.AllowedOperationsFlags;
+import org.jboss.ejb3.BeanContext;
+import org.jboss.ejb3.BeanContextLifecycleCallback;
+import org.jboss.ejb3.EJBContainerInvocation;
+import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.ejb3.annotation.Clustered;
+import org.jboss.ejb3.annotation.LocalBinding;
+import org.jboss.ejb3.annotation.RemoteBinding;
+import org.jboss.ejb3.common.lang.SerializableMethod;
+import org.jboss.ejb3.proxy.ProxyUtils;
+import org.jboss.ejb3.proxy.clustered.objectstore.ClusteredObjectStoreBindings;
+import org.jboss.ejb3.proxy.container.InvokableContext;
+import org.jboss.ejb3.proxy.factory.ProxyFactoryHelper;
+import org.jboss.ejb3.proxy.factory.SessionProxyFactory;
+import org.jboss.ejb3.proxy.factory.stateless.BaseStatelessRemoteProxyFactory;
+import org.jboss.ejb3.proxy.factory.stateless.StatelessClusterProxyFactory;
+import org.jboss.ejb3.proxy.factory.stateless.StatelessLocalProxyFactory;
+import org.jboss.ejb3.proxy.factory.stateless.StatelessRemoteProxyFactory;
+import org.jboss.ejb3.proxy.objectstore.ObjectStoreBindings;
+import org.jboss.ejb3.proxy.remoting.SessionSpecRemotingMetadata;
+import org.jboss.ejb3.session.SessionContainer;
+import org.jboss.ejb3.session.SessionSpecContainer;
+import org.jboss.ejb3.stateful.StatefulRemoteInvocation;
+import org.jboss.ejb3.timerservice.TimedObjectInvoker;
+import org.jboss.ejb3.timerservice.TimerServiceFactory;
+import org.jboss.injection.WebServiceContextProxy;
+import org.jboss.injection.lang.reflect.BeanProperty;
+import org.jboss.logging.Logger;
+import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
+import org.jboss.proxy.ejb.handle.HomeHandleImpl;
+import org.jboss.wsf.spi.SPIProvider;
+import org.jboss.wsf.spi.SPIProviderResolver;
+import org.jboss.wsf.spi.invocation.ExtensibleWebServiceContext;
+import org.jboss.wsf.spi.invocation.InvocationType;
+import org.jboss.wsf.spi.invocation.WebServiceContextFactory;
+import org.jboss.wsf.spi.invocation.integration.InvocationContextCallback;
+import org.jboss.wsf.spi.invocation.integration.ServiceEndpointContainer;
+
+
+/**
+ * Comment
+ *
+ * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
+ * @version $Revision$
+ */
+public class StatelessContainer extends SessionSpecContainer
+  implements TimedObjectInvoker, ServiceEndpointContainer, InvokableContext
+{
+   private static final Logger log = Logger.getLogger(StatelessContainer.class);
+
+   protected TimerService timerService;
+   private Method timeout;
+   private StatelessDelegateWrapper mbean = new StatelessDelegateWrapper(this);
+
+   public StatelessContainer(ClassLoader cl, String beanClassName, String ejbName, Domain domain,
+                             Hashtable ctxProperties, Ejb3Deployment deployment, JBossSessionBeanMetaData beanMetaData) throws ClassNotFoundException
+   {
+      super(cl, beanClassName, ejbName, domain, ctxProperties, deployment, beanMetaData);
+      
+      initializeTimeout();
+   }
+
+   @Override
+   public BeanContext<?> createBeanContext()
+   {
+      return new StatelessBeanContext(this, construct());
+   }
+   
+   @Override
+   protected StatelessLocalProxyFactory getProxyFactory(LocalBinding binding)
+   {
+      StatelessLocalProxyFactory factory = (StatelessLocalProxyFactory) this.proxyDeployer.getProxyFactory(binding);
+
+      if (factory == null)
+      {
+         factory = new StatelessLocalProxyFactory(this, binding);
+         try
+         {
+            factory.init();
+         }
+         catch (Exception e)
+         {
+            throw new RuntimeException(e);
+         }
+      }
+
+      return factory;
+   }
+   
+   @Override
+   protected BaseStatelessRemoteProxyFactory getProxyFactory(RemoteBinding binding)
+   {
+      BaseStatelessRemoteProxyFactory factory = (BaseStatelessRemoteProxyFactory) this.proxyDeployer
+            .getProxyFactory(binding);
+
+      if (factory == null)
+      {
+         Clustered clustered = getAnnotation(Clustered.class);
+         if (clustered != null)
+            factory = new StatelessClusterProxyFactory(this, binding, clustered);
+         else
+            factory = new StatelessRemoteProxyFactory(this, binding);
+         
+         try
+         {
+            factory.init();
+         }
+         catch (Exception e)
+         {
+            throw new RuntimeException(e);
+         }
+      }
+
+      return factory;
+   }
+   
+   /**
+    * Create a local proxy (EJBLocalObject) for an enterprise bean identified by id, with
+    * the specified LocalBinding
+    * 
+    * @param id
+    * @return
+    * @throws Exception
+    */
+   @Override
+   public Object createProxyLocalEjb21(LocalBinding binding, String businessInterfaceType) throws Exception
+   {
+      StatelessLocalProxyFactory proxyFactory = this.getProxyFactory(binding);
+      return proxyFactory.createProxyEjb21(businessInterfaceType);
+   }
+   
+   @Override
+   public Object createProxyRemoteEjb21(RemoteBinding binding, String businessInterfaceType) throws Exception
+   {
+      BaseStatelessRemoteProxyFactory proxyFactory = this.getProxyFactory(binding);
+      return proxyFactory.createProxyEjb21(businessInterfaceType);
+   }
+   
+   public Serializable createSession(Class<?> initTypes[], Object initArgs[])
+   {
+      if((initTypes != null && initTypes.length > 0) || (initArgs != null && initArgs.length > 0))
+         throw new IllegalArgumentException("stateless bean create method must take no arguments (EJB3 4.5)");
+      // a stateless bean has no sessions
+      // TODO: pool stuff
+      return null;
+   }
+   
+   public boolean isClustered()
+   {
+      return isAnnotationPresent(Clustered.class);
+   }
+   
+   public Object getMBean()
+   {
+      return mbean;
+   }
+   
+   private void initializeTimeout()
+   {
+      JBossSessionBeanMetaData metaData = getMetaData();
+      NamedMethodMetaData timeoutMethodMetaData = null;
+      if(metaData != null)
+         timeoutMethodMetaData = metaData.getTimeoutMethod();
+      this.timeout = getTimeoutCallback(timeoutMethodMetaData, getBeanClass());
+   }
+   
+   @Override
+   protected void lockedStart() throws Exception
+   {
+      try
+      {
+         super.lockedStart();
+         
+         timerService = TimerServiceFactory.getInstance().createTimerService(this, this);
+         
+         TimerServiceFactory.getInstance().restoreTimerService(timerService);
+      }
+      catch (Exception e)
+      {
+         try
+         {
+            this.lockedStop();
+         }
+         catch (Exception ignore)
+         {
+            log.debug("Failed to cleanup after start() failure", ignore);
+         }
+         throw e;
+      }
+   }
+
+   @Override
+   protected void lockedStop() throws Exception
+   {
+      if (timerService != null)
+      {
+         TimerServiceFactory.getInstance().removeTimerService(timerService);
+         timerService = null;
+      }
+      
+      super.lockedStop();
+   }
+
+   public TimerService getTimerService()
+   {
+      return timerService;
+   }
+
+   public TimerService getTimerService(Object pKey)
+   {
+      assert timerService != null : "Timer Service not yet initialized";
+      return timerService;
+   }
+   
+   public void callTimeout(Timer timer) throws Exception
+   {
+      if (timeout == null) throw new EJBException("No method has been annotated with @Timeout");
+      Object[] args = {timer};
+      ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+      try
+      {
+         AllowedOperationsAssociation.pushInMethodFlag(AllowedOperationsFlags.IN_EJB_TIMEOUT);
+         try
+         {
+            MethodInfo info = super.getMethodInfo(timeout);
+            EJBContainerInvocation nextInvocation = new EJBContainerInvocation(info);
+            nextInvocation.setAdvisor(getAdvisor());
+            nextInvocation.setArguments(args);
+            nextInvocation.invokeNext();
+         }
+         catch (Throwable throwable)
+         {
+            if (throwable instanceof Exception) throw (Exception) throwable;
+            throw new RuntimeException(throwable);
+         }
+         finally
+         {
+            AllowedOperationsAssociation.popInMethodFlag();
+         }
+      }
+      finally
+      {
+         Thread.currentThread().setContextClassLoader(oldLoader);
+      }
+   }
+
+   /**
+    * Performs a synchronous local invocation
+    */
+   public Object localInvoke(Method method, Object[] args) throws Throwable
+   {
+      return localInvoke(method, args, null);
+   }
+
+   /**
+    * Performs a synchronous or asynchronous local invocation
+    *
+    * @param provider If null a synchronous invocation, otherwise an asynchronous
+    */
+   public Object localInvoke(Method method, Object[] args, FutureHolder provider) throws Throwable
+   {
+      return localInvoke(method, args, provider, null);
+   }
+   
+   public Object localInvoke(Object id, Method method, Object[] args, FutureHolder provider) throws Throwable
+   {
+      return localInvoke(method, args, provider);
+   }
+   
+   public Object localInvoke(Method method, Object[] args, FutureHolder provider, BeanContextLifecycleCallback<StatelessBeanContext> callback) throws Throwable
+   {
+      long start = System.currentTimeMillis();
+      
+      ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+      try
+      {
+         MethodInfo info = getMethodInfo(method);
+         Method unadvisedMethod = info.getUnadvisedMethod();
+
+         try
+         {
+            invokeStats.callIn();
+            
+            //invokedMethod.push(new SerializableMethod(unadvisedMethod, unadvisedMethod.getClass()));
+
+            if (unadvisedMethod != null && isHomeMethod(unadvisedMethod))
+            {
+               return localHomeInvoke(unadvisedMethod, args);
+            }
+
+            EJBContainerInvocation<StatelessContainer, StatelessBeanContext> nextInvocation = new EJBContainerInvocation<StatelessContainer, StatelessBeanContext>(info);
+            nextInvocation.setAdvisor(getAdvisor());
+            nextInvocation.setArguments(args);
+            nextInvocation.setContextCallback(callback);
+
+            ProxyUtils.addLocalAsynchronousInfo(nextInvocation, provider);
+            return nextInvocation.invokeNext();
+         }
+         finally
+         {
+            if (unadvisedMethod != null)
+            {
+               long end = System.currentTimeMillis();
+               long elapsed = end - start;
+               invokeStats.updateStats(unadvisedMethod, elapsed);
+            }
+            
+            invokeStats.callOut();
+            
+            //invokedMethod.pop();
+         }
+      }
+      finally
+      {
+         Thread.currentThread().setContextClassLoader(oldLoader);
+      }
+   }
+   
+   /**
+    * Remote Invocation entry point, as delegated from
+    * ClassProxyHack (Remoting Dispatcher)
+    */
+   public InvocationResponse dynamicInvoke(Invocation invocation) throws Throwable
+   {
+      /*
+       * Initialize
+       */
+
+      // Mark the start time
+      long start = System.currentTimeMillis();
+
+      // Create a pointer to a new Invocation
+      EJBContainerInvocation newSi = null;
+
+      // Create a pointer to the response we'll return
+      InvocationResponse response = null;
+      
+
+      /*
+       * Setup Environment (Stack/Thread)
+       */
+
+      // Hold a reference to the existing TCL
+      ClassLoader originalLoader = Thread.currentThread().getContextClassLoader();
+
+      // Set the Container's CL as TCL, required to unmarshall methods from the bean impl class
+      Thread.currentThread().setContextClassLoader(this.getClassloader());
+
+      // Push the ENC onto the stack
+      pushEnc();
+      
+      try
+      {
+         
+         /*
+          * Obtain the target method (unmarshall from invocation)
+          */
+
+         // Cast
+         assert invocation instanceof StatefulRemoteInvocation : SessionContainer.class.getName()
+               + ".dynamicInoke supports only " + StatefulRemoteInvocation.class.getSimpleName()
+               + ", but has been passed: " + invocation;
+         MethodInvocation si = (MethodInvocation) invocation;
+
+         // Get the method hash
+         long methodHash = si.getMethodHash();
+         log.debug("Received dynamic invocation for method with hash: " + methodHash);
+
+         // Get the Method via MethodInfo from the Advisor
+         Advisor advisor = this.getAdvisor();
+         MethodInfo info = advisor.getMethodInfo(methodHash);
+         Method unadvisedMethod = info.getMethod();
+         SerializableMethod unadvisedMethodSerializable = new SerializableMethod(unadvisedMethod);
+         
+         try
+         {
+            invokeStats.callIn();
+            
+            /*
+             * Set the invoked method
+             */
+            //TODO Remove when CurrentInvocation is ironed out
+            
+            // Get the invoked method from invocation metadata
+            Object objInvokedMethod = si.getMetaData(SessionSpecRemotingMetadata.TAG_SESSION_INVOCATION,SessionSpecRemotingMetadata.KEY_INVOKED_METHOD);
+            assert objInvokedMethod !=null : "Invoked Method must be set on invocation metadata";
+            assert objInvokedMethod instanceof SerializableMethod : "Invoked Method set on invocation metadata is not of type " + SerializableMethod.class.getName() + ", instead: " + objInvokedMethod;
+            SerializableMethod invokedMethod = (SerializableMethod)objInvokedMethod;
+            
+            // Set onto stack
+            SessionSpecContainer.invokedMethod.push(invokedMethod);
+
+            //invokedMethod.push(new SerializableMethod(unadvisedMethod, unadvisedMethod.getClass()));
+            Map responseContext = null;
+            Object rtn = null;
+            if (unadvisedMethod != null && isHomeMethod(unadvisedMethodSerializable))
+            {
+               rtn = invokeHomeMethod(info, si);
+            }
+            else if (info != null && unadvisedMethod != null && isEjbObjectMethod(unadvisedMethodSerializable))
+            {
+               rtn = invokeEJBObjectMethod(info, si);
+            }
+            else
+            {
+
+               newSi = new EJBContainerInvocation<StatelessContainer, StatelessBeanContext>(info);
+               newSi.setArguments(si.getArguments());
+               newSi.setMetaData(si.getMetaData());
+               //newSi.setAdvisor(getAdvisor());               
+               
+               try
+               {
+                  rtn = newSi.invokeNext();
+                  responseContext = newSi.getResponseContextInfo();
+               }
+               catch (Throwable throwable)
+               {
+                  responseContext = newSi.getResponseContextInfo();
+                  return marshallException(invocation, throwable, responseContext);
+               }
+               finally
+               {
+                  SessionSpecContainer.invokedMethod.pop();
+               }
+            }
+
+            response = marshallResponse(invocation, rtn, responseContext);
+            return response;
+         }
+         finally
+         {
+            if (unadvisedMethod != null)
+            {
+               long end = System.currentTimeMillis();
+               long elapsed = end - start;
+               invokeStats.updateStats(unadvisedMethod, elapsed);
+            }
+
+            invokeStats.callOut();
+
+            //invokedMethod.pop();
+         }
+      }
+      finally
+      {
+         Thread.currentThread().setContextClassLoader(originalLoader);
+         this.popEnc();
+      }
+   }
+
+   @Deprecated
+   public InvocationResponse dynamicInvoke(Object target, Invocation invocation) throws Throwable
+   {
+      long start = System.currentTimeMillis();
+      
+      ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+      try
+      {
+         Thread.currentThread().setContextClassLoader(classloader);
+         MethodInvocation si = (MethodInvocation) invocation;
+         MethodInfo info = getAdvisor().getMethodInfo(si.getMethodHash());
+         if (info == null)
+         {
+            throw new RuntimeException("Could not resolve beanClass method from proxy call " + invocation);
+         }
+
+         Method unadvisedMethod = info.getUnadvisedMethod();
+         try
+         {
+            invokeStats.callIn();
+            
+            //invokedMethod.push(new SerializableMethod(unadvisedMethod, unadvisedMethod.getClass()));
+            Map responseContext = null;
+            Object rtn = null;
+            if (unadvisedMethod != null && isHomeMethod(unadvisedMethod))
+            {
+               rtn = invokeHomeMethod(info, si);
+            }
+            else if (info != null && unadvisedMethod != null && isEJBObjectMethod(unadvisedMethod))
+            {
+               rtn = invokeEJBObjectMethod(info, si);
+            }
+            else
+            {
+
+               EJBContainerInvocation newSi = null;
+
+               newSi = new EJBContainerInvocation<StatelessContainer, StatelessBeanContext>(info);
+               newSi.setArguments(si.getArguments());
+               newSi.setMetaData(si.getMetaData());
+               newSi.setAdvisor(getAdvisor());
+               try
+               {
+                  rtn = newSi.invokeNext();
+                  responseContext = newSi.getResponseContextInfo();
+               }
+               catch (Throwable throwable)
+               {
+                  responseContext = newSi.getResponseContextInfo();
+                  return marshallException(invocation, throwable, responseContext);
+               }
+            }
+
+            InvocationResponse response = marshallResponse(invocation, rtn, responseContext);
+            return response;
+         }
+         finally
+         {
+            if (unadvisedMethod != null)
+            {
+               long end = System.currentTimeMillis();
+               long elapsed = end - start;
+               invokeStats.updateStats(unadvisedMethod, elapsed);
+            }
+            
+            invokeStats.callOut();
+            
+            //invokedMethod.pop();
+         }
+      }
+      finally
+      {
+         Thread.currentThread().setContextClassLoader(oldLoader);
+      }
+   }
+
+
+   protected Object invokeEJBObjectMethod(MethodInfo info, MethodInvocation invocation) throws Throwable
+   {
+      Method unadvisedMethod = info.getUnadvisedMethod();
+      if (unadvisedMethod.getName().equals("getHandle"))
+      {
+         
+         StatelessHandleRemoteImpl handle = null;
+         RemoteBinding binding = this.getAnnotation(RemoteBinding.class);
+         BaseStatelessRemoteProxyFactory factory = this.getProxyFactory(binding);
+         handle = factory.createHandle();
+
+         return handle;
+      }
+      else if (unadvisedMethod.getName().equals("remove"))
+      {
+         return null;
+      }
+      else if (unadvisedMethod.getName().equals("getEJBHome"))
+      {
+         HomeHandleImpl homeHandle = null;
+
+         RemoteBinding remoteBindingAnnotation = this.getAnnotation(RemoteBinding.class);
+         if (remoteBindingAnnotation != null)
+            homeHandle = new HomeHandleImpl(ProxyFactoryHelper.getHomeJndiName(this));
+
+         return homeHandle.getEJBHome();
+      }
+      else if (unadvisedMethod.getName().equals("getPrimaryKey"))
+      {
+         return null;
+      }
+      else if (unadvisedMethod.getName().equals("isIdentical"))
+      {
+         return false;
+      }
+      else
+      {
+         return null;
+      }
+   }
+
+   public Object localHomeInvoke(Method method, Object[] args) throws Throwable
+   {
+      if (method.getName().equals("create"))
+      {
+         LocalBinding binding = this.getAnnotation(LocalBinding.class);
+
+         // FIXME: why this binding? Could be another one. (there is only one local binding, but that's another bug)
+
+         StatelessLocalProxyFactory factory = this.getProxyFactory(binding);
+
+         Object proxy = factory.createProxyEjb21(method.getReturnType().getName());
+
+         return proxy;
+      }
+      else
+      // remove
+      {
+         return null;
+      }
+   }
+
+   protected Object invokeHomeMethod(MethodInfo info, MethodInvocation invocation) throws Throwable
+   {
+      Method unadvisedMethod = info.getUnadvisedMethod();
+      if (unadvisedMethod.getName().equals("create"))
+      {
+         RemoteBinding binding = this.getRemoteBinding();
+
+         BaseStatelessRemoteProxyFactory factory = this.getProxyFactory(binding);
+
+         return factory.createProxyEjb21(unadvisedMethod.getReturnType().getName());
+      }
+      else
+      // remove
+      {
+         return null;
+      }
+   }
+
+   @Override
+   public Object getBusinessObject(BeanContext ctx, Class intf)
+   {
+      assert intf != null : "intf is null";
+      
+      try
+      {
+         
+         /*
+          * Get all business interfaces
+          */
+         Set<String> businessInterfaceNames = new HashSet<String>();
+         JBossSessionBeanMetaData smd= (JBossSessionBeanMetaData)this.getXml();
+         businessInterfaceNames.addAll(smd.getBusinessRemotes());
+         businessInterfaceNames.addAll(smd.getBusinessLocals());
+         
+         String interfaceName = intf.getName();
+         
+         if (!businessInterfaceNames.contains(interfaceName))
+            throw new IllegalStateException("Cannot find BusinessObject for interface: " + interfaceName);
+         
+         String jndiName = this.getXml().determineResolvedJndiName(interfaceName);
+         return getInitialContext().lookup(jndiName);
+      }
+      catch (NamingException e)
+      {
+         throw new RuntimeException("failed to invoke getBusinessObject", e);
+      }
+   }
+
+   protected void removeHandle(Handle handle)
+   {
+      throw new RuntimeException("NYI");
+   }
+
+   /**
+    * WS integration
+    * @return
+    */
+   public Class getServiceImplementationClass()
+   {
+      return this.getBeanClass();
+   }
+
+   /**
+    * WS Integration
+    * @param method
+    * @param args
+    * @param invCtxCallback
+    * @return
+    * @throws Throwable
+    */
+   public Object invokeEndpoint(Method method, Object[] args, InvocationContextCallback invCtxCallback) throws Throwable
+   {
+      // JAX-RPC message context
+      javax.xml.rpc.handler.MessageContext jaxrpcContext = invCtxCallback.get(javax.xml.rpc.handler.MessageContext.class);
+
+      // JAX-WS webservice context
+      SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
+      WebServiceContextFactory contextFactory = spiProvider.getSPI(WebServiceContextFactory.class);
+      ExtensibleWebServiceContext jaxwsContext = contextFactory.newWebServiceContext(
+        InvocationType.JAXWS_EJB3,
+        invCtxCallback.get(javax.xml.ws.handler.MessageContext.class)
+      );
+
+      // ThreadLocal association
+      WebServiceContextProxy.associateMessageContext(jaxwsContext);
+
+      // EJB3 Injection Callbacks
+      WSCallbackImpl ejb3Callback = new WSCallbackImpl( jaxrpcContext, jaxwsContext );
+
+      // Actual invocation
+      return this.localInvoke(method, args, null, ejb3Callback);
+   }
+
+   public String getContainerName()
+   {
+      String name = this.getObjectName() != null ? this.getObjectName().getCanonicalName() : null;
+      return name;
+   }
+   
+   /**
+    * Returns the name under which the JNDI Registrar for this container is bound
+    * 
+    * @return
+    */
+   protected String getJndiRegistrarBindName()
+   {
+      return isClustered() ? ClusteredObjectStoreBindings.CLUSTERED_OBJECTSTORE_BEAN_NAME_JNDI_REGISTRAR_SLSB
+                           : ObjectStoreBindings.OBJECTSTORE_BEAN_NAME_JNDI_REGISTRAR_SLSB;
+   }
+   
+   static class WSCallbackImpl implements BeanContextLifecycleCallback
+   {
+      private ExtensibleWebServiceContext jaxwsContext;
+      private javax.xml.rpc.handler.MessageContext jaxrpcMessageContext;
+
+      public WSCallbackImpl(javax.xml.rpc.handler.MessageContext jaxrpc, ExtensibleWebServiceContext jaxws)
+      {
+         jaxrpcMessageContext = jaxrpc;
+         jaxwsContext = jaxws;
+      }
+
+      public void attached(BeanContext beanCtx)
+      {
+         // JAX-RPC MessageContext
+         StatelessBeanContext sbc = (StatelessBeanContext)beanCtx;
+         sbc.setMessageContextJAXRPC(jaxrpcMessageContext);
+
+         // JAX-WS MessageContext
+         BeanProperty beanProp = sbc.getWebServiceContextProperty();
+         if (beanProp != null)
+         {
+            EJBContext ejbCtx = beanCtx.getEJBContext();            
+            jaxwsContext.addAttachment(EJBContext.class, ejbCtx);
+            beanProp.set(beanCtx.getInstance(), jaxwsContext);
+         }
+      }
+
+      public void released(BeanContext beanCtx)
+      {
+         StatelessBeanContext sbc = (StatelessBeanContext)beanCtx;
+         sbc.setMessageContextJAXRPC(null);
+
+         BeanProperty beanProp = sbc.getWebServiceContextProperty();
+         if (beanProp != null)
+            beanProp.set(beanCtx.getInstance(), null);
+      }      
+   }
+}




More information about the jboss-cvs-commits mailing list