Я использую Weblogic jms Queue для отправки запроса на мыло (который я формирую вручную в виде сообщения мыла в моем коде Java).у нас есть веб-сервис, который вызывается, как только он вызывается, вызывать его с помощью inject (String type, businessoid, String PayLoad) из этих параметров. Я формирую мыльное сообщение и преобразую его в String с помощью класса TransformerFactory.
У меня естьпротестировано в моей локальной системе с фиктивными данными, я могу отправить его, но при развертывании его на сервере weblogic реальное мыльное сообщение не отправляется в очередь.когда я исключаю SOAP-сообщение и формирую некоторое String жестко закодированное сообщение, оно может отправлять JMS-очередь, когда я развернут с сервера, проверенного на мылом UI.
Это код, где я формирую общедоступное сообщение мылаSOAPMessage createSOAPMessage (тип String, String businessObjectId, полезная нагрузка) выдает исключительную ситуацию {
LOG.debug("inside createSOAPMessage method...");
SOAPBody soapBody = null;
MessageFactory messageFactory;
try {
messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
String ksNamespace = "soapenv";
String ksNamespaceURI = "http://schemas.xmlsoap.org/soap/envelope/";
// SOAP Envelope
SOAPEnvelope envelope = soapPart.getEnvelope();
envelope.setPrefix("soapenv");
envelope.removeNamespaceDeclaration("SOAP-ENV");
soapBody = envelope.getBody();
soapMessage.getSOAPBody().setPrefix("soapenv");
soapMessage.getSOAPHeader().setPrefix("soapenv");
SOAPHeader header = envelope.getHeader();
envelope.addNamespaceDeclaration(ksNamespace, ksNamespaceURI);
envelope.addNamespaceDeclaration("v1",
"http://www.oracle.com/retail/rib/integration/services/InjectorService/v1");
// Constructed SOAP Message:
// SOAP Body
soapBody = envelope.getBody();
SOAPElement soapBodyElem1 = soapBody.addChildElement("inject");
soapBodyElem1.setPrefix("v1");
SOAPElement soapBodyFamily = soapBodyElem1.addChildElement("family");
SOAPElement soapBodyMessageType = soapBodyElem1.addChildElement("messageType");
SOAPElement soapBodyBusinessObjectId = soapBodyElem1.addChildElement("businessObjectId");
SOAPElement soapBodyRetailPayload = soapBodyElem1.addChildElement("retailPayload");
soapBodyFamily.addTextNode(messagefamily);
soapBodyMessageType.addTextNode(messagetype);
soapBodyBusinessObjectId.addTextNode(businessId);
messagepayload = PayloadFactory.marshalPayload(payload);
if (messagepayload == null) {
throw new RetailBusinessException("(" + "marshalPayload is null.." + ")");
} else {
soapBodyRetailPayload.addTextNode(messagepayload);
}
/*
* soapBodyFamily.addTextNode("PO");
* soapBodyMessageType.addTextNode("PO Delete");
* soapBodyBusinessObjectId.addTextNode("9824563");
*/
soapMessage.saveChanges();
return soapMessage;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
LOG.error(e);
throw new Exception(e.getMessage());
}
}