所以这里是情景:
我们有PeopleSoft并想要在Salesforce之间来回发送消息。不幸的是,PeopleSoft没有像wsimport这样的工具,可以消费一个wsdl并为您生成类。虽然有一些消费wsdl的东西,但它只会生成桩消息对象。开发人员仍然需要编写代码来手动生成xml消息字符串。
显然,我不想做所有这些。我知道在PeopleSoft内部可以调用Java。我也知道我可以使用生成的类仅发送消息,但我想使用PeopleSoft内置的消息监视功能。
因此,我正在考虑的可能解决方案将:
附言:我是一个新手Java开发人员。 这是我的处理程序类来获取xml,但需要一些方法来防止消息被发送出去。
显然,我不想做所有这些。我知道在PeopleSoft内部可以调用Java。我也知道我可以使用生成的类仅发送消息,但我想使用PeopleSoft内置的消息监视功能。
因此,我正在考虑的可能解决方案将:
- 在Java中调用webservice方法(而不发送消息)
- 获取xml
- 通过PeopleSoft机制发送xml
- 抓取响应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);
}
}
}
public boolean handleMessage(SOAPMessageContext smc) { logToSystemOut(smc); return true; } private void logToSystemOut(SOAPMessageContext smc) { SOAPMessage message = smc.getMessage(); try { ByteArrayOutputStream baOut = new ByteArrayOutputStream(); message.writeTo(baOut); xmlOut = new String(baOut.toByteArray()); } }
- willard