You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by ku...@yahoo.fr on 2009/03/11 21:08:53 UTC

jaxb + spring + complex object

Hi,

I am using following Framework / library: 
- Spring 2.5.6
- CXF 2.1.3
- jaxb for databinding (cxf default) 

I declare the following service:

@WebService(serviceName = "PerValueObjectService",portName = "PerValueObjectServicePort",targetNamespace="http://pper.foo.com/pervalueobjectservice";)
public class PerValueObjectServiceEndPoint implements PerValueObjectService {
...

@Override
@WebResult(name="DomainValueObject")
public DomainValueObject getDomain(@WebParam(name = "domainId")int domainId) throws PerException {
...
}


I declare  DomainValueObject class as:

@XmlRootElement(name="DomainValueObject")
@XmlType(name="DomainValueObject")
public class DomainValueObject extends AbstractBaseValueObject {
...
}

and I define into my Spring context the service as:

<!-- Value object service -->
<bean id="perValueObjectServiceEndPoint" class="ch.ciip.per.service.ws.PerValueObjectServiceEndPoint">
   <property name="perValueObjectService" ref="perValueObjectService"/>
</bean>
     
<jaxws:endpoint id="perValueObjectServiceWs" implementor="#perValueObjectServiceEndPoint" address="/ValueObjectService"/>


My problem is the jaxb doesn't define complex type DomainValueObject into wsdl and got the error:

Marshalling Error: com.per.valueobject.DomainValueObject is not known to this context

How to tell jaxb where/how to find my class DomainValueObject?

Thanks for help or advice

Willy


Re : jaxb + spring + complex object

Posted by ku...@yahoo.fr.
Hi,

I found the issue all objects use as type should have 
- A default constructor (without parameters), note it don't use the parent default constructor
- Getter and setter for each attributs

So You don't need any factory class for marchaling or unmarchaling  just XmlType and XmlRootElement annotations.

 
Willy



----- Message d'origine ----
De : "kurdy_ch-forum@yahoo.fr" <ku...@yahoo.fr>
À : users@cxf.apache.org
Envoyé le : Mercredi, 11 Mars 2009, 21h08mn 53s
Objet : jaxb + spring + complex object


Hi,

I am using following Framework / library: 
- Spring 2.5.6
- CXF 2.1.3
- jaxb for databinding (cxf default) 

I declare the following service:

@WebService(serviceName = "PerValueObjectService",portName = "PerValueObjectServicePort",targetNamespace="http://pper.foo.com/pervalueobjectservice";)
public class PerValueObjectServiceEndPoint implements PerValueObjectService {
...

@Override
@WebResult(name="DomainValueObject")
public DomainValueObject getDomain(@WebParam(name = "domainId")int domainId) throws PerException {
...
}


I declare  DomainValueObject class as:

@XmlRootElement(name="DomainValueObject")
@XmlType(name="DomainValueObject")
public class DomainValueObject extends AbstractBaseValueObject {
...
}

and I define into my Spring context the service as:

<!-- Value object service -->
<bean id="perValueObjectServiceEndPoint" class="ch.ciip.per.service.ws.PerValueObjectServiceEndPoint">
   <property name="perValueObjectService" ref="perValueObjectService"/>
</bean>
    
<jaxws:endpoint id="perValueObjectServiceWs" implementor="#perValueObjectServiceEndPoint" address="/ValueObjectService"/>


My problem is the jaxb doesn't define complex type DomainValueObject into wsdl and got the error:

Marshalling Error: com.per.valueobject.DomainValueObject is not known to this context

How to tell jaxb where/how to find my class DomainValueObject?

Thanks for help or advice

Willy