java - SOAP : How to make generic method that provides response to all operations of WSDL dynamically -
i trying create webservice simulator can create soap webservices providing .xsd or xml file. after providing xml/xsd wsdl file generated , reason trying make serviceendpoint class methods generic single method provides response operations.
till have made sample code test how soap web service generated using spring web service , uses jaxp apis. want make following method generic provides response operations :
@payloadroot(namespace = namespace_uri, localpart = "getstudentrequest") @responsepayload public getstudentresponse getcountry(@requestpayload getstudentrequest request) { getstudentresponse response = new getstudentresponse(); response.setstudent(studentutility.getstudent(request.getstudentid())); return response; as of above method binded specific operation getstudentrequest please me know how can make above method generic provides response operations.
please find below xsd file through generating wsdl file:
<xs:element name="getstudentrequest"> <xs:complextype> <xs:sequence> <xs:element name="studentid" type="xs:int"/> </xs:sequence> </xs:complextype> </xs:element> <xs:element name="getstudentresponse"> <xs:complextype> <xs:sequence> <xs:element name="student" type="tns:student"/> </xs:sequence> </xs:complextype> </xs:element> <xs:complextype name="student"> <xs:sequence> <xs:element name="studentid" type="xs:int"/> <xs:element name="name" type="xs:string"/> <xs:element name="age" type="xs:int"/> <xs:element name="class" type="xs:string"/> </xs:sequence> </xs:complextype>
you can try using generics in method below:
public <t extends irequest, r extends iresponse> r getcountry(@requestpayload t request) { to make work, coresponding request , response must sub classed.
class getstudentrequest implements irequest{} class getstudentresponse implements iresponse{} if yor generating code using apache cxf or jaxb, can done providing jaxb custom binding inheritance plugin create request/response classes interface implemented.
for eg.
<inheritance:implements>mypackage.irequest</inheritance:implements>
Comments
Post a Comment