"[STUCK] ExecuteThread: '170' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00002b4f841f1b20 nid=0x5763 in Object.wait() [0x00002b4f8c842000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0000000776826778> (a weblogic.rjvm.ResponseImpl) at weblogic.rjvm.ResponseImpl.waitForData(ResponseImpl.java:90) - locked <0x0000000776826778> (a weblogic.rjvm.ResponseImpl) at weblogic.rjvm.ResponseImpl.getTxContext(ResponseImpl.java:130) at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:110) at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:222)you might want to set these 2 parameters (this for WLS 10.3.6 )
-Dweblogic.rmi.clientTimeout=valueInMilliseconds
weblogic.jndi.requestTimeout=valueInMilliseconds
The reason of that WAITING is that there is a synchronized block followed by an Object.wait(timeout):
private void waitForData() { int i = 0; synchronized (this) { long l1 = this.timeout; while (!isAvailable()) { try { int j = 0; long l2 = System.currentTimeMillis(); wait(l1); if (this.timeout > 0) { long l3 = System.currentTimeMillis() - l2; if (l3 >= l1) { j = 1; } else { l1 -= l3; } } if ((!isAvailable()) && (j != 0)) { this.t = new RequestTimeoutException("RJVM response from '" + this.rjvm + "' for '" + (this.md != null ? this.md.toString() : "null") + "' timed out after: " + this.timeout + "ms."); i = 1; } } catch (InterruptedException localInterruptedException) {} } } if (i != 0) { this.rjvm.removePendingResponse(this.id); } }See also:
Oracle Support doc "JNDI Thread Stuck" (Doc ID 1482310.1)
For alternative ways to specify timeouts in WLS 12 , see https://docs.oracle.com/middleware/1212/wls/WLRMI/rmi_api.htm#WLRMI251
In WLS 10, https://docs.oracle.com/cd/E11035_01/wls100/ejb/DDreference-ejb-jar.html#wp1362824 use remote-client-timeout in your weblogic.ejb-jar.xml
The Timeout event will cause a RequestTimeoutException which is a IOException : http://docs.oracle.com/cd/E57014_01/wls/WLAPI/weblogic/rmi/extensions/RequestTimeoutException.html See also Oracle Support article "How to configure timeout for an EJB Client (Doc ID 943282.1)"
in a nutshell:
-Dweblogic.rmi.clientTimeout=timeoutinmilliseconds sets the timeout on the client (consumer) side
remote-client-timeout in weblogic-ejb-jar.xml sets the timeout on the server (provider) side.
No comments:
Post a Comment