2016-04-02 4 views
0

ausführen Ich habe eine komplizierte .jar-Datei, die ich auf azurblau (C# ASP.NET) ausführen muss. Auf meinem lokalen System führe ich einfach java.exe aus und übergebe es dem Jar als Argument. Ich möchte das gleiche auf dem Server tun, aber ich weiß nicht, wo sich java.exe befindet.Wie kann ich eine .jar-Datei auf azurblauen

Ich habe mir die Umgebungsvariablen angeschaut und viele jdk- und jre-Referenzen gefunden, also nehme ich an, dass es möglich ist.

Ich kann nicht ikvm verwenden, da das Glas zu komplex ist, dass es nicht richtig ausgeführt wird.

Also, als Zusammenfassung: Wo befindet sich die java.exe auf azurblau? Und wenn es nicht ist (und ich kann das nicht), was kann ich noch tun?

EDIT:

Um mehr zu klären: Ich habe einen Web-App entwickle ASP.NET verwenden. Ich habe eine .jar-Datei, die ich ausführen müssen, und auf der lokalen Maschine Ich betreibe es mit:

processStartInfo = new ProcessStartInfo("java"); 
processStartInfo.Arguments = arguments; 
//more options 
Process process = new Process(); 
process.StartInfo = processStartInfo; 

process.Start(); 
process.WaitForExit(); 

Jetzt bin Veröffentlichung ich diese Website zu Microsofts Azure-Dienste, und ich möchte die gleiche Sache tun. Außer, es zu laufen, sagt mir, dass der Prozess nicht ausgeführt werden kann (dh sie verstehen nicht, was "Java" ist). Ich möchte einen Weg finden, Java als einen Prozess bezeichnen zu können. Offensichtlich, wenn ich den Pfad zu java.exe kenne, führe ich einfach den Pfad als einen Befehl aus und ich werde fertig sein (dh es wird Java ausführen). Dazu brauche ich Hilfe.

+0

Was "azurblau"? AzureVM, Azure WorkerRole, AzureWebRole? – derpirscher

Antwort

2

Wie derpirscher im Kommentar erwähnt, haben Sie nicht angegeben, welche Art von Azure-Service Sie verwenden möchten, und Sie haben nicht die Art Ihres Java-Codes angegeben (hört er auf eingehende Verbindungen auf einem Port?) mit irgendwelchen externen Diensten sprechen? usw.). Mehr Informationen würden uns helfen, Ihnen eine bessere Antwort zu geben.

Das sagte ... eine Option für den Anfang würde Azure Web Jobs sein, die es Ihnen ermöglichen, laden und ausführen (unter anderen Optionen) eine Java .jar-Datei:

Azure Web Jobs overview

Als Info Wenn dieser Link anzeigt, können Sie auf Anforderung, kontinuierlich oder in regelmäßigen Abständen ausgeführt werden. Einige weitere Details hier:

Executing Java Web Jobs on Azure

Weitere allgemeine Informationen über beide Ausführen von Java-Code auf Azure und die Interaktion auch mit Azure-Dienste aus Java-Code finden Sie hier:

Azure Java Dev Center

Speziell Hier sind einige zusätzliche Bereitstellungsoptionen, die über Web-Jobs hinausgehen:

Deploying Java code on Azure

Viel Glück!

EDIT basierend auf weiteres Feedback:

Also, wenn ich zu verstehen, möchten Sie eine Java .jar-Datei aufrufen, indem Sie einen neuen Prozess von einer ASP.NET-Anwendung Laichen, wenn ein Benutzer eine bestimmte Abfrage eingibt, etc.?

Ich kann mir zwei mögliche Optionen:

  1. -Host ASP.NET-Anwendung und die .jar auf einer Azure virtuellen Maschine, die Sie mit der richtigen Version von Java anpassen, usw. Auf diese Weise könnten Sie um Java so zu konfigurieren, wie Sie möchten, auf welchem ​​Pfad Sie wollen usw.

  2. Entkoppeln Sie die Ressourcen zum Hosten Ihrer ASP.NET-Anwendung von denen, die zum Aufrufen des Java-Codes verwendet werden, indem Sie beispielsweise Ihre Site als Azure hosten Web App und Schreiben einer Nachricht von dort in eine Azure-Speicherwarteschlange jedes Mal, wenn der Java-Code ausgeführt werden soll. Auf der Empfangsseite der Warteschlange ist ein Azure-Web-Job konfiguriert, der auf diese Warteschlange wartet und bei jeder neuen Nachricht die JAR-Datei ausführt.

Triggering a Web Job from an Azure Queue

Im Allgemeinen Option 2 wird von einer Skalierbarkeit und pures Design Sicht vorzuziehen sein (Sie die Anliegen der Annahme Anfragen zu trennen erlaubt gegen deren Verarbeitung, richten Kosten, die unmittelbar mit den tatsächlichen Ressourcenverbrauch, usw.), aber Option 1 ist vielleicht einfacher aus der Perspektive von jemandem, der mit Azure oder Cloud-Architektur nicht vertraut ist.

Nur wissen, dass abhängig von der Art der Verarbeitung, die Anzahl der erwarteten gleichzeitige Benutzer, etc. eine akzeptable VM-basierte Lösung teurer als etwas sein kann, ähnlich wie Option 1 oben. Wie so viele Dinge in der Cloud, ist es letztlich ein Kompromiss zwischen Zeit und Aufwand, den Sie hier machen müssen.

+0

Hallo, und danke für die Antwort. Diese passen nicht genau zu meinen Bedürfnissen (da ich das Applet basierend auf Eingaben von Benutzern ausführe, so dass es jedes Mal ausgeführt wird, wenn eine bestimmte Frage gestellt wird, usw.). Ich habe die Frage aktualisiert, um genauer zu sein, vielleicht kannst du mir jetzt die Antwort geben, die ich suche :)? –

1

Annahme, dass Ihre Anwendung in C#/ASP.NET auf Azure App Service wie Azure WebApp ausgeführt wurde. Damit Sie über die URL https://<your-webapp-name>.scm.azurewebsites.net/DebugConsole auf die Kudu-Konsole zugreifen können, können Sie cd ..\"Program Files (x86)"\Java befehlen, zum Pfad der Sammlung von Java SDKs für verschiedene Versionen zu wechseln.

Bitte versuchen Sie den absoluten Pfad für java.exe (wie D:\\Program Files (x86)\\Java\\jdk<version\\bin\\java.exe>) als Argument für die C# -Klasse ProcessStartInfo zu verwenden.

Ich empfehle jedoch immer noch, dass Sie versuchen könnten, die Anwendung mithilfe von Azure VM bereitzustellen und die App über die entsprechenden Umgebungsvariablen auf der VM auszuführen.

Verwandte Themen