Befehl per Shell an Java-Applet JAR übergeben

kami83

Mitglied
Hallo,

ich bin neu auf dem Sektor Java Programmierung und habe folgendes Problem:

Ich habe ein JAR-File, das Java-Applet ist zur Steuerung von Hardware-Komponenten eines Herstellers.
Ich führe diese Applet auf meine Server aus. Dadurch habe ich die Möglichkeit mit einem Browser und einem entsprechenden Port auf einem Webserver zuzugreifen und die Hardware-Komponenten mit dem Applet zu steuern. Das JAR-File läuft also im Hintergrund und nutzt DWR.

Ich kann nun den Quellcode der Website einsehen. Über ein Java-Script-file wird der Webserver gesteuert und spricht mit Befehlen das Applet an.

Ich suche nun nach einem möglichst simplen Weg, das JAva-Applet von extern (Shell, Bash) zu steuern.

Das File rufe ich mit : java -jar XAMLocApi.jar auf.

Und die Befehle aus der JAVA-Script Datei sehen so aus:

Code:
<input class='ibutton' type='button' onclick='XAMLocApi.getFirmwareVersion(reply5);' value='Execute'  title='FirmwareVersion'/>

Wie kann ich das nutzen, von extern, da ich einen eigenen Apache-Webserver habe und davon das ansprechen möchte und nicht über den Webserver, den das Applet erstellt?

Ich würde am liebsten die Befehle wie .getFirmwareVersion(); per SHell an das Applet übergeben.

Vielen Dank für Tipps.

Gruß kami83
 

faetzminator

Gesperrter Benutzer
Ich hab das noch nie gesehen. Gut möglich dass es irgendwie funktioniert, aber nicht ohne weiteres. Warum baust du dir nicht irgend eine Java-Klasse drum herum, welche das ausgibt? Oder gibst - noch einfacher - deinem Applet eine main-Methode, welche nur irgendwas ausgibt und beendet.
 

homer65

Top Contributor
Und die Befehle aus der JAVA-Script Datei sehen so aus:
<input class='ibutton' type='button' onclick='XAMLocApi.getFirmwareVersion(reply5);' value='Execute' title='FirmwareVersion'/>
Das ist kein Javascript.
Da wird per HTML eine Javascript Funktion aufgerufen.
Interessant wäre der Quelltext der den Javascriptteil enthält.
 

kami83

Mitglied
Also es ist so das diese Website eingebettet in einem Java-JAR-Applet Webserver liegt.
Ich komme also von extern nicht an die Funktionen ran.

Wie kann ich nun von meinem Apache Webserver aus das Applet steuern?

Am bestern wäre halt, wenn ich auf dem Server ein Shell-Skript zum Steuern verwenden könnte?

Was gibt es sonst für Möglichkeiten?

Gruß kami
 

faetzminator

Gesperrter Benutzer
Ich weiss nicht, was das Applet genau macht, aber um meine Gedanken etwas weiter zu erläutern:
Du hast in deinem Applet irgendwo eine Logik, welche irgendwas macht. z.B. [c]public static int getSum(int a, int b)[/c]. Fürs Applet hast du dort zwei Inputfelder (für die Variablen a und b), einen Button um die Berechnung zu tätigen und ein Ausgabefeld.
Wenn du dieses Applet um eine [c]main()[/c]-Methode erweiterst, ist dieses Programm auch über die Kommandozeile aufrufbar. Der Beispielcode der main ist dazu wirklich simpel:
Java:
public static void main(String[] args) {
    int a = Integer.parseInt(args[0]);
    int b = Integer.parseInt(args[1]);
    System.out.println(getSum(a, b));
}
Du kannst das dann einfach mit [c]java -jar deinJar.jar 23 54[/c] aufrufen. Natürlich auch aus der Shell.
 

kami83

Mitglied
Hi,

also das ganze Konstrukt sieht anders aus.
Das Applet enthält folgende Software : DWR - Easy Ajax for JAVA

Dadurch läuft bei gestartetem JAR file ein Webserver auf dem Rechner. Dieser Webserver wird über IP:port angesprochen und bedient dann mit entsprechenden Commandos die Hardware des Herstellers. Auf dem Webserver kann ich die Javascript befehle, die der Server kennt ausführen und bedienen.

PHP versteht der Server leider nicht. Ich möchte nun gerne auf diesen laufenden Webserver einwirken und die Befehle ausführen um die Hardware selber steuern zu können. Doch hier fängt das Problem an. Ein Websitenaufruf dauert und die Übergabe von Parameter ist kompliziert da ich nicht weiß wie. Hierfür suche ich eine simple Methode. Vielleicht hat ja einer eine Idee.

Gruß kami
 

faetzminator

Gesperrter Benutzer
Und wieso sprichst du dann diesen Service nicht gleich per "IP:port" an? Wenns Plain Text ist, dann kannst du sicher [c]telnet[/c] o.ä. mit einem auszuführenden Command aufrufen. Oder dann halt [c]telnet host port < input[/c] oder so.
 

kami83

Mitglied
Hi,

also das JAR File läuft auf dem Server. Ich öffne dann von irgendeinem Browser folgende URL:

Code:
http://IP[Server]:PORT/dwr/test/XAMLocApi

Dann bekomme ich folgende Website angezeigt und kann mit Hilfe des Buttons, Funktionen ausführen. Nur wie kann ich das nun mit einem Skript machen. Telnet geht dabei nicht.

HTML:
<html>
<head>
  <title>DWR Test</title>
  <!-- These paths use .. so that they still work behind a path mapping proxy. The fully qualified version is more cut and paste friendly. -->
  <script type='text/javascript' src='../interface/XAMLocApi.js'></script>
  <script type='text/javascript' src='../engine.js'></script>
  <script type='text/javascript' src='../util.js'></script>
  <script type='text/javascript'>
  function objectEval(text)
  {
    // eval() breaks when we use it to get an object using the { a:42, b:'x' }
    // syntax because it thinks that { and } surround a block and not an object
    // So we wrap it in an array and extract the first element to get around
    // this.
    // This code is only needed for interpreting the parameter input fields,
    // so you can ignore this for normal use.
    // The regex = [start of line][whitespace]{[stuff]}[whitespace][end of line]
    text = text.replace(/\n/g, ' ');
    text = text.replace(/\r/g, ' ');
    if (text.match(/^\s*\{.*\}\s*$/))
    {
      text = '[' + text + '][0]';
    }
    return eval(text);
  }
  </script>

  <style>
    input.itext { font-size: smaller; background: #E4E4E4; border: 0; }
    input.ibutton { font-size: xx-small; border: 1px outset; margin: 0px; padding: 0px; }
    span.reply { background: #ffffdd; white-space: pre; }
    span.warning { font-size: smaller; color: red; }
  </style>
</head>
<body onload='dwr.util.useLoadingMessage()'>
<h2>Methods For: XAMLocApi (de.test.xam.al.local.XAMLocDelegate)</h2>
<p>To use this class in your javascript you will need the following script includes:</p>
<pre>
  &lt;script type='text/javascript' src='<a href='/dwr/interface/XAMLocApi.js'>/dwr/interface/XAMLocApi.js</a>'&gt;&lt;/script&gt;
  &lt;script type='text/javascript' src='<a href='/dwr/engine.js'>/dwr/engine.js</a>'&gt;&lt;/script&gt;

</pre>
<p>In addition there is an optional utility script:</p>
<pre>
  &lt;script type='text/javascript' src='<a href='/dwr/util.js'>/dwr/util.js</a>'&gt;&lt;/script&gt;
</pre>
<p>Replies from DWR are shown with a yellow background if they are simple or in an alert box otherwise.<br/>
The inputs are evaluated as Javascript so strings must be quoted before execution.</p>



<li>
  getLatestFirmwareVersion(  );
  <input class='ibutton' type='button' onclick='XAMLocApi.getFirmwareVersion(reply5);' value='Execute'  title='Calls XAMLocApi.getFirmwareVersion(). View source for details.'/>
  <script type='text/javascript'>
    var reply5 = function(data)
    {
      if (data != null && typeof data == 'object') alert(dwr.util.toDescriptiveString(data, 2));
      else dwr.util.setValue('d5', dwr.util.toDescriptiveString(data, 1));
    }
  </script>

  <span id='d5' class='reply'></span>
</li>


</div>
</body></html>

Gruß kami
 

Kevin94

Top Contributor
Warum redest du eigentlich dauernt von einem Applet, wenn du nirgendswo ein Applet hast?

Ich hoffe ich hab das Konzept jetzt richtig verstanden:

Client ------HTTP-Request----> Servlet/HTML-Seite --->Client

und die eigentliche Applikation arbeitet dann:

Client(JAVASCRIPT) ---- AJAX----> Servlet(die JAR von der du dauernd redest?) ----> Client

Ich hoffe ich hab das Kommunikationskonzept richtig verstanden.
Und in dem Fall macht es eigentlich keinen Sinn, das ganze mit JAVA anzusprechen, auser du willst den ganzen JAVASCRIPT Code der Kontrollseite in deine eigene JAVA-Applikation umsetzen.
 

kami83

Mitglied
Hi,

also ich glaube das Prinzip sieht anders aus:

Zurzeit läuft es so:

Auf der Server läuft als Daemon ein: java -jar XAMLocApp.jar

Dieses JAR File greift auf ein Container-File zu, in dem die Website mit allen JS,html,... Files liegt.

Durch das ausführen der JAR Datei mit JAVA habe ich die Möglichkeit einen Webapplication unter dem Port anzusprechen und dadurch die Website die in dem Container liegt aufzurufen.

Diese Website bietet mir dann die Möglichkeit die Befehle für die Hardwaregeräte zu nutzen. Natürlich nur innerhalb dieser Webapplication, weil die Befehle außerhalb ja so nicht bekannt sind. Nun suche ich einen Weg diese Befehle auch von außerhalb ohne die Webapplication (DWR) zu nutzen.

Gruß kami
 

Kevin94

Top Contributor
Sorry, aber entweder hier werden JAVA-Technologien eingesetzt, die sich meiner Kenntnis entziehen oder Du weißt selber nicht so genau, was auf diesem Server abläuft (oder kannst es mir nicht vermittlen).

Seit wann kann man über einen Java-Daemon auf einem Server HTML-Dateien laden? Soweit ich weiß kann man nur ein Servlet ansprechen in einem entsprechenden Container, oder über Sockets auf Low-Level ebene mit dieser JAVA-application kommunizieren, was dann aber nix mit HTML zu tun hat.

Ich denke mal es läuft so ab, dass du eine ganz normale Website von einem Server aufrufst (auf dem auch dieser JAVA-Deamon läuft) und dass man mit JavaScript Code auf dieser Seite per AJAX befehle an den Deamon senden kann, der die Hardware steuert.

Wenn das so ist (wie auch immer die Seite geladen wird), dann müsstest du ja nur aus dem JavaScript Code die entsprechenden Befehle, die über AJAX gesendet werden heraussuchen und dein eigenes Programm diese Befehle senden lassen.
 

kami83

Mitglied
Hallo,

also das ganze funktioniert, wie oben beschrieben mit der directwebremote-Zugriff. Keine Ahnung was da genau hintersteht. Ich bin da nicht so der Profi. Downloads

Vielleicht kannst du mir ja sagen, wie ich die Befehle, die die ich brauche rausfinden kann?

Ich würde das halt alles gerne direkt ohne Website lösen.

Gruß kami
 

kami83

Mitglied
Hi Leute,

so ich habe jetzt einen Link gefunden, den ich weitergeben kann, der das entsprechende Applet enthält:

es handelt sich hier bei um die MAX! Cube LAN-Gateway Software:

MAX! Software Version 1.3.1

MAn kann dort eine Version für WIndows oder MAC runterladen. Nach der Installation hat man im Verzeichnis einige Dateien. Mich interessiert eigentlich nur wie ich die Befehle, die dieses Applet an den "Cube" schickt, selber verschicken kann.

Vielen Dank.

Gruß kami
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G java shell script starten und befehl übergeben Java Basics - Anfänger-Themen 3
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
Viktor A. Kaiser Ampelschaltung mit if-Befehl Java Basics - Anfänger-Themen 11
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
Lion.King switch-Befehl Java Basics - Anfänger-Themen 6
sserio Math. Befehl wird rot markiert Java Basics - Anfänger-Themen 5
F Terminal Windows per Befehl schließen? Java Basics - Anfänger-Themen 9
Y Wie kann man überprüfen, ob bei einem Print Befehl tatsächlich etwas geprintet wurde? Java Basics - Anfänger-Themen 4
H Befehl wird nicht ausgeführt - System.out.println Java Basics - Anfänger-Themen 3
A Scanner Befehl Java Anfänger Java Basics - Anfänger-Themen 8
K Subklassen mit einzigem Befehl addieren Java Basics - Anfänger-Themen 6
F cmd Befehl ausführen Java Basics - Anfänger-Themen 4
S Datenbank Befehl nach Login Java Basics - Anfänger-Themen 5
D Input/Output Befehl aus Benutzereingabe herausfiltern Java Basics - Anfänger-Themen 12
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
N Javac -version der Befehl ist entweder falsch geschrieben oder...... Java Basics - Anfänger-Themen 8
O Methoden Runtime.getRuntime().exec(befehl); Java Basics - Anfänger-Themen 6
L Ist an diesem Befehl irgendwas falsch? Java Basics - Anfänger-Themen 2
F Wieso wird dieser Befehl nicht ausgeführt? (Anfänger) Java Basics - Anfänger-Themen 2
B Copy Paste Befehl Java Basics - Anfänger-Themen 6
O String: Befehl und Wert erkennen. Java Basics - Anfänger-Themen 4
D Erste Schritte Zuul - 2ten Befehl einführen Java Basics - Anfänger-Themen 68
D Erste Schritte Befehl back implementieren Java Basics - Anfänger-Themen 18
elischa unbekannter Befehl zur Compilezeit Java Basics - Anfänger-Themen 22
B Befehl um ein Befehl abzubrechen Java Basics - Anfänger-Themen 2
M Classpath Befehl zum Kompilieren um die Option classpath erweitern. Java Basics - Anfänger-Themen 5
F Konsolen Befehl ausführen und Rückgabe auswerten Java Basics - Anfänger-Themen 3
S Befehl current: Java Basics - Anfänger-Themen 3
Silvascus Void Methode einem Stringparameter im syso-Befehl hinzufügen Java Basics - Anfänger-Themen 3
slejden Erste Schritte der Befehl import Java Basics - Anfänger-Themen 2
C OOP array Sortieren ohne den sort Befehl Java Basics - Anfänger-Themen 10
J Problem WIE ohne Goto-Befehl lösbar? Java Basics - Anfänger-Themen 6
N Benötige eine Alternative für einen GOTO Befehl Java Basics - Anfänger-Themen 2
O CMD Befehl javac Java Basics - Anfänger-Themen 3
U Java Swing Timer mit ButtonKlick starten u. nach 12 Sekunden Befehl ausführen Java Basics - Anfänger-Themen 7
D Klassenmethode: Befehl erkennen, dann int zurückgeben Java Basics - Anfänger-Themen 2
C Desktopiconwechsel ohne Befehl Java Basics - Anfänger-Themen 0
V Schlüsselworte Befehl Ignorieren? Java Basics - Anfänger-Themen 10
B JDK installieren Befehl java funktioniert nicht Java Basics - Anfänger-Themen 15
J Variablen Auf der suche nach einem Befehl Java Basics - Anfänger-Themen 2
M Frage zum return; Befehl Java Basics - Anfänger-Themen 1
C CMD Befehl + Variable im Java-Code ausführen Java Basics - Anfänger-Themen 8
S Methoden auf befehl ausführen Java Basics - Anfänger-Themen 7
iB0T Eine Art Goto Befehl! Java Basics - Anfänger-Themen 27
H Exit Befehl in eigener Konsole Java Basics - Anfänger-Themen 9
D Erste Schritte bash-Befehl mit Swing ausführen Java Basics - Anfänger-Themen 8
A Schlüsselworte Befehl this Java Basics - Anfänger-Themen 8
E CMD Befehl über Java ausführen? Java Basics - Anfänger-Themen 4
E Warum wird Methode nicht durch return-Befehl beendet? Java Basics - Anfänger-Themen 3
D Hilfe zu Java Befehl In.open Java Basics - Anfänger-Themen 2
B Javadoc-Befehl unter Ubuntu Java Basics - Anfänger-Themen 2
I Befehl/Methode "los()" Java Basics - Anfänger-Themen 17
A Befehl gesucht....wie komme ich an Folgendes Objekt? Java Basics - Anfänger-Themen 6
I Return Befehl in Methode Java Basics - Anfänger-Themen 13
S javac Befehl Java Basics - Anfänger-Themen 7
C Befehl zum Verlassen einer Schleife Java Basics - Anfänger-Themen 27
W Befehl ausführen bei Mausklick + gedrückte Strg-Taste Java Basics - Anfänger-Themen 2
B Befehl mit Priorität aufrufen Java Basics - Anfänger-Themen 4
I Befehl wird erst nach dem Ausführen einer Funktion ausgeführt Java Basics - Anfänger-Themen 4
K Problem mit h2 DB Insert Befehl Java Basics - Anfänger-Themen 6
B Befehl für vorselektierten Radiobutton Java Basics - Anfänger-Themen 2
H if-Befehl mit Buttongroup Java Basics - Anfänger-Themen 9
B assert befehl in netbeans Java Basics - Anfänger-Themen 3
M Objekto.Programm. Return-Befehl Java Basics - Anfänger-Themen 4
F Kann String in Befehl wandeln? Java Basics - Anfänger-Themen 12
F Simpler DrawLine - Befehl!? Java Basics - Anfänger-Themen 9
M Befehl zum Einlesen von Benutzereingaben Java Basics - Anfänger-Themen 1
M Befehl zum Fenster schließen? GUI Java Basics - Anfänger-Themen 3
L Do while Befehl verkürzen? Java Basics - Anfänger-Themen 16
-horn- Befehl an CMD übergeben Java Basics - Anfänger-Themen 15
A [Fehlermeldung]Sleep-Befehl Java Basics - Anfänger-Themen 4
B Befehl "javac" wird nicht erkannt Java Basics - Anfänger-Themen 14
S Befehl "javac" funktioniert und Windows 7 nicht? Java Basics - Anfänger-Themen 3
K Terminal Befehl mit Java unter Mac ausführen Java Basics - Anfänger-Themen 18
L Java Persistence API - Update Befehl? Java Basics - Anfänger-Themen 5
X Befehl import Java Basics - Anfänger-Themen 21
Antoras Explizite Typenumwandlung in einem Befehl Java Basics - Anfänger-Themen 3
A Button einen Befehl zuordnen Java Basics - Anfänger-Themen 7
N suche Datums befehl Java Basics - Anfänger-Themen 8
H Problem mit Tastatur Befehl Java Basics - Anfänger-Themen 11
J Kill befehl Java Basics - Anfänger-Themen 44
Z Ant java -classpath befehl Java Basics - Anfänger-Themen 2
X JOptionPane.showMessageDialog(); - Import Befehl? Java Basics - Anfänger-Themen 4
K Befehl um am Anfang einer Methode zu kommen? Java Basics - Anfänger-Themen 9
G Befehl für Ende bei Switch-Auswahl Java Basics - Anfänger-Themen 11
K fehler mit der Befehl Console Java Basics - Anfänger-Themen 3
H Befehl mit Konstruktoren Java Basics - Anfänger-Themen 2
L Leider klappt bei mir ein Befehl nicht Java Basics - Anfänger-Themen 4
P Befehl zum einrücken der textausgabe? Java Basics - Anfänger-Themen 6
A Befehl ausführen beim Schließen der Konsole Java Basics - Anfänger-Themen 3
S Gibt es einen Befehl "Mausklick" o.ä? Java Basics - Anfänger-Themen 6
S Java-Programm ohne -jar Befehl? Java Basics - Anfänger-Themen 9
K Auf File- Befehl warten. Java Basics - Anfänger-Themen 10
T JDK installiert aber der Befehl "javac" funktionie Java Basics - Anfänger-Themen 5
B ItemListener - setText Befehl geht nicht Java Basics - Anfänger-Themen 3
I JNLP - Datenstrom auslesen, Werte berechnen, Befehl automati Java Basics - Anfänger-Themen 6
R auf button klick befehl ausführen Java Basics - Anfänger-Themen 11
G Jar Befehl wird von DOS nicht erkannt Java Basics - Anfänger-Themen 24
G Unix Befehl ps unter Java Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben