http://www.onjava.com/pub/a/onjava/2004/12/15/jaxb.html
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.Handler;
import javax.xml.ws.handler.HandlerResolver;
import javax.xml.ws.handler.PortInfo;
import com.cdyne.ws.weatherws.ArrayOfForecast;
import com.cdyne.ws.weatherws.Forecast;
import com.cdyne.ws.weatherws.ForecastReturn;
import com.cdyne.ws.weatherws.Weather;
import com.cdyne.ws.weatherws.WeatherSoap;
public class ClimateWebService implements HandlerResolver {
public static void main(String[] args) {
Weather weather = new Weather();
HandlerResolver myHanlderResolver = new ClimateWebService();
weather.setHandlerResolver(myHanlderResolver);
WeatherSoap wsoap=weather.getWeatherSoap();
ForecastReturn forecastReturn = (ForecastReturn) wsoap.getCityForecastByZIP("19110");
ArrayOfForecast forecast = forecastReturn.getForecastResult();
System.out.println("City : " + (forecastReturn.getCity()));
System.out.println("State : " + (forecastReturn.getState()));
for (Forecast fore : forecast.getForecast()) {
System.out.println("Desc : " + fore.getDesciption());
System.out.println("ID : " + fore.getWeatherID());
System.out.println("Temp HIGH: " + fore.getTemperatures().getDaytimeHigh());
System.out.println("Temp LOW: " + fore.getTemperatures().getMorningLow());
}
}
@Override
public List<Handler> getHandlerChain(PortInfo arg0) {
List<Handler> handlerChain = new ArrayList<Handler>();
handlerChain.add(new MyHandler());
return handlerChain;
}
}
MyHandler
import java.io.IOException;
import java.util.Set;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
public class MyHandler implements SOAPHandler<SOAPMessageContext> {
public boolean handleMessage(SOAPMessageContext smc) {
Boolean outboundProperty = (Boolean) smc
.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
SOAPMessage message = smc.getMessage();
if (!outboundProperty.booleanValue()) {
System.out.print(" SOAP Request ");
} else {
System.out.print(" SOAP Respone ");
}
try {
message.writeTo(System.out);
} catch (SOAPException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("");
return outboundProperty;
}
public Set getHeaders() {
return null;
}
public boolean handleFault(SOAPMessageContext context) {
return true;
}
public void close(MessageContext context) {
}
}
Labels: sdfsdf