Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/java.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
jdk: [8, 11, 17]
jdk: [17]

steps:
- uses: actions/checkout@v4
Expand All @@ -35,7 +35,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
jdk: [8, 11, 17]
jdk: [17]

steps:
- uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion MAINTAINERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
23 changes: 11 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand All @@ -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):

Expand All @@ -41,7 +42,7 @@ Maven (POM.xml):
<dependency>
<groupId>com.ibm.cics</groupId>
<artifactId>com.ibm.cics.ts.bom</artifactId>
<version>5.5-20200519131930-PH25409</version>
<version>6.1-20250812133513-PH63856</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Expand All @@ -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.

Expand All @@ -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.
Expand Down Expand Up @@ -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`:
- `<servlet-3.1>` or `<servlet-4.0>` depending on the version of Java EE in use.
- `<cicsts:security-1.0>` if CICS security is enabled.

>**Note:** `servlet-4.0` will only work for CICS TS V5.5 or later
- `<servlet-6.0>` or later depending on the version of Jakarta EE in use.
- `<cicsts:security-1.0>` 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.
Expand Down
19 changes: 8 additions & 11 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@

plugins
plugins
{
id 'org.springframework.boot' version '3.5.9'
id 'io.spring.dependency-management' version '1.1.7'
Expand All @@ -12,6 +11,8 @@
group = 'com.ibm.cicsdev.springboot'
archivesBaseName='cics-java-liberty-springboot-jcics'
version = '0.1.0'


java
{
sourceCompatibility = JavaVersion.VERSION_17
Expand Down Expand Up @@ -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
{
Expand Down
3 changes: 1 addition & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
publish_repo_releases_name = 'default-value-for-publish_repo_releases_name'
13 changes: 6 additions & 7 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,14 @@

<properties>
<java.version>17</java.version>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.target>${java.version}</maven.compiler.target>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.source>${java.version}</maven.compiler.source>
<spring-boot.repackage.skip>true</spring-boot.repackage.skip>
</properties>

<!-- CICS TS V6.1 BOM (as of Sept 2024) -->
<!--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) -->
<dependencyManagement>
<dependencies>
<dependency>
Expand All @@ -45,13 +46,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Compile against, but don't include JCICS in the final build (version and scope are from
BOM) -->
<!-- Compile against, but don't include JCICS in the final build (version and scope are from BOM) -->
<dependency>
<groupId>com.ibm.cics</groupId>
<artifactId>com.ibm.cics.server</artifactId>
</dependency>

</dependency>

<!-- Compile against, but don't include Tomcat in the runtime build -->
<dependency>
Expand Down