Можно ли использовать jax-ws для генерации XML, но НЕ отправлять его
Итак, вот сценарий: у нас есть PeopleSoft, и мы хотим отправлять сообщения туда и обратно от Salesforce. К сожалению, PeopleSoft не имеет такого инструмента, как wsimport, который использует wsdl и генерирует классы для вас. Есть что-то, что потребляет wsdl, но все, что он делает, это генерирует объекты-заглушки. Разработчику все равно придется написать код для ручной генерации строки сообщения xml.
Я, очевидно, не хочу делать все это. Так что я знаю, что Java можно вызывать из PeopleSoft. Я также знаю, что могу отправлять сообщения, используя только сгенерированные классы, но я бы хотел использовать функции мониторинга сообщений, встроенные в PeopleSoft.
Итак, возможное решение, о котором я думаю, будет:
вызовите метод веб-сервиса в Java (без отправки сообщения)Возьмите XMLотправить XML через механизмыoplesoftзахватить ответ xmlпередать ответ XML в класс ответа JavaИспользуйте Java-классы, чтобы получить значения в XMLЯ сумасшедший или это возможно?
постскриптум я новичок Java-разработчик
Вот мой класс обработчика для захвата xml, но нужен какой-то способ предотвращения отправки сообщения.
public class LoggingHandler implements SOAPHandler<SOAPMessageContext> {
// change this to redirect output if desired
private static PrintStream out = System.out;
private String xmlOut = null;
public Set<QName> getHeaders() {
return null;
}
public boolean handleMessage(SOAPMessageContext smc) {
logToSystemOut(smc);
return true;
}
public boolean handleFault(SOAPMessageContext smc) {
logToSystemOut(smc);
return true;
}
// nothing to clean up
public void close(MessageContext messageContext) {
}
public String getXmlOut() {
return xmlOut;
}
/*
* Check the MESSAGE_OUTBOUND_PROPERTY in the context
* to see if this is an outgoing or incoming message.
* Write a brief message to the print stream and
* output the message. The writeTo() method can throw
* SOAPException or IOException
*/
private void logToSystemOut(SOAPMessageContext smc) {
Boolean outboundProperty = (Boolean)
smc.get (MessageContext.MESSAGE_OUTBOUND_PROPERTY);
SOAPMessage message = smc.getMessage();
try {
ByteArrayOutputStream baOut = new ByteArrayOutputStream();
message.writeTo(baOut);
xmlOut = new String(baOut.toByteArray());
} catch (Exception e) {
out.println("Exception in handler: " + e);
}
}
}