Как поместить в настраиваемую область / контекст (JobScoped - настраиваемую область CDI) конкретный экземпляр из запроса, чтобы сделать его инъекционным?

Говоря в двух словах, я бы хотел добавить в пользовательскую область конкретный экземпляр класса Configuration из запроса rest. Основная проблема заключается в том, что пользовательская область (JobScoped от JBerethttps://jberet.gitbooks.io/jberet-user-guide/content/custom_cdi_scopes/index.html) имеет право после начала работы. Я знаю, что есть возможность добавлять свойства при запуске задания, но мой класс Configuration объединяет множество конфигураций, и это довольно сложно, поэтому было бы очень неудобно преобразовывать эти файлы в класс Properties.

Подробности ниже:

Это псевдокод запроса на отдых:

@Path("/job")
public class RunJob {

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("/start")
public String startJob(@FormDataParam("file") InputStream uploadedInputStream) {
    JobOperatorImpl jobOperator = (JobOperatorImpl) BatchRuntime.getJobOperator();

    Configuration config = new Configuration(uploadedInputStream);
    Properties properties = new Properties();
    jobOperator.start(job, properties);
}

Чего я хотел добиться, так это внедрить некоторые файлы конфигурации в контексте задания, как показано ниже:

public class MyReader implements ItemReader {

@Inject
private Configuration configFile;
}

Класс конфигурации представлен как ниже:

@JobScoped
public class Configuration {
 // some flags, methods etc
}

Я читал об Instance, Provider, но не знаю, как использовать их в моем случае. На самом деле я думаю, что их невозможно использовать, потому что задания идентифицируются по их имени, которое является динамическим и известным во время выполнения.

Между тем я нашел похожую ситуацию с моей:Могу ли я создать объект в области запроса и получить к нему доступ из любого места и избежать его передачи в качестве параметра в JAX-RS?

Но тогда возникает проблема с отсутствующим контекстом. Когда Job запускается, существует контекст JobScoped. В соответствии с вышеупомянутым решением, я отметил конфигурацию как RequestScoped, затем я получил:

org.jboss.weld.context.ContextNotActiveException: WELD-001303: нет активных контекстов для типа области видимости javax.enterprise.context.RequestScoped в org.jboss.weld.manager.BeanManagerImpl.get.text (BeanManagerImpl) 9 , (ContextualInstance.java:63) в org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance (ContextBeanInstance.java:83) в org.jboss.weld.bean.proxy.ProxyMethodHandler.get.stj (ProxyMethodH) $ Proxy $ _ $ _ WeldClientProxy.toString (неизвестный источник)

Ответы на вопрос(3)

Ваш ответ на вопрос