# Axis, XFire, XINS oder was ganz anderes? Was benutzen?



## Jockel (26. Nov 2006)

Moin,

ich habe hier eine (funktionierende) Web-Anwendung, wozu es jetzt allerdings  einen Destkop-Client geben soll, mit dem sich die Kernfunktionalitäten benutzen lassen. Mein Problem ist, dass dies am Anfang nicht vorgesehen war und somit bei der Entwicklung auch nicht berücksichtigt wurde. Allerdings befinde ich mich in der glücklichen Lage, dass ich genügend Zeit habe, um die Web-Anwendung grundlegend zu ändern.
Ein zweiter Punkt der hinzugekommen ist: wenn die Anwendung eh schon umgeschrieben werden soll, dann doch bitte so, dass sie auch verteilt auf mehreren Rechnern laufen kann, so dass genügend Spielraum zur Skalierung zur Verfügung steht, sollte die Web-Anwendung doch irgendwann mal ein gewisses Maß an Benutzeraktivität überschreiten.

Meine Frage ist nun: wie setze ich das am besten um? 

Da die Anwendung bisher rein Servlet-basiert ist, wird bisher auch kein AS benötigt. (Als Container kommt Tomcat zum Einsatz). EJBs scheinen zwar mit der 3er Spezifikation wesentlich einfacher geworden zu sein, aber irgendwie konnte ich mich mit diesem Gedanken noch nicht ganz anfreunden (auch bezüglich der höheren Hardware-Anforderungen).

Also habe ich mir zunächst Webservices angeschaut. Besser gesagt den Platzhirschen: Axis2. Aber mein erster Versuch, einen Webservice zu basteln, der einen einfachen String zurückgibt, dauerte geschlagene 3 Stunden. Und bei meiner Suche nach einer Alternative kam auch immer wieder das Argument, dass Axis doch recht langsam sei.

Während meiner Suche bin ich dann noch auf XFire, XINS, JWSDP und JAX-WS gestolpert. Nur einen direkten Vergleich bezüglich Stärken und Schwächen konnte ich nicht finden. Zur Zeit schwanke ich irgendwie zwischen XFire und XINS. Da ich aber keine Ahnung habe, dachte ich, dass mir hier jemand vielleicht einen Rat geben kann.

Zusammenfassend suche ich eine Möglichkeit, womit ich meine Web-Anwendung skalierbar machen und die Kernfunktionalitäten anderen zur Vergügung stellen kann. Und das möglichst einfach! Zeit und Technologien spielen dabei (fast) keine Rolle (bin z.B. an keine Java-Version gebunden).

Hoffe ich bekomme hier ein paar helfende Antworten, da ich das Gefühl habe, dass SOA in aller Munde ist, aber keiner wirklich darüber bescheid weiß :-/


----------



## tec1 (27. Nov 2006)

Zur Skalierbarkeit kann ich dir nur sagen, dass da ein Loadbalancer alles für dich regelt. Mehrere Tomcats und der Lodabalancer entscheidet, welcher Tomcat verwendet wird. Wenn du dann noch einen Apache für die statischen Inhalte (normale HTML-Seiten. Bilder, etc.) verwendest, kannst du auch noch die Tomcats entlasten, macht aber nur Sinn bei entsprechend vielen statischen Inhalten.


----------



## SnooP (27. Nov 2006)

Jo... entweder du machst es so wie oben... verwende einen Loadbalance, lass alles beim Alten und erstelle eine entsprechende Fassade die als Endpoint eines Webservices genutzt werden kann, so dass du mit allen möglichen Clients auf die Funktionalitäten deiner Webapp zugreifen kannst...

ooooder du benutzt doch EJB ... das ganze klingt eigentlich doch sehr danach  ... gerade das du mehrere Views haben möchtest, riecht dann förmlich nach EJB. Ist natürlich die Frage, wie komplex deine Webapp ist, dass sich das tatsächlich lohnen tut...
das ganze lässt sich dann manuell oder automatisch skalieren, je nach App-Server.

zur Performance von Axis... ich kann dir da zwar keine Beweise liefern... - aber ich kann mir nicht vorstellen, dass sich die Geschwindigkeit großartig unterscheiden tut, wenn man nicht ganz skurrile Dinge tuen möchte... letztlich sprechen alle WS auch nur SOAP und Axis ist auch nichts weiter als nen Servlet


----------



## Jockel (28. Nov 2006)

Man dankt schon mal für die zwei Antworten. 

Das mit dem Load-Balancer werde ich mir nochmal genauer anschauen. Da ich (bisher) so gut wie keine statischen Inhalte habe, werde ich wohl keinen Apachen benötigen, behalte ich aber im Hinterkopf, falls sich das doch noch mal ändert.

Bezüglich der Performance von Axis: ich kann ja nur das weitergeben, was ich während meiner Suche gelesen habe. Fundierte Zahlen kann ich dabei aber auch nicht vorlegen. (Den einzigen Link, den ich jetzt auf die schnelle finde, wo ich das unter anderem gelesen habe, war hier (in den Kommentaren): http://www.theserverside.com/news/thread.tss?thread_id=40417)

Nur bleibt bei mir immer noch die eigentlich ursprüngliche Frage... 
Der Grund, warum ich mich etwas gegen EJBs sträube, ist, dass ich mich zum einen in EJBs einarbeiten müsste und zum anderen mich mit einem AS vertraut machen müsste... oder ist die Konfiguration mittlerweile so einfach geworden? (Dann würde natürlich noch die Frage bleiben, welchen denn man nun benutzt. Wenn ich das recht überblicke, teilt sich der Markt bei den OpenSource-Produkten unter JBoss, Jonas, Glassfish und Geronimo auf).

Mein gefährliches Halbwissen lässt mich nun also immer noch glauben, dass ich mit Webservices schneller ans Ziel komme. Daher nochmal die Frage: hat irgendwer Erfahrungen mit XFire, XINS, JWSDP und / oder JAX-WS gemacht und könnte etwas davon berichten?


----------



## tec1 (28. Nov 2006)

Im aktuellen Javamagazin ist ein etwas umfangreicherer Artikel zu XFire. Fazit, gut und schnell aber noch jung, was aber nicht mit unausgereift verwechselt werden sollte.

P.S. Wenn Du nicht weisst ob du EJB's brauchst, dann brauchst du sie wahrscheinlich auch nicht. Ich komme mit Hibernate und Spring auf nem Tomcat sehr gut aus.


----------



## miketech (28. Nov 2006)

Jaja, das übliche Problem  Was soll ich nur nehmen? 

Also ich habe bisher nur ein wenig mit Axis 1.x gemacht und bisher hats gereicht. Die IDE "MyEclipse" setzt z.B. auf XFire. (http://myeclipseide.com/) Vielleicht ist das ja noch was für Dich? Vielleicht gehts damit ja leichter und so teuer ist MyEclipse glaub ich nicht. Ansonsten kann ich auch nur sagen, dass Du mit einem LoadBalancer wohl ganz gut aufgehoben ist. Alles andere ist zwar schön und gut, aber wahrscheinlich zuviel des guten.

Aber ich bin trotzdem interessiert, wenn noch jemand etwas zu JAX-WS usw. sagen kann.

Gruß

Mike


----------



## Jockel (29. Nov 2006)

Danke für die weiteren Antworten.

@tec:
Den Artikel habe ich auch schon gelesen (wo auch die Performance hervorgehoben wurde). Nur steht da drin, dass es eine gute Sache ist, warum man sich nun aber für XFire entscheiden sollte, steht da leider nicht wirklich.

@mike:
Eclipse... hm... ehrlich gesagt tausche ich mein Netbeans nicht gegen Eclipse ein. (Möchte hier keinen Streit über IDEs lostreten, habe Eclipse selber für mehrere Monate verwenden müssen, aber für mich persönlich kommt das überhaupt nicht in Frage).

@all:
Wie es sich bei meiner bisherigen Suche schon angedeutet hat, scheinen (vergleichende) Erfahrungsberichte ziemlich rar zu sein. Ich denke, ich werde wohl einfach mal anfangen und ein paar Webservices mit XFire und ein paar mit JAX-WS schreiben und dann meinen Bauch entscheiden lassen (wobei mir ein paar Erfahrungswerte lieber gewesen wären, um spätere böse Überaschungen zu vermeiden).


----------



## miketech (29. Nov 2006)

Hi Jockel,

würde mich freuen, wenn Du eventuelle Untersuchungsergebnisse posten würdest. Bin daran ebenfalls sehr interessiert, wo Vorteile/Nachteile liegen. 

Den JAX-WS Ansatz finde ich rein vom Aufwand her betrachtet ganz schick. Aber mal eben ein Tutorial überfliegen ist doch wieder was anderes, wie wenn man sich damit mal wirklich auseinandersetzen muss.

Gruß

Mike


----------

