[jboss-cvs] JBossAS SVN: r71550 - in projects/ejb3/trunk: core and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Apr 1 08:52:37 EDT 2008


Author: heiko.braun at jboss.com
Date: 2008-04-01 08:52:37 -0400 (Tue, 01 Apr 2008)
New Revision: 71550

Modified:
   projects/ejb3/trunk/build/pom.xml
   projects/ejb3/trunk/core/pom.xml
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
Log:
Fix EJBTHREE-1247: Implement WS integration API

Modified: projects/ejb3/trunk/build/pom.xml
===================================================================
--- projects/ejb3/trunk/build/pom.xml	2008-04-01 12:43:14 UTC (rev 71549)
+++ projects/ejb3/trunk/build/pom.xml	2008-04-01 12:52:37 UTC (rev 71550)
@@ -112,6 +112,7 @@
     <version.org.jboss.microcontainer_jboss-container>2.0.0.Beta9</version.org.jboss.microcontainer_jboss-container>
     <version.org.jboss.microcontainer_jboss-deployers-core-spi>2.0.0.Beta9</version.org.jboss.microcontainer_jboss-deployers-core-spi>
     <version.org.jboss.microcontainer_jboss-kernel>2.0.0.Beta9</version.org.jboss.microcontainer_jboss-kernel>
+    <version.org.jboss.ws-spi>1.0.2.GA</version.org.jboss.ws-spi>
    
     <!-- Miscellaneous -->
     <jvmargs />
@@ -133,8 +134,8 @@
           <target>1.5</target>
           <showDeprecation>false</showDeprecation>
           <showWarnings>true</showWarnings>
-          <optimize>true</optimize>
-          <compilerVersion>1.5</compilerVersion>
+          <optimize>true</optimize>
+          <compilerVersion>1.5</compilerVersion>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -359,6 +360,12 @@
         <version>${version.org.jboss.microcontainer_jboss-deployers-core-spi}</version>
       </dependency>
 
+       <dependency>
+        <groupId>org.jboss</groupId>
+        <artifactId>jbossws-spi</artifactId>
+        <version>${version.org.jboss.ws-spi}</version>
+      </dependency>
+
       <!-- JBoss Test -->
       <dependency>
         <groupId>org.jboss</groupId>

Modified: projects/ejb3/trunk/core/pom.xml
===================================================================
--- projects/ejb3/trunk/core/pom.xml	2008-04-01 12:43:14 UTC (rev 71549)
+++ projects/ejb3/trunk/core/pom.xml	2008-04-01 12:52:37 UTC (rev 71550)
@@ -409,6 +409,10 @@
       <groupId>org.jboss.security</groupId>
       <artifactId>jbosssx-client</artifactId>
     </dependency>
+     <dependency>
+      <groupId>org.jboss</groupId>
+      <artifactId>jbossws-spi</artifactId>
+    </dependency>
     <dependency>
       <groupId>quartz</groupId>
       <artifactId>quartz</artifactId>

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java	2008-04-01 12:43:14 UTC (rev 71549)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java	2008-04-01 12:52:37 UTC (rev 71550)
@@ -69,6 +69,8 @@
 import org.jboss.metadata.javaee.spec.MessageDestinationsMetaData;
 import org.jboss.system.ServiceMBeanSupport;
 import org.jboss.virtual.VirtualFile;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeployment;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeclaration;
 
 /**
  * An EjbModule represents a collection of beans that are deployed as a unit.
@@ -77,7 +79,8 @@
  * @author adrian at jboss.org
  * @version $Revision$
  */
-public abstract class Ejb3Deployment extends ServiceMBeanSupport implements JavaEEModule, Ejb3DeploymentMBean
+public abstract class Ejb3Deployment extends ServiceMBeanSupport
+  implements JavaEEModule, Ejb3DeploymentMBean, WebServiceDeployment
 {
    private static final Logger log = Logger.getLogger(Ejb3Deployment.class);
 
@@ -854,4 +857,39 @@
    {
       return unit.getShortName();
    }
+
+   public List<WebServiceDeclaration> getServiceEndpoints()
+   {
+      List<WebServiceDeclaration> webServiceDeclarations = new ArrayList<WebServiceDeclaration>();
+
+      Iterator<Container> it = this.getEjbContainers().values().iterator();
+      while(it.hasNext())
+      {
+         final EJBContainer c = (EJBContainer)it.next();
+         webServiceDeclarations.add(
+           new WebServiceDeclaration()
+           {
+
+              public <T extends java.lang.annotation.Annotation> T getAnnotation(Class<T> t)
+              {
+                 return c.getAnnotation(t);
+              }
+
+
+              public String getComponentName()
+              {
+                 return c.getEjbName();
+              }
+
+              public String getComponentClassName()
+              {
+                 return c.getBeanClassName();
+              }
+           }
+
+         );
+      }
+      return webServiceDeclarations;
+
+   }
 }

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2008-04-01 12:43:14 UTC (rev 71549)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2008-04-01 12:52:37 UTC (rev 71550)
@@ -26,10 +26,7 @@
 import java.util.Hashtable;
 import java.util.Map;
 
-import javax.ejb.EJBException;
-import javax.ejb.Handle;
-import javax.ejb.Timer;
-import javax.ejb.TimerService;
+import javax.ejb.*;
 import javax.naming.NamingException;
 
 import org.jboss.aop.Domain;
@@ -60,6 +57,14 @@
 import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
 import org.jboss.proxy.ejb.handle.HomeHandleImpl;
 import org.jboss.proxy.ejb.handle.StatelessHandleImpl;
+import org.jboss.wsf.spi.invocation.integration.ServiceEndpointContainer;
+import org.jboss.wsf.spi.invocation.integration.InvocationContextCallback;
+import org.jboss.wsf.spi.invocation.ExtensibleWebServiceContext;
+import org.jboss.wsf.spi.invocation.WebServiceContextFactory;
+import org.jboss.wsf.spi.invocation.InvocationType;
+import org.jboss.wsf.spi.SPIProvider;
+import org.jboss.wsf.spi.SPIProviderResolver;
+import org.jboss.injection.lang.reflect.BeanProperty;
 
 
 /**
@@ -68,7 +73,8 @@
  * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
  * @version $Revision$
  */
-public class StatelessContainer extends SessionContainer implements TimedObjectInvoker
+public class StatelessContainer extends SessionContainer
+  implements TimedObjectInvoker, ServiceEndpointContainer
 {
    private static final Logger log = Logger.getLogger(StatelessContainer.class);
 
@@ -489,4 +495,65 @@
    {
       throw new RuntimeException("NYI");
    }
+
+   /**
+    * WS integration
+    * @return
+    */
+   public Class getServiceImplementationClass()
+   {
+      return this.getBeanClass();
+   }
+
+   /**
+    * WS Integration
+    * @param method
+    * @param args
+    * @param invocationContextCallback
+    * @return
+    * @throws Throwable
+    */
+   public Object invokeEndpoint(Method method, Object[] args, InvocationContextCallback invocationContextCallback) throws Throwable
+   {
+      WSCallbackImpl callback = new WSCallbackImpl(invocationContextCallback);
+      return this.localInvoke(method, args, null, callback);
+   }
+
+   static class WSCallbackImpl implements BeanContextLifecycleCallback
+   {
+      private javax.xml.ws.handler.MessageContext jaxwsMessageContext;
+      private javax.xml.rpc.handler.MessageContext jaxrpcMessageContext;
+
+      public WSCallbackImpl(InvocationContextCallback epInv)
+      {
+         jaxrpcMessageContext = epInv.get( javax.xml.rpc.handler.MessageContext.class );
+         jaxwsMessageContext = epInv.get( javax.xml.ws.handler.MessageContext.class );
+      }
+
+      public void attached(BeanContext beanCtx)
+      {
+         StatelessBeanContext sbc = (StatelessBeanContext)beanCtx;
+         sbc.setMessageContextJAXRPC(jaxrpcMessageContext);
+
+         BeanProperty beanProp = sbc.getWebServiceContextProperty();
+         if (beanProp != null)
+         {
+            EJBContext ejbCtx = beanCtx.getEJBContext();
+            SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
+            ExtensibleWebServiceContext wsContext = spiProvider.getSPI(WebServiceContextFactory.class).newWebServiceContext(InvocationType.JAXWS_EJB3, jaxwsMessageContext);
+            wsContext.addAttachment(EJBContext.class, ejbCtx);
+            beanProp.set(beanCtx.getInstance(), wsContext);
+         }
+      }
+
+      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