You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by al...@apache.org on 2020/01/20 04:10:42 UTC
[juddi] 01/01: JUDDI-937 this resolve the caching issue,
needs a test case still
This is an automated email from the ASF dual-hosted git repository.
alexoree pushed a commit to branch bug/JUDDI-937
in repository https://gitbox.apache.org/repos/asf/juddi.git
commit 07790a220657525c85d446ed9427aa9ac3fac6ee
Author: Alex O'Ree <al...@apache.org>
AuthorDate: Sun Jan 19 23:10:38 2020 -0500
JUDDI-937 this resolve the caching issue, needs a test case still
---
.../juddi/v3/client/mapping/ServiceLocator.java | 62 ++++++++++++++++------
1 file changed, 46 insertions(+), 16 deletions(-)
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java
index e270761..8c77604 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java
@@ -19,6 +19,7 @@ import java.net.URL;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Properties;
+import java.util.concurrent.ConcurrentHashMap;
import javax.xml.namespace.QName;
@@ -46,7 +47,7 @@ import org.uddi.api_v3.BusinessService;
*/
public class ServiceLocator {
- private Log log = LogFactory.getLog(this.getClass());
+ private static final Log log = LogFactory.getLog(ServiceLocator.class);
private UDDIClerk clerk;
private Properties properties = new Properties();
@@ -54,7 +55,7 @@ public class ServiceLocator {
private String policy = null;
private SelectionPolicy selectionPolicy = null;
private URLLocalizer urlLocalizer = null;
-
+ private ConcurrentHashMap<String, Topology> simpleCache= null;
/**
* Requirement in the config is a clerk with access credentials to the UDDI server
* you want the locator to do lookups to. When a live cache is used the clerk
@@ -80,6 +81,14 @@ public class ServiceLocator {
this.properties = clerk.getUDDINode().getProperties();
}
+ /**
+ * Creates a new UDDIServiceCache, which brings up a new WebService Endpoint. This
+ * EndPoint will be called by the UDDI server if any service changes. A callback
+ * will result in cleaning the cache.
+ *
+ * @param baseCallbackURL
+ * @throws ConfigurationException
+ */
public ServiceLocator withCache(URL baseCallbackURL) throws ConfigurationException {
if (serviceCache == null) {
serviceCache = initCache(baseCallbackURL);
@@ -109,6 +118,14 @@ public class ServiceLocator {
}
return this;
}
+
+
+ public ServiceLocator withSimpleCache(){
+ if (simpleCache==null){
+ simpleCache= new ConcurrentHashMap<String, Topology>();
+ }
+ return this;
+ }
public UDDIServiceCache getUDDIServiceCache() {
return serviceCache;
@@ -174,6 +191,13 @@ public class ServiceLocator {
throw new ConfigurationException(e.getMessage(),e);
}
}
+
+ public void clearCaches(){
+ if (serviceCache!=null)
+ serviceCache.removeAll();
+ if (simpleCache!=null)
+ simpleCache.clear();
+ }
/**
*
@@ -182,7 +206,8 @@ public class ServiceLocator {
* @throws TransportException
*/
public void shutdown() throws RemoteException, ConfigurationException, TransportException {
- serviceCache.shutdown();
+ if (serviceCache!=null)
+ serviceCache.shutdown();
}
/**
* Looks up the Endpoints for a Service. If the cache is in use it will try to
@@ -199,21 +224,25 @@ public class ServiceLocator {
*/
public String lookupEndpoint(String serviceKey) throws RemoteException, ConfigurationException, TransportException {
Topology topology = null;
- if (serviceCache==null) { //nocache in use
+ if (simpleCache != null && simpleCache.containsKey(serviceKey)){
+ topology = simpleCache.get(serviceKey);
+ } else if (serviceCache==null) { //nocache in use
topology = lookupEndpointInUDDI(serviceKey);
} else { //with cache
//try to get it from the cache first
topology = serviceCache.lookupService(serviceKey);
- if (topology==null) { //not found in the cache
+ if (topology == null) { //not found in the cache
topology = lookupEndpointInUDDI(serviceKey);
}
}
- if (topology!=null && topology.getEprs().size() > 0) {
- String epr = getPolicy().select(topology);
- return epr;
- } else {
- return null;
- }
+ if (topology!=null && topology.getEprs().size() > 0) {
+ if (simpleCache!=null){
+ simpleCache.put(serviceKey,topology);
+ }
+ String epr = getPolicy().select(topology);
+ return epr;
+ }
+ return null;
}
/**
@@ -264,11 +293,13 @@ public class ServiceLocator {
log.debug("epr= " + url);
eprs.add(url);
} else if(AccessPointType.WSDL_DEPLOYMENT.toString().equals(accessPoint.getUseType())) {
- //do something here
- //try to open that wsdl, then grab the endpoints
+ //do something here
+ //try to open that wsdl, then grab the endpoints
+ //String url=fetchFromWsdl(accessPoint.getValue());
+
} else if(AccessPointType.BINDING_TEMPLATE.toString().equals(accessPoint.getUseType())) {
- //do something here
- //grab that binding template and use that address
+ //do something here
+ //grab that binding template and use that address
}
}
}
@@ -284,5 +315,4 @@ public class ServiceLocator {
}
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@juddi.apache.org
For additional commands, e-mail: commits-help@juddi.apache.org