[Java / Axis2] een WS bouwen voor een bestaande webapp

Pagina: 1
Acties:

  • Standeman
  • Registratie: November 2000
  • Laatst online: 17:07

Standeman

Prutser 1e klasse

Topicstarter
Ik vroeg me af of hier mensen rondlopen met ervaring met Axis2, want ik kom er niet helemaal uit.

Voor een proof of concept ben ik bezig functionaliteit van een bestaande web-app beschikbaar te maken via een webservice. De webapp heeft een paar mooie gescheiden lagen (data access, business logic, MVC, etc) en werkt als een zonnetje op Tomcat.
Nu willen we ook andere systemen tegen deze webapp laten praten, dus de logische keuze valt dan op webservices. De keuze voor een WS implementatie is beperkt tot 2 kandidaten, namelijk XFire en Axis2.

Met XFire werkt het erg simpel. Je schrijft wat wrapper classes om je business-classes heen, doet wat xml configuratie en gooit dit in de tomcat context van je webapp. Hooguit een uurtje werk wanneer je het simpel houd.

Bij axis loopt het wat anders. Daar kan volgens mijn alleen een webservice deployen in de "Axis2" context. Op die manier kan ik niet zomaar gebruik maken van mijn business classes omdat deze o.a. afhankelijk zijn van de context configuratie. En om deze configuratie op twee plaatsen te gaan bijhouden zit ik niet echt op te wachten. Tevens moet ik dan ook al mijn libraries bekend maken voor deze context en dit dus dit ook dubbel beheren.

Ik zoek dus naar een mogelijkheid om een webservice te bouwen (met Axis2) en deze te deployen in dezelfde context als mijn webapp. In de documentatie kan ik hier in iedergeval weinig over vinden..

Tevens zit ik nog met een paar vragen. Hoe verhoud Axis2 zich tot XFire? Axis2 ziet er complexer, maar meer flexibel uit t.o.v. XFire. Xfire lijkt een stuk eenvoudiger om mee te werken en volgens enkele reviews ook nog eens sneller dan Axis2 (hoewel performance nog niet echt een issue is). Is mijn beeld goed, of klopt het toch niet helemaal?

En als laatste, hoe gaan jullie om met complexere objecten zoals Set's, Maps, etc en hun specifieke implementatie? Converteren naar array's?

[ Voor 3% gewijzigd door Standeman op 24-10-2006 14:19 ]

The ships hung in the sky in much the same way that bricks don’t.


  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 14:39
Standeman schreef op dinsdag 24 oktober 2006 @ 14:17:
Ik zoek dus naar een mogelijkheid om een webservice te bouwen (met Axis2) en deze te deployen in dezelfde context als mijn webapp. In de documentatie kan ik hier in iedergeval weinig over vinden..
Ik zie het ook niet in de documentatie. Ik heb alleen ervaring met Axis1 en daar kon je de axis webapp integreren in je eigen webapp door de benodigde servlets en servlet-mappings uit web.xml in je eigen web.xml op te nemen en de juiste jar's, configuratiebestanden e.d. ook over te nemen.

Ik neem aan dat dat ook met Axis2 kan.

  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 25-01 15:24
matthijsln schreef op dinsdag 24 oktober 2006 @ 14:48:
[...]


Ik zie het ook niet in de documentatie. Ik heb alleen ervaring met Axis1 en daar kon je de axis webapp integreren in je eigen webapp door de benodigde servlets en servlet-mappings uit web.xml in je eigen web.xml op te nemen en de juiste jar's, configuratiebestanden e.d. ook over te nemen.

Ik neem aan dat dat ook met Axis2 kan.
Ik weet uit ervaring dat Axis 1 en Axis 2 nogal van elkaar verschillen.

Voor een project heb ik eens gekeken naar Axis 2, maar door een gebrek aan goede documentatie (weet niet hoe het daar nu mee is, paar maanden later inmiddels) heb ik vanwege de korte tijd die ik had toch maar terug gegrepen op Axis 1.

  • Standeman
  • Registratie: November 2000
  • Laatst online: 17:07

Standeman

Prutser 1e klasse

Topicstarter
rrrandy schreef op dinsdag 24 oktober 2006 @ 14:49:
[...]


Ik weet uit ervaring dat Axis 1 en Axis 2 nogal van elkaar verschillen.

Voor een project heb ik eens gekeken naar Axis 2, maar door een gebrek aan goede documentatie (weet niet hoe het daar nu mee is, paar maanden later inmiddels) heb ik vanwege de korte tijd die ik had toch maar terug gegrepen op Axis 1.
De documentatie van axis 2 vind ik nogal zuigen (netjes gezegd) en als ik zo naar de posts op andere fora kijk, ben ik niet de enige.
Er staat prima beschreven hoe je een helloworld webservice moet bouwen (is ook erg simpel), maar daar houd het wel bij op. Ik heb het vermoeden dat de het gros van de mensen bestaande functionaliteit willen publiceren via een webservice. Daar wordt dus in de documentatie geen woord over gerept :/
De architectuur van Axis2 ziet er wel "indrukwekkend" uit. Alleen ben ik weer drie weken verder voordat ik er mijn mening over gevormd heb, omdat het 1 en ander nogal moeilijk omschreven is.
matthijsln schreef op dinsdag 24 oktober 2006 @ 14:48:
[...]


Ik zie het ook niet in de documentatie. Ik heb alleen ervaring met Axis1 en daar kon je de axis webapp integreren in je eigen webapp door de benodigde servlets en servlet-mappings uit web.xml in je eigen web.xml op te nemen en de juiste jar's, configuratiebestanden e.d. ook over te nemen.

Ik neem aan dat dat ook met Axis2 kan.
Tja is een mogelijkheid. Waar je dan mee bezig bent is om van de huidige webapp context een Axis2 context te maken. Ik krijg daar een "naar" gevoel bij.
Eigenlijk ga je dan meerdere Axis2 contexts met een ander naampje draaien.

Wat dat betreft vind ik XFire dan eigenlijk een stuk beter, omdat het (veel) minder impact heeft op je huidige code.
(En dan heb je nog Spring integratie.. maar dat is een ander verhaal)

The ships hung in the sky in much the same way that bricks don’t.


  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 03-02 20:14
Ikzelf heb geen ervaring met Axis2.
We hebben enkel XFire en Axis1 gebruikt. Voorlopig blijven we werken met Axis1, maar het is niet uitgesloten dat we overstappen naar XFire (vooral om performance redenen dan)

Het mooie aan XFire en Axis1 is toch wel de simpele Spring integratie, om een bestaande applicatie zijn services te laten aanbieden via Webservices is het het poepsimpel, in het geval van Axis1 hoef je enkel een wrapper klasse te schrijven en deze als Service aan te bieden. Als je een toepassing wil laten gebruiken maken van de webservice die nu reeds via Spring zijn services aanbied hoef je enkel maar een beetje te configrueren in je applicationContext en klaar is kees, in de toepassing code zelf merk je er niets van. Echt leuk :-)

"Live as if you were to die tomorrow. Learn as if you were to live forever"


  • Standeman
  • Registratie: November 2000
  • Laatst online: 17:07

Standeman

Prutser 1e klasse

Topicstarter
Cuball schreef op woensdag 25 oktober 2006 @ 08:48:
Ikzelf heb geen ervaring met Axis2.
We hebben enkel XFire en Axis1 gebruikt. Voorlopig blijven we werken met Axis1, maar het is niet uitgesloten dat we overstappen naar XFire (vooral om performance redenen dan)

Het mooie aan XFire en Axis1 is toch wel de simpele Spring integratie, om een bestaande applicatie zijn services te laten aanbieden via Webservices is het het poepsimpel, in het geval van Axis1 hoef je enkel een wrapper klasse te schrijven en deze als Service aan te bieden. Als je een toepassing wil laten gebruiken maken van de webservice die nu reeds via Spring zijn services aanbied hoef je enkel maar een beetje te configrueren in je applicationContext en klaar is kees, in de toepassing code zelf merk je er niets van. Echt leuk :-)
Dat zijn inderdaad exact mijn ervaringen met XFire. Met Axis2 wordt het gewoon een stuk lastiger, o.a. vanwege het gebrek van documentatie en als er iets gedocumenteerd is, wordt het allemaal vrij complex en sumier neergezet.

Maar goed, ik kan inmiddels mijn wsdl genereren, nu de WS zelf nog benaderen :)

The ships hung in the sky in much the same way that bricks don’t.


  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 25-01 15:24
Standeman schreef op woensdag 25 oktober 2006 @ 09:25:
[...]


Dat zijn inderdaad exact mijn ervaringen met XFire. Met Axis2 wordt het gewoon een stuk lastiger, o.a. vanwege het gebrek van documentatie en als er iets gedocumenteerd is, wordt het allemaal vrij complex en sumier neergezet.

Maar goed, ik kan inmiddels mijn wsdl genereren, nu de WS zelf nog benaderen :)
Kun je een voorbeeld met de te ondernemen stappen posten als je de boel draaiend hebt? Er zijn blijkbaar meer mensen die nogal wat vragen hebben bij Axis 2.

  • Standeman
  • Registratie: November 2000
  • Laatst online: 17:07

Standeman

Prutser 1e klasse

Topicstarter
Ik heb het nog steeds niet draaiend ;(

Tot nu toe de stappen die ik gevolgd heb:

1) Axis2 servlet geconfigureerd in mijn web.xml
XML:
1
2
3
4
5
6
7
8
9
    <servlet>
        <servlet-name>AxisServlet</servlet-name>
        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>  
    <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>


2) Axis2 jars toegevoegd (uit de Axis2 context (webapps/axis2/WEB-INF/lib))
3) Axis2.xml in <my-context>/WEB-INF/conf gekopieerd.
4) modules directory gekopieerd naar /WEB-INF
5) /WEB-INF/services/CardTypeService/META-INF/services.xml aangemaakt
XML:
1
2
3
4
5
6
7
8
9
10
<service name="CardTypeService">
    <description>CardType Service</description>
    <parameter name="ServiceClass" locked="false">
        com.aciworldwide.scm.inventory.wswrappers.CardTypeSqlDaoWrapper
    </parameter>
    <operation name="getCardTypes">
        <messageReceiver 
                    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </operation>    
</service>


Wanneer ik ga kijken op http://localhost:8080/<my-context>/services/CardTypeService?wsdl zie ik een wsdl verschijnen... die niet klopt :/

En dan vooral dit:
XML:
1
2
3
4
<wsdl:port binding="axis2:CardTypeServiceSOAP11Binding" 
    name="CardTypeServiceSOAP11port0">
  <soap:address location="http://localhost:8080/axis2/services/CardTypeService" /> 
</wsdl:port>


Hij verwijst om 1 of andere redenen naar de axis2 context, waar de webservice niet te vinden is.. Ik kan op geen enkele logische URL mijn webservice vinden :/

The ships hung in the sky in much the same way that bricks don’t.


  • Standeman
  • Registratie: November 2000
  • Laatst online: 17:07

Standeman

Prutser 1e klasse

Topicstarter
even een kickje... Misschien dat er mensen zijn met meer antwoorden dan vragen?

The ships hung in the sky in much the same way that bricks don’t.

Pagina: 1