@Override
	public void introspectAllComponents()
			throws SystemNotConnectedException {
		componentsId = new ArrayList<String>();
		components = new ArrayList<AbstractOrocosComponent>();

		logger.info("Instropection of the system components:");
		BindingListHolder blistHolder = new BindingListHolder();
		BindingIteratorHolder biteratorHolder = new BindingIteratorHolder();
		BindingHolder bHolder = new BindingHolder();

		if(orocosContext == null){
			throw new SystemNotConnectedException(); 
		}
		orocosContext.list(0, blistHolder, biteratorHolder);

		if(biteratorHolder.value != null){

			int i = 1;
			while(biteratorHolder.value.next_one(bHolder)){
				String id = bHolder.value.binding_name[0].id;
				componentsId.add(id);
				logger.info("  Component-" + i + ": " + id);

				org.omg.CORBA.Object o;
				try {
					o = orocosContext.resolve(bHolder.value.binding_name);
					CTaskContext taskContext = CTaskContextHelper.narrow(o);
					AbstractOrocosComponent component = new CorbaOrocosComponent(taskContext,true);
					components.add(component);
				} catch (NotFound e) {
					logger.error("TaskContext service not found. Maybe the Orocos System is not running");
					e.printStackTrace();
				} catch (CannotProceed e) {
					logger.error("JacORB error, control the class OrocoSystem, method getComponents");
					e.printStackTrace();
				} catch (org.omg.CosNaming.NamingContextPackage.InvalidName e) {
					logger.error("JacORB error, control the class OrocoSystem, method getComponents");
					e.printStackTrace();
				}


				i++;
			}
		}
	}