List of usage examples for javax.xml.soap SOAPMessage saveChanges
public abstract void saveChanges() throws SOAPException;
From source file:org.soapfromhttp.service.CallSOAP.java
/** * Contruction dynamique de la requte SOAP * * @param pBody/* w ww. java2 s. co m*/ * @param method * @return SOAPMessage * @throws SOAPException * @throws IOException * @throws SAXException * @throws ParserConfigurationException */ private SOAPMessage createSOAPRequest(final String pBody, final String method) throws SOAPException, IOException, SAXException, ParserConfigurationException { // Prcise la version du protocole SOAP utiliser (ncessaire pour les appels de WS Externe) MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL); SOAPMessage soapMessage = messageFactory.createMessage(); MimeHeaders headers = soapMessage.getMimeHeaders(); // Prcise la mthode du WSDL interroger headers.addHeader("SOAPAction", method); // Encodage UTF-8 headers.addHeader("Content-Type", "text/xml;charset=UTF-8"); final SOAPBody soapBody = soapMessage.getSOAPBody(); // convert String into InputStream - traitement des caracres escaps > < ... (contraintes de l'affichage IHM) //InputStream is = new ByteArrayInputStream(HtmlUtils.htmlUnescape(pBody).getBytes()); InputStream is = new ByteArrayInputStream(pBody.getBytes()); DocumentBuilder builder = null; DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); // Important laisser sinon KO builderFactory.setNamespaceAware(true); try { builder = builderFactory.newDocumentBuilder(); Document document = builder.parse(is); soapBody.addDocument(document); } catch (ParserConfigurationException e) { MyLogger.log(CallSOAP.class.getName(), Level.ERROR, e.toString()); } finally { is.close(); if (builder != null) { builder.reset(); } } soapMessage.saveChanges(); return soapMessage; }
From source file:com.mirth.connect.connectors.ws.WebServiceMessageDispatcher.java
private void processMessage(MessageObject mo) throws Exception { /*/*from w ww .j a v a 2 s.co m*/ * Initialize the dispatch object if it hasn't been initialized yet, or * create a new one if the connector properties have changed due to * variables. */ createDispatch(mo); SOAPBinding soapBinding = (SOAPBinding) dispatch.getBinding(); if (connector.isDispatcherUseAuthentication()) { dispatch.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, currentUsername); dispatch.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, currentPassword); logger.debug("Using authentication: username=" + currentUsername + ", password length=" + currentPassword.length()); } // See: http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528 String soapAction = replacer.replaceValues(connector.getDispatcherSoapAction(), mo); if (StringUtils.isNotEmpty(soapAction)) { dispatch.getRequestContext().put(BindingProvider.SOAPACTION_URI_PROPERTY, soapAction); } // build the message logger.debug("Creating SOAP envelope."); String content = replacer.replaceValues(connector.getDispatcherEnvelope(), mo); Source source = new StreamSource(new StringReader(content)); SOAPMessage message = soapBinding.getMessageFactory().createMessage(); message.getSOAPPart().setContent(source); if (connector.isDispatcherUseMtom()) { soapBinding.setMTOMEnabled(true); List<String> attachmentIds = connector.getDispatcherAttachmentNames(); List<String> attachmentContents = connector.getDispatcherAttachmentContents(); List<String> attachmentTypes = connector.getDispatcherAttachmentTypes(); for (int i = 0; i < attachmentIds.size(); i++) { String attachmentContentId = replacer.replaceValues(attachmentIds.get(i), mo); String attachmentContentType = replacer.replaceValues(attachmentTypes.get(i), mo); String attachmentContent = replacer.replaceValues(attachmentContents.get(i), mo); AttachmentPart attachment = message.createAttachmentPart(); attachment.setBase64Content(new ByteArrayInputStream(attachmentContent.getBytes("UTF-8")), attachmentContentType); attachment.setContentId(attachmentContentId); message.addAttachmentPart(attachment); } } message.saveChanges(); // make the call String response = null; if (connector.isDispatcherOneWay()) { logger.debug("Invoking one way service..."); dispatch.invokeOneWay(message); response = "Invoked one way operation successfully."; } else { logger.debug("Invoking web service..."); SOAPMessage result = dispatch.invoke(message); response = sourceToXmlString(result.getSOAPPart().getContent()); } logger.debug("Finished invoking web service, got result."); // process the result messageObjectController.setSuccess(mo, response, null); // send to reply channel if (connector.getDispatcherReplyChannelId() != null && !connector.getDispatcherReplyChannelId().equals("sink")) { new VMRouter().routeMessageByChannelId(connector.getDispatcherReplyChannelId(), response, true); } }
From source file:com.cisco.dvbu.ps.common.adapters.connect.SoapHttpConnector.java
private Document send(SoapHttpConnectorCallback cb, String requestXml) throws AdapterException { log.debug("Entered send: " + cb.getName()); // set up the factories and create a SOAP factory SOAPConnection soapConnection; Document doc = null;//w w w . ja va2 s . co m URL endpoint = null; try { soapConnection = SOAPConnectionFactory.newInstance().createConnection(); MessageFactory messageFactory = MessageFactory.newInstance(); // Create a message from the message factory. SOAPMessage soapMessage = messageFactory.createMessage(); // Set the SOAP Action here MimeHeaders headers = soapMessage.getMimeHeaders(); headers.addHeader("SOAPAction", cb.getAction()); // set credentials // String authorization = new sun.misc.BASE64Encoder().encode((shConfig.getUser() + "@" + shConfig.getDomain() + ":" + shConfig.getPassword()).getBytes()); String authorization = new String(org.apache.commons.codec.binary.Base64.encodeBase64( (shConfig.getUser() + "@" + shConfig.getDomain() + ":" + shConfig.getPassword()).getBytes())); headers.addHeader("Authorization", "Basic " + authorization); log.debug("Authentication: " + authorization); // create a SOAP part have populate the envelope SOAPPart soapPart = soapMessage.getSOAPPart(); SOAPEnvelope envelope = soapPart.getEnvelope(); envelope.setEncodingStyle(SOAPConstants.URI_NS_SOAP_ENCODING); SOAPHeader head = envelope.getHeader(); if (head == null) head = envelope.addHeader(); // create a SOAP body SOAPBody body = envelope.getBody(); log.debug("Request XSL Style Sheet:\n" + XMLUtils.getPrettyXml(XMLUtils.getDocumentFromString(cb.getRequestBodyXsl()))); // convert request string to document and then transform body.addDocument(XmlUtils.xslTransform(XmlUtils.stringToDocument(requestXml), cb.getRequestBodyXsl())); // build the request structure soapMessage.saveChanges(); log.debug("Soap request successfully built: "); log.debug(" Body:\n" + XMLUtils.getPrettyXml(XMLUtils.getDocumentFromString(XmlUtils.nodeToString(body)))); if (shConfig.useProxy()) { System.setProperty("http.proxySet", "true"); System.setProperty("http.proxyHost", shConfig.getProxyHost()); System.setProperty("http.proxyPort", "" + shConfig.getProxyPort()); if (shConfig.useProxyCredentials()) { System.setProperty("http.proxyUser", shConfig.getProxyUser()); System.setProperty("http.proxyPassword", shConfig.getProxyPassword()); } } endpoint = new URL(shConfig.getEndpoint(cb.getEndpoint())); // now make that call over the SOAP connection SOAPMessage reply = null; AdapterException ae = null; for (int i = 1; (i <= shConfig.getRetryAttempts() && reply == null); i++) { log.debug("Attempt " + i + ": sending request to endpoint: " + endpoint); try { reply = soapConnection.call(soapMessage, endpoint); log.debug("Attempt " + i + ": received response: " + reply); } catch (Exception e) { ae = new AdapterException(502, String.format(AdapterConstants.ADAPTER_EM_CONNECTION, endpoint), e); Thread.sleep(100); } } // close down the connection soapConnection.close(); if (reply == null) throw ae; SOAPFault fault = reply.getSOAPBody().getFault(); if (fault == null) { doc = reply.getSOAPBody().extractContentAsDocument(); } else { // Extracts the entire Soap Fault message coming back from CIS String faultString = XmlUtils.nodeToString(fault); throw new AdapterException(503, faultString, null); } } catch (AdapterException e) { throw e; } catch (Exception e) { throw new AdapterException(504, String.format(AdapterConstants.ADAPTER_EM_CONNECTION, shConfig.getEndpoint(cb.getEndpoint())), e); } finally { if (shConfig.useProxy()) { System.setProperty("http.proxySet", "false"); } } log.debug("Exiting send: " + cb.getName()); return doc; }
From source file:com.maxl.java.aips2sqlite.AllDown.java
public void downRefdataPartnerXml(String file_refdata_partner_xml) { boolean disp = false; ProgressBar pb = new ProgressBar(); try {/*from w w w.j a v a 2s. c o m*/ // Start timer long startTime = System.currentTimeMillis(); if (disp) System.out.print("- Downloading Refdata partner file... "); else { pb.init("- Downloading Refdata partner file... "); pb.start(); } // Create soaprequest SOAPMessage soapRequest = MessageFactory.newInstance().createMessage(); // Set SOAPAction header line MimeHeaders headers = soapRequest.getMimeHeaders(); headers.addHeader("SOAPAction", "http://refdatabase.refdata.ch/Download"); // Set SOAP main request part SOAPPart soapPart = soapRequest.getSOAPPart(); SOAPEnvelope envelope = soapPart.getEnvelope(); SOAPBody soapBody = envelope.getBody(); // Construct SOAP request message SOAPElement soapBodyElement1 = soapBody.addChildElement("DownloadPartnerInput"); soapBodyElement1.addNamespaceDeclaration("", "http://refdatabase.refdata.ch/"); SOAPElement soapBodyElement2 = soapBodyElement1.addChildElement("PTYPE"); soapBodyElement2.addNamespaceDeclaration("", "http://refdatabase.refdata.ch/Partner_in"); soapBodyElement2.addTextNode("ALL"); soapRequest.saveChanges(); // If needed print out soapRequest in a pretty format // System.out.println(prettyFormatSoapXml(soapRequest)); // Create connection to SOAP server SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection connection = soapConnectionFactory.createConnection(); // wsURL contains service end point String wsURL = "http://refdatabase.refdata.ch/Service/Partner.asmx?WSDL"; SOAPMessage soapResponse = connection.call(soapRequest, wsURL); // Extract response Document doc = soapResponse.getSOAPBody().extractContentAsDocument(); String strBody = getStringFromDoc(doc); String xmlBody = prettyFormat(strBody); // Note: parsing the Document tree and using the removeAttribute function is hopeless! xmlBody = xmlBody.replaceAll("xmlns.*?\".*?\" ", ""); long len = writeToFile(xmlBody, file_refdata_partner_xml); if (!disp) pb.stopp(); long stopTime = System.currentTimeMillis(); System.out.println("\r- Downloading Refdata partner file... " + len / 1024 + " kB in " + (stopTime - startTime) / 1000.0f + " sec"); connection.close(); } catch (Exception e) { if (!disp) pb.stopp(); System.err.println(" Exception: in 'downRefdataPartnerXml'"); e.printStackTrace(); } }
From source file:com.maxl.java.aips2sqlite.AllDown.java
public void downRefdataPharmaXml(String file_refdata_pharma_xml) { boolean disp = false; ProgressBar pb = new ProgressBar(); try {//from www. j a v a 2s . co m // Start timer long startTime = System.currentTimeMillis(); if (disp) System.out.print("- Downloading Refdatabase pharma file... "); else { pb.init("- Downloading Refdatabase pharma file... "); pb.start(); } // Create soaprequest SOAPMessage soapRequest = MessageFactory.newInstance().createMessage(); // Set SOAPAction header line MimeHeaders headers = soapRequest.getMimeHeaders(); headers.addHeader("SOAPAction", "http://refdatabase.refdata.ch/Pharma/Download"); // Set SOAP main request part SOAPPart soapPart = soapRequest.getSOAPPart(); SOAPEnvelope envelope = soapPart.getEnvelope(); SOAPBody soapBody = envelope.getBody(); // Construct SOAP request message SOAPElement soapBodyElement1 = soapBody.addChildElement("DownloadArticleInput"); soapBodyElement1.addNamespaceDeclaration("", "http://refdatabase.refdata.ch/"); SOAPElement soapBodyElement2 = soapBodyElement1.addChildElement("ATYPE"); soapBodyElement2.addNamespaceDeclaration("", "http://refdatabase.refdata.ch/Article_in"); soapBodyElement2.addTextNode("ALL"); soapRequest.saveChanges(); // If needed print out soapRequest in a pretty format // System.out.println(prettyFormatSoapXml(soapRequest)); // Create connection to SOAP server SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection connection = soapConnectionFactory.createConnection(); // wsURL contains service end point String wsURL = "http://refdatabase.refdata.ch/Service/Article.asmx?WSDL"; SOAPMessage soapResponse = connection.call(soapRequest, wsURL); // Extract response Document doc = soapResponse.getSOAPBody().extractContentAsDocument(); String strBody = getStringFromDoc(doc); String xmlBody = prettyFormat(strBody); // Note: parsing the Document tree and using the removeAttribute function is hopeless! xmlBody = xmlBody.replaceAll("xmlns.*?\".*?\" ", ""); long len = writeToFile(xmlBody, file_refdata_pharma_xml); if (!disp) pb.stopp(); long stopTime = System.currentTimeMillis(); System.out.println("\r- Downloading Refdata pharma file... " + len / 1024 + " kB in " + (stopTime - startTime) / 1000.0f + " sec"); connection.close(); } catch (Exception e) { if (!disp) pb.stopp(); System.err.println(" Exception: in 'downRefdataPharmaXml'"); e.printStackTrace(); } }
From source file:io.hummer.util.ws.WebServiceClient.java
private SOAPMessage createSOAPMessage(Element request, List<Element> headers, String protocol) throws Exception { MessageFactory mf = MessageFactory.newInstance(protocol); SOAPMessage message = mf.createMessage(); SOAPBody body = message.getSOAPBody(); // check if we have a complete soap:Envelope as request.. String ns = request.getNamespaceURI(); if (request.getTagName().contains("Envelope")) { if (ns.equals("http://schemas.xmlsoap.org/soap/envelope/")) message = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL).createMessage( new MimeHeaders(), new ByteArrayInputStream(xmlUtil.toString(request).getBytes())); if (ns.equals("http://www.w3.org/2003/05/soap-envelope")) message = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL).createMessage( new MimeHeaders(), new ByteArrayInputStream(xmlUtil.toString(request).getBytes())); } else {//from w w w . ja va 2s. co m xmlUtil.appendChild(body, request); } for (Element h : headers) { xmlUtil.appendChild(message.getSOAPHeader(), h); } for (Element h : eprParamsAndProps) { xmlUtil.appendChild(message.getSOAPHeader(), h); } xmlUtil.appendChild(message.getSOAPHeader(), xmlUtil.toElement( "<wsa:To xmlns:wsa=\"" + EndpointReference.NS_WS_ADDRESSING + "\">" + endpointURL + "</wsa:To>")); message.saveChanges(); return message; }
From source file:com.mirth.connect.connectors.ws.WebServiceDispatcher.java
@Override public Response send(ConnectorProperties connectorProperties, ConnectorMessage connectorMessage) { WebServiceDispatcherProperties webServiceDispatcherProperties = (WebServiceDispatcherProperties) connectorProperties; eventController.dispatchEvent(new ConnectionStatusEvent(getChannelId(), getMetaDataId(), getDestinationName(), ConnectionStatusEventType.SENDING)); String responseData = null;//from w w w .j a v a2 s .c om String responseError = null; String responseStatusMessage = null; Status responseStatus = Status.QUEUED; boolean validateResponse = false; try { long dispatcherId = getDispatcherId(); DispatchContainer dispatchContainer = dispatchContainers.get(dispatcherId); if (dispatchContainer == null) { dispatchContainer = new DispatchContainer(); dispatchContainers.put(dispatcherId, dispatchContainer); } /* * Initialize the dispatch object if it hasn't been initialized yet, or create a new one * if the connector properties have changed due to variables. */ createDispatch(webServiceDispatcherProperties, dispatchContainer); Dispatch<SOAPMessage> dispatch = dispatchContainer.getDispatch(); configuration.configureDispatcher(this, webServiceDispatcherProperties, dispatch.getRequestContext()); SOAPBinding soapBinding = (SOAPBinding) dispatch.getBinding(); if (webServiceDispatcherProperties.isUseAuthentication()) { String currentUsername = dispatchContainer.getCurrentUsername(); String currentPassword = dispatchContainer.getCurrentPassword(); dispatch.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, currentUsername); dispatch.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, currentPassword); logger.debug("Using authentication: username=" + currentUsername + ", password length=" + currentPassword.length()); } // See: http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528 String soapAction = webServiceDispatcherProperties.getSoapAction(); if (StringUtils.isNotEmpty(soapAction)) { dispatch.getRequestContext().put(BindingProvider.SOAPACTION_USE_PROPERTY, true); // MIRTH-2109 dispatch.getRequestContext().put(BindingProvider.SOAPACTION_URI_PROPERTY, soapAction); } // Get default headers Map<String, List<String>> requestHeaders = new HashMap<String, List<String>>( dispatchContainer.getDefaultRequestHeaders()); // Add custom headers if (MapUtils.isNotEmpty(webServiceDispatcherProperties.getHeaders())) { for (Entry<String, List<String>> entry : webServiceDispatcherProperties.getHeaders().entrySet()) { List<String> valueList = requestHeaders.get(entry.getKey()); if (valueList == null) { valueList = new ArrayList<String>(); requestHeaders.put(entry.getKey(), valueList); } valueList.addAll(entry.getValue()); } } dispatch.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS, requestHeaders); // build the message logger.debug("Creating SOAP envelope."); AttachmentHandlerProvider attachmentHandlerProvider = getAttachmentHandlerProvider(); String content = attachmentHandlerProvider.reAttachMessage(webServiceDispatcherProperties.getEnvelope(), connectorMessage); Source source = new StreamSource(new StringReader(content)); SOAPMessage message = soapBinding.getMessageFactory().createMessage(); message.getSOAPPart().setContent(source); if (webServiceDispatcherProperties.isUseMtom()) { soapBinding.setMTOMEnabled(true); List<String> attachmentIds = webServiceDispatcherProperties.getAttachmentNames(); List<String> attachmentContents = webServiceDispatcherProperties.getAttachmentContents(); List<String> attachmentTypes = webServiceDispatcherProperties.getAttachmentTypes(); for (int i = 0; i < attachmentIds.size(); i++) { String attachmentContentId = attachmentIds.get(i); String attachmentContentType = attachmentTypes.get(i); String attachmentContent = attachmentHandlerProvider.reAttachMessage(attachmentContents.get(i), connectorMessage); AttachmentPart attachment = message.createAttachmentPart(); attachment.setBase64Content(new ByteArrayInputStream(attachmentContent.getBytes("UTF-8")), attachmentContentType); attachment.setContentId(attachmentContentId); message.addAttachmentPart(attachment); } } message.saveChanges(); if (StringUtils.isNotBlank(webServiceDispatcherProperties.getLocationURI())) { dispatch.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, webServiceDispatcherProperties.getLocationURI()); } boolean redirect = false; int tryCount = 0; /* * Attempt the invocation until we hit the maximum allowed redirects. The redirections * we handle are when the scheme changes (i.e. from HTTP to HTTPS). */ do { redirect = false; tryCount++; try { DispatchTask<SOAPMessage> task = new DispatchTask<SOAPMessage>(dispatch, message, webServiceDispatcherProperties.isOneWay()); SOAPMessage result; /* * If the timeout is set to zero, we need to do the invocation in a separate * thread. This is because there's no way to get a reference to the underlying * JAX-WS socket, so there's no way to forcefully halt the dispatch. If the * socket is truly hung and the user halts the channel, the best we can do is * just interrupt and ignore the thread. This means that a thread leak is * potentially introduced, so we need to notify the user appropriately. */ if (timeout == 0) { // Submit the task to an executor so that it's interruptible Future<SOAPMessage> future = executor.submit(task); // Keep track of the task by adding it to our set dispatchTasks.add(task); result = future.get(); } else { // Call the task directly result = task.call(); } if (webServiceDispatcherProperties.isOneWay()) { responseStatusMessage = "Invoked one way operation successfully."; } else { responseData = sourceToXmlString(result.getSOAPPart().getContent()); responseStatusMessage = "Invoked two way operation successfully."; } logger.debug("Finished invoking web service, got result."); // Automatically accept message; leave it up to the response transformer to find SOAP faults responseStatus = Status.SENT; } catch (Throwable e) { // Unwrap the exception if it came from the executor if (e instanceof ExecutionException && e.getCause() != null) { e = e.getCause(); } // If the dispatch was interrupted, make sure to reset the interrupted flag if (e instanceof InterruptedException) { Thread.currentThread().interrupt(); } Integer responseCode = null; String location = null; if (dispatch.getResponseContext() != null) { responseCode = (Integer) dispatch.getResponseContext() .get(MessageContext.HTTP_RESPONSE_CODE); Map<String, List<String>> headers = (Map<String, List<String>>) dispatch .getResponseContext().get(MessageContext.HTTP_RESPONSE_HEADERS); if (MapUtils.isNotEmpty(headers)) { List<String> locations = headers.get("Location"); if (CollectionUtils.isNotEmpty(locations)) { location = locations.get(0); } } } if (tryCount < MAX_REDIRECTS && responseCode != null && responseCode >= 300 && responseCode < 400 && StringUtils.isNotBlank(location)) { redirect = true; // Replace the endpoint with the redirected URL dispatch.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, location); } else { // Leave the response status as QUEUED for NoRouteToHostException and ConnectException, otherwise ERROR if (e instanceof NoRouteToHostException || ((e.getCause() != null) && (e.getCause() instanceof NoRouteToHostException))) { responseStatusMessage = ErrorMessageBuilder.buildErrorResponse("HTTP transport error", e); responseError = ErrorMessageBuilder.buildErrorMessage(connectorProperties.getName(), "HTTP transport error", e); eventController.dispatchEvent( new ErrorEvent(getChannelId(), getMetaDataId(), connectorMessage.getMessageId(), ErrorEventType.DESTINATION_CONNECTOR, getDestinationName(), connectorProperties.getName(), "HTTP transport error.", e)); } else if ((e.getClass() == ConnectException.class) || ((e.getCause() != null) && (e.getCause().getClass() == ConnectException.class))) { responseStatusMessage = ErrorMessageBuilder.buildErrorResponse("Connection refused.", e); eventController.dispatchEvent(new ErrorEvent(getChannelId(), getMetaDataId(), connectorMessage.getMessageId(), ErrorEventType.DESTINATION_CONNECTOR, getDestinationName(), connectorProperties.getName(), "Connection refused.", e)); } else { if (e instanceof SOAPFaultException) { try { responseData = new DonkeyElement(((SOAPFaultException) e).getFault()).toXml(); } catch (DonkeyElementException e2) { } } responseStatus = Status.ERROR; responseStatusMessage = ErrorMessageBuilder .buildErrorResponse("Error invoking web service", e); responseError = ErrorMessageBuilder.buildErrorMessage(connectorProperties.getName(), "Error invoking web service", e); eventController.dispatchEvent( new ErrorEvent(getChannelId(), getMetaDataId(), connectorMessage.getMessageId(), ErrorEventType.DESTINATION_CONNECTOR, getDestinationName(), connectorProperties.getName(), "Error invoking web service.", e)); } } } } while (redirect && tryCount < MAX_REDIRECTS); } catch (Exception e) { responseStatusMessage = ErrorMessageBuilder.buildErrorResponse("Error creating web service dispatch", e); responseError = ErrorMessageBuilder.buildErrorMessage(connectorProperties.getName(), "Error creating web service dispatch", e); eventController.dispatchEvent(new ErrorEvent(getChannelId(), getMetaDataId(), connectorMessage.getMessageId(), ErrorEventType.DESTINATION_CONNECTOR, getDestinationName(), connectorProperties.getName(), "Error creating web service dispatch.", e)); } finally { eventController.dispatchEvent(new ConnectionStatusEvent(getChannelId(), getMetaDataId(), getDestinationName(), ConnectionStatusEventType.IDLE)); } return new Response(responseStatus, responseData, responseStatusMessage, responseError, validateResponse); }
From source file:com.maxl.java.aips2sqlite.AllDown.java
public void downSwissindexXml(String language, String file_refdata_pharma_xml) { boolean disp = false; ProgressBar pb = new ProgressBar(); try {//from ww w. j av a2 s.c o m // Start timer long startTime = System.currentTimeMillis(); if (disp) System.out.print("- Downloading Swissindex (" + language + ") file... "); else { pb.init("- Downloading Swissindex (" + language + ") file... "); pb.start(); } SOAPMessage soapRequest = MessageFactory.newInstance().createMessage(); // Setting SOAPAction header line MimeHeaders headers = soapRequest.getMimeHeaders(); headers.addHeader("SOAPAction", "http://swissindex.e-mediat.net/SwissindexPharma_out_V101/DownloadAll"); SOAPPart soapPart = soapRequest.getSOAPPart(); SOAPEnvelope envelope = soapPart.getEnvelope(); SOAPBody soapBody = envelope.getBody(); // Construct SOAP request message SOAPElement soapBodyElement1 = soapBody.addChildElement("pharmacode"); soapBodyElement1.addNamespaceDeclaration("", "http://swissindex.e-mediat.net/SwissindexPharma_out_V101"); soapBodyElement1.addTextNode("DownloadAll"); SOAPElement soapBodyElement2 = soapBody.addChildElement("lang"); soapBodyElement2.addNamespaceDeclaration("", "http://swissindex.e-mediat.net/SwissindexPharma_out_V101"); if (language.equals("DE")) soapBodyElement2.addTextNode("DE"); else if (language.equals("FR")) soapBodyElement2.addTextNode("FR"); else { System.err.println("down_swissindex_xml: wrong language!"); return; } soapRequest.saveChanges(); SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection connection = soapConnectionFactory.createConnection(); String wsURL = "https://swissindex.refdata.ch/Swissindex/Pharma/ws_Pharma_V101.asmx?WSDL"; SOAPMessage soapResponse = connection.call(soapRequest, wsURL); Document doc = soapResponse.getSOAPBody().extractContentAsDocument(); String strBody = getStringFromDoc(doc); String xmlBody = prettyFormat(strBody); // Note: parsing the Document tree and using the removeAttribute function is hopeless! xmlBody = xmlBody.replaceAll("xmlns.*?\".*?\" ", ""); long len = writeToFile(xmlBody, file_refdata_pharma_xml); if (!disp) pb.stopp(); long stopTime = System.currentTimeMillis(); System.out.println("\r- Downloading Swissindex (" + language + ") file... " + len / 1024 + " kB in " + (stopTime - startTime) / 1000.0f + " sec"); connection.close(); } catch (Exception e) { if (!disp) pb.stopp(); System.err.println(" Exception: in 'downSwissindexXml'"); e.printStackTrace(); } }
From source file:edu.unc.lib.dl.util.TripleStoreQueryServiceMulgaraImpl.java
private String sendTQL(String query) { log.debug(query);//from w ww . j a v a2 s. c o m String result = null; SOAPMessage reply = null; SOAPConnection connection = null; try { // Next, create the actual message MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage message = messageFactory.createMessage(); message.getMimeHeaders().setHeader("SOAPAction", "itqlbean:executeQueryToString"); SOAPBody soapBody = message.getSOAPPart().getEnvelope().getBody(); soapBody.addNamespaceDeclaration("xsd", JDOMNamespaceUtil.XSD_NS.getURI()); soapBody.addNamespaceDeclaration("xsi", JDOMNamespaceUtil.XSI_NS.getURI()); soapBody.addNamespaceDeclaration("itqlbean", this.getItqlEndpointURL()); SOAPElement eqts = soapBody.addChildElement("executeQueryToString", "itqlbean"); SOAPElement queryStr = eqts.addChildElement("queryString", "itqlbean"); queryStr.setAttributeNS(JDOMNamespaceUtil.XSI_NS.getURI(), "xsi:type", "xsd:string"); CDATASection queryCDATA = message.getSOAPPart().createCDATASection(query); queryStr.appendChild(queryCDATA); message.saveChanges(); // First create the connection SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory.newInstance(); connection = soapConnFactory.createConnection(); reply = connection.call(message, this.getItqlEndpointURL()); if (reply.getSOAPBody().hasFault()) { reportSOAPFault(reply); if (log.isDebugEnabled()) { // log the full soap body response DOMBuilder builder = new DOMBuilder(); org.jdom2.Document jdomDoc = builder.build(reply.getSOAPBody().getOwnerDocument()); log.debug(new XMLOutputter().outputString(jdomDoc)); } } else { NodeList nl = reply.getSOAPPart().getEnvelope().getBody().getElementsByTagNameNS("*", "executeQueryToStringReturn"); if (nl.getLength() > 0) { result = nl.item(0).getFirstChild().getNodeValue(); } log.debug(result); } } catch (SOAPException e) { log.error("Failed to prepare or send iTQL via SOAP", e); throw new RuntimeException("Cannot query triple store at " + this.getItqlEndpointURL(), e); } finally { try { connection.close(); } catch (SOAPException e) { log.error("Failed to close SOAP connection", e); throw new RuntimeException( "Failed to close SOAP connection for triple store at " + this.getItqlEndpointURL(), e); } } return result; }
From source file:eu.planets_project.tb.gui.backing.admin.wsclient.util.WSClient.java
/** * Invokes an operation using SAAJ//from w ww . j a v a 2 s . co m * * @param operation The operation to invoke */ public static String invokeOperation(OperationInfo operation) throws Exception { try { // Determine if the operation style is RPC boolean isRPC = false; if (operation.getStyle() != null) isRPC = operation.getStyle().equalsIgnoreCase("rpc"); else ; // All connections are created by using a connection factory SOAPConnectionFactory conFactory = SOAPConnectionFactory.newInstance(); // Now we can create a SOAPConnection object using the connection factory SOAPConnection connection = conFactory.createConnection(); // All SOAP messages are created by using a message factory MessageFactory msgFactory = MessageFactory.newInstance(); // Now we can create the SOAP message object SOAPMessage msg = msgFactory.createMessage(); // Get the SOAP part from the SOAP message object SOAPPart soapPart = msg.getSOAPPart(); // The SOAP part object will automatically contain the SOAP envelope SOAPEnvelope envelope = soapPart.getEnvelope(); //my extension - START //envelope.addNamespaceDeclaration("_ns1", operation.getNamespaceURI()); //my extension - END if (isRPC) { // Add namespace declarations to the envelope, usually only required for RPC/encoded envelope.addNamespaceDeclaration(XSI_NAMESPACE_PREFIX, XSI_NAMESPACE_URI); envelope.addNamespaceDeclaration(XSD_NAMESPACE_PREFIX, XSD_NAMESPACE_URI); } // Get the SOAP header from the envelope SOAPHeader header = envelope.getHeader(); // The client does not yet support SOAP headers header.detachNode(); // Get the SOAP body from the envelope and populate it SOAPBody body = envelope.getBody(); // Create the default namespace for the SOAP body //body.addNamespaceDeclaration("", operation.getNamespaceURI()); // Add the service information String targetObjectURI = operation.getTargetObjectURI(); if (targetObjectURI == null) { // The target object URI should not be null targetObjectURI = ""; } // Add the service information //Name svcInfo = envelope.createName(operation.getTargetMethodName(), "", targetObjectURI); Name svcInfo = envelope.createName(operation.getTargetMethodName(), "ns1", operation.getNamespaceURI()); SOAPElement svcElem = body.addChildElement(svcInfo); if (isRPC) { // Set the encoding style of the service element svcElem.setEncodingStyle(operation.getEncodingStyle()); } // Add the message contents to the SOAP body Document doc = XMLSupport.readXML(operation.getInputMessageText()); if (doc.hasRootElement()) { // Begin building content buildSoapElement(envelope, svcElem, doc.getRootElement(), isRPC); } //svcElem.addTextNode(operation.getInputMessageText()); //svcElem. // Check for a SOAPAction String soapActionURI = operation.getSoapActionURI(); if (soapActionURI != null && soapActionURI.length() > 0) { // Add the SOAPAction value as a MIME header MimeHeaders mimeHeaders = msg.getMimeHeaders(); mimeHeaders.setHeader("SOAPAction", "\"" + operation.getSoapActionURI() + "\""); } // Save changes to the message we just populated msg.saveChanges(); // Get ready for the invocation URLEndpoint endpoint = new URLEndpoint(operation.getTargetURL()); // Show the URL endpoint message in the log ByteArrayOutputStream msgStream = new ByteArrayOutputStream(); msg.writeTo(msgStream); log.debug("SOAP Message MeasurementTarget URL: " + endpoint.getURL()); log.debug("SOAP Request: " + msgStream.toString()); // Make the call SOAPMessage response = connection.call(msg, endpoint); // Close the connection, we are done with it connection.close(); // Get the content of the SOAP response Source responseContent = response.getSOAPPart().getContent(); // Convert the SOAP response into a JDOM TransformerFactory tFact = TransformerFactory.newInstance(); Transformer transformer = tFact.newTransformer(); JDOMResult jdomResult = new JDOMResult(); transformer.transform(responseContent, jdomResult); // Get the document created by the transform operation Document responseDoc = jdomResult.getDocument(); // Send the response to the Log String strResponse = XMLSupport.outputString(responseDoc); log.debug("SOAP Response from: " + operation.getTargetMethodName() + ": " + strResponse); // Set the response as the output message operation.setOutputMessageText(strResponse); // Return the response generated return strResponse; } catch (Throwable ex) { throw new Exception("Error invoking operation", ex); } }