Hi,

I have a self executable Spring Boot (1.2.2) and Camel Boot (2.15.0)
application built as a WAR.  My route makes use of Bindy to unmarshal CSV to
my object class.  Everything work well when I run the code directly using
Maven (mvn spring-boot:run) or if I run using Eclipse.  However if I build
my WAR file and execute that (java -jar myWebApp.war) then I get errors

java.lang.IllegalArgumentException: The separator has not been defined in
the annotation @CsvRecord or not instantiated during initModel. must be
specified
        at org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:293)
        at
org.apache.camel.dataformat.bindy.csv.BindyCsvDataFormat.unmarshal(BindyCsvDataFormat.java:137)
        at
org.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:67)
        at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
        at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:448)
        at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
        at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
        at
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:51)
        at 
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:129)
        at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
        at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:448)
        at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
        at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:448)
        at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)


In the Camel/Bindy code I can see that
DefaultPackageScanClassResolver.loadImplementationsInJar obviously has
special provision for jar files but what about the equivalent for WAR files? 
Class files are located under WEB-INF in war files which means my annotated
classes are not being found.  See method
DefaultPackageScanClassResolver.doLoadImplementationsInJar where the code is
attempting to find classes that start with a particular package but will
never find any because the file locations include WEB-INF, which would not
be the case with a jar file.

Is there another way of doing this or does Bindy need fixing?



--
View this message in context: 
http://camel.465427.n5.nabble.com/Bindy-running-within-a-WAR-tp5765035.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to