You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by na...@apache.org on 2009/09/14 00:10:48 UTC

svn commit: r814396 - in /tuscany/branches/sca-java-1.x: itest/domainmgr/ itest/domainmgr/callback/ itest/domainmgr/callback/client/ itest/domainmgr/callback/client/src/ itest/domainmgr/callback/client/src/main/ itest/domainmgr/callback/client/src/main...

Author: nash
Date: Sun Sep 13 22:10:47 2009
New Revision: 814396

URL: http://svn.apache.org/viewvc?rev=814396&view=rev
Log:
Copy r799472 changes from 1.5.1 branch to 1.x branch

Added:
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/   (props changed)
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/pom.xml
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/pom.xml
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/src/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/src/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/src/main/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/src/main/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/src/main/java/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/src/main/java/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/src/main/java/callbackclient/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/src/main/java/callbackclient/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/src/main/java/callbackclient/MyClientImpl.java
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/src/main/java/callbackclient/MyClientImpl.java
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/src/main/java/callbackclient/MyService.java
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/src/main/java/callbackclient/MyService.java
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/src/main/java/callbackclient/MyServiceCallback.java
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/src/main/java/callbackclient/MyServiceCallback.java
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/src/main/java/callbackclient/TestService.java
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/src/main/java/callbackclient/TestService.java
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/src/main/resources/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/src/main/resources/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/src/main/resources/META-INF/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/src/main/resources/META-INF/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/src/main/resources/META-INF/sca-contribution.xml
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/src/main/resources/META-INF/sca-contribution.xml
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/src/main/resources/client.composite
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/client/src/main/resources/client.composite
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/pom.xml
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/pom.xml
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/   (props changed)
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/pom.xml
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/pom.xml
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/java/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/java/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/java/callbacktest/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/java/callbacktest/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/java/callbacktest/TestService.java
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/java/callbacktest/TestService.java
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/java/domainmgr/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/java/domainmgr/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/java/domainmgr/DomainManagerCallbackTestCase.java
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/java/domainmgr/DomainManagerCallbackTestCase.java
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/resources/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/resources/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/resources/domain/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/resources/domain/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/resources/domain/cloud/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/resources/domain/cloud/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/resources/domain/cloud.composite
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/resources/domain/cloud.composite
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/resources/domain/cloud/ClientNode.composite
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/resources/domain/cloud/ClientNode.composite
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/resources/domain/cloud/ServiceNode.composite
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/resources/domain/cloud/ServiceNode.composite
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/resources/domain/domain.composite
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/resources/domain/domain.composite
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/src/test/resources/domain/workspace.xml
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/runtest/src/test/resources/domain/workspace.xml
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/   (props changed)
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/service/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/pom.xml
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/service/pom.xml
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/src/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/service/src/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/src/main/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/service/src/main/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/src/main/java/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/service/src/main/java/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/src/main/java/callbackservice/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/service/src/main/java/callbackservice/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/src/main/java/callbackservice/MyService.java
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/service/src/main/java/callbackservice/MyService.java
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/src/main/java/callbackservice/MyServiceCallback.java
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/service/src/main/java/callbackservice/MyServiceCallback.java
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/src/main/java/callbackservice/MyServiceImpl.java
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/service/src/main/java/callbackservice/MyServiceImpl.java
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/src/main/resources/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/service/src/main/resources/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/src/main/resources/META-INF/
      - copied from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/service/src/main/resources/META-INF/
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/src/main/resources/META-INF/sca-contribution.xml
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/service/src/main/resources/META-INF/sca-contribution.xml
    tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/src/main/resources/service.composite
      - copied unchanged from r799472, tuscany/branches/sca-java-1.5.1/itest/domainmgr/callback/service/src/main/resources/service.composite
Modified:
    tuscany/branches/sca-java-1.x/itest/domainmgr/pom.xml
    tuscany/branches/sca-java-1.x/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java
    tuscany/branches/sca-java-1.x/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java
    tuscany/branches/sca-java-1.x/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/IServiceImpl.java

Propchange: tuscany/branches/sca-java-1.x/itest/domainmgr/callback/client/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sun Sep 13 22:10:47 2009
@@ -0,0 +1,15 @@
+target
+*.iws
+*.ipr
+*.iml
+.project
+.classpath
+maven.log
+velocity.log*
+junit*.properties
+surefire*.properties
+.settings
+.deployables
+.wtpmodules
+.externalToolBuilders
+maven-eclipse.xml

Propchange: tuscany/branches/sca-java-1.x/itest/domainmgr/callback/runtest/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sun Sep 13 22:10:47 2009
@@ -0,0 +1,15 @@
+target
+*.iws
+*.ipr
+*.iml
+.project
+.classpath
+maven.log
+velocity.log*
+junit*.properties
+surefire*.properties
+.settings
+.deployables
+.wtpmodules
+.externalToolBuilders
+maven-eclipse.xml

Propchange: tuscany/branches/sca-java-1.x/itest/domainmgr/callback/service/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sun Sep 13 22:10:47 2009
@@ -0,0 +1,15 @@
+target
+*.iws
+*.ipr
+*.iml
+.project
+.classpath
+maven.log
+velocity.log*
+junit*.properties
+surefire*.properties
+.settings
+.deployables
+.wtpmodules
+.externalToolBuilders
+maven-eclipse.xml

Modified: tuscany/branches/sca-java-1.x/itest/domainmgr/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/domainmgr/pom.xml?rev=814396&r1=814395&r2=814396&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/domainmgr/pom.xml (original)
+++ tuscany/branches/sca-java-1.x/itest/domainmgr/pom.xml Sun Sep 13 22:10:47 2009
@@ -38,5 +38,7 @@
   <modules>
     <module>basic</module>
     <module>transaction</module>
+    <module>error</module>
+    <module>callback</module>
   </modules>
 </project>

Modified: tuscany/branches/sca-java-1.x/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java?rev=814396&r1=814395&r2=814396&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java (original)
+++ tuscany/branches/sca-java-1.x/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/impl/BaseConfigurationBuilderImpl.java Sun Sep 13 22:10:47 2009
@@ -939,20 +939,51 @@
         // Initialize composite service binding URIs
         List<Service> compositeServices = composite.getServices();
         for (Service service : compositeServices) {
-            // Set default binding names 
-            
+
             // Create default SCA binding
             if (service.getBindings().isEmpty()) {
                 SCABinding scaBinding = createSCABinding();
                 service.getBindings().add(scaBinding);
             }
-    
+
+            // Create default SCA callback binding
+            if (service.getInterfaceContract() != null
+                && service.getInterfaceContract().getCallbackInterface() != null
+                && service.getCallback() != null
+                && service.getCallback().getBindings().isEmpty()) {
+                SCABinding scaBinding = createSCABinding();
+                scaBinding.setName(service.getName() + "Callback");
+                service.getCallback().getBindings().add(scaBinding);
+            }
+
             // Initialize binding names and URIs
             for (Binding binding : service.getBindings()) {  
                 constructBindingName(service, binding);
                 constructBindingURI(parentComponentURI, composite, service, binding, defaultBindings);
             }
         }
+
+        // Initialize composite reference callback binding URIs
+        for (Reference reference : composite.getReferences()) {
+
+            // Create default SCA callback binding
+            if (reference.getInterfaceContract() != null
+                && reference.getInterfaceContract().getCallbackInterface() != null
+                && reference.getCallback() != null
+                && reference.getCallback().getBindings().isEmpty()) {
+                SCABinding scaBinding = createSCABinding();
+                scaBinding.setName(reference.getName() + "Callback");
+                reference.getCallback().getBindings().add(scaBinding);
+            }
+
+            // Initialize binding names and URIs
+            if (reference.getCallback() != null) {
+                for (Binding binding : reference.getCallback().getBindings()) {
+                    constructBindingName(reference, binding);
+                    constructBindingURI(parentComponentURI, composite, reference, binding, defaultBindings);
+                }
+            }
+        }
         
         // Initialize component service binding URIs
         for (Component component : composite.getComponents()) {
@@ -986,22 +1017,52 @@
             reconcileServices(component, services, componentServices);
             reconcileReferences(component, references, componentReferences);
             reconcileProperties(component, properties, componentProperties);
-            
+
             for (ComponentService service : component.getServices()) {
-    
+
                 // Create default SCA binding
                 if (service.getBindings().isEmpty()) {
                     SCABinding scaBinding = createSCABinding();
                     service.getBindings().add(scaBinding);
                 }
+
+                // Create default SCA callback binding
+                if (service.getInterfaceContract() != null
+                    && service.getInterfaceContract().getCallbackInterface() != null
+                    && service.getCallback() != null
+                    && service.getCallback().getBindings().isEmpty()) {
+                    SCABinding scaBinding = createSCABinding();
+                    scaBinding.setName(service.getName() + "Callback");
+                    service.getCallback().getBindings().add(scaBinding);
+                }
     
                 // Initialize binding names and URIs
                 for (Binding binding : service.getBindings()) {
-                    
                     constructBindingName(service, binding);
                     constructBindingURI(component, service, binding, defaultBindings);
                 }
-            } 
+            }
+            
+            for (ComponentReference reference : component.getReferences()) {
+    
+                // Create default SCA callback binding
+                if (reference.getInterfaceContract() != null
+                    && reference.getInterfaceContract().getCallbackInterface() != null
+                    && reference.getCallback() != null
+                    && reference.getCallback().getBindings().isEmpty()) {
+                    SCABinding scaBinding = createSCABinding();
+                    scaBinding.setName(reference.getName() + "Callback");
+                    reference.getCallback().getBindings().add(scaBinding);
+                }
+
+                // Initialize binding names and URIs
+                if (reference.getCallback() != null) {
+                    for (Binding binding : reference.getCallback().getBindings()) {
+                        constructBindingName(reference, binding);
+                        constructBindingURI(component, reference, binding, defaultBindings);
+                    }
+                }
+            }
         }
     }
 
@@ -1133,6 +1194,14 @@
         constructBindingURI(parentComponentURI, service, binding, includeBindingName, defaultBindings);
     }
 
+    private void constructBindingURI(String parentComponentURI, Composite composite, Reference reference, Binding binding, List<Binding> defaultBindings) 
+    throws CompositeBuilderException{
+        // This is a composite reference so there is no component to provide a component URI
+        // The path to this composite (through nested composites) is used.
+        boolean includeBindingName = true;
+        constructBindingURI(parentComponentURI, reference, binding, includeBindingName, defaultBindings);
+    }
+
      /**
       * URI construction for component bindings based on Assembly Specification section 1.7.2. This method
       * calculates the component URI part based on component information before calling the generic
@@ -1148,6 +1217,12 @@
         boolean includeBindingName = component.getServices().size() != 1;
         constructBindingURI(component.getURI(), service, binding, includeBindingName, defaultBindings);
     }
+
+    private void constructBindingURI(Component component, Reference reference, Binding binding, List<Binding> defaultBindings)
+        throws CompositeBuilderException{
+        boolean includeBindingName = true;
+        constructBindingURI(component.getURI(), reference, binding, includeBindingName, defaultBindings);
+    }
             
     /**
      * Generic URI construction for bindings based on Assembly Specification section 1.7.2
@@ -1159,7 +1234,7 @@
      * @param defaultBindings the list of default binding configurations
      * @throws CompositeBuilderException
      */
-    private void constructBindingURI(String componentURIString, Service service, Binding binding, boolean includeBindingName, List<Binding> defaultBindings) 
+    private void constructBindingURI(String componentURIString, Contract contract, Binding binding, boolean includeBindingName, List<Binding> defaultBindings) 
         throws CompositeBuilderException{
         
         try {
@@ -1234,7 +1309,7 @@
             
             binding.setURI(constructBindingURI(baseURI, componentURI, bindingURI, includeBindingName, bindingName));
         } catch (URISyntaxException ex) {
-            error("URLSyntaxException", binding, componentURIString, service.getName(), binding.getName());
+            error("URLSyntaxException", binding, componentURIString, contract.getName(), binding.getName());
         }      
     }
     

Modified: tuscany/branches/sca-java-1.x/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java?rev=814396&r1=814395&r2=814396&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java (original)
+++ tuscany/branches/sca-java-1.x/modules/binding-sca/src/main/java/org/apache/tuscany/sca/binding/sca/impl/RuntimeSCAReferenceBindingProvider.java Sun Sep 13 22:10:47 2009
@@ -126,7 +126,7 @@
 
     private ReferenceBindingProvider getDistributedProvider() {
 
-        if (isTargetRemote()) {
+        if (isTargetRemote() || isRemotableCallback()) {
             // initialize the remote provider if it hasn't been done already
             if (distributedProvider == null) {
                 if (reference.getInterfaceContract() != null && !reference.getInterfaceContract().getInterface().isRemotable()) {
@@ -155,6 +155,22 @@
         return distributedProvider;
     }
 
+    /*
+     * This test is needed to make sure the distributed binding provider
+     * is started and stopped if this is a callback binding that might
+     * need to make a remote invocation.
+     */
+    private boolean isRemotableCallback() {
+        if (reference.isCallback() &&
+            reference.getInterfaceContract() != null &&
+            reference.getInterfaceContract().getInterface().isRemotable() &&
+            distributedProviderFactory != null) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
     public InterfaceContract getBindingInterfaceContract() {
         if (isTargetRemote()) {
             return getDistributedProvider().getBindingInterfaceContract();

Modified: tuscany/branches/sca-java-1.x/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/IServiceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/IServiceImpl.java?rev=814396&r1=814395&r2=814396&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/IServiceImpl.java (original)
+++ tuscany/branches/sca-java-1.x/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/IServiceImpl.java Sun Sep 13 22:10:47 2009
@@ -71,7 +71,9 @@
 
 	@Init
     public void initIService() throws Exception {
-    	initCalledCounter++;
+        synchronized (IServiceImpl.class) {
+            initCalledCounter++;
+        }
     	if (p1.equals("p1") && a1.getName().equals("AService"))
     		isInitReady = true;
     	System.out.println("IService" + currentInstanceId + "->initIService");
@@ -79,7 +81,9 @@
 
     @Destroy
     public void destroyIService() {
-    	destroyCalledCounter++;
+        synchronized (IServiceImpl.class) {
+            destroyCalledCounter++;
+        }
     	System.out.println("IService" + currentInstanceId + "->destroyIService");
     }