diff --git a/.github/workflows/java.yml b/.github/workflows/java.yml index 269eadd..e595ac7 100644 --- a/.github/workflows/java.yml +++ b/.github/workflows/java.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - jdk: [8, 11, 17] + jdk: [17] steps: - uses: actions/checkout@v4 @@ -35,7 +35,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - jdk: [8, 11, 17] + jdk: [17] steps: - uses: actions/checkout@v4 diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 27652f8..ae77be6 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -4,4 +4,4 @@ - Alex Brown [@AlexBrown](https://github.com/SoftlySplinter) - Phil Wakelin [@PhilWakelin](https://github.com/PhilWakelin) -*Last reviewed:* November 2024 +*Last reviewed:* Feb 2026 diff --git a/README.md b/README.md index fd74058..e1cf634 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,10 @@ For further details about the development of this sample refer to the tutorial [ ## Requirements -- CICS TS V5.3 or later +- CICS TS V6.1 or later - A configured Liberty JVM server in CICS -- Java SE 1.8 or later on the workstation +- Jakarta EE 10 or later +- IBM Semeru Runtime Certified Edition Version 17.0 or later on the workstation - An Eclipse development environment on the workstation (optional) - Either Gradle or Apache Maven on the workstation (optional if using Wrappers) @@ -26,12 +27,12 @@ For further details about the development of this sample refer to the tutorial [ ### Check dependencies -Before building this sample, you should verify that the correct CICS TS bill of materials (BOM) is specified for your target release of CICS. The BOM specifies a consistent set of artifacts, and adds information about their scope. In the example below the version specified is compatible with CICS TS V5.5 with JCICS APAR PH25409, or newer. That is, the Java byte codes built by compiling against this version of JCICS will be compatible with later CICS TS versions and subsequent JCICS APARs. +Before building this sample, you should verify that the correct CICS TS bill of materials (BOM) is specified for your target release of CICS. The BOM specifies a consistent set of artifacts, and adds information about their scope. In the example below the version specified is compatible with CICS TS V6.1 with JCICS APAR PH63856, or newer. That is, the Java byte codes built by compiling against this version of JCICS will be compatible with later CICS TS versions and subsequent JCICS APARs. You can browse the published versions of the CICS BOM at [Maven Central.](https://mvnrepository.com/artifact/com.ibm.cics/com.ibm.cics.ts.bom) Gradle (build.gradle): -`compileOnly enforcedPlatform("com.ibm.cics:com.ibm.cics.ts.bom:5.5-20200519131930-PH25409")` +`compileOnly enforcedPlatform("com.ibm.cics:com.ibm.cics.ts.bom:6.1-20250812133513-PH63856")` Maven (POM.xml): @@ -41,7 +42,7 @@ Maven (POM.xml): com.ibm.cics com.ibm.cics.ts.bom - 5.5-20200519131930-PH25409 + 6.1-20250812133513-PH63856 pom import @@ -58,7 +59,7 @@ On the command line, you simply swap the Gradle or Maven command for the wrapper For an IDE, taking Eclipse as an example, the plug-ins for Gradle *buildship* and Maven *m2e* will integrate with the "Run As..." capability, allowing you to specify whether you want to build the project with a Wrapper, or a specific version of your chosen build tool. -The required build-tasks are typically `clean bootWar` for Gradle and `clean package` for Maven. Once run, Gradle will generate a WAR file in the `build/libs` directory, while Maven will generate it in the `target` directory. +The required build-tasks are typically `clean build` for Gradle and `clean package` for Maven. Once run, Gradle will generate a WAR file in the `build/libs` directory, while Maven will generate it in the `target` directory. **Note:** When building a WAR file for deployment to Liberty it is good practice to exclude Tomcat from the final runtime artifact. We demonstrate this in the pom.xml with the *provided* scope, and in build.gradle with the *providedRuntime()* dependency. @@ -73,12 +74,12 @@ Run the following in a local command prompt: On Linux or Mac: ```shell -./gradlew clean bootWar +./gradlew clean build ``` On Windows: ```shell -gradlew.bat clean bootWar +gradlew.bat clean build ``` This creates a WAR file inside the `build/libs` directory. @@ -107,10 +108,8 @@ This creates a WAR file inside the `target` directory. ## Deploying to a CICS Liberty JVM server - Ensure you have the following features defined in your Liberty `server.xml`: - - `` or `` depending on the version of Java EE in use. - - `` if CICS security is enabled. - ->**Note:** `servlet-4.0` will only work for CICS TS V5.5 or later + - `` or later depending on the version of Jakarta EE in use. + - `` if CICS security is enabled. - Deployment option 1: - Copy and paste the built WAR from your *target* or *build/libs* directory into a Eclipse CICS bundle project and create a new WAR bundlepart that references the WAR file. Then deploy the CICS bundle project from CICS Explorer using the **Export Bundle Project to z/OS UNIX File System** wizard. diff --git a/build.gradle b/build.gradle index a853336..b386ce6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,4 @@ - - plugins +plugins { id 'org.springframework.boot' version '3.5.9' id 'io.spring.dependency-management' version '1.1.7' @@ -12,6 +11,8 @@ group = 'com.ibm.cicsdev.springboot' archivesBaseName='cics-java-liberty-springboot-jcics' version = '0.1.0' + + java { sourceCompatibility = JavaVersion.VERSION_17 @@ -39,20 +40,16 @@ dependencies // Tomcat provided by CICS Liberty at runtime providedRuntime("org.springframework.boot:spring-boot-starter-tomcat") - // Use correct BOM version for CICS TS (6.1 is the minimum supported release for this sample). - // If you are running on a higher CICS TS version, you may replace this with a newer BOM.) + // Use correct BOM version for CICS TS (6.1 is the minimum supported release for this sample) + // If you are running on a higher CICS TS version, you may replace this with a newer BOM) compileOnly(enforcedPlatform("com.ibm.cics:com.ibm.cics.ts.bom:6.1-20250812133513-PH63856")) // JCICS API (version inherited from BOM) - compileOnly("com.ibm.cics:com.ibm.cics.server") - - + compileOnly("com.ibm.cics:com.ibm.cics.server") } -// Don't generate a FAT bootWar, we don't need to run standalone + +//Don't generate a FAT bootWar, we don't need to run standalone bootWar { enabled = false } -group = 'com.ibm.cicsdev.springboot' -archivesBaseName='cics-java-liberty-springboot-jcics' -version = '0.1.0' publishing { diff --git a/gradle.properties b/gradle.properties index 3538325..71ffae9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,5 +13,4 @@ # These values only have any effect if the publish goal is used. # For example: gradle build publish. publish_repo_releases_url = 'default-value-for-publish_repo_releases_url' -publish_repo_releases_name = 'default-value-for-publish_repo_releases_name' -java_version = 8 \ No newline at end of file +publish_repo_releases_name = 'default-value-for-publish_repo_releases_name' \ No newline at end of file diff --git a/pom.xml b/pom.xml index 44e6959..727b208 100644 --- a/pom.xml +++ b/pom.xml @@ -20,13 +20,14 @@ 17 - UTF-8 ${java.version} - ${java.version} + ${java.version} + true - + + @@ -45,13 +46,11 @@ org.springframework.boot spring-boot-starter-web - + com.ibm.cics com.ibm.cics.server - - +