Как создать пользовательский сервер Spring Cloud Data Flow с зависимостью от драйвера Oracle? - PullRequest
0 голосов
/ 15 апреля 2020

Я некоторое время пробовал SCDF с намерением использовать Oracle База данных в качестве источника данных. Из-за проблем с лицензированием необходимо добавить драйвер Oracle в classpath сервера SCDF, или мы должны сделать пользовательскую сборку сервера SCDF с Oracle зависимостью от драйвера (которая у меня есть). Когда я загружаю пользовательский проект сборки dataflow-server-22x (только этот проект) из github и пытаюсь выполнить, у меня возникает проблема с отсутствующим артефактом в pom. xml, как показано ниже.

Missing artifact io.pivotal:pivotal-cloudfoundry-client-reactor:jar:1.1.0.RELEASE 
at <xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> of pom.xml

Итак, как именно я должен выполнить пользовательскую сборку этого фляги SCDF. Я что-то здесь упускаю?

Также я собираюсь создать банку, содержащую набор пакетных заданий, которые можно развернуть в SCDF и организовать из SCDF. Но я не использую Docker или Kubernetes / CloudFoun dry здесь.

Примечание: я уже задавал один вопрос, чтобы получить разъяснения по этой проблеме, которые привели меня к этой проблеме. Там они сказали, что я должен использовать пользовательскую сборку, но не могу точно сказать, как или как решить проблемы, возникающие из пользовательской сборки. Поэтому я разместил этот вопрос. SCDF + Oracle

Заранее спасибо.

Обновление 1:

Эта проблема была решена после предложения Ilayaperumals. Однако я застрял с другой проблемой.

org.springframework.context.ApplicationContextException: Failed to start bean 'taskLifecycleListener'; nested exception is java.lang.IllegalArgumentException: Invalid TaskExecution, ID 3 not found

Но я вижу Id = 3 в таблице task_execution после того, как я выполню задачу из SCDF. Пользовательский проект SCDF имеет те же значения свойств конфигурации базы данных, что и свойства моего пакетного задания Spring. Несколько вещей, на которые следует обратить внимание:

  • Spring-boot-starter-parent: 2.2.5.RELEASE,
  • Spring-cloud-dataflow: 2.2.0.RELEASE
  • Я загружаю все свои пакетные задания из основного класса Boot, используя экземпляр класса пакетных заданий, и только основной класс (который запускает все задания) содержит аннотацию @EnableTask. Ниже приведена структура моего класса.
    @SpringBootApplication
    @EnableScheduling
    @EnableTask
    public class SpringBootMainApplication{
        @Autowired
        Job1Loader job1Loader;

        public static void main(String[] args) {
            SpringApplication.run(SpringBootMainApplication.class, args);
        }

        @Scheduled(cron = "0 */1 * * * ?")
        public void executeJob1Loader() throws Exception
        {
            JobParameters param = new JobParametersBuilder()
                                        .addString("JobID",         
                                     String.valueOf(System.currentTimeMillis()))
                                        .toJobParameters();
            jobLauncher.run(job1Loader.loadJob1(), param);
        }
    }

    //Job Config
    @Configuration
    @EnableBatchProcessing
    public class Job1Loader {
    @Bean
        public Job loadJob1()
        {
            return jobBuilderFactory().get("JOb1Loader")
                .incrementer(new RunIdIncrementer())
                .flow(step01())
                .end()
                .build();;//return job
    }

Я использую два разных источника данных в своем проекте работы Spring, оба являются oracle источником данных (разные серверы). Я отметил один из них как основной и использовал его Источник данных в моей пользовательской реализации "DefaultTaskConfigurer", как показано ниже.

    @Configuration
    public class TaskConfig extends DefaultTaskConfigurer {
        @Autowired
        DatabaseConfig databaseConfig; 
        @Override
        public DataSource getTaskDataSource() {
            return databaseConfig.dataSource();//dataSource() returns the 
    primary ds
        }
    }
  • Ниже приведены свойства, которые я использую как в пользовательском анализаторе SCDF, так и в проекте Spring Batch.
    **Spring batch Job :**
    spring.datasource.jdbc-url=jdbc:oracle:thin:@mydb
    spring.datasource.username=db_user
    spring.datasource.password=db_pwd
    spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

    **SCDF customer Server:**
    spring.datasource.url=jdbc:oracle:thin:@mydb
    spring.datasource.username=db_user
    spring.datasource.password=db_pwd
    spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

Я попытался указать конфигурацию db в качестве аргументов при запуске сервера и несколько других опций, таких как добавление @Enabletask ко всем классам конфигурации задания, но ни один из них, похоже, не работает.

Что мне здесь не хватает?

1 Ответ

2 голосов
/ 16 апреля 2020

Поскольку вы упомянули, что вы не запускаете это на CloudFoun dry, а указанная c зависимость io.pivotal:pivotal-cloudfoundry-client-reactor:jar происходит от spring-cloud-dataflow-platform-cloudfoundry, вам необходимо удалить эту зависимость из пользовательской конфигурации сборки, как показано ниже:

                 <dependency>
                        <groupId>org.springframework.cloud</groupId>
                        <artifactId>spring-cloud-starter-dataflow-server</artifactId>
                        <exclusions>
                                        <exclusion>
                                                <groupId>org.springframework.cloud</groupId>
                                                <artifactId>spring-cloud-dataflow-platform-cloudfoundry</artifactId>
                                        </exclusion>
                                </exclusions>
                </dependency>

Кроме того, выполнение ./mvnw dependency:tree поможет вам понять, откуда взялась зависимость:

\- org.springframework.cloud:spring-cloud-dataflow-platform-cloudfoundry:jar:2.5.0.BUILD-SNAPSHOT:compile
[INFO] |  |        +- org.springframework.cloud:spring-cloud-deployer-cloudfoundry:jar:2.3.0.BUILD-SNAPSHOT:compile
[INFO] |  |        |  +- org.cloudfoundry:cloudfoundry-client-reactor:jar:4.1.0.RELEASE:compile
[INFO] |  |        |  | 
[INFO] |  |        |  +- io.projectreactor.addons:reactor-extra:jar:3.3.2.RELEASE:compile
[INFO] |  |        |  \- io.pivotal:pivotal-cloudfoundry-client-reactor:jar:2.0.0.RELEASE:compile
[INFO] |  |        |     \- io.pivotal:pivotal-cloudfoundry-client:jar:2.0.0.RELEASE:compile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...