Hi,

This is becuase AppacheHTTPClient will not allow to use the same connection if the previous request is not yet consumed. For eg, as mentioned in the Test (quoted below)

 @Test
    public void test1PostAndGet() {
        MultivaluedHashMap<String, String> map = new MultivaluedHashMap<>();
        map.add("name", "Penny");
        map.add("age", "1");
        target.request().post(Entity.form(map));

        map.clear();
        map.add("name", "Leonard");
        map.add("age", "2");
        target.request().post(Entity.form(map)); // <--- Reference [1]

        map.clear();
        map.add("name", "Sheldon");
        map.add("age", "3");
        target.request().post(Entity.form(map)); <--- Reference [2]

        Person[] list = target.request().get(Person[].class);
        assertEquals(3, list.length);

        assertEquals("Penny", list[0].getName());
        assertEquals(1, list[0].getAge());

        assertEquals("Leonard", list[1].getName());
        assertEquals(2, list[1].getAge());

        assertEquals("Sheldon", list[2].getName());
        assertEquals(3, list[2].getAge());
    }

As you can see in Reference[1], the request is made and its response is not consumed. So the connection is still in active state. You should consume the response or call connection.close() before making the second request as mentioned in Reference[2]. This is because the "target" object uses the same ApacheHttpClient connection manager which internally uses "

SingleClientConnManager" as discussed in the documentation[3].


-Nibin


On Fri, Nov 8, 2013 at 5:31 AM, Arun Gupta <arun.gupta@gmail.com> wrote:
Tests for JAX-RS Client API sample at:

https://github.com/arun-gupta/javaee7-samples/tree/master/jaxrs/jaxrs-client

is failing with:

Caused by: java.lang.IllegalStateException: Invalid use of
BasicClientConnManager: connection still allocated.
Make sure to release the connection before allocating another one.
    at org.apache.http.impl.conn.BasicClientConnectionManager.getConnection(BasicClientConnectionManager.java:161)
    at org.apache.http.impl.conn.BasicClientConnectionManager$1.getConnection(BasicClientConnectionManager.java:138)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:455)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
    at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:245)
    ... 33 more

The instructions to run the test are described at:

https://github.com/arun-gupta/javaee7-samples

Any suggestions ?

Arun

--
http://blog.arungupta.me
http://twitter.com/arungupta
_______________________________________________
wildfly-dev mailing list
wildfly-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/wildfly-dev