X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2FMsaWSClient.java;h=faf2fafd8dec89f4c6275022ac9d3a2deb65b29a;hb=bd6e2f14dd1a60bb11e1be975574e462a1a6b256;hp=9626132dadd37b9c1abb0a53eeeef825f7aa6d34;hpb=8891eedbf7430d8a98edc1cccb32fceac8e3a9bb;p=jalview.git diff --git a/src/jalview/ws/MsaWSClient.java b/src/jalview/ws/MsaWSClient.java index 9626132..faf2faf 100755 --- a/src/jalview/ws/MsaWSClient.java +++ b/src/jalview/ws/MsaWSClient.java @@ -53,6 +53,7 @@ public class MsaWSClient MuscleWSServiceLocator loc = new MuscleWSServiceLocator(); // Default try { this.server = (MuscleWS) loc.getMuscleWS(new java.net.URL(WsURL)); + ((MuscleWSSoapBindingStub) this.server).setTimeout(60000); // One minute timeout } catch (Exception ex) { wsInfo.setProgressText("Serious! "+WebServiceName+" Service location failed\nfor URL :" @@ -60,7 +61,7 @@ public class MsaWSClient wsInfo.setStatus(wsInfo.ERROR); ex.printStackTrace(); } - + loc.getEngine().setOption("axis","1"); MsaWSThread musclethread = new MsaWSThread(WebServiceName+" alignment of "+altitle, msa, submitGaps, preserveOrder); wsInfo.setthisService(musclethread); musclethread.start(); @@ -119,7 +120,7 @@ public class MsaWSClient boolean jobComplete = false; public void cancelJob() { - if (!jobComplete) { + if (jobId!=null && !jobId.equals("") && !jobComplete) { String cancelledMessage=""; try { vamsas.objects.simple.WsJobId cancelledJob = server.cancel(jobId); @@ -147,6 +148,11 @@ public class MsaWSClient exc.printStackTrace(); } wsInfo.setProgressText(OutputHeader + cancelledMessage+"\n"); + } else { + if (!jobComplete) + { + wsInfo.setProgressText(OutputHeader + "Server cannot cancel this job because it has not been submitted properly. just close the window.\n"); + } } } @@ -159,7 +165,8 @@ public class MsaWSClient { try { - result = server.getResult(jobId); + if ((result = server.getResult(jobId))==null) + throw(new Exception("Timed out when communicating with server\nTry again later.\n")); if (result.isRunning()) wsInfo.setStatus(WebserviceInfo.STATE_RUNNING); @@ -192,7 +199,18 @@ public class MsaWSClient allowedServerExceptions--; wsInfo.appendProgressText("\n" + ServiceName + " Server exception!\n" + ex.getMessage()); - ex.printStackTrace(); + System.err.println(ServiceName + " Server exception: " + + ex.getMessage()); + // ex.printStackTrace(); JBPNote Debug + try + { + if (allowedServerExceptions>0) + Thread.sleep(5000); + } + catch (InterruptedException ex1) + { + } + } } if (allowedServerExceptions == 0) @@ -217,18 +235,26 @@ public class MsaWSClient try { vamsas.objects.simple.WsJobId jobsubmit = server.align(seqs); - if (jobsubmit.getStatus()==1) { + if (jobsubmit!=null && jobsubmit.getStatus()==1) { jobId=jobsubmit.getJobId(); System.out.println(WsURL+" Job Id '"+jobId+"'"); } else { + if (jobsubmit == null) { + throw new Exception("Server at "+WsURL+" returned null object, it probably cannot be contacted. Try again later ?"); + } throw new Exception(jobsubmit.getJobId()); } } catch (Exception e) { - System.err.println(ServiceName + " Client: Failed to submit the prediction\n" + + // TODO: JBPNote catch timeout or other fault types explicitly + // For unexpected errors + System.err.println(WebServiceName + " Client: Failed to submit the sequences for alignment.\n"+WsURL+" : " + e.toString() + "\n"); - e.printStackTrace(); + this.allowedServerExceptions=0; + wsInfo.setStatus(wsInfo.STATE_STOPPED_SERVERERROR); + wsInfo.appendProgressText("Server problems! "+e.toString()+"\nFailed to submit sequences for alignment. Just close the window\n"); + // e.printStackTrace(); // TODO: JBPNote DEBUG } }