Phew, I just put xalan.jar into C:\Program Files\Apache\jakarta-tomcat-4.1.31\webapps\axis\WEB-INF\lib and lo and behold the bloody *!@ poggram worked, think it was devine inspiration or something but I dont know why it worked!! Man think I'm gonna change my college course to ancient Umpa-Lumpa Geneology or something!!!
-- Between the question and the answer lies pure chance... Quoting James Taylor <[EMAIL PROTECTED]>: > Hey people, > for the moment as I'm inept to logging I'm using simple > System.out.println to debug to Tomcat's console - as I have the liberty of > testing locally - and have changed the class that is wrecking my head to the > below listing. I've been trying to work this out for about 2 full days and am > stuck, which is when we really have to learn and the open window looks really > appealling.. bet you wish i'd just jump!! > You see when I run the class from the main method I get the > following > output - > run: > [echo] run task. Running flightCompany.xmlHelper.DOMGetFlightsXMLImpl... > [java] ============Getting XML String===================== > [java] Creating xml dom doc > [java] about to head into loop to parse list > [java] left the loop so we have added nodes to dom > [java] About to turn dom to string > [java] ========Hello from transformDOMtoString(). > [java] got TransformerFactory... > [java] got Transformer... > [java] Got DOMSource... > [java] Got StringWriter... > [java] transformed dom... > [java] =======sending back this<?xml version="1.0" > encoding="UTF-8"?><FlightList > xmlns="FlightList.xsd"><Flight><FlightNum>0</FlightNum><SourceAirport></So > urceAirport><DestAirport></DestAirport><FlightDate></FlightDate><SeatsAvailible> > 0</SeatsAvailible><SeatPrice>0</SeatPrice></Flight><Flight><FlightNum>0</FlightN > um><SourceAirport></SourceAirport><DestAirport></DestAirport><FlightDate></Fligh > tDate><SeatsAvailible>0</SeatsAvailible><SeatPrice>0</SeatPrice></Flight></Fligh > tList> > [java] <?xml version="1.0" encoding="UTF-8"?><FlightList > xmlns="FlightList. > xsd"><Flight><FlightNum>0</FlightNum><SourceAirport></SourceAirport><DestAirport > ></DestAirport><FlightDate></FlightDate><SeatsAvailible>0</SeatsAvailible><SeatP > rice>0</SeatPrice></Flight><Flight><FlightNum>0</FlightNum><SourceAirport></Sour > ceAirport><DestAirport></DestAirport><FlightDate></FlightDate><SeatsAvailible>0< > /SeatsAvailible><SeatPrice>0</SeatPrice></Flight></FlightList> > [echo] Done... > > BUILD SUCCESSFUL > Total time: 3 seconds > > .... This is what I want to send back to the service requester. But, and a > horrible but that I cant figure out why, when I implement the code as a web > service and run the client code the debug statements to tomcat's console > seems > to indicate that it hangs around the > DOMGetFlightsXMLImpl.transformDOMtoString(Document) method at this line (171) > TransformerFactory tFactory = TransformerFactory.newInstance(); > This is what the console looks like - > > > 03-Jun-2005 03:13:42 org.apache.coyote.http11.Http11Protocol init > INFO: Initializing Coyote HTTP/1.1 on http-8080 > Starting service Tomcat-Standalone > Apache Tomcat/4.1.31 > 03-Jun-2005 03:13:43 org.apache.struts.util.PropertyMessageResources <init> > INFO: Initializing, config='org.apache.struts.util.LocalStrings', > returnNull=tru > e > 03-Jun-2005 03:13:43 org.apache.struts.util.PropertyMessageResources <init> > INFO: Initializing, config='org.apache.struts.action.ActionResources', > returnNul > l=true > 03-Jun-2005 03:13:43 org.apache.struts.util.PropertyMessageResources <init> > INFO: Initializing, config='org.apache.webapp.admin.ApplicationResources', > retur > nNull=true > 03-Jun-2005 03:13:46 org.apache.coyote.http11.Http11Protocol start > INFO: Starting Coyote HTTP/1.1 on http-8080 > 03-Jun-2005 03:13:46 org.apache.jk.common.ChannelSocket init > INFO: JK2: ajp13 listening on /0.0.0.0:8009 > 03-Jun-2005 03:13:46 org.apache.jk.server.JkMain start > INFO: Jk running ID=0 time=0/30 config=C:\Program > Files\Apache\jakarta-tomcat-4 > .1.31\conf\jk2.properties > ==================================== > about to convert to string > ============Getting XML String===================== > Creating xml dom doc > about to head into loop to parse list > left the loop so we have added nodes to dom > About to turn dom to string > ========Hello from transformDOMtoString(). > > > /* > * Created on 10-5-2005 > */ > > package flightCompany.xmlHelper; > > import org.w3c.dom.Document; > import org.w3c.dom.Element; > import org.w3c.dom.Node; > > //Import log4j classes. > import org.apache.log4j.HTMLLayout; > import org.apache.log4j.Level; > import org.apache.log4j.Logger; > import org.apache.log4j.BasicConfigurator; > import org.apache.log4j.WriterAppender; > > import javax.xml.transform.dom.DOMSource; > import javax.xml.parsers.DocumentBuilder; > import javax.xml.parsers.DocumentBuilderFactory; > import javax.xml.parsers.ParserConfigurationException; > import javax.xml.transform.TransformerFactory; > import javax.xml.transform.TransformerException; > import javax.xml.transform.TransformerConfigurationException; > import javax.xml.transform.Transformer; > import javax.xml.transform.stream.StreamResult; > > > import java.io.FileOutputStream; > import java.io.StringWriter; > import java.util.Iterator; > import java.util.LinkedList; > > import flightCompany.exceptions.XMLException; > import flightCompany.model.Flight; > > > /** > * This helper provides XML & XML String object mapping the DAO methods and > the > * database model to xml. > * @author James Taylor > * @version 1.2 > */ > > public class DOMGetFlightsXMLImpl implements GetFlightsXMLIF{ > //logger > static Logger logger = Logger.getLogger(DOMGetFlightsXMLImpl.class); > private Document doc; > private Element root; > > > /** > * Instantiate class members by creating a DOM document and a > root > tag > element for it. > * using a root tag. > * @param rootTagName root tag for document > * @throws throws XMLException > */ > protected void createXMLDocument(String rootTagName) throws > XMLException{ > > DocumentBuilderFactory factory = > DocumentBuilderFactory.newInstance(); > try { > factory.setNamespaceAware(true); > DocumentBuilder builder = factory.newDocumentBuilder(); > doc = builder.newDocument(); > root = doc.createElementNS("FlightList.xsd", > rootTagName); > //add root tag > doc.appendChild(root); > } catch (ParserConfigurationException e) { > throw new XMLException("XMLExcepion in > DOMGetFlightsXMLImpl.createXMLDocument() " + e.getMessage() ); > } > } > > /* > * Given a list of flight objects this returns a xml string > representation of > them > * @param flights list of flights to put in xml form > * @throws XMLException > */ > public String getFlightListAsXMLString(Iterator flights){ > try{ > System.out.println("============Getting XML > String====================="); > System.out.println("Creating xml dom doc"); > createXMLDocument("FlightList"); > }catch( XMLException xmle ){ > String result = "<Error> Error creating the xml > document "+ > xmle.getMessage() +" </Error>"; > System.out.println( result); > return result; > } > if (!flights.hasNext() ) > return "<Result> Couldn't find any flights to parse into > xml</Result>"; > try{ > System.out.println("about to head into loop to parse > list"); > while (flights.hasNext()) { > Flight f = (Flight)flights.next(); > addFlightNode(root, f); > } > System.out.println("left the loop so we have added nodes > to > dom"); > }catch( Exception e ){ > String result = "<Error> Error making adding nodes > to > the xml doc "+ > e.getMessage() +" </Error>"; > System.out.println( result); > return result; > } > try{ > System.out.println("About to turn dom to string"); > return transformDOMtoString(doc); > }catch( XMLException xmle ){ > String result = "<Error> Error making string > representation on xml doc "+ > xmle.getMessage() +" </Error>"; > System.out.println( result); > return result; > } > } > > /** > * Add XML data mapping from Flight objs to XML by populating the > DOM > document > object > * @param parent root tag > * @param f flight object to be parsed to xml > * @throws XMLException > */ > protected void addFlightNode(Node parent, Flight f) throws > XMLException{ > try{ > //add <Flight> element > Element flElem = doc.createElement("Flight"); > parent.appendChild(flElem); > > // Make <FlightNum> element and add it > Element elem = doc.createElement( "FlightNum" ); > elem.appendChild(doc.createTextNode( String.valueOf( > f.getFlightNum() ) > )); > flElem.appendChild(elem); > > > // Make <SourceAirport> element and add it > elem = doc.createElement("SourceAirport"); > elem.appendChild(doc.createTextNode( f.getSourceAirport() )); > flElem.appendChild(elem); > > // Make <DestAirport> element and add it > elem = doc.createElement( "DestAirport" ); > elem.appendChild(doc.createTextNode( f.getDestAirport() )); > flElem.appendChild(elem); > > // Make <FlightDate> element and add it > elem = doc.createElement( "FlightDate" ); > elem.appendChild(doc.createTextNode( f.getFlightDate() )); > flElem.appendChild(elem); > > //Make <SeatsAvailible> element and add it > elem = doc.createElement( "SeatsAvailible" ); > elem.appendChild(doc.createTextNode( String.valueOf( > f.getSeatsAvailible() ) )); > flElem.appendChild(elem); > > //Make <SeatsAvailible> element and add it > elem = doc.createElement( "SeatPrice" ); > elem.appendChild(doc.createTextNode( String.valueOf( > f.getSeatPrice() ) > )); > flElem.appendChild(elem); > }catch (Exception e) { > throw new XMLException("XMLExcepion in > DOMGetFlightsXMLImpl.addFlightNode() " + e.getMessage() ); > } > } > > > > /** > * > * @param xDoc Dom document to convert to a string > * @return a string representation of a DOM document object > * @throws XMLException > */ > protected String transformDOMtoString(Document xDoc) throws > XMLException { > try { > System.out.println("========Hello from > transformDOMtoString()."); > // Use a Transformer for String output > TransformerFactory tFactory = > TransformerFactory.newInstance(); > System.out.println("got TransformerFactory..."); > Transformer transformer = tFactory.newTransformer(); > System.out.println("got Transformer..."); > DOMSource source = new DOMSource(xDoc); > System.out.println("Got DOMSource..."); > StringWriter sw = new StringWriter(); > System.out.println("Got StringWriter..."); > transformer.transform(source, new StreamResult(sw)); > System.out.println("transformed dom..."); > String result = sw.toString(); > System.out.println("=======sending back this" + result); > return result; > }catch (TransformerConfigurationException tce) { > > System.out.println("TransformerConfigurationException"); > throw new XMLException("XMLExcepion in > DOMGetFlightsXMLImpl.transformDOMtoString() " + tce.getMessageAndLocation() > ); > }catch (TransformerException te) { > System.out.println("TransformerException"); > throw new XMLException("XMLExcepion in > DOMGetFlightsXMLImpl.transformDOMtoString() " + te.getMessageAndLocation() ); > } > } > > > /** > * Just to test the imlementation > * > public static void main(String[] arg) { > try{ > DOMGetFlightsXMLImpl helper = new > DOMGetFlightsXMLImpl(); > LinkedList flights = new LinkedList(); > Flight f = new Flight(); > Flight fl = new Flight(); > flights.add( f ); > flights.add( fl ); > Iterator iter = flights.iterator(); > > System.out.println(helper.getFlightListAsXMLString(iter) ); > } > catch ( Exception saxe ){ > throw new XMLException("Error in parsing xml"+ > saxe.getMessage() > ); > } > } > **/ > } > > > Quoting James Taylor <[EMAIL PROTECTED]>: > > > I think its happening somewhere around > > DOMGetFlightsXMLImpl.transformDOMtoString(Document) call, but cant figure > out > > why??!! > > Quoting James Taylor <[EMAIL PROTECTED]>: > > > > > Hey folks, > > > apologies for sending such a long mail, I've this web > > service > > > that keeps throwing this really annoying > > > java.lang.reflect.InvocationTargetException and would really appreciate > it > > if > > > someone could help me put my finger on whats going wrong cause I'm at my > > wits > > > end. This is the error I keep getting back: > > > > > > HTTP/1.1 500 Internal Server Error > > > Set-Cookie: JSESSIONID=AD9B5C8B6BB70316879AE7CF8219794E; Path=/axis > > > Content-Type: text/xml;charset=utf-8 > > > Date: Thu, 02 Jun 2005 19:39:10 GMT > > > Server: Apache-Coyote/1.1 > > > Connection: close > > > > > > <soapenv:Envelope > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > > > > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><soapenv:Fault><faultcode>soapenv:Server.userException</faultcode><faultstring>java.lang.reflect.InvocationTargetException</faultstring><detail><ns1:hostname > > > > > > xmlns:ns1="http://xml.apache.org/axis/">taylorjw</ns1:hostname></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope> > > > > > > ...the web service takes a list of flights in the form and makes an xml > > > string > > > out of them using DOM. I know the xml stuff works on its own but I think > > > thats > > > where the error is somehow happening but I cant for the life of me figure > > out > > > where. The code for the web service is > > > > > > package flightCompany.rpcservice; > > > > > > import java.util.Iterator; > > > import java.util.LinkedList; > > > > > > import flightCompany.xmlHelper.DOMGetFlightsXMLImpl; > > > import flightCompany.xmlHelper.GetFlightsXMLIF; > > > import flightCompany.model.Flight; > > > > > > /** > > > * A JAX-RPC Web service that takes a date and returns a xml String of > > > flights > > > * available on that date. > > > * Created on 11-May-2005 > > > * @author James Taylor > > > * @version 1.1 > > > */ > > > > > > public class FlightInfoService implements FlightInfoServiceIF{ > > > > > > /** > > > * returns as string representation of a list of available > flights. > > > * @param date date of flights to search for. > > > * @return xml String of available flights > > > * @throws ava.rmi.RemoteException > > > */ > > > public String getFlights(String date) throws > java.rmi.RemoteException{ > > > Flight f = new Flight(); > > > Flight fl = new Flight(); > > > LinkedList flights = new LinkedList(); > > > flights.add( f ); > > > flights.add( fl ); > > > // Instantiate the XMLHelper > > > GetFlightsXMLIF xmlHelper = new DOMGetFlightsXMLImpl(); > > > System.out.println("about to convert to string"); > > > //turn list to xml > > > String result = xmlHelper.getFlightListAsXMLString( > flights.iterator() > > > ); > > > System.out.println("Got me xml shit"); > > > return result; > > > } > > > > > > > > > } > > > > > > ....the code for a flight object is your ordinary bean kinda stuff > > > > > > /* > > > * Created on 11-May-2005 > > > */ > > > package flightCompany.model; > > > > > > > > > > > > /** > > > * Data model of a FlightInfo table entry, mapping the database model and > > the > > > xml we receive. > > > * @author James Taylor > > > * @version 1.1 > > > */ > > > public class Flight{ > > > private int flightNum; > > > private String sourceAirport; > > > private String destAirport; > > > private String flightDate; > > > private int seatsAvailible; > > > private int seatPrice; > > > private String numberOfSeatsToBook; > > > private int bookingNumber; > > > > > > /** > > > * Default constructor used in xml mapping, it just initialises > and > > creates > > > instance variables > > > */ > > > public Flight() { > > > this.sourceAirport = ""; > > > this.destAirport = ""; > > > this.flightDate = ""; > > > this.seatPrice = 0; > > > this.seatsAvailible = 0; > > > this.flightNum = 0; > > > this.numberOfSeatsToBook = ""; > > > bookingNumber = 0; > > > } > > > > > > /** > > > * constructor used to map the database model > > > * @param ID flight id > > > * @param src source airport > > > * @param dest destination airport > > > * @param date date of flight > > > * @param seatsAv number of seats available > > > * @param price price of a seat > > > */ > > > public Flight(int ID, String src, String dest, String date, int > seatsAv, > > int > > > price) { > > > flightNum = ID; > > > sourceAirport = src; > > > destAirport = dest; > > > flightDate = date; > > > seatsAvailible = seatsAv; > > > seatPrice = price; > > > this.numberOfSeatsToBook = ""; > > > bookingNumber = 0; > > > } > > > > > > public void setNumberOfSeatsToBook(String n){ numberOfSeatsToBook > = > n; } > > > public String getNumberOfSeatsToBook(){ return > numberOfSeatsToBook; > } > > > > > > public void setFlightNum(int n){ flightNum = n; } > > > public int getFlightNum(){ return flightNum; } > > > > > > public void setSourceAirport(String src){ sourceAirport = src; } > > > public String getSourceAirport(){ return sourceAirport; } > > > > > > public void setDestAirport(String src){ destAirport = src; } > > > public String getDestAirport(){ return destAirport; } > > > > > > public void setFlightDate(String src){ flightDate = src; } > > > public String getFlightDate(){ return flightDate; } > > > > > > public void setSeatsAvailible(int n){ seatsAvailible = n; } > > > public int getSeatsAvailible(){ return seatsAvailible; } > > > > > > public void setSeatPrice(int n){ seatPrice = n; } > > > public int getSeatPrice(){ return seatPrice; } > > > > > > public void setBookingNumber(int n){ bookingNumber = n; } > > > public int getBookingNumber(){ return bookingNumber; } > > > > > > public void print() { > > > System.out.println("Flight num > : " +flightNum); > > > System.out.println("\nLeaving > : "+sourceAirport); > > > System.out.println("\nArriving in > : > " +destAirport); > > > System.out.println("\nDate > : "+flightDate); > > > System.out.println("\nAvailable seats > : "+seatsAvailible); > > > System.out.println( "\nSeat price > : "+ seatPrice ); > > > System.out.println( "\nNo of seats > requested > : " +numberOfSeatsToBook > > ); > > > System.out.println( "\nBooking no > : "+bookingNumber ); > > > } > > > > > > public String toString(){ > > > StringBuffer sb = new StringBuffer(); > > > sb.append( "Flight num : " ); > > > sb.append( String.valueOf( flightNum ) ); > > > sb.append( "\nLeaving : " ); > > > sb.append( sourceAirport ); > > > sb.append( "\nArriving in : " ); > > > sb.append( destAirport ); > > > sb.append( "\nDate : " ); > > > sb.append( flightDate ); > > > sb.append( "\nAvailable seats: " ); > > > sb.append( String.valueOf( seatsAvailible ) ); > > > sb.append("\nSeat price : "); > > > sb.append( String.valueOf( seatPrice ) ); > > > sb.append( "\nNo of seats requested : " ); > > > sb.append( numberOfSeatsToBook ); > > > sb.append( "\nBooking no : " ); > > > sb.append( String.valueOf(bookingNumber) ); > > > sb.trimToSize(); > > > return sb.toString(); > > > } > > > } > > > > > > ...and the code for the DOM xml class is as follows, follwed by the xml > > error > > > class and the client code I'm using. This class is the crux of my problem > I > > > think, but it runs on its own fine. > > > > > > /* > > > * Created on 10-5-2005 > > > */ > > > > > > package flightCompany.xmlHelper; > > > > > > import org.w3c.dom.Document; > > > import org.w3c.dom.Element; > > > import org.w3c.dom.Node; > > > > > > > > > > > > import javax.xml.transform.dom.DOMSource; > > > import javax.xml.parsers.DocumentBuilder; > > > import javax.xml.parsers.DocumentBuilderFactory; > > > import javax.xml.parsers.ParserConfigurationException; > > > import javax.xml.transform.TransformerFactory; > > > import javax.xml.transform.TransformerException; > > > import javax.xml.transform.TransformerConfigurationException; > > > import javax.xml.transform.Transformer; > > > import javax.xml.transform.stream.StreamResult; > > > > > > > > > import java.io.StringWriter; > > > import java.util.Iterator; > > > import java.util.LinkedList; > > > > > > import flightCompany.exceptions.XMLException; > > > import flightCompany.model.*; > > > > > > > > > /** > > > * This helper provides XML & XML String object mapping the DAO methods > > and > > > the > > > * database model to xml. > > > * @author James Taylor > > > * @version 1.2 > > > */ > > > > > > public class DOMGetFlightsXMLImpl { > > > > > > private Document doc; > > > private Element root; > > > > > > > > > /** > > > * Instantiate class members by creating a DOM document and a > root tag > > > element for it. > > > * using a root tag. > > > * @param rootTagName root tag for document > > > * @throws throws XMLException > > > */ > > > protected void createXMLDocument(String rootTagName) throws > > > XMLException{ > > > > > > DocumentBuilderFactory factory = > > > DocumentBuilderFactory.newInstance(); > > > try { > > > factory.setNamespaceAware(true); > > > DocumentBuilder builder = > factory.newDocumentBuilder(); > > > doc = builder.newDocument(); > > > root = doc.createElementNS("FlightList.xsd", > rootTagName); > > > //add root tag > > > doc.appendChild(root); > > > } catch (ParserConfigurationException e) { > > > throw new XMLException("XMLExcepion in > > > DOMGetFlightsXMLImpl.createXMLDocument() " + e.getMessage() ); > > > } > > > } > > > > > > /* > > > * Given a list of flight objects this returns a xml string > > representation > > > of > > > them > > > * @param flights list of flights to put in xml form > > > * @throws XMLException > > > */ > > > public String getFlightListAsXMLString(Iterator flights){ > > > try{ > > > System.out.println("============Getting XML > > > String====================="); > > > System.out.println("Creating xml dom doc"); > > > createXMLDocument("FlightList"); > > > }catch( XMLException xmle ){ > > > String result = "<Error> Error creating the xml > document "+ > > > xmle.getMessage() +" </Error>"; > > > System.out.println( result); > > > return result; > > > } > > > if (!flights.hasNext() ) > > > return "<Result> Couldn't find any flights to parse > into > > xml</Result>"; > > > try{ > > > System.out.println("about to head into loop to > parse list"); > > > while (flights.hasNext()) { > > > Flight f = (Flight)flights.next(); > > > addFlightNode(root, f); > > > } > > > System.out.println("left the loop"); > > > }catch( Exception e ){ > > > String result = "<Error> Error making adding > nodes > to the xml doc "+ > > > e.getMessage() +" </Error>"; > > > System.out.println( result); > > > return result; > > > } > > > try{ > > > System.out.println("About to turn dom to string"); > > > return transformDOMtoString(doc); > > > }catch( XMLException xmle ){ > > > String result = "<Error> Error making string > representation on xml doc > > "+ > > > xmle.getMessage() +" </Error>"; > > > System.out.println( result); > > > return result; > > > } > > > } > > > > > > /** > > > * Add XML data mapping from Flight objs to XML by populating > the > DOM > > > document > > > object > > > * @param parent root tag > > > * @param f flight object to be parsed to xml > > > * @throws XMLException > > > */ > > > protected void addFlightNode(Node parent, Flight f) throws > XMLException{ > > > try{ > > > //add <Flight> element > > > Element flElem = doc.createElement("Flight"); > > > parent.appendChild(flElem); > > > > > > // Make <FlightNum> element and add it > > > Element elem = doc.createElement( "FlightNum" ); > > > elem.appendChild(doc.createTextNode( String.valueOf( > > > f.getFlightNum() ) > > > )); > > > flElem.appendChild(elem); > > > > > > > > > // Make <SourceAirport> element and add it > > > elem = doc.createElement("SourceAirport"); > > > elem.appendChild(doc.createTextNode( f.getSourceAirport() > )); > > > flElem.appendChild(elem); > > > > > > // Make <DestAirport> element and add it > > > elem = doc.createElement( "DestAirport" ); > > > elem.appendChild(doc.createTextNode( f.getDestAirport() > )); > > > flElem.appendChild(elem); > > > > > > // Make <FlightDate> element and add it > > > elem = doc.createElement( "FlightDate" ); > > > elem.appendChild(doc.createTextNode( f.getFlightDate() > )); > > > flElem.appendChild(elem); > > > > > > //Make <SeatsAvailible> element and add it > > > elem = doc.createElement( "SeatsAvailible" ); > > > elem.appendChild(doc.createTextNode( String.valueOf( > > > f.getSeatsAvailible() ) )); > > > flElem.appendChild(elem); > > > > > > //Make <SeatsAvailible> element and add it > > > elem = doc.createElement( "SeatPrice" ); > > > elem.appendChild(doc.createTextNode( String.valueOf( > > > f.getSeatPrice() ) > > > )); > > > flElem.appendChild(elem); > > > }catch (Exception e) { > > > throw new XMLException("XMLExcepion in > > > DOMGetFlightsXMLImpl.addFlightNode() " + e.getMessage() ); > > > } > > > } > > > > > > > > > > > > /** > > > * > > > * @param xDoc Dom document object to convert to a string > > > * @return a string representation of a DOM document object > > > * @throws XMLException > > > */ > > > protected String transformDOMtoString(Document xDoc) throws > XMLException{ > > > try { > > > // Use a Transformer for String output > > > TransformerFactory tFactory = > TransformerFactory.newInstance(); > > > Transformer transformer = tFactory.newTransformer(); > > > DOMSource source = new DOMSource(xDoc); > > > StringWriter sw = new StringWriter(); > > > transformer.transform(source, new StreamResult(sw)); > > > return sw.toString(); > > > }catch (TransformerConfigurationException tce) { > > > throw new XMLException("XMLExcepion in > > > DOMGetFlightsXMLImpl.transformDOMtoString() " + > tce.getMessageAndLocation() > > > ); > > > }catch (TransformerException te) { > > > throw new XMLException("XMLExcepion in > > > DOMGetFlightsXMLImpl.transformDOMtoString() " + te.getMessage() ); > > > } > > > } > > > > > > > > > /** > > > * Just to test the imlementation > > > */ > > > public static void main(String[] arg) { > > > DOMGetFlightsXMLImpl helper = new > DOMGetFlightsXMLImpl(); > > > try{ > > > LinkedList flights = new LinkedList(); > > > Flight f = new Flight(); > > > Flight fl = new Flight(); > > > flights.add( f ); > > > flights.add( fl ); > > > Iterator iter = flights.iterator(); > > > System.out.println(helper.getFlightListAsXMLString(iter) > ); > > > } > > > catch ( Exception saxe ){ > > > throw new XMLException("Error in parsing xml"+ > saxe.getMessage() > > ); > > > } > > > } > > > } > > > > > > /* > > > * Created on 15-05-2005 > > > */ > > > > > > > > > package flightCompany.exceptions; > > > > > > /** > > > * > > > * @author James Taylor > > > * @version 1.1 > > > */ > > > > > > public class XMLException extends RuntimeException { > > > > > > /** > > > * Constructor > > > * @param str a string that explains what the exception condition > is > > > */ > > > public XMLException (String str) { > > > super(str); > > > } > > > > > > /** > > > * Default constructor. Takes no arguments > > > */ > > > public XMLException () { > > > super(); > > > > > > } > > > > > > public String toString() > > > { > > > return "XMLException: "+super.toString(); > > > } > > > } > > > > > > > > > package flightCompany.rpcservice.client; > > > > > > import org.apache.axis.AxisFault; > > > import java.net.URL; > > > > > > /** > > > * A client that uses the Dynamic Proxy method to communicate with a Web > > > service > > > * using JAX-RPC. > > > * @author James Taylor > > > * @version 1.1 > > > */ > > > > > > public class FlightCompanyClient { > > > > > > // helper class - To fetch the ACME Catalog information > > > > > > public String getFlightsFromWSService(String date) throws Exception { > > > String REMOTE_ENDPOINT_URL = > > > "http://localhost:7070/axis/services/flightservice"; > > > String namespace = "flightservice"; > > > String portName = "FlightInfoServiceIF"; > > > String servicename = "flightservice"; > > > > > > //make a service > > > FlightInfoServiceIFService service = new > > > FlightInfoServiceIFServiceLocator(); > > > //get a stub to the service > > > FlightInfoServiceIF flightSvc = service.getflightservice( new URL( > > > REMOTE_ENDPOINT_URL )); > > > > > > //make a call > > > return flightSvc.getFlights(date); > > > } > > > > > > public static void main(String args[]) { > > > try { > > > String date = "2005-05-23"; > > > FlightCompanyClient fclient = new FlightCompanyClient(); > > > String flights = fclient.getFlightsFromWSService( date ); > > > System.out.println("Avasilable flights: " + flights); > > > } > > > catch( Exception e ) { > > > if ( e instanceof AxisFault ) { > > > System.err.println( ((AxisFault)e).dumpToString() ); > > > } else > > > e.printStackTrace(); > > > } > > > } > > > > > > } > > > > > > -- > > > Between the question and the answer lies free will > > > > > > > > -- Between the question and the answer lies free will