Summary: I (edit: did not) resolve a class java.io.IOException / timeout error when updating processes in the jBPM console by fixing errors in my process.
EDIT: Sometimes the issue reappears even when no errors are picked up. Undo what you last did, or confirm that it is valid. Restarting the server may be neccessary.
EDIT: The request timeout error keeps appearing. Sometimes the process definitions will load, but loading process instances, or submitting a form will then timeout. Is it possible that the timeout is because I only have 3 GBs of RAM, which is being fully used?
Hi. Just wanted to post something I've been struggling with. I installed jBPM5 with the installer, and started developing my own process. Everything was going smoothly, until after I added a XOR gateway. I started getting an errror when trying to update the processes in the jBPM console. I got a popup error message, and no process definitions, though there should have been three. Here's the error:
2013-02-04 08:55:19,851 [DEBUG] GET: http://localhost:8080/gwt-console-server/rs/process/definitions
2013-02-04 08:56:18,982 [ERROR] <ul><li>URL: 'http://localhost:8080/gwt-console-server/rs/process/definitions'
<li>Exception: 'class java.io.IOException'</ul>
I tried restarting the server, downloading new WAR files, redeploying the WAR files... everything I could think of. Sometimes it would work for a bit.
Eventually, I decided to first fix the compilation error I was getting when trying to build the package. In the conditions of the gateways (which are set on the branches leaving the gateway), I was trying to use a boolean process variable, but I was getting errors because the getVariable() method returns an object, which I was trying to cast to a boolean. After discovering this, I changed the code, and the build was successful. Here's the old and new code.
OLD: boolean decision = (boolean)kcontext.getVariable("instock");
NEW: boolean decision = kcontext.getVariable("instock").equals(true);
For information on the getVariable() method, I used:
For information on the equals() method, I used:
After changing to the new code, I updated the processes and didn't get the timeout issue.
To check I had actually solved it by changing the code, I reverted back to the old code. The process was now not valid, so the Console didn't update to the new version. I rebooted the server to force it to work with the invalid version. Now, the Console didn't pick up the invalid process at all (but successfully loads the other valid processes I have, without giving the timeout error).
To attempt to recreate the timeout error, I reverted to an even older version of code (the version that was in use when the server booted up, and gave the timeout error). Here I tried to save an Object into a Boolean variable without casting.
OLDER: boolean decision = (boolean)kcontext.getVariable("instock");
After changing back to this code, I restarted the server. It took a couple tries before the console and Guvnor showed in the browser, but when it did, the process still didn't show up. The timeout error didn't come back.
Then, I changed back to the new code, built the package and refreshed the processes in the Console. The process then showed up (without having to reboot).
In conclusion, if you encounter a timeout error while updating the process definitions in the jBPM console, or the process doesn't show up, check that you can successfully build the package that the process is in. (This is done under the edit tab of the package, in Drools Guvnor. See section 3.6 of the jBPM installer guide for a video of how to do it. http://docs.jboss.org/jbpm/v5.4/userguide/ch.installer.html#d0e571).