java - jaxb unable to create an instance of abstract class -
@xmlseealso({ dog.class, cat.class }) public abstract class animal {} @xmlrootelement(name="dog") public class dog extends animal {} @xmlrootelement(name="cat") public class cat extends animal {} @webservice(name = "webservicedemo", servicename = "webservicedemo") @soapbinding(style = soapbinding.style.document, use = soapbinding.use.literal, parameterstyle = soapbinding.parameterstyle.wrapped) public class webservicedemo { @webmethod public string service(@webparam(name = "animal") animal animal) { system.out.println("animal service calling....."); return animal; } }
now when calling service method client animal calss parameter time getting error-
caused by: javax.xml.bind.unmarshalexception: unable create instance of animal - linked exception: [java.lang.instantiationexception] @ com.sun.xml.bind.v2.runtime.unmarshaller.unmarshallingcontext.handleevent(unmarshallingcontext.java:616) @ com.sun.xml.bind.v2.runtime.unmarshaller.loader.reporterror(loader.java:244) @ com.sun.xml.bind.v2.runtime.unmarshaller.unmarshallingcontext.createinstance(unmarshallingcontext.java:583) @ com.sun.xml.bind.v2.runtime.unmarshaller.structureloader.startelement(structureloader.java:181) @ com.sun.xml.bind.v2.runtime.unmarshaller.xsitypeloader.startelement(xsitypeloader.java:73) @ com.sun.xml.bind.v2.runtime.unmarshaller.unmarshallingcontext._startelement(unmarshallingcontext.java:455) @ com.sun.xml.bind.v2.runtime.unmarshaller.unmarshallingcontext.startelement(unmarshallingcontext.java:433) @ com.sun.xml.bind.v2.runtime.unmarshaller.interningxmlvisitor.startelement(interningxmlvisitor.java:71) @ com.sun.xml.bind.v2.runtime.unmarshaller.saxconnector.startelement(saxconnector.java:137) @ com.sun.xml.bind.unmarshaller.domscanner.visit(domscanner.java:240) @ com.sun.xml.bind.unmarshaller.domscanner.visit(domscanner.java:277) @ com.sun.xml.bind.unmarshaller.domscanner.visit(domscanner.java:246) @ com.sun.xml.bind.unmarshaller.domscanner.scan(domscanner.java:123) @ com.sun.xml.bind.v2.runtime.unmarshaller.unmarshallerimpl.unmarshal0(unmarshallerimpl.java:314) @ com.sun.xml.bind.v2.runtime.unmarshaller.unmarshallerimpl.unmarshal(unmarshallerimpl.java:293) @ com.sun.xml.bind.v2.runtime.unmarshaller.unmarshallerimpl.unmarshal(unmarshallerimpl.java:244) @ org.jboss.ws.core.jaxws.jaxbdeserializer.deserialize(jaxbdeserializer.java:71)
abstract classes cannot instantiated, basic rule them in java. javadocs:
an abstract class class declared abstract—it may or may not include abstract methods. abstract classes cannot instantiated, can subclassed.
jaxb internally try unmarshall xml java object. if not able create object of animal, how work. hence throws exception. need provide non-abstract class jaxb work.
Comments
Post a Comment