camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem Jiang <willem.ji...@gmail.com>
Subject Re: Help with Camel JAXB (SMX4 + Camel 2.1.0)
Date Tue, 23 Feb 2010 11:53:43 GMT
Maybe you can consider to put the JAXB jars into the endorse directory 
of JDK 1.6.

Willem

TheWinch wrote:
> I cannot easily because I have code that is bound to jdk1.6. Do you think
> that uninstalling the jaxb-impl-2.1.12 bundle and adding com.sun.xml.bind.v2
> to the org.osgi.framework.system.packages variable would do ?
> 
> 
> willem.jiang wrote:
>> Which kind of JDK are you using?
>> Can you try to use JDK 1.5.0 which doesn't embed the JAXB API and 
>> implementation ?
>>
>> Willem
>>
>> TheWinch wrote:
>>> The unmarshal("jxb") refers to a JaxbDataFormat defined in Spring
>>> configuration :
>>> <camelContext>
>>> <routeBuilder ref="myBuilder"/>
>>> <dataFormats>
>>>   <jaxb id="jxb" context="eu.diva.tis.api.domain.esb"/>
>>> </dataFormats>
>>> </camelContext>
>>>
>>> And I've triple-checked that the context is correct and no other package
>>> than the one being referenced is used. Note also that this DataFormat is
>>> used with success during the unmarshalling operation :-( ???
>>>
>>> I really don't have a clue why the createMethod cannot be found during
>>> marshalling operations, but can be found during unmarshalling. Maybe I'm
>>> using the wrong JAXB library ? But I'm using the standard set provided
>>> with
>>> Fuse ESB 4.1 release candidate, so it should be OK ?
>>>
>>>
>>>
>>> Stephen Gargan wrote:
>>>> It could be that your route definition is incorrect, it should read
>>>> jaxb not jxb. You could also try creating a JaxbDataFormat explicitly
>>>> and use that in your route instead.
>>>>
>>>> e.g
>>>>
>>>> DataFormat jaxb = new JaxbDataFormat("org.apache.camel.example");
>>>>
>>>>                 from("direct:start").
>>>>                         unmarshal(jaxb).
>>>>                         to("mock:result");
>>>>
>>>>
>>>> On Mon, Feb 22, 2010 at 9:49 PM, TheWinch
>>>> <vincent.girardreydet@thalesgroup.com> wrote:
>>>>> Hi people,
>>>>>
>>>>> I'm experiencing a curious problem with Camel JAXB. To make it short:
>>>>> unmarshalling works correctly, but not marshalling.
>>>>>
>>>>> I have a route that receives a CxfPayload and unmarshals it to Java.
It
>>>>> works perfectly.
>>>>> A second route has a processor that emits a Java payload, that must
>>>>> then
>>>>> be
>>>>> marshaled to XML -> I get the exception below.
>>>>> Both payloads are in the same package, they are generated using JaxB
>>>>> generation so they have the correct annotations.
>>>>>
>>>>> Route 1 (correct) :
>>>>> from("file:/var/diva/crisis")
>>>>>    .unmarshal("jxb")
>>>>>    .to( "bean:crisisServiceImpl?method=createCrisis" );
>>>>>
>>>>> Route 2 (incorrect) :
>>>>> from("direct:sendAck")
>>>>>    .to("log:cr-sendack1")
>>>>>    .marshal("jxb")
>>>>>    .to("log:cr-sendack2")
>>>>>
>>>>> The exception:
>>>>> 22:42:28,531 | INFO  | cr-sendack1                        88 |
>>>>> Exchange[BodyType:eu.diva.tis.api.ws.alert.alarmtypes.AlarmAckMessage,
>>>>> Body:<ns2:AlarmA ......]
>>>>> 22:42:28,546 | WARN  | phase.PhaseInterceptorChain       361 |
>>>>> Application
>>>>> {http://tis.diva.eu/schemas/crisissvc/1.0}CrisisManagerService#{http://tis.diva.eu/schemas/crisissvc/1.0}TreatCrisis
>>>>> has thrown exception, unwinding now org.apache.cxf.interceptor.Fault:
>>>>> Exception occurred during execution on the exchange: Exchange[Message:
>>>>> eu.diva.tis.api.ws.alert.alarmtypes.AlarmAckMessage@11ffde3]
>>>>>        at
>>>>> org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:155)
>>>>>        at
>>>>> org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:85)
>>>>>        at
>>>>> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:121)
>>>>>        at
>>>>> org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:60)
>>>>> .....
>>>>> Caused by: org.apache.camel.CamelExecutionException: Exception occurred
>>>>> during execution on the exchange: Exchange[Message:
>>>>> eu.diva.tis.api.ws.alert.alarmtypes.AlarmAckMessage@11ffde3]
>>>>>        at
>>>>> org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1055)
>>>>>        at
>>>>> org.apache.camel.util.ExchangeHelper.extractResultBody(ExchangeHelper.java:445)
>>>>>        at
>>>>> org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:431)
>>>>>        at
>>>>> org.apache.camel.impl.DefaultProducerTemplate.sendBodyAndHeader(DefaultProducerTemplate.java:156)
>>>>>        at
>>>>> eu.diva.tis.crisis.internal.CrisisServiceImpl.sendAckToEsb(CrisisServiceImpl.java:322)
>>>>>  ............
>>>>> Caused by: javax.xml.bind.JAXBException: Unable to create context
>>>>>  - with linked exception:
>>>>> [java.lang.NoSuchMethodException:
>>>>> com.sun.xml.bind.v2.ContextFactory.createContext(java.lang.String,
>>>>> java.lang.ClassLoader)]
>>>>>        at javax.xml.bind.ContextFinder.find(ContextFinder.java:72)
>>>>>        at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:77)
>>>>>        at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:73)
>>>>>        at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:69)
>>>>>        at
>>>>> org.apache.camel.converter.jaxb.JaxbDataFormat.createContext(JaxbDataFormat.java:138)
>>>>>        at
>>>>> org.apache.camel.converter.jaxb.JaxbDataFormat.getContext(JaxbDataFormat.java:103)
>>>>>        at
>>>>> org.apache.camel.converter.jaxb.JaxbDataFormat.marshal(JaxbDataFormat.java:58)
>>>>>        ... 68 more
>>>>> Caused by: java.lang.NoSuchMethodException:
>>>>> com.sun.xml.bind.v2.ContextFactory.createContext(java.lang.String,
>>>>> java.lang.ClassLoader)
>>>>>        at java.lang.Class.getMethod(Class.java:1605)
>>>>>        at javax.xml.bind.ContextFinder.find(ContextFinder.java:69)
>>>>>        ... 74 more
>>>>>
>>>>>
>>>>> I have tried to add com.sun.xml.bind.v2 to the imported packages. It
is
>>>>> resolved correctly :
>>>>> karaf@root> packages:imports  210 | grep v2
>>>>> Apache ServiceMix Bundles: jaxb-impl-2.1.12 (90): com.sun.xml.bind.v2;
>>>>> version=0.0.0
>>>>>
>>>>> All processing is performed inside the same bundle (a SOAP service is
>>>>> invoke, which calls a ProducerTemplate to send a message to the
>>>>> "direct"
>>>>> route depicted above).
>>>>>
>>>>>
>>>>> If you have the key, please, help me !
>>>>> --
>>>>> View this message in context:
>>>>> http://old.nabble.com/Help-with-Camel-JAXB-%28SMX4-%2B-Camel-2.1.0%29-tp27695115p27695115.html
>>>>> Sent from the Camel - Users (activemq) mailing list archive at
>>>>> Nabble.com.
>>>>>
>>>>>
>>
>>
> 


Mime
View raw message