[jboss-cvs] JBossAS SVN: r70809 - in projects/ejb3/branches/hbraun: core and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Mar 13 07:15:05 EDT 2008
Author: heiko.braun at jboss.com
Date: 2008-03-13 07:15:05 -0400 (Thu, 13 Mar 2008)
New Revision: 70809
Modified:
projects/ejb3/branches/hbraun/build/pom.xml
projects/ejb3/branches/hbraun/core/pom.xml
projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java
projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
Log:
WS SPI update, first cut
Modified: projects/ejb3/branches/hbraun/build/pom.xml
===================================================================
--- projects/ejb3/branches/hbraun/build/pom.xml 2008-03-13 11:07:42 UTC (rev 70808)
+++ projects/ejb3/branches/hbraun/build/pom.xml 2008-03-13 11:15:05 UTC (rev 70809)
@@ -138,6 +138,7 @@
<version.org.jboss.microcontainer_jboss-kernel>2.0.0.Beta9</version.org.jboss.microcontainer_jboss-kernel>
<version.org.jboss.security_jboss-security-spi-bare>2.0.2.Beta5</version.org.jboss.security_jboss-security-spi-bare>
<version.org.jboss.security_jbosssx-client>2.0.2.Beta5</version.org.jboss.security_jbosssx-client>
+ <version.org.jboss.ws_jbossws-spi>snapshot</version.org.jboss.ws_jbossws-spi>
<version.trove_trove>1.0.2</version.trove_trove>
<version.quartz_quartz>1.6.0</version.quartz_quartz>
@@ -550,6 +551,13 @@
<version>${version.org.jboss_jboss-transaction-spi}</version>
</dependency>
+ <!-- JBoss WS SPI -->
+ <dependency>
+ <groupId>org.jboss.ws</groupId>
+ <artifactId>jbossws-spi</artifactId>
+ <version>${version.org.jboss.ws_jbossws-spi}</version>
+ </dependency>
+
<!-- JUnit -->
<dependency>
<groupId>junit</groupId>
Modified: projects/ejb3/branches/hbraun/core/pom.xml
===================================================================
--- projects/ejb3/branches/hbraun/core/pom.xml 2008-03-13 11:07:42 UTC (rev 70808)
+++ projects/ejb3/branches/hbraun/core/pom.xml 2008-03-13 11:15:05 UTC (rev 70809)
@@ -181,7 +181,7 @@
<artifactItem>
<groupId>org.jboss</groupId>
<artifactId>jboss-test</artifactId>
- </artifactItem>
+ </artifactItem>
<artifactItem>
<groupId>hibernate</groupId>
<artifactId>hibernate3</artifactId>
@@ -395,6 +395,10 @@
<version>5.0.0-SNAPSHOT</version> <!-- Only used here -->
<classifier>client</classifier>
</dependency>
+ <dependency>
+ <groupId>org.jboss.ws</groupId>
+ <artifactId>jbossws-spi</artifactId>
+ </dependency>
<dependency>
<groupId>org.jboss.microcontainer</groupId>
<artifactId>jboss-container</artifactId>
Modified: projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java
===================================================================
--- projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java 2008-03-13 11:07:42 UTC (rev 70808)
+++ projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java 2008-03-13 11:15:05 UTC (rev 70809)
@@ -67,6 +67,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.
@@ -75,7 +77,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);
@@ -847,4 +850,37 @@
{
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 ejbContainer = (EJBContainer)it.next();
+ webServiceDeclarations.add(
+ new WebServiceDeclaration()
+ {
+ public <T extends java.lang.annotation.Annotation> T getAnnotation(Class<T> t)
+ {
+ return ejbContainer.getAnnotation(t);
+ }
+
+ public String getComponentName()
+ {
+ return ejbContainer.getEjbName();
+ }
+
+ public String getComponentClassName()
+ {
+ return ejbContainer.getBeanClassName();
+ }
+ }
+
+ );
+ }
+ return webServiceDeclarations;
+ }
}
Modified: projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
===================================================================
--- projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java 2008-03-13 11:07:42 UTC (rev 70808)
+++ projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java 2008-03-13 11:15:05 UTC (rev 70809)
@@ -44,6 +44,7 @@
import org.jboss.ejb3.BeanContextLifecycleCallback;
import org.jboss.ejb3.EJBContainerInvocation;
import org.jboss.ejb3.Ejb3Deployment;
+
import org.jboss.ejb3.ProxyFactory;
import org.jboss.ejb3.ProxyFactoryHelper;
import org.jboss.ejb3.ProxyUtils;
@@ -60,7 +61,16 @@
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;
+import javax.ejb.EJBContext;
/**
* Comment
@@ -68,7 +78,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 +500,54 @@
{
throw new RuntimeException("NYI");
}
+
+
+ public Class getServiceImplementationClass()
+ {
+ return this.getBeanClass();
+ }
+
+ public Object invokeEndpoint(Method method, Object[] args, InvocationContextCallback callback) throws Throwable
+ {
+ WebServiceCallbackImpl lifecyleCallback = new WebServiceCallbackImpl(callback);
+ return this.localInvoke(method, args, null, lifecyleCallback);
+ }
+
+ static class WebServiceCallbackImpl implements BeanContextLifecycleCallback
+ {
+ private javax.xml.ws.handler.MessageContext jaxwsMessageContext;
+ private javax.xml.rpc.handler.MessageContext jaxrpcMessageContext;
+
+ public WebServiceCallbackImpl(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