JAXBBindingExample.java
Note: The example uses a JAXB binding and other classes. The topic code sample does not show these. Please refer to the zipped project for those details.
package jaxbbindingexample;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.transform.stream.StreamSource;
public class JAXBBindingExample {
public static void main(String[] args) throws IOException, JAXBException {
//Create a request object
AddressTypeCodeService.GetTableEntryListRequest listRequestObj = new AddressTypeCodeService.GetTableEntryListRequest();
AddressTypeCodeService.ObjectFactory objectFactoryAddTyCoSvc = new AddressTypeCodeService.ObjectFactory();
listRequestObj = objectFactoryAddTyCoSvc.createGetTableEntryListRequest();
//JAXBContext for the request
JAXBContext contextForRequest =
JAXBContext.newInstance
(AddressTypeCodeService.GetTableEntryListRequest.class);
//Marshaller for the request
Marshaller m = contextForRequest.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
//Writer for the request
StringWriter st = new StringWriter();
m.marshal(listRequestObj, st);
String listRequestStr = st.toString();
//Wrap the request message with SOAP elements and XML declaration.
listRequestStr = MessageAdjustments.fixSOAPRequestMessage(listRequestStr);
//String for the endpoint
//Don't forget to adjust for the square brackets.
String urlString =
"http://localhost/bbAppFx/vpp/bizops/db%5BBBINFINITY%5D/codetables/ADDRESSTYPECODE/soap.asmx";
//This will send the message and place the SOAP reply message in a
//String.
String listReplyStr =
HttpURLConnectionTechnique.createHttpURLConnectionAndMakeRequest
(listRequestStr, urlString);
//Remove the SOAP wrapping and XML declaration from the reply message.
listReplyStr = MessageAdjustments.stripSOAPReplyMessage(listReplyStr);
//Create a reply object.
AddressTypeCodeService.GetTableEntryListReply listReplyObj =
new AddressTypeCodeService.GetTableEntryListReply();
listReplyObj = objectFactoryAddTyCoSvc.createGetTableEntryListReply();
//JAXBContext for the the reply
JAXBContext contextForReply =
JAXBContext.newInstance
(AddressTypeCodeService.GetTableEntryListReply.class);
//Unmarshaller for the reply
Unmarshaller u = contextForReply.createUnmarshaller();
StringBuilder xmlStr = new StringBuilder(listReplyStr);
//Unmarshal the reply string into the Java object for the reply.
listReplyObj =
(AddressTypeCodeService.GetTableEntryListReply) u.unmarshal
(new StreamSource( new StringReader(xmlStr.toString())));
//Output window
System.out.println(listRequestStr);
System.out.println("\nReply message:\n");
System.out.println(listReplyStr);
System.out.println("\nValue of reply message object:\n");
System.out.println
(listReplyObj.getRows().getTableEntryListRow().get(0).getID());
}
}