Frage

Kennt jemand eine wirklich einfache Art und Weise der Veröffentlichung von Java-Methoden als Web-Services? Ich will nicht wirklich den Aufwand der Verwendung von Tomcat oder Jetty oder einen der anderen Containerrahmen.

Szenario:. Ich habe eine Reihe von Java-Methoden in einer Service-Typ-Anwendung, die ich von anderen Maschinen auf dem lokalen LAN zugreifen möge

War es hilfreich?

Lösung

Nun, Tomcat oder Jetty kann zu viel des Guten nur einige Methoden als Web-Service für die Veröffentlichung. Aber auf der anderen Seite ist es nicht zu kompliziert und sie die Arbeit machen, also warum nicht?

Ich hatte ein ähnliches Problem nicht allzu lange her und verwendet, um einen Tomcat zusammen mit Axis2. Laden Sie einfach Tomcat, entpacken Sie es, stellen Sie die Axis2 WAR. Um einen Webservice zu veröffentlichen, gibt es mehrere aproaches, nahm das, was ich ist wahrscheinlich eines der am einfachsten:

bauen Sie Ihre Anwendung wie gewohnt und die Web-Service-Klasse und Methoden mit den entsprechenden Annotations aus javax.jws mit Anmerkungen versehen. *. Paket alles in ein Glas. Erstellen Sie eine service.xml in META-INF-Verzeichnis Ihrer JAR-Datei und setzt diese hinein:

<service name="name of the service" scope="<one of request, session or application>">
    <description>
    optional description of your service
    </description>

    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </messageReceivers>

    <parameter name="ServiceClass" locked="false">put here the fully qualified name of your service class (e.g. x.y.z.FooService)</parameter>

</service>

Benennen Sie die .jar .aar und legt sie in das / webapps / axis2 / WEB-INF / service / Verzeichnis. Starten Sie Tomcat und der Dienst bereitgestellt werden. Sie können prüfen, ob es durch den Besuch der axis2 Seite läuft ( http: // localhost: 8080 / axis2 / ). siehe Dort finden Sie, welche Dienste bereitgestellt und welche Methoden exportiert werden. Auch können Sie die WSDL-URL erhalten, dort zu Ihren Diensten zu verbinden.

Lesen Sie http://ws.apache.org/axis2/1_4_1/contents. html mehr über Axis2 verwenden. Der Ansatz, den ich hier beschrieben wird, nicht genau wie dieses in der Dokumentation gefunden, aber es funktioniert sehr gut.

Update: Wenn Sie nur Web-Service zur Verfügung stellen wollen und wirklich brauchen nicht eine der anderen Funktionen von Tomcat (zB von einfachen alten Web-Seiten dienen, JSPs oder andere Sachen), können Sie verwendet auch die Axis2 eigenständigen Server. Aber mit Ausnahme des Setup-Teil ändert es nicht alles, was ich beschrieben.

Ich habe eine etwas ausführlichere Version dieses geschrieben, die zu finden sind: http://www.slashslash.de/lang/en/2008/10/java-webservices-mit-apache-tomcat-und-axis2/ (nicht die deutsche in URL lassen reizen Sie, es auf Englisch geschrieben)

Andere Tipps

Web-Service ist abhängig von HTTP. Sie werden vielleicht nicht Kater oder Jetty wollen. In diesem Fall müssen Sie HTTP selbst implementieren.

Erhm. Warum nicht einfach benutzen RMI ?

Jetty ist ziemlich leicht. Ansonsten denke ich, XML-RPC Ihre einzige vernünftige Option ist.

Die simplier Lösung als die, die Simon discribed hat, ist die Tools zu verwenden, die alrady das tun. Wenn Sie Eclipse verwenden könnten Sie http: //ws.apache .org / axis2 / tools / 1_2 / eclipse / servicearchiver-plugin.html

AAR-Datei zu erzeugen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top