Можно ли использовать jax-ws для генерации xml, но НЕ отправлять его

Итак, вот сценарий: У нас есть PeopleSoft, и мы хотим обмениваться сообщениями из отдела продаж. К сожалению, у PeopleSoft нет такого инструмента, как wsimport, который использует wsdl и генерирует для вас классы. Есть что-то, что потребляет wsdl, но все, что оно делает, это генерирует объекты сообщений-заглушек. Разработчику все равно придется написать код для создания строки сообщения xml вручную.

Я явно не хочу этого делать. Итак, я знаю, что java можно вызывать из PeopleSoft. Я также знаю, что могу отправлять сообщения, просто используя сгенерированные классы, но я хотел бы использовать функции мониторинга сообщений, встроенные в PeopleSoft.

Возможное решение, о котором я думаю, будет:

  1. вызвать метод веб-службы в java (без отправки сообщения)
  2. Получить xml
  3. отправить xml через механизмы peoplesoft
  4. получить response xml
  5. передать ответ xml обратно в java-класс ответа
  6. Использовать 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);
    }
}

}
5
задан willard 8 February 2012 в 14:48
поделиться