Hi Folks, I have implemented a basic soap client (javax.xml.soap.*).
| | public Message processSOAPRequest(Message message) { | try { | MessageFactory msgFactory = MessageFactory.newInstance(); | SOAPMessage soap = msgFactory.createMessage(); | SOAPPart soapPart = soap.getSOAPPart(); | | byte[] buffer = ((String) message.getBody().get()).getBytes(); | ByteArrayInputStream stream = new ByteArrayInputStream(buffer); | StreamSource source = new StreamSource(stream); | soapPart.setContent(source); | String action = config.getAttribute(SOAP_ACTION); | if (action != null) { | MimeHeaders headers = soap.getMimeHeaders(); | headers.addHeader("SOAPAction", action); | } | | ///////////////////////////////////////////////////////// | | SOAPMessage reply = sendSOAPMessage(soap); | | ///////////////////////////////////////////////////////// | | ByteArrayOutputStream out = new ByteArrayOutputStream(); | reply.writeTo(out); | String soapMessage = new String(out.toByteArray()); | message.getBody().add(soapMessage); | | } catch (SOAPException e) { | logger.error("SOAPException : " + e); | | } catch (IOException e) { | logger.error("IOException : " + e); | } | | return message; | | } | | | private SOAPMessage sendSOAPMessage(SOAPMessage soap) { | SOAPConnection connection = null; | SOAPMessage reply = null; | try { | SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory | .newInstance(); | connection = soapConnFactory.createConnection(); | String destination = config.getAttribute(URL_ENDPOINT); | | reply = connection.call(soap, destination); | | | | } catch (Exception e) { | logger.error(e); | } finally { | try { | if (connection != null) { | connection.close(); | } | } catch (SOAPException e) { | logger.error(e); | } | } | | return reply; | } | | The input message is JBossEsb message, which I convert to soap message and then send it using SOAPConnection, which works fine. The problem with SOAPConnection class is that it does not provide setTimeout(..) method. I read some where that there is another class SOAPConnectionImpl (by axis), which extends SOAPConnection and has this setTimeout method. I have tried to convert my existing implementation to SOAPConnectionImpl but i always get a classcast exceptions. Could somebody help me in suggesting a solution to this problem? My main concern is to include timeout feature that is my WS consumer/client should timeout after a certain period if the server does not reply. Any other soap message sending implementation with timeout feature are also good. I have included | <dependency> | <groupId>axis</groupId> | <artifactId>axis</artifactId> | <version>1.4</version> | </dependency> | maven dependencies for axis. Awaiting replies. Thanks. View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4241472#4241472 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4241472 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user