[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