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