簡體   English   中英

如何使用 Oracle 驅動程序依賴項自定義構建 Spring 雲數據流服務器?

[英]How to do a Custom Build of Spring Cloud Data Flow server with Oracle driver dependency?

我一直在嘗試 SCDF 一段時間,打算使用 Oracle 數據庫作為數據源。 由於許可問題,必須將 Oracle 驅動程序添加到 SCDF 服務器的類路徑中,或者我們必須使用 Oracle 驅動程序依賴項(我有)來自定義構建 SCDF 服務器。 當我從 github 下載自定義構建項目dataflow-server-22x (僅此項目)並嘗試執行時,我在 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 jar 的自定義構建。我在這里遺漏了什么嗎?

此外,我的意圖只是構建一個 jar,其中包含一組可以部署在 SCDF 中並從 SCDF 編排的批處理作業。 但我在這里沒有使用 Docker 或 Kube.netes/CloudFoundry。

注意:我已經問了一個問題來澄清這個問題,這導致了我的這個問題。 他們在那里說我應該使用自定義構建,但無法確切說明如何或如何解決自定義構建引起的問題。 因此我發布了這個問題。 民防部隊+甲骨文

提前致謝。

更新 1:

在 Ilayaperumals 的建議下,上述問題得到了解決。 但是我遇到了另一個問題。

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

但是在我從 SCDF 執行任務后,我在 task_execution 表中看到 Id=3。 自定義 SCDF 項目具有與我的 Spring 批處理作業屬性相同的數據庫配置屬性值。 這里需要注意的幾件事是,

  • spring-boot-starter-parent:2.2.5.RELEASE,
  • 彈簧雲數據流:2.2.0.RELEASE
  • 我使用批處理作業 class 的實例從 Boot 的主要 class 加載我的所有 Batchjobs,只有主要的 class(它啟動所有作業)包含 @EnableTask 注釋。 下面是我的 class 結構。
    @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 批處理項目中使用的屬性。
    **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 配置作為 args 以及其他一些選項,例如將 @Enabletask 添加到所有作業配置類,但它們似乎都不起作用。

我在這里錯過了什么?

由於您提到您不在 CloudFoundry 上運行它並且特定依賴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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM