Отправить мыльное сообщение в очередь weblogic jms - PullRequest
0 голосов
/ 27 февраля 2019

Я использую 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());

    }

}
...