diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClient.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClient.java
index b326645..61945b5 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClient.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClient.java
@@ -77,6 +77,10 @@
         private Properties properties = null;
         private static Map<String, ServiceLocator> serviceLocators = new HashMap<String, ServiceLocator>();
 
+        
+        public static void  clearServiceLocatorCaches(){
+                serviceLocators.clear();
+        }
         /**
          * Default constructor, loads from the default config, META-INF/uddi.xml
          *
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClientContainer.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClientContainer.java
index bd2f441..d64dd7b 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClientContainer.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClientContainer.java
@@ -89,5 +89,9 @@
     public static boolean contains(String name) {
         return 	(clients.containsKey(name)) ;
     }
+
+        public static void removeAll() {
+                clients.clear();
+        }
 	
 }
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java
index 9e71358..af6f3af 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java
@@ -21,13 +21,18 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.juddi.Registry;
 import org.apache.juddi.v3.client.UDDIConstants;
+import org.apache.juddi.v3.client.config.UDDIClient;
+import org.apache.juddi.v3.client.config.UDDIClientContainer;
 import org.apache.juddi.v3.client.ext.wsdm.WSDMQosConstants;
+import org.apache.juddi.v3.client.mapping.ServiceLocator;
+import org.apache.juddi.v3.client.transport.Transport;
 import org.apache.juddi.v3.error.ValueNotAllowedException;
 import org.apache.juddi.v3.tck.TckBindingTemplate;
 import static org.apache.juddi.v3.tck.TckBindingTemplate.JOE_BINDING_KEY;
 import static org.apache.juddi.v3.tck.TckBindingTemplate.JOE_BINDING_XML;
 import org.apache.juddi.v3.tck.TckBusiness;
 import org.apache.juddi.v3.tck.TckBusinessService;
+import org.apache.juddi.v3.tck.TckCommon;
 import org.apache.juddi.v3.tck.TckFindEntity;
 import org.apache.juddi.v3.tck.TckPublisher;
 import org.apache.juddi.v3.tck.TckSecurity;
@@ -43,6 +48,7 @@
 import org.uddi.api_v3.IdentifierBag;
 import org.uddi.api_v3.KeyedReference;
 import org.uddi.api_v3.TModelBag;
+import org.uddi.v3_service.UDDIPublicationPortType;
 import org.uddi.v3_service.UDDISecurityPortType;
 
 /**
@@ -244,4 +250,60 @@
                         tckTModel.deleteJoePublisherTmodel(authInfoJoe);
                 }
         }
+        
+        @Test
+        public void testJuddi937ServiceLocatorWithCache() throws Exception {
+                try {
+                        tckTModel.saveJoePublisherTmodel(authInfoJoe);
+                        tckBusiness.saveJoePublisherBusiness(authInfoJoe);
+                        tckBusinessService.saveJoePublisherService(authInfoJoe);
+                        tckBindingTemplate.saveBinding(authInfoJoe, "uddi_data/joepublisher/bindingTemplate.xml", JOE_BINDING_KEY, false);
+
+                        //create a client using invm transport
+                        UDDIClientContainer.removeAll();
+                        UDDIClient.clearServiceLocatorCaches();
+                        UDDIClient c = new UDDIClient("META-INF/uddi.xml");
+                        ServiceLocator serviceLocator = c.getServiceLocator("joe");
+                        serviceLocator.withSimpleCache();
+                        serviceLocator.clearCaches();
+                        String lookupEndpoint = serviceLocator.lookupEndpoint(TckBusinessService.JOE_SERVICE_KEY);
+                        String lookupEndpoint2 = serviceLocator.lookupEndpoint(TckBusinessService.JOE_SERVICE_KEY);
+                        System.out.println(TckCommon.DumpAllServices(authInfoJoe, c.getTransport("default").getUDDIInquiryService()));
+                        Assert.assertNotEquals(lookupEndpoint, lookupEndpoint2);
+                } finally {
+                        tckBusinessService.deleteJoePublisherService(authInfoJoe);
+                        tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
+                        tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+                }
+         }
+        
+        
+        
+        @Test
+        public void testJuddi937ServiceLocatorWithoutCache() throws Exception {
+                try {
+                    
+                        tckTModel.saveJoePublisherTmodel(authInfoJoe);
+                        tckBusiness.saveJoePublisherBusiness(authInfoJoe);
+                        tckBusinessService.saveJoePublisherService(authInfoJoe);
+                        tckBindingTemplate.saveBinding(authInfoJoe, "uddi_data/joepublisher/bindingTemplate.xml", JOE_BINDING_KEY, false);
+
+                        //create a client using invm transport
+                        UDDIClientContainer.removeAll();
+                        UDDIClient.clearServiceLocatorCaches();
+                        UDDIClient c = new UDDIClient("META-INF/uddi.xml");
+                        ServiceLocator serviceLocator = c.getServiceLocator("joe");
+                        serviceLocator.clearCaches();
+                        //serviceLocator.withSimpleCache();
+                        String lookupEndpoint = serviceLocator.lookupEndpoint(TckBusinessService.JOE_SERVICE_KEY);
+                        String lookupEndpoint2 = serviceLocator.lookupEndpoint(TckBusinessService.JOE_SERVICE_KEY);
+                        
+                        System.out.println(TckCommon.DumpAllServices(authInfoJoe, c.getTransport("default").getUDDIInquiryService()));
+                        Assert.assertEquals(lookupEndpoint, lookupEndpoint2);
+                } finally {
+                        tckBusinessService.deleteJoePublisherService(authInfoJoe);
+                        tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
+                        tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+                }
+         }
 }
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/runtime/CLIServerTest.java b/juddi-core/src/test/java/org/apache/juddi/api/runtime/CLIServerTest.java
index f60c3e0..0869b9a 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/runtime/CLIServerTest.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/runtime/CLIServerTest.java
@@ -53,8 +53,8 @@
         static String replUrl = null;
         static String juddiUrl = null;
         static boolean sink = false;
-     static  replicantImpl repl= new replicantImpl();
-      static  juddiTestimpl jude= new juddiTestimpl();
+     static  ReplicantImpl repl= new ReplicantImpl();
+      static  JuddiTestimpl jude= new JuddiTestimpl();
 
         @BeforeClass
         public static void startManager() throws Exception {
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java b/juddi-core/src/test/java/org/apache/juddi/api/runtime/JuddiTestimpl.java
similarity index 99%
rename from juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java
rename to juddi-core/src/test/java/org/apache/juddi/api/runtime/JuddiTestimpl.java
index 9032d34..c9f6dab 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/runtime/JuddiTestimpl.java
@@ -62,7 +62,7 @@
 @WebService(serviceName = "JUDDIApiService",
         endpointInterface = "org.apache.juddi.v3_service.JUDDIApiPortType",
         targetNamespace = "urn:juddi-apache-org:v3_service")
-public class juddiTestimpl implements JUDDIApiPortType {
+public class JuddiTestimpl implements JUDDIApiPortType {
       
 
         @Override
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/runtime/replicantImpl.java b/juddi-core/src/test/java/org/apache/juddi/api/runtime/ReplicantImpl.java
similarity index 96%
rename from juddi-core/src/test/java/org/apache/juddi/api/runtime/replicantImpl.java
rename to juddi-core/src/test/java/org/apache/juddi/api/runtime/ReplicantImpl.java
index 7d05569..c34d862 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/runtime/replicantImpl.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/runtime/ReplicantImpl.java
@@ -36,9 +36,9 @@
  */
 @WebService(serviceName = "UDDI_Replication_PortType", targetNamespace = "urn:uddi-org:repl_v3_portType",
         endpointInterface = "org.uddi.v3_service.UDDIReplicationPortType")
-              public class replicantImpl implements UDDIReplicationPortType {
+              public class ReplicantImpl implements UDDIReplicationPortType {
       
-        public replicantImpl(){
+        public ReplicantImpl(){
         }
 
     
diff --git a/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckCommon.java b/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckCommon.java
index 38ed251..7011ca9 100644
--- a/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckCommon.java
+++ b/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckCommon.java
@@ -19,10 +19,12 @@
 import java.util.List;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.uddi.api_v3.BindingTemplate;
 import org.uddi.api_v3.BindingTemplates;
 import org.uddi.api_v3.BusinessEntity;
 import org.uddi.api_v3.BusinessInfos;
 import org.uddi.api_v3.BusinessList;
+import org.uddi.api_v3.BusinessService;
 import org.uddi.api_v3.CategoryBag;
 import org.uddi.api_v3.Contacts;
 import org.uddi.api_v3.DeleteBusiness;
@@ -32,9 +34,11 @@
 import org.uddi.api_v3.FindService;
 import org.uddi.api_v3.FindTModel;
 import org.uddi.api_v3.GetOperationalInfo;
+import org.uddi.api_v3.GetServiceDetail;
 import org.uddi.api_v3.KeyedReference;
 import org.uddi.api_v3.Name;
 import org.uddi.api_v3.OperationalInfos;
+import org.uddi.api_v3.ServiceDetail;
 import org.uddi.api_v3.ServiceInfos;
 import org.uddi.api_v3.ServiceList;
 import org.uddi.api_v3.TModelList;
@@ -268,8 +272,23 @@
                                 return ("NO SERVICES RETURNED!");
                         } else {
                                 for (int i = 0; i < findService.getServiceInfos().getServiceInfo().size(); i++) {
-                                        sb.append(findService.getServiceInfos().getServiceInfo().get(i).getName().get(0).getValue()).append(" lang=").append(findService.getServiceInfos().getServiceInfo().get(i).getName().get(0).getLang()).append(" ").append(findService.getServiceInfos().getServiceInfo().get(i).getServiceKey()).append(" ").append(findService.getServiceInfos().getServiceInfo().get(i).getBusinessKey()).append(
-                                                System.getProperty("line.separator"));
+                                        sb.append(findService.getServiceInfos().getServiceInfo().get(i).getName().get(0).getValue()).
+                                                append(" lang=").append(findService.getServiceInfos().getServiceInfo().get(i).getName().get(0).getLang()).
+                                                append(" ").append(findService.getServiceInfos().getServiceInfo().get(i).getServiceKey()).
+                                                append(" ").append(findService.getServiceInfos().getServiceInfo().get(i).getBusinessKey()).
+                                                append(System.getProperty("line.separator"));
+                                        GetServiceDetail req=new GetServiceDetail();
+                                        req.setAuthInfo(authinfo);
+                                        req.getServiceKey().add(findService.getServiceInfos().getServiceInfo().get(i).getServiceKey());
+                                         ServiceDetail d=inquiry.getServiceDetail(req);
+                                        for(BusinessService bs : d.getBusinessService()){
+                                           for(BindingTemplate bt:bs.getBindingTemplates().getBindingTemplate()){
+                                               sb.append(bt.getBindingKey());
+                                               sb.append(" ");
+                                               sb.append(bt.getAccessPoint().getValue());
+                                               sb. append(System.getProperty("line.separator"));
+                                           }
+                                        }
                                 }
                         }
                 } catch (Exception ex) {
