code: @SuppressWarnings("unchecked")
  	public <T> void put(Descriptor<T> descriptor, T component) {
  		if (context == null) {
  			super.put(descriptor, component);
  			return;
  		}
  		
  		Map<Descriptor<?>, Object> components 
  				= (Map<Descriptor<?>, Object>) context.getAttribute(COMPONENTS);
  		components.put(descriptor, component);
  	}
docs: Puts the specified component and descriptor pair into the current
  {@code ServletContext}.
  If the application is not running in Web environment, the component is
  put into {@code SingletonContext}'s component store.
  
  @param <T> The component type.
  @param descriptor The descriptor corresponding to the component.
  @param component The component to be put.