Yes, that did it, thank you very much!

Anne

> -----Ursprüngliche Nachricht-----
> Von: Daniel Kulp [mailto:[email protected]]
> Gesendet: Dienstag, 9. Juni 2009 18:45
> An: [email protected]
> Cc: Diefenbach Anne
> Betreff: Re: Marshalling Error with complex type
> 
> 
> You need to change the line:
> 
> _subscribe_subscribeRequest.getFilter().getAny().add(topicExpression);
> 
> to something like:
> 
> JAXBElement<?> elem =
> ObjectFactory.createTopicExpression(topicExpression);
> _subscribe_subscribeRequest.getFilter().getAny().add(elem);
> 
> (You would need to look in the ObjectFactory for the appropriate method)
> 
> Basically, the "xsd:any" that is required by the getFilter().getAny() call
> needs to be a top level element, not a type.   Thus, you need to find the
> method that would wrapper the "type" with an appropriate element
> definition.
> 
> Dan
> 
> 
> 
> On Tue June 9 2009 8:05:25 am Diefenbach Anne wrote:
> > Hello,
> >
> > I am trying to write a CXF-based webservice which consumes
> > WS-Notifications. Using wsdl2java, I have obtained all necessary
> classes,
> > but now I have trouble filling my subscription message. I do the
> following:
> >
> >       org.oasis_open.docs.wsn.b_2.Subscribe _subscribe_subscribeRequest
> =
> > new org.oasis_open.docs.wsn.b_2.Subscribe(); TopicExpressionType
> > topicExpression = new TopicExpressionType();
> > topicExpression.setDialect("http://docs.oasis-open.org/wsn/t-
> 1/TopicExpress
> >ion/Simple"); topicExpression.getContent().add("myTopic");
> >       _subscribe_subscribeRequest.setFilter(new FilterType());
> >
> > _subscribe_subscribeRequest.getFilter().getAny().add(topicExpression);
> ...
> > org.oasis_open.docs.wsn.b_2.SubscribeResponse _subscribe__return =
> > port.subscribe(_subscribe_subscribeRequest);
> >
> > When I try to run my service, the subscription fails with the following
> > exception:
> >
> > 09.06.2009 11:10:21 org.apache.cxf.phase.PhaseInterceptorChain
> doIntercept
> > INFO: Interceptor has thrown exception, unwinding now
> > org.apache.cxf.interceptor.Fault: Marshalling Error: unable to marshal
> type
> > "org.oasis_open.docs.wsn.b_2.TopicExpressionType" as an element because
> it
> > is missing an @XmlRootElement annotation at
> >
> org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:17
> 6
> >) at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:166)
> at
> >
> org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(Ab
> s
> >tractOutDatabindingInterceptor.java:104) at
> >
> org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterce
> p
> >tor.java:68) at
> >
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCha
> i
> >n.java:220) at
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:466) at
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299) at
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251) at
> > org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at
> > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
> at
> > $Proxy45.subscribe(Unknown Source)
> >     at
> >
> org.oasis_open.docs.wsn.bw_2.NotificationConsumer_NotificationConsumerPort
> _
> >Server.subscribe(NotificationConsumer_NotificationConsumerPort_Server.jav
> a:6
> >9) at
> >
> org.oasis_open.docs.wsn.bw_2.NotificationConsumer_NotificationConsumerPort
> _
> >Server.main(NotificationConsumer_NotificationConsumerPort_Server.java:133
> )
> > Caused by: javax.xml.bind.MarshalException
> >  - with linked exception:
> > [com.sun.istack.SAXException2: unable to marshal type
> > "org.oasis_open.docs.wsn.b_2.TopicExpressionType" as an element because
> it
> > is missing an @XmlRootElement annotation] at
> >
> com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:331)
> > at
> >
> com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:257
> )
> > at
> >
> javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerIm
> p
> >l.java:75) at
> >
> org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java
> :
> >381) at
> >
> org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:15
> 5
> >) ... 12 more
> > Caused by: com.sun.istack.SAXException2: unable to marshal type
> > "org.oasis_open.docs.wsn.b_2.TopicExpressionType" as an element because
> it
> > is missing an @XmlRootElement annotation at
> >
> com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:2
> 4
> >4) at
> >
> com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoI
> m
> >pl.java:303) at
> >
> com.sun.xml.bind.v2.runtime.property.ArrayReferenceNodeProperty.serializeL
> i
> >stBody(ArrayReferenceNodeProperty.java:114) at
> >
> com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayER
> P
> >roperty.java:152) at
> >
> com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoI
> m
> >pl.java:322) at
> >
> com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.jav
> a
> >:681) at
> >
> com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBo
> d
> >y(SingleElementNodeProperty.java:150) at
> >
> com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoI
> m
> >pl.java:322) at
> >
> com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.jav
> a
> >:681) at
> >
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBea
> n
> >InfoImpl.java:151) at
> >
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBea
> n
> >InfoImpl.java:185) at
> >
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanI
> n
> >foImpl.java:305) at
> >
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanI
> n
> >foImpl.java:312) at
> >
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanI
> n
> >foImpl.java:71) at
> >
> com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:4
> 9
> >0) at
> >
> com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:328)
> > ... 16 more
> > 09.06.2009 11:10:21 com.sun.xml.messaging.saaj.soap.ver1_2.Fault1_2Impl
> > checkIfStandardFaultCode SCHWERWIEGEND: SAAJ0435:
> > {http://cxf.apache.org/faultcode}HandlerFault is not a standard Code
> value
> > Exception in thread "main" javax.xml.ws.soap.SOAPFaultException:
> > Marshalling Error: unable to marshal type
> > "org.oasis_open.docs.wsn.b_2.TopicExpressionType" as an element because
> it
> > is missing an @XmlRootElement annotation at
> > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145)
> at
> > $Proxy45.subscribe(Unknown Source)
> >     at
> >
> org.oasis_open.docs.wsn.bw_2.NotificationConsumer_NotificationConsumerPort
> _
> >Server.subscribe(NotificationConsumer_NotificationConsumerPort_Server.jav
> a:6
> >9) at
> >
> org.oasis_open.docs.wsn.bw_2.NotificationConsumer_NotificationConsumerPort
> _
> >Server.main(NotificationConsumer_NotificationConsumerPort_Server.java:133
> )
> > Caused by: org.apache.cxf.interceptor.Fault: Marshalling Error: unable
> to
> > marshal type "org.oasis_open.docs.wsn.b_2.TopicExpressionType" as an
> > element because it is missing an @XmlRootElement annotation at
> >
> org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:17
> 6
> >) at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:166)
> at
> >
> org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(Ab
> s
> >tractOutDatabindingInterceptor.java:104) at
> >
> org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterce
> p
> >tor.java:68) at
> >
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCha
> i
> >n.java:220) at
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:466) at
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299) at
> > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251) at
> > org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at
> > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
> ...
> > 3 more
> > Caused by: javax.xml.bind.MarshalException
> >  - with linked exception:
> > [com.sun.istack.SAXException2: unable to marshal type
> > "org.oasis_open.docs.wsn.b_2.TopicExpressionType" as an element because
> it
> > is missing an @XmlRootElement annotation] at
> >
> com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:331)
> > at
> >
> com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:257
> )
> > at
> >
> javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerIm
> p
> >l.java:75) at
> >
> org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java
> :
> >381) at
> >
> org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:15
> 5
> >) ... 12 more
> > Caused by: com.sun.istack.SAXException2: unable to marshal type
> > "org.oasis_open.docs.wsn.b_2.TopicExpressionType" as an element because
> it
> > is missing an @XmlRootElement annotation at
> >
> com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:2
> 4
> >4) at
> >
> com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoI
> m
> >pl.java:303) at
> >
> com.sun.xml.bind.v2.runtime.property.ArrayReferenceNodeProperty.serializeL
> i
> >stBody(ArrayReferenceNodeProperty.java:114) at
> >
> com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayER
> P
> >roperty.java:152) at
> >
> com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoI
> m
> >pl.java:322) at
> >
> com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.jav
> a
> >:681) at
> >
> com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBo
> d
> >y(SingleElementNodeProperty.java:150) at
> >
> com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoI
> m
> >pl.java:322) at
> >
> com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.jav
> a
> >:681) at
> >
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBea
> n
> >InfoImpl.java:151) at
> >
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBea
> n
> >InfoImpl.java:185) at
> >
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanI
> n
> >foImpl.java:305) at
> >
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanI
> n
> >foImpl.java:312) at
> >
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanI
> n
> >foImpl.java:71) at
> >
> com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:4
> 9
> >0) at
> >
> com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:328)
> > ... 16 more
> >
> > The schema defines
> >
> > <xsd:complexType name="TopicExpressionType" mixed="true">
> > <xsd:sequence>
> >     <xsd:any minOccurs="0" maxOccurs="1" processContents="lax" />
> > </xsd:sequence>
> > <xsd:attribute name="Dialect" type="xsd:anyURI" use="required" />
> > <xsd:anyAttribute />
> > </xsd:complexType>
> >
> > and
> >
> > <xsd:element name="TopicExpression" type="wsnt:TopicExpressionType" />
> >
> > How can I tell the framework to use the element TopicExpression to
> marshal
> > instances of TopicExpressionType? I use the FUSE Services Framework
> > 2.1.3.1.
> >
> > Thank you,
> >
> > Anne Diefenbach
> > - FKIE-KOM -
> > *************************************************
> > Forschungsgesellschaft für
> > Angewandte Naturwissenschaften e. V. (FGAN)
> > Neuenahrer Str. 20, 53343 Wachtberg, Germany
> > E-Mail:  [email protected]
> > Web:    www.fgan.de
> > ************************************************
> 
> --
> Daniel Kulp
> [email protected]
> http://www.dankulp.com/blog

Reply via email to