/** * Create a new SCAInvoker for invoking local endpoints. * @param config binding configuration model */ public SCAInvoker(SCABindingModel config) { _bindingName = config.getName(); _referenceName = config.getReference().getName(); _targetService = config.getTarget(); _targetNamespace = config.getTargetNamespace(); _clustered = config.isClustered(); _preferLocal = config.isPreferLocal(); }
@Override public ServiceHandler activateBinding(QName name, BindingModel config) { _endpointPublisher.setDisableRemoteTransaction(_disableRemoteTransaction); // Signal the remote endpoint publisher to start. Multiple calls to start are harmless. try { // Note that stop() occurs as part of the SCAComponent lifecycle. _endpointPublisher.start(); } catch (Exception ex) { SCALogger.ROOT_LOGGER.failedToStartRemoteEndpointListenerForSCAEndpoints(ex); } SCABindingModel scab = (SCABindingModel)config; if (scab.isServiceBinding()) { return new SCAEndpoint(scab, super.getServiceDomain(), _endpointPublisher, _registry); } else { if ((scab.getTarget() == null) && (scab.getTargetNamespace() == null)) { throw SCAMessages.MESSAGES.invalidSCABindingForReferenceTargetServiceOrNamespaceMustBeSpecified(); } return new SCAInvoker(scab, _registry) .setDisableRemoteTransaction(_disableRemoteTransaction); } }
@Override protected void doStop() { if (_bindingModel.isClustered() && _registry != null) { _registry.removeEndpoint(_endpoint); } _endpointPublisher.removeService(_bindingModel.getService().getQName(), _domain); }
/** * Create a new SCAInvoker capable of invoking remote service endpoints. * @param config binding configuration model * @param registry registry of remote services */ public SCAInvoker(SCABindingModel config, RemoteRegistry registry) { this(config); if (config.isLoadBalanced()) { LoadBalanceStrategy loadBalancer = createLoadBalancer(config.getLoadBalance()); _invoker = new ClusteredInvoker(registry, loadBalancer); } else { _invoker = new ClusteredInvoker(registry); } }
@Override public ServiceHandler activateBinding(QName name, BindingModel config) { _endpointPublisher.setDisableRemoteTransaction(_disableRemoteTransaction); // Signal the remote endpoint publisher to start. Multiple calls to start are harmless. try { // Note that stop() occurs as part of the SCAComponent lifecycle. _endpointPublisher.start(); } catch (Exception ex) { SCALogger.ROOT_LOGGER.failedToStartRemoteEndpointListenerForSCAEndpoints(ex); } SCABindingModel scab = (SCABindingModel)config; if (scab.isServiceBinding()) { return new SCAEndpoint(scab, super.getServiceDomain(), _endpointPublisher, _registry); } else { if ((scab.getTarget() == null) && (scab.getTargetNamespace() == null)) { throw SCAMessages.MESSAGES.invalidSCABindingForReferenceTargetServiceOrNamespaceMustBeSpecified(); } return new SCAInvoker(scab, _registry) .setDisableRemoteTransaction(_disableRemoteTransaction); } }
@Override protected void doStop() { if (_bindingModel.isClustered() && _registry != null) { _registry.removeEndpoint(_endpoint); } _endpointPublisher.removeService(_bindingModel.getService().getQName(), _domain); }
/** * Create a new SCAInvoker capable of invoking remote service endpoints. * @param config binding configuration model * @param registry registry of remote services */ public SCAInvoker(SCABindingModel config, RemoteRegistry registry) { this(config); if (config.isLoadBalanced()) { LoadBalanceStrategy loadBalancer = createLoadBalancer(config.getLoadBalance()); _invoker = new ClusteredInvoker(registry, loadBalancer); } else { _invoker = new ClusteredInvoker(registry); } }
/** * Create a new SCAInvoker for invoking local endpoints. * @param config binding configuration model */ public SCAInvoker(SCABindingModel config) { _bindingName = config.getName(); _referenceName = config.getReference().getName(); _targetService = config.getTarget(); _targetNamespace = config.getTargetNamespace(); _clustered = config.isClustered(); _preferLocal = config.isPreferLocal(); }
@Override protected void doStart() { QName serviceName = _bindingModel.getService().getQName(); _endpointPublisher.addService(serviceName, _domain); List<Service> services = _domain.getServices(serviceName); if (services.isEmpty()) { throw SCAMessages.MESSAGES.failedToResolveServiceInDomain(serviceName.toString()); } if (_bindingModel.isClustered()) { // The registry can be null in test environments or if the cache is misconfigured if (_registry != null) { _endpoint = RemoteEndpoint.fromService(services.get(0)); _endpoint.setEndpoint(_endpointPublisher.getAddress()); _registry.addEndpoint(_endpoint); } else { SCALogger.ROOT_LOGGER.cannotEnableClusteredSCABindingFor(serviceName.toString()); } } }
@Override protected void doStart() { QName serviceName = _bindingModel.getService().getQName(); _endpointPublisher.addService(serviceName, _domain); List<Service> services = _domain.getServices(serviceName); if (services.isEmpty()) { throw SCAMessages.MESSAGES.failedToResolveServiceInDomain(serviceName.toString()); } if (_bindingModel.isClustered()) { // The registry can be null in test environments or if the cache is misconfigured if (_registry != null) { _endpoint = RemoteEndpoint.fromService(services.get(0)); _endpoint.setEndpoint(_endpointPublisher.getAddress()); _registry.addEndpoint(_endpoint); } else { SCALogger.ROOT_LOGGER.cannotEnableClusteredSCABindingFor(serviceName.toString()); } } }