Ich ärgere mich seit längerer Zeit mit folgendem Problem herum, und bin nun an einer Stelle angelangt, an der ich nicht mehr weiter weiss...
Ich habe ein Applet, dass über XmlRpc mit Matlab kommuniziert, init und destroy funktionieren immer einwandfrei. Ich kann mit dem Applet auch von einem externen Computer problemlos auf den ursprünglichen Server zugegreifen und alle Methoden aufrufen.
Wenn ich nun jedoch lokal über localhost mEvalString bzw execute innerhalb meines Programms aufrufe, schlägt die Kommunikation zu Matlab fehl. Es wird null als result zurrückgeliefert.
Da ich den Sourcecode nicht mehr habe, und das Decompilieren fehlschlägt, stehe ich nun ziemlich auf dem Schlauch. Hat jemand von euch vielleicht einen Tipp oder Hinweis? es kann sich ja nur um eine Kleinigkeit handeln.
Der Server auf dem es momentan läuft läuft mit Windows Server 2003 Enterprise, Tomcat 5, XmlRpc wird 3.0 verwendet.
Nun soll es lokal auf einer Windows XP Professional Distribution laufen, die anderen Programme sind alle gleich. Auf dem Server kann ich das Applet auch lokal benutzen, es muss also eigentlich an dem Computer auf dem es nun integriert werden soll liegen.
Da bei der Initialisierung und dem Shutdown problemlos über XmlRpc das execute aufgerufen wird, sonst aber nicht, bin ich wirklich gerade etwas ???:L
Viele Grüße
Tony
Unten die Hauptklasse.... Ich habe die funktionierenden Methoden erstmal ausgespart.
Ich habe ein Applet, dass über XmlRpc mit Matlab kommuniziert, init und destroy funktionieren immer einwandfrei. Ich kann mit dem Applet auch von einem externen Computer problemlos auf den ursprünglichen Server zugegreifen und alle Methoden aufrufen.
Wenn ich nun jedoch lokal über localhost mEvalString bzw execute innerhalb meines Programms aufrufe, schlägt die Kommunikation zu Matlab fehl. Es wird null als result zurrückgeliefert.
Da ich den Sourcecode nicht mehr habe, und das Decompilieren fehlschlägt, stehe ich nun ziemlich auf dem Schlauch. Hat jemand von euch vielleicht einen Tipp oder Hinweis? es kann sich ja nur um eine Kleinigkeit handeln.
Der Server auf dem es momentan läuft läuft mit Windows Server 2003 Enterprise, Tomcat 5, XmlRpc wird 3.0 verwendet.
Nun soll es lokal auf einer Windows XP Professional Distribution laufen, die anderen Programme sind alle gleich. Auf dem Server kann ich das Applet auch lokal benutzen, es muss also eigentlich an dem Computer auf dem es nun integriert werden soll liegen.
Da bei der Initialisierung und dem Shutdown problemlos über XmlRpc das execute aufgerufen wird, sonst aber nicht, bin ich wirklich gerade etwas ???:L
Viele Grüße
Tony
Unten die Hauptklasse.... Ich habe die funktionierenden Methoden erstmal ausgespart.
Java:
import java.applet.Applet;
import java.io.IOException;
import java.io.PrintStream;
import java.net.URL;
import java.util.Vector;
import org.apache.xmlrpc.XmlRpcClient;
import org.apache.xmlrpc.XmlRpcException;
public class JSConnect extends Applet
implements VCLab
{
private XmlRpcClient xmlrpc;
private String host;
private String authCode;
public void init()
{
this.host = getParameter("matlab_server");
if (allocateWorkspace())
System.out
.println("Initialisiering des Matlab Applets erfolgreich");
else {
System.out.println("Initialisiering nicht erfolgreich.");
}
System.out.println("Initialisierung des Workspaces ...");
execute(getParameter("init_command"));
System.out.println("Initialisierung abgeschlossen ...");
}
public void destroy()
{
System.out.println("Workspace wird zurückgesetzt ...");
execute(getParameter("shutdown_command"));
freeWorkspace();
}
public boolean allocateWorkspace()
{
.....
}
public void freeWorkspace()
{
......
}
public String execute(String cmd)
{
Vector args = new Vector();
args.addElement(this.authCode);
args.addElement(cmd);
try {
System.out.println("Starting to execute...");
String result = (String)this.xmlrpc.execute("mwd.execute", args);
return result;
} catch (XmlRpcException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
return null;
}
public void mEvalString(String evalString) {
execute(evalString);
}
public void mClear(String NameString) {
execute("clear " + NameString);
}
public void mClearAll() {
execute("clear all");
}
.
public double mGetArray(String MatrixName, String m, String n) {
.....
}
public String mGetString(String MatrixName, String m) {
.....
}
private String shortenResult(String result)
{
.....
}
}