Daniel,

I don't know much--just got my first dummy application working 
yesterday--but when I have gotten InvocationTargetException, it's because 
either I'm pointing to the wrong URL in the client or the web service isn't 
deployed right.  I'm just guessing from the scant Axis coverage in this web 
services book I bought, but does your service need to be deployed as 
classes with a .wsdd document, since it's doing stuff with 
handlers?  That's all I've got--

Andrew

At 05:13 PM 4/18/2002 -0700, you wrote:
>hi all,
>
>I am running Axis beta 1 under Tomcat 4 on a Linux
>Box.
>
>I have a simple java application that has a method
>called getResults that takes a String ("cityName"),
>uses a SAXParser to parse an xml file, searches for
>the element with that city name, and returns a string
>with the contents for that city.
>
>This code works fine when I run it from the command
>line, but when I tried to place it under Axis and
>access it as a web service, it gave me the following
>stackTrace:
>
>Exception in thread "main"
>java.lang.reflect.InvocationTargetException
>         at
>org.apache.axis.message.SOAPFaultBuilder.endElement(Unknown
>Source)
>         at
>org.apache.axis.encoding.DeserializationContextImpl.endElement(Unknown
>Source)
>         at
>org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1403)
>         at
>org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java:1550)
>         at
>org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1204)
>         at
>org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
>         at
>org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
>         at
>javax.xml.parsers.SAXParser.parse(SAXParser.java:393)
>         at
>org.apache.axis.encoding.DeserializationContextImpl.parse(Unknown
>Source)
>         at
>org.apache.axis.SOAPPart.getAsSOAPEnvelope(Unknown
>Source)
>         at org.apache.axis.client.Call.invoke(Unknown
>Source)
>         at org.apache.axis.client.Call.invoke(Unknown
>Source)
>         at org.apache.axis.client.Call.invoke(Unknown
>Source)
>         at org.apache.axis.client.Call.invoke(Unknown
>Source)
>         at WTClient.main(WTClient.java:40)
>
>My code for the web service (the .jws file) is as
>follows:
>
>import org.xml.sax.helpers.DefaultHandler;
>import org.xml.sax.ContentHandler;
>import org.xml.sax.SAXException;
>import org.xml.sax.SAXParseException;
>import org.xml.sax.Attributes;
>import org.xml.sax.XMLReader;
>import org.xml.sax.helpers.XMLReaderFactory;
>import org.apache.xerces.parsers.SAXParser;
>
>
>
>class WeatherParser {
>
>         private String cityName = "Tucson";
>         private String output = "";
>     String results;
>         StringBuffer buffer = new StringBuffer();
>
>         public void setCityName (String n) {
>                 this.cityName = n;
>         }
>
>         public String getCityName () {
>                 return this.cityName;
>         }
>
>         public void setOutput (String n) {
>                 this.output = n;
>         }
>
>         public static void main(String[] args) {
>                 new WeatherParser(args);
>         }
>
>         WeatherParser (String [] args) {
>                 if (args.length > 0) {
>                         setCityName(args[0]);
>                 }
>                 output = getResults("");
>                 System.out.println (output);
>         }
>
>         public String getResults (String fileName) {
>
>                 try {
>                         XMLReader parser = new SAXParser();
>                         parser.setContentHandler(new CH());
>                         parser.parse("weather.xml");
>                 }
>
>                 catch(Exception e) {
>                         System.out.println(e);
>                 }
>                 results = buffer.toString();
>                 return results;
>         }
>
>         class CH extends DefaultHandler {
>
>                 boolean cityNameElementFlag = false;
>                 boolean currentWeatherFlag = false;
>                 boolean weekdayFlag = false;
>                 boolean monthFlag = false;
>                 boolean dayOfMonthFlag = false;
>                 boolean precipitationFlag = false;
>                 boolean conditionsFlag = false;
>                 boolean highFlag = false;
>                 boolean lowFlag = false;
>                 boolean forecastFlag = false;
>                 boolean cityFoundFlag = false;
>                 String name = cityName.toUpperCase();
>                 String weekday;
>                 String month;
>                 String dayOfMonth;
>
>                 public void startDocument() throws SAXException {
>                         //System.out.println("cityName = "+name);
>                 }
>
>                 public void endDocument() throws SAXException {}
>
>                 public void startElement(String nameSpaceURI, String
>localName, String rawName, Attributes atts)
>                         throws SAXException {
>                                 if (localName.equals("CITY_NAME")) {
>                                         cityNameElementFlag = true;
>                                         //System.out.println("Found a 
> CITY_NAME tag");
>                                 } else if ( 
> localName.equals("CURRENT_WEATHER") )
>{
>                                         if (cityFoundFlag) {
>                                                 buffer.append(" Latest 
> weather for ");
>                                         }
>                                         currentWeatherFlag = 
> true;
>                                 } else if ( localName.equals("WEEKDAY") ) {
>                                         weekdayFlag = true;
>                                 } else if ( localName.equals("MONTH") ) {
>                                         monthFlag = true;
>                                 } else if ( 
> localName.equals("DAYOFMONTH") ) {
>                                         dayOfMonthFlag = true;
>                                 } else if ( 
> localName.equals("PRECIPITATION") ) {
>                                         precipitationFlag = true;
>                                 } else if ( localName.equals("HIGH") ) {
>                                         highFlag = true;
>                                 } else if ( localName.equals("LOW") ) {
>                                         lowFlag = true;
>                                 } else if ( 
> localName.equals("CONDITIONS") ) {
>                                         conditionsFlag = true;
>                                 } else if ( localName.equals("FORECAST") ) {
>                                         if (cityFoundFlag) {
>                                                 buffer.append(" 
> Forecasted weather for ");
>                                         }
>                                         forecastFlag = true;
>                                 }
>                 }
>
>                 public void endElement(String nameSpaceURI, String
>localName, String rawName)
>                         throws SAXException {
>                                 if ( localName.equals("CITY_NAME") ) {
>                                         cityNameElementFlag = false;
>                                 } else if ( localName.equals("CITY") ) {
>                                         cityFoundFlag = false;
>                                 } else if ( 
> localName.equals("CURRENT_WEATHER") )
>{
>                                         currentWeatherFlag = false;
>                                 } else if ( localName.equals("WEEKDAY") ) {
>                                         if (cityFoundFlag) {
>                                                 buffer.append(weekday + " ");
>                                         }
>                                         weekdayFlag = false;
>                                 } else if ( localName.equals("MONTH") ) {
>                                         if (cityFoundFlag) {
>                                                 buffer.append(month + ", ");
>                                         }
>                                         monthFlag = false;
>                                 } else if ( 
> localName.equals("DAYOFMONTH") ) {
>                                         if (cityFoundFlag) {
>                                                 buffer.append(dayOfMonth 
> + "\n");
>                                         }
>                                         dayOfMonthFlag = false;
>                                 } else if ( 
> localName.equals("PRECIPITATION") ) {
>                                         precipitationFlag = false;
>                                 } else if ( localName.equals("HIGH") ) {
>                                         highFlag = false;
>                                 } else if ( localName.equals("LOW") ) {
>                                         lowFlag = false;
>                                 } else if ( 
> localName.equals("CONDITIONS") ) {
>                                         conditionsFlag = false;
>                                 } else if ( localName.equals("FORECAST") ) {
>                                         forecastFlag = false;
>                                 }
>
>                 }
>
>                 public void characters(char[] ch, int start, int
>length) throws SAXException {
>                         String text = new String(ch,start,length);
>
>                         if (cityNameElementFlag) {
>                                 //System.out.println("City name = "+text);
>                                 if (text.indexOf(name) > -1) {
>                                         cityFoundFlag = true;
>                                         //System.out.println("Found 
> city:"+name);
>                                         buffer.append("Weather for the 
> city of
>"+text+"\n");
>                                 }
>                         } else if (weekdayFlag) {
>                                 weekday = text;
>                         } else if (monthFlag) {
>                                 month = text;
>                         } else if (dayOfMonthFlag) {
>                                 dayOfMonth = text;
>                         }
>
>                         if (cityFoundFlag) {
>                                 if (precipitationFlag) {
>                                         buffer.append("  - precipitation: 
> "+text+" (last
>24 hours)\n");
>                                 } else if (highFlag) {
>                                         buffer.append("  - high: 
> "+text+"F\n");
>                                 } else if (lowFlag) {
>                                         buffer.append("  - low: 
> "+text+"F\n");
>                                 } else if (conditionsFlag) {
>                                         buffer.append("  - conditions: 
> "+text+"\n");
>                                 }
>                         }
>                 }
>         }
>}
>
>Anyone have any ideas why it won't run as a web
>service?
>
>Thanks for any help.
>
>__________________________________________________
>Do You Yahoo!?
>Yahoo! Tax Center - online filing with TurboTax
>http://taxes.yahoo.com/



Reply via email to