webové služby

Oto Buchta tapik na systinet.com
Středa Leden 25 22:28:17 CET 2006


On Wednesday 25 of January 2006 18:43, Martin Kuba wrote:
> Tomáš Procházka wrote:
> > Zdravím.
> >
> > Máte někdo zkušenosti s nějakým systémem pro webové služby?
>
> Co nevidet odepise Oto Buchta ze nejlepsi je WASP od jejich firmy :-)

Kupodivu, Makube, nemam v umyslu zbytecne delat WASPu reklamu, pozitri mame 
release uplne nove platformy, takze ...
Navic od predminuleho minuleho pondelka bych mohl skutecne napsat ze od 
moji ;-) Ale nema smysl zabihat do takovych extremu ;-)

> Systemu pro webove sluzby je spousta, ale pokud chcete nejaky
> v Jave a zadarmo, uz jste sve favority nasel.

No, ono je jich daleko vic stejne pouzitelnych jako ony dva zminene. Podle 
zakulisnich informaci IBM, ktera drzela ochranou ruku nad vyvojem mnoha Java 
projektu na Apachi (viz kompletni prepis Xerces2, kde v javadocu temer kazde 
tridy najdete @autor .*@ibm.com) odmitla pred rokem a pul dale pokracovat ve 
vyvoji obou Axisu. Duvod je prosty: podivejte se na API Indiga a zjistite, ze 
by Axis potreboval uplne novy prepis a ten dela interne IBM pro WebSphere. 
Indigo je take duvod, proc mnoho SOAP Stack oriented firem konci. Pro nas, 
linuxare, je to smutna zprava, ale velke pronajimane clustery longhornu 
honicich stateless webservisy je vize, ktera nema daleko k uskutecneni.

> > Osobně vím o dvou:
> > http://ws.apache.org/axis/ a novější http://ws.apache.org/axis2/
> > a pak http://jax-ws.dev.java.net/
> >
> > Pokud někdo máte zkušenosti s oběma? Který je lepší?
>
> Mam zkusenosti jenom s Axis 1, a potom s gSOAP, ktery je pro C/C++.
> Axis 1 neni nic moc. Ale o SUNi implementaci jsem slysel
> jeste horsi veci.

Ano. Axis 1 je humus a SUNi referencni implementace JAX* jsou uplne, jak se to 
rekne slusne, no proste jsou k nicemu jiz pri zatezi 5 zprav za sekundu.
>
> > Já mám zatím praktické zkušenosti pouze z Axis, kde mám však jeden
> > problém. Jakmile se pokusím z webové služby vrátit kolekci typu HashMap,
> > dostanu místo toho záporné hodně velké Long číslo. Přitom odpověď ze
> > serveru obsahuje správně kolekci. Setkal se s tím už někdo?
>
> Chyba je v tom, ze se pokousite vratit HashMap. Prectete si
> http://www-128.ibm.com/developerworks/java/library/ws-tip-j2eenet1/
> a pochopite proc. Strucne - pouzivejte document/literal styl
> a tedy konstrukce povolene v XML Schema. Kdyz se budete
> snazit posilat konstrukce z konkretniho programovaciho
> jazyka, splacete nad vydelkem. Takze pro HashMap
> zvolte nejake pekne vyjadreni v XML, treba
> <mapa>
>   <klic>a</klic><hodnota>b</hodnota>
>   <klic>c</klic><hodnota>d</hodnota>
> </mapa>
> a toho se drzte.

Naprosty souhlas. Vsem vyvojarum zacinajicim v WebServisama bych doporucil: 
naucte se XML Schema, naucte se WSDL, sezente si nastroj, ktery umi 
XMLSchema2Java nebo XMLSchema2WSDL a WSDL2Java. Usetri Vam to spoustu, ale 
opravdu spoustu neprijemnosti. (Navic misto document/literal pouzivejte 
wrapped doclit, protoze to je to, co jedine umi korektne honit MS :-( Jojo, 
featury jsou pekna vec, ale interoperabilita s MS je ve svete SOAPu vzdy na 
prvnim miste :-( )

Je totiz se potreba naucit, ze komunikacnim jazykem sveta WS-* je XML podle 
XMLSchematu. Tam se musi ztratit veci typu null misto Integer, null misto 
prazdneho pole, dedicnost na tridach, rekurzivni struktury (treba obousmerny 
spojovy seznam, pokud vim, neumi zaserializovat nikdo) atd. Az si toto 
uvedomite, zjistite, ze se budete divat po SOAPovych implementacich podle 
specky, kterou podporuji. V tomto je na tom dobre prave Axis2, nebot je casto 
pouzivan jako referencni implementace nekterych specifikaci (coz na druhou 
stranu casto znamena, ze ta nejhorsi :-( )

Pokud nepotrebujete nic vic, nez jenom vystavit server pro http soap a jeste 
navic bez autentizace, jdete do ceho chcete, je to vicemene burt. Klidne i do 
JBossu, protoze J2EE 1.4 ma JAXM.

A na zaver doporuceni: podivejte se na http://ws-i.org
-- 
Oto 'tapik' Buchta, tapik na systinet.com
Senior Engineer, Systinet Corp,
http://www.systinet.com



Další informace o konferenci Konference