Alternativ kann diese Demo direkt über eine
SOAP-Schnittstelle angesprochen werden.
Wichtiger Hinweis: Diese Schnittstelle steht nur für
nicht kommerzielle
Zwecke zur Verfügung.
Bei kommerzieller Nutzung wenden Sie sich bitte an
office@sciencesoft.at. Weiters bitten wir
Sie,
uns auch bei nicht-kommerzieller Nutzung dieser Schnittstelle über obige
E-Mail-Adresse
zu benachrichtigen, damit wir Sie bei Änderung der Schnittstelle gegebenfalls informieren
zu können.
WDSL
SOAP-Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:def="http://DefaultNamespace">
<soapenv:Header/>
<soapenv:Body>
<def:render>
<def:data>?</def:data>
<def:width>?</def:width>
<def:height>?</def:height>
<def:scaling>?</def:scaling>
<def:rotatex>?</def:rotatex>
<def:rotatey>?</def:rotatey>
<def:rotatez>?</def:rotatez>
<def:bgcolor>?</def:bgcolor>
<def:commands>?
<!--Zero or more repetitions:-->
<def:string>?</def:string>
</def:commands>
<def:embeddedData>?</def:embeddedData>
</def:render>
</soapenv:Body>
</soapenv:Envelope>
<def:data>
Dieses Element beinhaltet Daten - maximale Länge 131072 Bytes
<def:width> und <def:height>
Breite [40..1024] und
Höhe [40..768] der Grafik in Punkten
<def:scaling>
Skalierung der Graphik in einem Wertebereich von 30 bis 300 Prozent
<def:roatex> <def:roatey> <def:roatez>
Rotation des 3D-Modells um die x/y/z Achse des Raumes in Grad
<def:bgcolor>
Hintergrundfarbe im 6-stelligen HEX-Format
<def:commands> <def:String>...</def:String> </def:commands>
Liste optionaler Jmol-Kommandos. Die unterstützen Kommandos sind indent mit den Optionen der
Auswahlliste Darstellung.
<def:embeddedData>
Dieses Element legt mit dem Wert true fest,
ob die Grafaikdaten base-64 kodiert in die SOAP-Antwort
eingebettet werden.
false bewirkt, dass die SOAP-Antwort einen Link auf die erzeugte
Grafik beihaltet.
SOAP-Response
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<ns1:renderResponse xmlns:ns1="http://DefaultNamespace">
<ns1:out>
<success xmlns="http://DefaultNamespace">?</success>
<error xsi:nil="true" xmlns="http://DefaultNamespace">?</error>
<embeddedData xmlns="http://DefaultNamespace">?</embeddedData>
<data xsi:nil="true" xmlns="http://DefaultNamespace"/>?</data>
<url xmlns="http://DefaultNamespace">?</url>
</ns1:out>
</ns1:renderResponse>
</soap:Body>
</soap:Envelope>
succces
true kein Fehler, oder false im Falle
eines Fehlers
error
Im Falle eines Fehlers beinhaltet dieses Element die Fehlermeldung.
embeddedData
Ist dieser Wert true,
so wurden die Grafaikdaten base-64 kodiert über das Element data
in die SOAP-Antwort
eingebettet. Ist der Wert hingegen false, so
beinhaltet das Element url einen Link auf die berechnete Grafik.
url oder data
Diese Elemente beinhalten das Ergebnis - siehe Element embeddedData
size
Größe der Grafikdaten in Bytes.
Beispiel
Dieses Beispiel generiert über die SOAP-Schnittstelle ein PNG-Graphik, die ein
ein Methanol-Molekül darstellt.
Sie können dieses Beispiel inklusive aller notwendigen Libraries über folgenden
Link downloaden.
/*
* JmolSOAPClient.java - Jmol SOAP access example
* Author: Peter Sauer (peter.sauer@sciencesoft.at)
* Date of last modification: 2008-10-01
*/
package at.sciencesoft.test;
import at.sciencesoft.soap.jmol.*;
import java.io.*;
public class JmolSOAPClient {
private static String ethanol =
"9\n" +
" This geometry optimized by G92; MP2/6-31G*\n" +
"H -2.0801425360 0.4329727646 0.0722817289\n" +
"C -1.2129704155 -0.2295285634 -0.0097156258\n" +
"H -1.2655910941 -0.9539857247 0.8097953440\n" +
"C 0.0849758188 0.5590385475 0.0510545434\n" +
"O 1.2322305822 -0.2731895077 -0.1276123902\n" +
"H 0.1506137362 1.1200249874 0.9943015309\n" +
"H 1.2473876659 -0.8998737590 0.6150681570\n" +
"H 0.1316093068 1.2841805400 -0.7645223601\n" +
"H -1.2737541560 -0.7748626513 -0.9540587845\n";
public static void writeByteStream(String fileName, byte[] stream) throws Exception {
File file = new File(fileName);
FileOutputStream writer = new FileOutputStream(file);
writer.write(stream, 0, stream.length);
writer.close();
}
public static void main(String[] args) {
try {
Jmol_Service serv = new Jmol_Service();
Jmol jmol = serv.getJmolHttpPort();
SOAPjmolResult jr = jmol.render(ethanol, 400, 400, 150, 0, 0, 0, null, null, true);
if (jr.isSuccess()) {
System.out.println("Success!");
writeByteStream("ethanol.png.", jr.getData().getValue());
} else {
System.out.println("Error:");
System.out.println(jr.getError().getValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}