}
private static WatchListRecorder create(final URI serverUri, final String viewProcessorClassifier, final String securitySourceClassifier) {
final RemoteComponentServer remote = new RemoteComponentServer(serverUri);
final ComponentServer server = remote.getComponentServer();
final ComponentInfo viewProcessorInfo = server.getComponentInfo(ViewProcessor.class, viewProcessorClassifier);
final ComponentInfo securitySourceInfo = server.getComponentInfo(SecuritySource.class, securitySourceClassifier);
final URI uri = URI.create(viewProcessorInfo.getAttribute(ComponentInfoAttributes.JMS_BROKER_URI));
final ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(uri);
final JmsConnectorFactoryBean factory = new JmsConnectorFactoryBean();
factory.setName("WatchListRecorder");
factory.setConnectionFactory(cf);
factory.setClientBrokerUri(uri);
final JmsConnector jmsConnector = factory.getObjectCreating();
final ViewProcessor viewProcessor = new RemoteViewProcessor(viewProcessorInfo.getUri(), jmsConnector, Executors.newSingleThreadScheduledExecutor());
// TODO: Not ideal; the published resolver should be used rather than an ad-hoc one created based just on the security source
final ComputationTargetResolver targetResolver = new DefaultComputationTargetResolver(new RemoteSecuritySource(securitySourceInfo.getUri()));
return new WatchListRecorder(viewProcessor, targetResolver);
}