englishteeth.co.uk

… the weblog of Ian “English Teeth” Robinson
  • rss
  • Home

Web Service Read timed out

April 16, 2008 | 12:46 pm

Test first is not a silver bullet; there are still things you may not see until much later. I ran into a read time out recently that was only manifesting on a pre-production server. The stack trace indicated what was going on but the site’s behaviour was not what I would have expected.

2008-04-15 09:25:36,387 ERROR [com.foo.bar.service.impl.ServiceImpl] -
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.net.SocketTimeoutException: Read timed out
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:235)
at org.apache.axis.transport.http.HTTPSender.readHeadersFromSocket(HTTPSender.java:583)

Anyway, after a bit of head scratching, it ended up being quite straightforward to recreate locally by simply overriding the JaxRpcPortProxyFactoryBean and setting the timeout to something unreasonably small.

import javax.xml.rpc.Stub;
import org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean;

public class ServiceJaxRpcFactoryBean extends JaxRpcPortProxyFactoryBean {
	private static final String TIMEOUT_PROPERTY_KEY = "axis.connection.timeout";

	protected void preparePortStub(Stub stub) {
		super.preparePortStub(stub);
		stub._setProperty(TIMEOUT_PROPERTY_KEY, new Integer(100));
	}
}
Comments
No Comments »
Categories
development
Tags
java, spring, testing
Comments rss Comments rss
Trackback Trackback

JUnit 4

March 11, 2008 | 12:23 pm

Not least because it is so much simpler, but regular usage will result in this will becoming ingrained, (this is covered in greater detail here), but being as I’m so used to the previous incarnations of JUnit it might be worth noting the usage for quick look-up…

package junit4;

import mypackage.ClassToTest;
import org.junit.Before;
import org.junit.After;
import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.*;

public class MyJUnit4Test {

  private static ClassToTest classToTest = new ClassToTest();

  @Before
  public void whatUsedToBeInSetup() {
    // test set up type activities
  }

  @Test
  public void first() {
    classToTest.doWhatYouDo();
    assertEquals(classToTest.getWhatItDid(), result);
  }

  @Test(expected = SomeParticularException.class)
  public void shouldCauseExceptionInTestClass() {
    classToTest.doThatThingYouDontLike();
  }

  @Ignore("not ready yet")
  @Test
  public void multiply() {
    classToTest.doThatThingYouWillDo();
    assertEquals(classToTest.getWhatItDid(), futureResult);
  }

  @After
  public void whatUsedToBeIntearDown() {
    // test tear down type activities
  }

}

Minor Eclipse Annoyance - organise imports changes import static org.junit.Assert.* to whatever asserts you’ve actually referenced. This being an annoying when you’re developing iteratively and may not yet have used all the asserts you might wish to use.

Comments
No Comments »
Categories
development, software
Tags
java, junit, testing
Comments rss Comments rss
Trackback Trackback

Next Entries »

Author

Ian Robinson is a relatively agile software engineer interested in things both sides of the object relational divide and beyond.

Categories

  • development (35)
  • miscellaneous (20)
  • music (7)
  • software (13)

Blogroll

  • Dan North
  • Dave Astels
  • Dave Wood
  • eirikso.com
  • Matt Raible
  • Object Mentor Blog
  • The Ancient Art of Programming
  • The Wisdom of Ganesh

Tags

active-mq architecture bauhaus blu-ray css db eclipse esb festivals freesat gorm grails groovy hd hd-dvd hibernate java jboss jms junit links mce media center mini music oracle osgi patterns pirsig plugins satellite soa software spring sql struts2 testing themes tools tv web wordpress xml xpath xslt
rss Comments rss valid xhtml 1.1 design by jide powered by Wordpress get firefox