axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Davanum Srinivas (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (AXIS2-834) SocketTimeoutException when running attachment scenario.
Date Thu, 12 Oct 2006 16:59:40 GMT
     [ http://issues.apache.org/jira/browse/AXIS2-834?page=all ]

Davanum Srinivas resolved AXIS2-834.
------------------------------------

    Resolution: Invalid

Please use HTTPConstants.SO_TIMEOUT to increase the socket timeout.
http://www.wso2.net/articles/axis2/java/2006/08/01/client-api-parameters#SO_TIMEOUT

> SocketTimeoutException when running attachment scenario.
> --------------------------------------------------------
>
>                 Key: AXIS2-834
>                 URL: http://issues.apache.org/jira/browse/AXIS2-834
>             Project: Apache Axis 2.0 (Axis2)
>          Issue Type: Test
>          Components: transports
>    Affects Versions: 1.0
>         Environment: WIN OS
>            Reporter: Samuel Isokpunwu
>
> I created a service class that will provide an image when given an image type and a client
that request for a given image type.
> This test scenario is basically a reverse of one of the MTOM testcases, in the sample
package, to get an image instead of sending an image.
> The service deployment was successful and I can trace the call up to the service operation
which successfully creates the response OMElement with the requested image but I repeatedly
get a timeout before the service response gets to the client.
> Could someone help review the test cases below and perhaps suggest what I may have done
wrong in the implementations. 
> My service impl method is this:
>     public OMElement imageDepot(OMElement element) throws Exception {
>     	OMElement omeRequest = null;
>     	
>     	for (Iterator iterator = element.getChildElements(); iterator.hasNext();) {
>                           OMElement ome = (OMElement) iterator.next();
>                           if (ome.getLocalName().equalsIgnoreCase("request")) {
>                               omeRequest = ome;
>                           }
>                      }
>     	
>     	if (omeRequest == null ) {
>                          throw new AxisFault("Client request OMElement is null");
>                      }
>     	
>     	if(omeRequest.getText().equalsIgnoreCase("jpeg")){
>     	    DataHandler expectedDH;
>                          OMFactory fac = OMAbstractFactory.getOMFactory();
>                          OMNamespace omNs = fac.createOMNamespace("urn://fakenamespace",
"ns");
>      
>                          OMElement data = fac.createOMElement("response", omNs);
>                          OMElement image = fac.createOMElement("image", omNs);
>                          Image expectedImage = new ImageIO().loadImage(new FileInputStream(new
File("D:\\dev\\image\\test.jpg")));
>                          ImageDataSource dataSource = new ImageDataSource("test.jpg",expectedImage);
>                          expectedDH = new DataHandler(dataSource);
>                          OMText textData = fac.createOMText(expectedDH, true);
>                          image.addChild(textData);
>                          data.addChild(image);
>                          return data;  		
>     	}
> The client implementation is this:
> public void testGetImage() throws Exception{
>      OMElement result = getImage("jpeg");
>      OMElement omeImage = null;
>       for (Iterator _iterator = result.getChildElements(); _iterator.hasNext();) {
>             OMElement ome = (OMElement) _iterator.next();
>             if (ome.getLocalName().equalsIgnoreCase("image")) {
>         	   omeImage = ome;
>             }
>         }
> 		
>       if (omeImage == null ) {
>             throw new AxisFault("Image element content is null");
>       }
> 		
>       //Extract the image content and save it the data and saving
>       OMText imageReceived = (OMText) omeImage.getFirstOMChild();
>       DataHandler dh = (DataHandler) imageReceived.getDataHandler();
>       Image image = new ImageIO().loadImage(dh.getDataSource().getInputStream());
>       FileOutputStream imageFOS = new FileOutputStream(ClientOutputFileName);
>       new ImageIO().saveImage(dh.getContentType(), image, imageFOS);
> 		
>       if(dh.getContentType().equalsIgnoreCase("image/jpeg")){
>           System.out.println("SUCESS");
> }
> 	
> public OMElement getImage(String imageType) throws Exception {
>         OMFactory fac = OMAbstractFactory.getOMFactory();
>         OMNamespace ns = fac.createOMNamespace("http://localhost/my", "my");
>         
>         OMElement operation = fac.createOMElement("imageDepot", ns);
>         
>         OMElement request = fac.createOMElement("request", ns);
>         request.setText(imageType);
>         
>         operation.addChild(request);
>         
>         Options options = new Options();
>         options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
>         options.setTo(targetEPRName);
>         options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_FALSE);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
>         ServiceClient sender = new ServiceClient();
>         sender.setOptions(options);
>         return sender.sendReceive(operation);
> }
> The deployed service.xml is this:
> <service name="MTOMService">
>     <description>
>         This is a sample Web Service for illustrating MTOM based binary data transfer.
>     </description>
>     <parameter name="ServiceClass" locked="false">sample.mtom.imagetransfer.service.MTOMService</parameter>
>     <operation name="imageDepot">
>         <actionMapping>urn:imageDepot</actionMapping>
>         <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
>     </operation>
> </service>
> I continue to get the following socket timeout exception.
> org.apache.axis2.AxisFault: Read timed out; nested exception is: 
> 	java.net.SocketTimeoutException: Read timed out; nested exception is: 
> 	org.apache.axis2.AxisFault: Read timed out; nested exception is: 
> 	java.net.SocketTimeoutException: Read timed out
> 	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java)
> 	at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java)
> 	at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java)
> 	at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java)
> 	at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:451)
> 	at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:393)
> 	at com.ibm.attachment.tc.mtom.MTOMTest.getImage(MTOMTest.java:98)
> 	at com.ibm.attachment.tc.mtom.MTOMTest.testGetImage(MTOMTest.java)
> 	at com.ibm.attachment.tc.mtom.MTOMTest.main(MTOMTest.java)
> Caused by: org.apache.axis2.AxisFault: Read timed out; nested exception is: 
> 	java.net.SocketTimeoutException: Read timed out
> 	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java)
> 	... 9 more
> Caused by: java.net.SocketTimeoutException: Read timed out
> 	at java.net.SocketInputStream.socketRead0(Native Method)
> 	at java.net.SocketInputStream.read(SocketInputStream.java:155)
> 	at java.io.BufferedInputStream.fill(BufferedInputStream.java:229)
> 	at java.io.BufferedInputStream.read(BufferedInputStream.java:246)
> 	at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77)
> 	at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105)
> 	at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1115)
> 	at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832)
> 	at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590)
> 	at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995)
> 	at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
> 	at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
> 	at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
> 	at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
> 	at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:636)
> 	at org.apache.axis2.transport.http.SOAPOverHTTPSender.send(SOAPOverHTTPSender.java:116)
> 	... 10 more

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message