Nibin,
After changing
@BeforeClass
public void setUp() {
client = ClientBuilder.newClient();
target =
client.target("http://localhost:8080/jaxrs-client/webresources/persons");
}
to
@Before
public void setUp() {
client = ClientBuilder.newClient();
target =
client.target("http://localhost:8080/jaxrs-client/webresources/persons");
}
this test is working fine on beta2 snapshot.
Are you suggesting that the connections cannot be reused even within
each test ? And it should not work ?
Arun
On Sun, Nov 10, 2013 at 6:24 AM, Nibin Varghese <nibin.gv(a)gmail.com> wrote:
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].
[3]
http://docs.jboss.org/resteasy/docs/3.0.5.Final/userguide/html_single/ind...
-Nibin
On Fri, Nov 8, 2013 at 5:31 AM, Arun Gupta <arun.gupta(a)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(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/wildfly-dev