[jboss-cvs] JBossAS SVN: r75047 - trunk/webservices/src/main/org/jboss/wsf/container/jboss50/invocation.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jun 25 03:20:53 EDT 2008


Author: heiko.braun at jboss.com
Date: 2008-06-25 03:20:53 -0400 (Wed, 25 Jun 2008)
New Revision: 75047

Modified:
   trunk/webservices/src/main/org/jboss/wsf/container/jboss50/invocation/InvocationHandlerEJB3.java
Log:
InvocationHandlerEJB3: lazy initialize invocation target

Modified: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/invocation/InvocationHandlerEJB3.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/invocation/InvocationHandlerEJB3.java	2008-06-25 06:58:10 UTC (rev 75046)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/invocation/InvocationHandlerEJB3.java	2008-06-25 07:20:53 UTC (rev 75047)
@@ -49,8 +49,9 @@
 
    private String containerName;
    private KernelController houston;
-   private ServiceEndpointContainer invocationTarget;
+   private ServiceEndpointContainer serviceEndpointContainer;
 
+
    InvocationHandlerEJB3()
    {
       houston = KernelLocator.getKernel().getController();
@@ -65,19 +66,30 @@
    {
       containerName = (String)ep.getProperty(InvocationHandlerEJB3.CONTAINER_NAME);
       assert containerName!=null : "Target container name not set";
-      
-      ControllerContext context = houston.getInstalledContext(containerName);
-      if (context == null)
-         throw new WebServiceException("Cannot find service endpoint target: " + containerName);
-      
-      assert (context.getTarget() instanceof ServiceEndpointContainer) : "Invocation target mismatch";
-      this.invocationTarget = (ServiceEndpointContainer) context.getTarget();
+
    }
 
+   private ServiceEndpointContainer lazyInitializeInvocationTarget()
+   {
+      if(null==this.serviceEndpointContainer)
+      {
+         ControllerContext context = houston.getInstalledContext(containerName);
+         if (context == null)
+            throw new WebServiceException("Cannot find service endpoint target: " + containerName);
+
+         assert (context.getTarget() instanceof ServiceEndpointContainer) : "Invocation target mismatch";
+         this.serviceEndpointContainer = (ServiceEndpointContainer) context.getTarget();
+      }
+
+      return this.serviceEndpointContainer;
+   }
+
    public void invoke(Endpoint ep, Invocation wsInv) throws Exception
    {
       try
-      {         
+      {
+         ServiceEndpointContainer invocationTarget = lazyInitializeInvocationTarget();
+         
          Class beanClass = invocationTarget.getServiceImplementationClass();
          Method method = getImplMethod(beanClass, wsInv.getJavaMethod());
          Object[] args = wsInv.getArgs();




More information about the jboss-cvs-commits mailing list