Error on starting spring boot 3 EAR on Websphere Liberty

74 views Asked by At

I am upgrading my spring boot application to version 3 and Java 17. I have already installed Java 17 liberty patch on websphere liberty server and enabled few features in server.xml like below

<featureManager>
<feature>servlet-6.0</feature>
<feature>ssl-1.0</feature>
<feature>ldapRegistry-3.0</feature>
<feature>zosLocalAdapters-1.0</feature>
<feature>zosTransaction-1.0</feature>
<feature>jdbc-4.3</feature>
<feature>jndi-1.0</feature>
<feature>springBoot-3.0</feature>
<feature>monitor-1.0</feature>
<feature>mpMetrics-5.0</feature>
<feature>enterpriseBeans-4.0</feature>

but when I trying to deploy my spring boot ear to server. it is throwing an exception

    Caused by: java.lang.ClassNotFoundException: CWWKL0084W: The javax.transaction.Synchronization class could not be loaded. Try enabling the jdbc-4.0 feature or a newer version of the feature in the server.xml file.
    at com.ibm.ws.classloading.internal.util.FeatureSuggestion.getExceptionWithSuggestion(FeatureSuggestion.java:118) ~[na:na]
    at com.ibm.ws.classloading.internal.AppClassLoader.loadClass(AppClassLoader.java:606) ~[na:na]
    at com.ibm.ws.classloading.internal.AppClassLoader.loadClass(AppClassLoader.java:553) ~[na:na]
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:1095) ~[na:na]
    ... 84 common frames omitted
Caused by: java.lang.ClassNotFoundException: javax.transaction.Synchronization
    at com.ibm.ws.classloading.internal.AppClassLoader.findClassCommonLibraryClassLoaders(AppClassLoader.java:742) ~[na:na]
    at com.ibm.ws.classloading.internal.AppClassLoader.findClass(AppClassLoader.java:327) ~[na:na]
    at com.ibm.ws.classloading.internal.AppClassLoader.findOrDelegateLoadClass(AppClassLoader.java:714) ~[na:na]
    at com.ibm.ws.classloading.internal.AppClassLoader.loadClass(AppClassLoader.java:586) ~[na:na]
    ... 86 common frames omitted

below are the dependacies of my spring app

    dependencies {

    implementation project(":sofa-domain")
    implementation project(":sofa-business-api")

    implementation platform("org.springframework.boot:spring-boot-dependencies:$springBootVersion")
    implementation("org.springframework.boot:spring-boot-starter-log4j2:$springBootVersion") {
        exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j2-impl'
    }
    implementation("org.springframework.boot:spring-boot-starter-web") {
        exclude group: 'org.apache.tomcat', module: "spring-boot-starter-tomcat"
    }
    implementation('com.fasterxml.jackson.core:jackson-databind:2.16.1')
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")

    implementation("jakarta.xml.bind:jakarta.xml.bind-api:4.0.1")
    providedCompile("jakarta.ejb:jakarta.ejb-api:4.0.1")
    providedCompile("jakarta.resource:jakarta.resource-api:2.1.0")
    implementation("jakarta.validation:jakarta.validation-api:$validationApiVersion")

    implementation("io.springfox:springfox-swagger2:$springfoxVersion")
    implementation("io.springfox:springfox-swagger-ui:$springfoxVersion")
    implementation("io.springfox:springfox-bean-validators:$springfoxVersion")
    implementation('com.ibm.websphere.appserver.features:zosLocalAdapters-1.0:24.0.0.1')
    implementation('com.ibm.websphere.appserver.api:com.ibm.websphere.appserver.api.zosLocalAdapters.jakarta:1.0.86'){              
        exclude group: 'javax.servlet', module:'javax.servlet-api'      
        exclude group: 'io.openliberty.features', module: 'io.openliberty.servlet.api'*/
    }
    implementation('com.ibm.websphere.appserver.features:zosSecurity-1.0:24.0.0.1'){
        exclude group: 'io.openliberty.features', module: 'com.ibm.websphere.appserver.eeCompatible'
        exclude group: 'io.openliberty.features', module: 'io.openliberty.servlet.api'
    }
    implementation("com.google.guava:guava:$guavaVersion")
    implementation 'org.glassfish.expressly:expressly:5.0.0'
    implementation group: 'javax.transaction', name: 'jta', version: '1.1'
    compileOnly("org.projectlombok:lombok:$lombokVersion")
    annotationProcessor("org.projectlombok:lombok:$lombokVersion")

    testCompileOnly("org.projectlombok:lombok:$lombokVersion")
    testAnnotationProcessor("org.projectlombok:lombok:$lombokVersion")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testImplementation("org.spockframework:spock-core:$spockVersion")
    testImplementation("org.spockframework:spock-spring:$spockVersion")
    implementation("org.spockframework:spock-junit4:$spockVersion")

    testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'

    providedRuntime("com.ibm.db2.jcc:db2jcc:db2jcc4")

    runtimeOnly ("org.postgresql:postgresql:42.7.0")

    implementation("org.hibernate.validator:hibernate-validator:$validationImplVersion")
    implementation 'org.zalando:problem-spring-web-starter:0.29.1'
}

I tried following after searching over internet

  1. Added jta dependancy in gradle but did not work
  2. Added persistence-1.0 and not luck

I have almost exhausted with options so seeking some expert help here.

1

There are 1 answers

0
SamD On

So, Just to summarise the solution of issue & As Hakan rightly said it was indeed dependencies relay issue.

I excluded problematic one from gradle using exclude and that resolved my problem.

implementation('com.ibm.websphere.appserver.features:zosLocalAdapters-1.0:24.0.0.1') {
        exclude group: 'javax.transaction', module:'jta'
        exclude group: 'javax.transaction', module:'javax.transaction-api'
    }