Ah, yep. No support for that with jaxb-tools. Perhaps there is a similar approach to plug into the json schema to pojo generation to add the JAXB annotations using the json-schema-to-pojo tools.
If you solve for it— it would definitely make a good blog post =) Thanks, Matt > On Oct 13, 2025, at 9:39 AM, Bedürftig, Arne > <[email protected]> wrote: > > Hello Matt > > Thank you for your input. > > In my case my input is an Open API (Rest API) specification. It seems they > don’t serve as input to the tool you mentioned. > > Regards, > Arne > -- > > Von: Matt Pavlovich <[email protected]> > Datum: Montag, 13. Oktober 2025 um 16:34 > An: [email protected] <[email protected]> > Betreff: [[email protected]] Re: > Rest with Binding xml or auto always depends on JAXB through > RestBindingAdviceFactory PluginHelper.getRestBindingJaxbDataFormatFactory > > Hi Arne- > > I’ve worked in the model generation space a long time and found that the jaxb > tools have the most comprehensive set of capabilities (I haven’t checked in > on json-generation in a while though). > > With jaxb-tools, you can generate model classes from xsd schema(s), have code > modules that extend models from other projects without duplicate generation, > and annotate with the Jackson JSON bindings — so the single model class can > be rendered XML or JSON. > > Additionally, it was recently added to allow jaxb generation to _not_ > generate the XML annotations, so the tools can be used to generate modular > models that are Java-only or JSON-only. > > jaxb-tools project: > https://github.com/highsource/jaxb-tools > > Annotation plugin (to add Jackson JSON bindings) > https://github.com/highsource/jaxb-tools?tab=readme-ov-file#jaxb-annotate-plugin > > Hope this helps! > Thanks, > Matt Pavlovich > > Disclaimer: I am one of the maintainers that helped take over the project > after Alexei passed away. > >> On Oct 13, 2025, at 9:25 AM, Bedürftig, Arne >> <[email protected]> wrote: >> >> Hi >> >> Thank you for the quick response. Are there any plans to change that? How is >> this xmlDataFormat configuration option meant to be used, if I cannot use >> anything else but JAXB? >> >> My use-case: >> >> I generate the models with Swagger Code generator and the Java lang >> generator. The one that works best only includes JSON annotations. JAXB >> doesn’t serialize those models without further effort, which is why I wanted >> to try JacksonXML. >> >> I would like to stick with generated models and use auto-binding if possible. >> >> Do you suggest continuing with JAXB in Rest or to turn off binding in >> implement serialization myself? >> >> -- >> >> Von: Claus Ibsen <[email protected]> >> Datum: Montag, 13. Oktober 2025 um 16:16 >> An: [email protected] <[email protected]> >> Betreff: [[email protected]] Re: >> Rest with Binding xml or auto always depends on JAXB through >> RestBindingAdviceFactory PluginHelper.getRestBindingJaxbDataFormatFactory >> >> Hi >> >> You cannot use jacksonXml for XML data binding. >> That is JAXB, so don't change it. >> >> >> On Mon, Oct 13, 2025 at 4:13 PM Bedürftig, Arne >> <[email protected]> wrote: >> >>> Hello, >>> >>> I want to use jacksonXml as the xmlDateFormat for my Rest bindings. >>> >>> restConfiguration() >>> .bindingMode(RestBindingMode.json_xml) // or auto >>> .jsonDataFormat("jackson") >>> .xmlDataFormat("jacksonXml“) >>> >>> Note, I am also using Spring Boot and have the following dependency added. >>> >>> <dependency> >>> <groupId>org.apache.camel.springboot</groupId> >>> <artifactId>camel-jacksonxml-starter</artifactId> >>> </dependency> >>> >>> camel-jaxb is not on the classpath. >>> >>> When I start my application, I get this: >>> >>> Caused by: java.lang.IllegalArgumentException: Cannot find >>> RestBindingJaxbDataFormatFactory on classpath. Add camel-jaxb to classpath. >>> at >>> org.apache.camel.impl.engine.SimpleCamelContext.createRestBindingJaxbDataFormatFactory(SimpleCamelContext.java:635) >>> ~[camel-base-engine-4.14.1.jar:4.14.1] >>> at >>> org.apache.camel.impl.engine.DefaultCamelContextExtension.lazyInitAndAdd(DefaultCamelContextExtension.java:1133) >>> ~[camel-base-engine-4.14.1.jar:4.14.1] >>> at >>> org.apache.camel.impl.engine.DefaultCamelContextExtension.lambda$lazyAddContextPlugin$0(DefaultCamelContextExtension.java:1129) >>> ~[camel-base-engine-4.14.1.jar:4.14.1] >>> at >>> org.apache.camel.impl.engine.DefaultContextPluginManager.getContextPlugin(DefaultContextPluginManager.java:43) >>> ~[camel-base-engine-4.14.1.jar:4.14.1] >>> at >>> org.apache.camel.impl.engine.DefaultCamelContextExtension.getContextPlugin(DefaultCamelContextExtension.java:1104) >>> ~[camel-base-engine-4.14.1.jar:4.14.1] >>> at >>> org.apache.camel.support.PluginHelper.getRestBindingJaxbDataFormatFactory(PluginHelper.java:451) >>> ~[camel-support-4.14.1.jar:4.14.1] >>> at >>> org.apache.camel.support.PluginHelper.getRestBindingJaxbDataFormatFactory(PluginHelper.java:443) >>> ~[camel-support-4.14.1.jar:4.14.1] >>> at >>> org.apache.camel.support.processor.RestBindingAdviceFactory.build(RestBindingAdviceFactory.java:115) >>> ~[camel-support-4.14.1.jar:4.14.1] >>> at >>> org.apache.camel.reifier.rest.RestBindingReifier.createRestBindingAdvice(RestBindingReifier.java:90) >>> ~[camel-core-reifier-4.14.1.jar:4.14.1] >>> at >>> org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:335) >>> ~[camel-core-reifier-4.14.1.jar:4.14.1] >>> >>> When I add camel-jaxb, then I get this: >>> >>> Caused by: java.lang.ClassCastException: class >>> org.apache.camel.component.jacksonxml.JacksonXMLDataFormat cannot be cast >>> to class org.apache.camel.converter.jaxb.JaxbDataFormat >>> (org.apache.camel.component.jacksonxml.JacksonXMLDataFormat and >>> org.apache.camel.converter.jaxb.JaxbDataFormat are in unnamed module of >>> loader 'app') >>> at >>> org.apache.camel.converter.jaxb.JaxbDataFormatConfigurer.configure(JaxbDataFormatConfigurer.java:21) >>> ~[camel-jaxb-4.14.1.jar:4.14.1] >>> at >>> org.apache.camel.support.PropertyBindingSupport.setSimplePropertyViaConfigurer(PropertyBindingSupport.java:806) >>> ~[camel-support-4.14.1.jar:4.14.1] >>> >>> Looking at the code, it seems like even though jacksonXml has been defined >>> as the data format, it will still try to load the JaxbDataFormat via the >>> RestBindingAdviceFactory. >>> >>> if (jaxb != null) { >>> // to setup JAXB we need to use camel-jaxb >>> >>> PluginHelper.getRestBindingJaxbDataFormatFactory(camelContext).setupJaxb(camelContext, >>> config, >>> bc.getType(), bc.getTypeClass(), >>> bc.getOutType(), bc.getOutTypeClass(), >>> jaxb, outJaxb); >>> } >>> >>> The variable jaxb is not null, because "jaxb = >>> camelContext.createDataFormat(name);“ and it will be of type >>> JacksonXMLDataFormat. >>> >>> Am I missing a configuration, or is Jackson XML not meant to work with >>> Rest? >>> >>> Thank you in advance. >>> >>> Regards, >>> Arne B. >>> -- >>> >>> >>> ------------------------------------------------------------------------------ >>> Informationen (einschließlich Pflichtangaben und Datenschutzerklärungen) >>> zu einzelnen, innerhalb der EU tätigen Gesellschaften und >>> Zweigniederlassungen der CITTI-Gruppe finden Sie unter >>> http://www.citti.de/html/pflichtangaben.html. Diese E-Mail enthält >>> vertrauliche und/ oder rechtlich geschützte Informationen. Wenn Sie nicht >>> der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, >>> informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. >>> Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist >>> nicht gestattet. >>> >>> Please refer to http://www.citti.de/html/pflichtangaben.html for >>> information (including mandatory corporate particulars and data protection >>> declarations) on selected CITTI branches and group companies registered or >>> incorporated in the European Union. This e-mail may contain confidential >>> and/or privileged information. If you are not the intended recipient (or >>> have received this e-mail in error) please notify the sender immediately >>> and delete this e-mail. Any unauthorized copying, disclosure or >>> distribution of the material in this e-mail is strictly forbidden. >>> >>> ------------------------------------------------------------------------------ >>> >> >> >> -- >> Claus Ibsen >> ------------------------------------------------------------------------------ >> Informationen (einschließlich Pflichtangaben und Datenschutzerklärungen) zu >> einzelnen, innerhalb der EU tätigen Gesellschaften und Zweigniederlassungen >> der CITTI-Gruppe finden Sie unter >> http://www.citti.de/html/pflichtangaben.html. Diese E-Mail enthält >> vertrauliche und/ oder rechtlich geschützte Informationen. Wenn Sie nicht >> der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, >> informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. >> Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist >> nicht gestattet. >> >> Please refer to http://www.citti.de/html/pflichtangaben.html for information >> (including mandatory corporate particulars and data protection declarations) >> on selected CITTI branches and group companies registered or incorporated in >> the European Union. This e-mail may contain confidential and/or privileged >> information. If you are not the intended recipient (or have received this >> e-mail in error) please notify the sender immediately and delete this >> e-mail. Any unauthorized copying, disclosure or distribution of the material >> in this e-mail is strictly forbidden. >> ------------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Informationen (einschließlich Pflichtangaben und Datenschutzerklärungen) zu > einzelnen, innerhalb der EU tätigen Gesellschaften und Zweigniederlassungen > der CITTI-Gruppe finden Sie unter > http://www.citti.de/html/pflichtangaben.html. Diese E-Mail enthält > vertrauliche und/ oder rechtlich geschützte Informationen. Wenn Sie nicht der > richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, > informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. > Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist > nicht gestattet. > > Please refer to http://www.citti.de/html/pflichtangaben.html for information > (including mandatory corporate particulars and data protection declarations) > on selected CITTI branches and group companies registered or incorporated in > the European Union. This e-mail may contain confidential and/or privileged > information. If you are not the intended recipient (or have received this > e-mail in error) please notify the sender immediately and delete this e-mail. > Any unauthorized copying, disclosure or distribution of the material in this > e-mail is strictly forbidden. > ------------------------------------------------------------------------------
