Autor Thema: Webservice in Eclipse entwickeln  (Gelesen 6796 mal)

Offline Mark³

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
  • Nordisch by Nature
    • Das Leben aus der Sicht eines Menschen
Webservice in Eclipse entwickeln
« am: 04.04.07 - 16:01:54 »
Ich möchte einen kleinen Webservice in Eclipse bauen, der mir Personendaten in einem Drittsystem anlegt.
In der Eclipse-Hilfe hab ich gelesen, dass man das am besten top-bottom macht und erst das WSDL anlegt. Dabei stürzte mir Eclipse 3.2 mehrmals ab, irgendwann hatte ich dann ein WSDL fertig und hab mir daraus ein Java-Rumpf generieren lassen. Das Binding hat meine Typen immer als Target 'www.example.org/Person' gemacht. Was soll hier eigentlich rein? Muss das eine real zugängliche URL sein wo das Schema abgelegt wird? Das wäre ja blöd für Testserver und Produktivserver...Naja jedenfalls ahtte ich diverse Verständnisprobleme und will es nun doch lieber bottom-up machen weil das für Anfänger einfacher sein soll (ganz einfach wäre es natürlich in Notes 7 aber das scheidet hier aus)
Nun brauche ich also eine JavaBean aus der ich mir den Webservice generieren lasse. Aber wie soll die Bean aussehen?
Mein Webservice soll Personendaten empfangen und liefern können und Methoden wie 'Neue Person' und 'Person anzeigen' haben. Nehme ich nun document oder RPC/literal für den WebService (WS) ? Und wie übergebe ich dann die Variablen? Hat meine PersonBean die Membervariablen Name, Vorname, Telefon etc oder nehme ich ein Interface dafür oder getter und setter?
sagt Mark.



slowfood.de

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Webservice in Eclipse entwickeln
« Antwort #1 am: 05.04.07 - 00:49:58 »
Ich möchte einen kleinen Webservice in Eclipse bauen, der mir Personendaten in einem Drittsystem anlegt.
In der Eclipse-Hilfe hab ich gelesen, dass man das am besten top-bottom macht und erst das WSDL anlegt.
Theoretisch richtig. Ich find aber WSDLs wirklich nicht einfach zu schreiben.
Zitat
Dabei stürzte mir Eclipse 3.2 mehrmals ab, irgendwann hatte ich dann ein WSDL fertig und hab mir daraus ein Java-Rumpf generieren lassen. Das Binding hat meine Typen immer als Target 'www.example.org/Person' gemacht. Was soll hier eigentlich rein? Muss das eine real zugängliche URL sein wo das Schema abgelegt wird?
Zu faul zum nachschauen. Afaik erzeugt man das Schema der Businessdaten implizit im WSDL selbst. Kann aber morgen mal nachschlagen, bei WSDLs, auf die ich zugreife.


Zitat
...Naja jedenfalls ahtte ich diverse Verständnisprobleme und
...falls nicht müsstest du dir glaub ich ernsthaft Gedanken um deine geistige Gesundheit machen. Es ist sehr komplex. Gibt eine Menge Tools um WSDLs zu lesen und wohl auch zu schreiben. Z.B. kannst du in Altova XML Spy Enterprise einfach eine WSDL übergeben und der erzeugt dann eine Beispiel-SOAP Nachricht für diese WSDL. Ohne das Teil wäre ich wahnsinnig geworden. Ich programmiere einen Webservice Client auf Tomcat gegen SAP Application Server. Auf der SAP Seite erzeugen die WSDLs automatisch aus RFCs.
Zitat
will es nun doch lieber bottom-up machen weil das für Anfänger einfacher sein soll (ganz einfach wäre es natürlich in Notes 7 aber das scheidet hier aus)
Ohne Tools präferiere ich POX. Plain Old XML Webservices. Du schickst einfach eine XML Nachricht mit jakarta HTTP Client an einen Server, der parst sie, verarbeitet die Daten, erzeugt ein XML und schickt es zurück.
Ich glaub die Eclipse Sachen basieren noch auf axis1. Axis2 ist echt besser. Oder Xfire.
Hab festgestellt: Was man wirklich braucht, ist ein Binding Framework wie JAXB. Auch mit Pox. Oder ein selbstgeschriebenes. Du willst nicht wirklich in deinen Business-Objekten xml parsen. Dann sind es nämlich keine Business Objekte mehr sondern Chaos.
Zitat
Nun brauche ich also eine JavaBean aus der ich mir den Webservice generieren lasse. Aber wie soll die Bean aussehen?
Konstruktor ohne Parameter und ein paar private Felder, die mit public get und set Methoden gefüllt und ausgelesen werden. Das ist alles.
Zitat
Mein Webservice soll Personendaten empfangen und liefern können und Methoden wie 'Neue Person' und 'Person anzeigen' haben. Nehme ich nun document oder RPC/literal für den WebService (WS) ?
Nimm einfach eins von den beiden. So richtig hab ich den Unterschied selbst noch nicht kapiert. Wichtig ist, nicht "encoding' zu nehmen.
Zitat
Und wie übergebe ich dann die Variablen? Hat meine PersonBean die Membervariablen Name, Vorname, Telefon etc oder nehme ich ein Interface dafür oder getter und setter?
Da kümmert sich das Binding Framework drum. Ansonsten einfach ein JavaBean wie oben beschrieben.

Wichtig für meine Praxis ist, WSDL einigermassen lesen zu können. Das ist in verschiedenen Büchern beschrieben. Die SOAP Nachrichten selbst sind einfach nur XML. Ich greif z.B. auf document-literal Daten von einem SAP Application Server mit jakarta.commons.HTTP, SAX und einem selbst geschriebenen Binding Framework drauf zu. Geht auch. Ist stabil und hat seine Gründe.

Leute, die WSDL von Hand schreiben, gehen sicher von funktionierenden Beispiel-WSDLs aus. Sonst ist das echt zu komplex, ausser man hat das schon ein paar mal gemacht.

Letztlich gehts ja nur darum Daten in xml zu packen, die an einen Server zu schicken und Daten in xml zurück zu erhalten.


Gruß Axel
« Letzte Änderung: 05.04.07 - 07:10:39 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Mark³

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
  • Nordisch by Nature
    • Das Leben aus der Sicht eines Menschen
Re: Webservice in Eclipse entwickeln
« Antwort #2 am: 05.04.07 - 07:38:12 »
danke, das hilft mir schon mal weiter. Ich möchte möglichst alles in Eclipse machen, da das so schon unübersichtlich genug ist. Aber da wird wohl Axis 1 genommen (muss ich mal nachschauen).
Ich werde das mal mit der JavaBean probieren und mir daraus in Eclipse den Webservice generieren lassen.
sagt Mark.



slowfood.de

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Webservice in Eclipse entwickeln
« Antwort #3 am: 05.04.07 - 07:55:30 »
Von der Baustelle und sozusagen mit dem Presslufthammer:
- Ich hab eine Kette einer erstaunlichen Menge an Überstunden hinter mir.
- SOAP/WSDL sind als Spezifikation leider echt extrem komplex.


- Die Komplexität stört nicht sooo viel, wenn man da einmal praktisch durchgegangen ist (wie gesagt anstrengend).
- Es gibt gute Tools. Du brauchst aber ein gewisses Gespür für die Architektur. Das heisst AFAIK nicht, die SOAP Spec in allen Einzelheiten zu kennen.

Worum gehts?
Systemintegration. Daten zwischen 2 Systemen austauschen in xml.

Was ist die Alternative?
Traditionelle Remote Interfaces für Systemintegration tauschten traditionell Daten immer als Binary aus (CORBA, ODBC/JDBC btw. irgendwie auch oder übrigens auch Remote Function Calls mit einem eigenen Protokoll -> Notes). Binary ist natürlich schneller. Aber heute kann man für viele Fälle den Geschwindigkeitsverlust durch XML-Encoding/Decoding, größere Nachrichten in Kauf nehmen.

Was sind nun die Vorteile gegenüber Binary?
Beide Seiten können die ausgetauschten Nachrichten sehen. Wenn der Mann auf der SAP Seite ein neues Feld in den Response einfügt, kann ich einfach eine SOAP Nachricht reinschicken und sehe dann, was da zusätzlich drin ist. Das ist mit Binary schwieriger.

Was bringt nun dieses WSDL?
Das Interface ist an einer Stelle gut dokumentiert. Z.B. kams vor, dass die auf der SAP Seite den Namen eines requestParameters umbenannt haben. Von ResponsableUser nach ResponsibleUser. Vielleicht haben die das in einer der zahlreichen Emails erwähnt. Vielleicht haben dies auch vergessen mir mitzuteilen. Egal. Sobald ich merke, dass mein Integrationstest nicht mehr funktioniert, kann ich ins WSDL schauen und das nicht mal mehr diskutieren. So solls sein.

Bewährt hat sich bei mir eine Reihe an Integrationstests, die die Webservices aufrufen und Daten zurückliefern. Ich habs mit JUnit gemacht. Sobald sich das stabilisiert, schreib ich da noch ein paar assertEqual() für Regressions-Tests. Aus Eclipse starte ich schon jetzt einfach die Testklasse, die alle SOAP Calls hintereinander ausführt. Zur Zeit wird da aber einfach die eingehenden und ausgehenden XML Nachrichten per System.out.println ausgegeben. Wichtig ist, dass die Nachrichten zumindest irgendwo gut formatiert angezeigt werden können. Die Felder wechseln sich einfach noch zu oft gewechselt, so dass ichs erst später per assertEquals absichere.

Wo muss man aufpassen?
Encoding der Nachrichten. Ich hatte eine Situation, in der ich dachte ich würd UTF-8 an den Server schicken, war aber ISO_8859_1. Der XML Parser des Webservices auf dem Server kann das dann nicht mehr parsen. Gibt eine "wrong character for encoding"-Response. Hab dann aber gesehen, dass eine meiner Libraries defaultmässig ISO_8859_1 verwendete und musste das umstellen. Neuere Libraries verwenden default-mässig eigentlich immer UTF-8.
Premature End of File Exception ist eine typische Fehlermeldung von ich glaub v.a. SAX Parsern. Kann allesmögliche heissen. Z.B. das der Testserver nicht läuft. Don't panic.
« Letzte Änderung: 05.04.07 - 08:17:22 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Webservice in Eclipse entwickeln
« Antwort #4 am: 09.04.07 - 19:11:33 »
XFire hat auch ein eclipse-plugin.
http://xfire.codehaus.org/
Auf der Seite sind Tutorials verlinkt. Das hab ich mal ausprobiert und funktioniert.
Das für mich sympathische an Java ist ja gerade, dass es nicht den "offiziellen" Weg für eine Technologie gibt. Das ist mehr ein Bazar, auf den konkurrierende Lösungen geschmissen werden.
Axis2 und Codehaus XFire sind Fortschritte gegenüber Axis1, die es dem Anwendungsentwickler v.a. auch einfacher machen. Du bekommst xml noch nicht mal zu Gesicht bei den XFire Anfängertutorials und das ist gut so.
Der Markt akzeptiert den Bazar-Charakter. In vielen Banken wird heute XFire präferiert. Den endgültigen Durchbruch für die Akzeptanz für diese Art des Bazars schafften wohl Spring und JBoss.
« Letzte Änderung: 09.04.07 - 21:12:03 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Mark³

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
  • Nordisch by Nature
    • Das Leben aus der Sicht eines Menschen
Re: Webservice in Eclipse entwickeln
« Antwort #5 am: 12.04.07 - 09:45:02 »
ich will das nun doch in Axis 1 und Eclipse WTP zum Laufen bekommen. EIgentlich ist mein Webservice auch fertig, nur zum Deployen habe ich Fragen:

Auf dem Tomcat habe ich Axis installiert. In meinem Dynamischen Web-Projekt ist aber auch irgendwie axis mit drin. Brauche ich das doppelt? Unter webapp-Libraries taucht auch axis.jar auf. Die liegen aber auch schon auf dem Tomcat?

Das Generieren aus einer Javabean klappt nun scheinbar, allerdings weitere Schritte im Webservice-Wizard in Eclipse führen immer zum Absturz von Eclipse (3.2) . Wie deploye ich nun den Webservice? Geht das irgendwie ohne Handarbeit? Schliesslich habe ich in Eclipse schon eine .wsdl und eine deploy.wsdd erhalten. Wenn ich das ganze Projekt als .war auf Tomcat installiere scheint das nicht zu reichen. Muss ich nun irgendwelche Axis-Befehle an der Konsole in Tomcat ausführen mit meiner deploy.wsdd? Ich finde das ganze noch unnötig kompliziert. Eine Webanwendung mit .war ist doch auch kinderleicht zu installieren, wieso geht das nicht mit Webservices? Oder ist NetBeans da besser als Eclipse? XFire hab ich mal überflogen aber das sieht auch nicht sonderlich einfacher aus...
sagt Mark.



slowfood.de

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Webservice in Eclipse entwickeln
« Antwort #6 am: 12.04.07 - 11:14:55 »

Auf dem Tomcat habe ich Axis installiert. In meinem Dynamischen Web-Projekt ist aber auch irgendwie axis mit drin. Brauche ich das doppelt? Unter webapp-Libraries taucht auch axis.jar auf. Die liegen aber auch schon auf dem Tomcat?
Doppelt ist bei jars eigentlich gefährlich. Lösch am besten axis.jar aus den webapp-libraries oder überprüfe, ob beide jars die selbe Version haben. Dann ist es für Tests erstmal egal.
Zitat
, allerdings weitere Schritte im Webservice-Wizard in Eclipse führen immer zum Absturz von Eclipse (3.2) . Wie deploye ich nun den Webservice?
Verlmutlich beruht das auf DOM Operationen, die massiv Speicher brauchen. Versuch mal der VM von Eclipse mehr Speicher zu geben. (starte mit eclipse.exe -vmargs -Xmx512M -Xms512M ). Wenn du auf deiner Arbeitsoberfläche eine Eclipse Verknüpfung hast, kannst du dort auch die Startparameter im Feld Ziel des 2. Reiters eingeben. (Rechte MT auf Eclipse Icon, Eigenschaften auswählen).
Zitat

Geht das irgendwie ohne Handarbeit? Schliesslich habe ich in Eclipse schon eine .wsdl und eine deploy.wsdd erhalten. Wenn ich das ganze Projekt als .war auf Tomcat installiere scheint das nicht zu reichen. Muss ich nun irgendwelche Axis-Befehle an der Konsole in Tomcat ausführen mit meiner deploy.wsdd?

Wenn ich mich recht erinnere ging das relativ automatisch. Es gibt aber in Axis Projekten auch automatisch so Management Seiten, die Übersicht verschaffen.
Zitat
Oder ist NetBeans da besser als Eclipse?
Kann definitiv sein.
Zitat

XFire hab ich mal überflogen aber das sieht auch nicht sonderlich einfacher aus...
doch. find ich schon. Es gibt aber für beides step by step Tutorials, die zu Ergebnissen führen.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Webservice in Eclipse entwickeln
« Antwort #7 am: 12.04.07 - 11:45:58 »
XFire hab ich mal überflogen aber das sieht auch nicht sonderlich einfacher aus...
http://xfire.codehaus.org/Quick+Start
Das hab ich selbst mal durchgespielt. Das Projekt ist mit Dan Diephouse, Arjen Poutsma und Hani Suleiman als Commiter. Kann folglich überhaupt nicht sein. Hmm ??? Jetzt wo ich das schreibe. War da nicht was damit, dass bestimmten wichtige Dateien im Kurztutorial nicht erwähnt waren, aber im Source Ordner des Projektsdownloads, der im Kurztutorial nicht erwähnt wird? ;D Und ein Problem mit dem default XML Parser bei der "most exotic" Kombination Java5 und Tomcat5.5?  ;D
Ich supporte das aber gerne.
« Letzte Änderung: 12.04.07 - 11:50:29 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Mark³

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
  • Nordisch by Nature
    • Das Leben aus der Sicht eines Menschen
Re: Webservice in Eclipse entwickeln
« Antwort #8 am: 12.04.07 - 11:58:01 »
das xfire-Quickstart sieht einfach aus, das mit den nicht erwähnten Dateien kann ich mir allerdings gut vorstellen. Und wenn ich statt Maven 2 einfach in Tomcat die wars deploye klappt das dann auch?
sagt Mark.



slowfood.de

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Webservice in Eclipse entwickeln
« Antwort #9 am: 12.04.07 - 12:09:53 »
Klar. Persönlich bin ich sehr Maven-skeptisch ohne davon viel Ahnung zu haben. Macht der Kollege Dirk hier. Ist aber noch nicht produktiv.
Hier zur allgemeinen Unterhaltung noch eins der unzähligen Maven Kommentare eines der Commiter von XFire:
Zitat
I do feel some pity for the maven guys. They’re clearly a bunch of happyclappy clueless well intentioned oss hippie types who are being ruthlessly exploited into thinking they’ve achieved oss nirvana. You poor bastards are going to have a rude rude awakening in a year or so once your seed money runs out, and you’re back to whoring yourself on shitty little IT gigs and, no doubt, churning out more shitfests in the hope of ‘making it big.’
(Quelle: http://www.bileblog.org/?p=59)
« Letzte Änderung: 12.04.07 - 12:19:40 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Webservice in Eclipse entwickeln
« Antwort #10 am: 24.04.07 - 17:14:39 »
Manchmal sollte man auch in die merkwürdigste Institution eines seltsamen Multis schauen.
Hier kanns nur um eins gehen: Developerworks Java.
http://www-128.ibm.com/developerworks/library/x-jibx1/
Sieht sehr gut aus.
Laut amazon ist übrigens auch das gerade erschienene deutsche axis2 Buch zu mir unterwegs (es gibt nur eins).
Auf Developerworks Java gibts eine Menge interessante Tutorials. Zu 95% gehts da über openSource Produkte, Frameworks, Tools. Das kann man noch verstehen. Aber zu ca. 40% behandeln die Tutorials Produkte, mit denen IBM überhaupt nix zu tun hat (z.B. Spring, JBoss, Google Web Toolkit).  ???
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Webservice in Eclipse entwickeln
« Antwort #11 am: 25.04.07 - 07:38:58 »
Oder ist NetBeans da besser als Eclipse?
Werd das demnächst mal entschlossener ausprobieren. Weiss nur nicht wann.
Der sehr glaubwürdige Adam Bien propagiert seit ca. 1 Jahr Netbeans. Gerade für so Enterprise Zeugs wie Webservices scheint es einen weniger "fragmentierten" Character als Eclipse zu haben. Wobei ich da persönlich in Eclipse auf wenig Probleme stosse. Ich nutze da aber dann oft die preiswerte plug-in Sammlung myEclipse. Selbst für Servlet/JSP Projekte auf Tomcat komm ich damit inzwischen besser klar als mit puren Eclipse Web Tools Platform.
Es gibt nun ein Buch von Adam Myatt zu Netbeans und Enterprise Programming. Sobald ich mich entschlossen mit EJB3 beschäftige, werd ich mir das kaufen. Da gehts aber auch über Webservices. Hier ist ein Interview von Roman Strobl (tschechisches technisches Marketing für Netbeans, Netbeans ist tschechisch) mit dem Autor des Buchs. http://feeds.feedburner.com/netbeanspod (Episode 27).
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz