BingAds / BingAds-Java-SDK

Other
42 stars 47 forks source link

Version supporting jakarta is missing #142

Closed markusheiden closed 1 year ago

markusheiden commented 1 year ago

The lib still uses javax.xml.ws:jaxws-api instead of the newer jakarta.xml.ws:jakarta.xml.ws-api. Are there plans for a migration? With Spring Boot 3 the support for the old lib has been dropped.

qitia commented 1 year ago

Fair ask. We will evaluate this.

markusheiden commented 1 year ago

Do you have any updates on this? This blocks our migration to Spring Boot 3. Alternatively, a description would be nice how to use Bing Ads API with Spring Boot 3.

qitia commented 1 year ago

Hi yes, the SDK vNext targets early June 2023, we will support jakarta in that version. works for you?

markusheiden commented 1 year ago

Thanks for the fast answer! That's quite some time ;-) but OK for us.

qitia commented 1 year ago

folks, v13.0.16 was released June/07(please use 13.0.16.1 as it fix a tiny issue, see release notes). from now on we start to support jakarta instead of jaxws. Please use this version.

we also upgrade pom.xml in the example. Please refer to it in case you have any dependent issue.

@markusheiden

markusheiden commented 1 year ago

@qitia Currently, I am not able to test, because there is still a Hibernate bug that let our application fail.

There is still a dependency on javax.activation instead of jakarta.activation. I am not sure whether that may be a problem and cause conflicts if jakarta.activation (via Spring Boot 3+) is on the classpath too.

In the pom.xml jaxws-rt is rather old: 3.0.0 is from 11/18/2020. IMO it should be at least 3.0.2, probably even 4.0.1. That applies to the version of other dependencies in the above-mentioned pom.xml and in the pom.xml of this lib too.

qitia commented 1 year ago

thanks. Let me double check.

markusheiden commented 1 year ago

A first test shows: The current version works fine with Spring Boot 3+ / Jakarta. Thanks a lot!

We will do more testing when the Hibernate problems mentioned above have been fixed in an official Hibernate release. So that may take some days.

qitia commented 1 year ago

Glad to know!

qitia commented 1 year ago

seems like we missed removing javax.activation, let me know if there is conflict, we can ship a quick release in that case.

for jaxws-rt in the example pom, I have update it to 4.0.1

markusheiden commented 1 year ago

@qitia I tested with com.sun.activation:javax.activation and had no problems. So there's no need for a release.

For production, I excluded that transitive dependency via Gradle.

BenanMozalbet commented 11 months ago

@qitia , hii, i upgrade my bing ads sdk to use pom xml version of 13.0.16.2

(previously, i used version: 13.0.15). now i start getting issue :

java.lang.ClassNotFoundException: jakarta.xml.ws.spi.Provider.

the below dependncies appear in 13.0.16.2,

jakarta.jws
        <artifactId>jakarta.jws-api</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>jakarta.xml.ws</groupId>
        <artifactId>jakarta.xml.ws-api</artifactId>
        <version>3.0.0</version>
    </dependency> 

any answer please, why this happen ?

markusheiden commented 11 months ago

This library has made the switch from using javax.* to jakarta.* with version 13.0.16. So you need to upgrade your JAXB implementation etc. dependencies to be able to use the newer versions of this lib. This can be done for example by upgrading your application from using Spring Boot 2.* to Spring Boot 3.*.

BenanMozalbet commented 11 months ago

got you, thanks i will check again and update.

BenanMozalbet commented 11 months ago

changing spring version is little complicated in current time, i have a lot of relations is there alternative way? you said JAXB ?

markusheiden commented 11 months ago

I tried to make the old versions (13.0.15 and below) run with Spring Boot 3 but never got it running successfully. So I assume that the other way around is hard too. As far as I know some of the javax.* dependencies are incompatible with their jakarta.* counterparts.

There are two jakarta dependencies in this lib: jakarta.jws:jakarta.jws-api (JWS) -> Most probably provided by cxf as a direct dependency of this lib. jakarta.xml.ws:jakarta.xml.ws-api (JAXB) -> glassfish-jaxb, needs to be provided by you.

Take a look at the Spring Boot 3 dependencies for the exact glassfish-jaxb version.

qitia commented 11 months ago

Qingjun

From: Markus Heiden @.> Sent: Wednesday, September 27, 2023 2:54 PM To: BingAds/BingAds-Java-SDK @.> Cc: Qingjun Tian @.>; Mention @.> Subject: Re: [BingAds/BingAds-Java-SDK] Version supporting jakarta is missing (Issue #142)

I tried to make the old versions (13.0.15 and below) run with Spring Boot 3 but never got it running successfully. So I assume that the other way around is hard too. As far as I know some of the javax. dependencies are incompatible with jakarta..

There are two jakarta dependencies: jakarta.jws:jakarta.jws-api -> ??? jakarta.xml.ws:jakarta.xml.ws-api (JAXB) -> glassfish-jabx

Take a look at the Spring Boot 3 dependencies for the exact versions.

- Reply to this email directly, view it on GitHubhttps://github.com/BingAds/BingAds-Java-SDK/issues/142#issuecomment-1736808680, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AG6WBQOVA72XQPF6Q7XRSU3X4PEP5ANCNFSM6AAAAAAUPKV3VA. You are receiving this because you were mentioned.Message ID: @.**@.>>

BenanMozalbet commented 11 months ago

thanks , i will check.

BenanMozalbet commented 11 months ago

it fixed, but later in the code i got the below error:
java.lang.NoClassDefFoundError: Could not initialize class org.glassfish.jaxb.runtime.v2.model.impl.RuntimeBuiltinLeafInfoImpl

in general, this is my pom for BingADS artifact:

i added the org.glassfish-api dependency and thr jakarta.xmk-bind-api, beasue before adding ,last fail was on them, but now,later in the code, an error prompted while call the interface: ICustomerManagementService.

com.microsoft.bingads
        <artifactId>microsoft.bingads</artifactId>
13.0.16.2
    <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>4.0.0</version>
    </dependency>
    <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>1.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>4.0.2</version>
    </dependency>
xinyuwen2 commented 11 months ago

It works for me to use jakarta.xml.bind 3.0.0 instead of 4.0.0. Could you also have a try? As we are using jakarta.jws 3.0.0 and jakarta.xml.ws 3.0.0 and it may cause conflict.