Hi,
I'm using jackrabbit-1.6.0 and runnig the jackrabbit-jca-rar and the
rmi-Connector on jboss parallel.
For my unit-tests I'm using only the rmi-connector and in some tests a
session-bean. But actually I found an error with rmi and the tests.
First of all my native rmi-test with multiple-threads does not fail, but
when I observe the Jboss-ManagedConnectionPool, I see that it is running out
of connections. It is the configured
MBean Java Class:
org.jboss.resource.connectionmanager.JBossManagedConnectionPool
You can see it in the JMX-Console of jboss. After running the test multiple
times the available connection-count runs against zero.
Please confirm my code and make your own experiences. Is it a bug?
@Test
public void multiThreadTest() throws Exception
{
Thread[] allThreads = new Thread[10];
for (int i = 0; i < allThreads.length; i++)
{
allThreads[i] = new Thread(new Runnable()
{
public void run()
{
Session sessionLocal = null;
Random random = new Random();
try {
Context context = new InitialContext();
ClientAdapterFactory adapter = new
ClientAdapterFactory();
RemoteRepository rr = (RemoteRepository) context.
lookup("jnp://localhost:1099/jcrServer");
Repository repo = adapter.getRepository(rr);
String randomProjectNr =
String.valueOf(random.nextInt());
String testNodeName = "TEST_JCR_NODE_" +
randomProjectNr;
// own session per thread
sessionLocal = repo.login (new
SimpleCredentials("user",
"pwd".toCharArray()), "default");
// -----
// call jcr-api directly
// -----
// create one folder ...
Node rootNode = sessionLocal.getRootNode();
if (!rootNode.hasNode(testNodeName)) {
rootNode.addNode(testNodeName);
}
sessionLocal.save();
sessionLocal.logout();
sessionLocal = null;
// ... and one subfolder within an new session
sessionLocal = repository.login (new
SimpleCredentials("user",
"pwd".toCharArray()), "pwd");
rootNode = sessionLocal.getRootNode();
Node testNode = rootNode.getNode(testNodeName);
if (!testNode.hasNode("TestLevel2")) {
//testNode.addNode("TestLevel2", "hmg:folder");
testNode.addNode("TestLevel2");
}
sessionLocal.save();
sessionLocal.logout();
sessionLocal = null;
// remove created nodes within an new session
sessionLocal = repository.login (new
SimpleCredentials("user",
"pwd".toCharArray()), "default");
Node oldNode = rootNode.getNode(testNodeName);
oldNode.remove();
sessionLocal.save();
sessionLocal.logout();
sessionLocal = null;
}
catch (Exception e) {
System.out.println("Exception in Thread "
+Thread.currentThread().getName());
e.printStackTrace();
}
finally
{
// logout and remove session
if (sessionLocal != null) {
sessionLocal.logout();
sessionLocal = null;
}
}
}
});
}
for (Thread thread : allThreads) {
System.out.println("Starting Thread " +thread.getName()+ " ...");
thread.start();
Thread.yield();
}
After two runs with 10 Threads there are no more connections available in
the pool (because maxSize is 20) It seems that the connections are never
released after using ...
Regards,
Gamba
--
View this message in context:
http://www.nabble.com/Connection-Pool-running-out-of-connection-with-RMI-access-on-JBoss-tp25468807p25468807.html
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.