[ 
https://issues.apache.org/jira/browse/JUDDI-937?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14980286#comment-14980286
 ] 

Alex O'Ree commented on JUDDI-937:
----------------------------------

ok, i'll explain further...

> the lookupEndpoint only fires when the 
> bindingTemplate/accessPoint/useType=endPoint (all other's are ignored, which 
> is dumb IMO. The jUDDI REST endpoint handles other cases, why not this one?)

A business has 0 or more services. a service has 0 or more bindings. a binding 
has 1 access point with that has a string for the value (usually the URL to the 
service) and a string for the type. The type, according to the spec can be 
"endPoint" which is where you execute the service, "wsdlDeployment" which means 
use that for your client (or parse it for the actual endpoint), and 
bindingRedirector and something else. The ServiceLocator.lookupEndpoint only 
handles "endPoint" correctly. So if you've registered a service, the 
business/service/binding/accessPoint/type has to be endPoint in order for it 
work.

The REST endpoint does not have this limitation and will resolve the execution 
endpoint of a service given the service key.

ServiceLocator.lookupEndpoint, without the cache, cannot use round robin since 
there's (currently) no way to get the topology object out. If this is a need 
for you, we can extend the code to make that part feasible.

> PolicyRoundRobin not working without service cache
> --------------------------------------------------
>
>                 Key: JUDDI-937
>                 URL: https://issues.apache.org/jira/browse/JUDDI-937
>             Project: jUDDI
>          Issue Type: Bug
>          Components: juddi-client
>    Affects Versions: 3.3.1
>            Reporter: Matthieu Ghilain
>            Priority: Minor
>              Labels: cache, juddi, policy
>
> I use the following method in order to resolve an endpoint:
> {code:title=Resolve endpoint function|borderStyle=solid}
>  private String resolveEndpointForServiceID(String uddiServiceId) {
>         try {
>             UDDIClient uddiClient = new UDDIClient();
>             ServiceLocator serviceLocator = 
> uddiClient.getServiceLocator("uddiv3");
>             serviceLocator.setPolicy(PolicyRoundRobin.class.getName());
>             return serviceLocator.lookupEndpoint(uddiServiceId);
>         } catch (Exception e) {
>             throw new EndpointResolutionFromUDDIException("Could not resolve 
> endpoint '"+uddiServiceId+"'.", e);
>         }
>     }
> {code}
> I have registered two different binding templates in juddi. Using this code I 
> always receive the same endpoint. This comes from the fact that the topology 
> is reloaded each time the lookupEndpoint is called because there is no cache. 
> I guess that the service policy should still be able to make a round robin 
> between the binding templates even if no cache is used.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to