Итак, вот сценарий: у нас есть PeopleSoft, и мы хотим отправлять сообщения из отдела продаж туда и обратно. К сожалению, у PeopleSoft нет такого инструмента, как wsimport, который использует wsdl и генерирует для вас классы. Есть что-то, что потребляет wsdl, но все, что он делает, это генерирует объекты сообщений-заглушек. Разработчику все равно придется писать код для ручного создания строки сообщения xml.
Я, очевидно, не хочу делать все это. Итак, я знаю, что java можно вызывать из PeopleSoft. Я также знаю, что могу отправлять сообщения, просто используя сгенерированные классы, но я хотел бы использовать функции мониторинга сообщений, встроенные в PeopleSoft.
Итак, возможное решение, о котором я думаю, будет:
- вызвать метод веб-сервиса в java (без отправки сообщения)
- Возьмите xml
- отправить xml через механизмы PeopleSoft
- получить ответ xml
- передать ответ xml обратно в класс ответа java
- Используйте классы Java для получения значений в XML
Я сумасшедший или это возможно?
p.s. я новичок в 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);
}
}
}