We work on J2EE project based on NetBeans platform and we solve typical tasks. My first problem was execution of long running tasks.
Here is a solution:
  private void jbExecuteActionPerformed(java.awt.event.ActionEvent evt) {                                                    // start thread    RequestProcessor.getDefault().post(new Runnable() {       public void run() {          ProgressHandle progress =                 ProgressHandleFactory.createHandle("Loading data...");                            progress.start(10);                            try {            for (int i = 1; i < 10; i++) {              try {                 Thread.sleep(2000);              } catch (InterruptedException ex) { }               progress.progress(i);            }          } finally {            progress.finish();          }       }    });  }          
  The trick is in RequestProcessor.getDefault().post(new Runnable(){...}).  
  Inside new Runnable(){...} you may optionally use NetBeans Progress API  
