Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[JAVA] Push webservices, welke technologie

Pagina: 1
Acties:

  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Topicstarter
Momenteel ben ik bezig met het realiseren van een Java applicatie die gebruik maakt van Pull en Push technologie en hierbij platform "onafhankelijke" berichten verstuurd / ontvangt. Hierbij loop ik tegen 2 problemen aan omdat mijn ervaring met webservices alleen maar aan de client / proxy kant was geweest.

Voor het het pull gedeelte maak ik gebruik van WS-JAX. Dit is "eenvoudig" te realiseren door middel van de juiste .WSDL en .XSD.

Alleen loop ik nu tegen het probleem aan van het push gedeelte in de applicatie. Na enkele google uren doorgebracht te hebben kan ik geen antwoord vinden op de vragen die nog "open" staan. Hopelijk kunnen jullie mij hierbij helpen.

Als ik zoek met google op "push webservice java" komt ik deze tabel vaak tegen:
FeatureStAXSAXDOMTrAX
API TypePull, streamingPush, streamingIn memory treeXSLT Rule

Als ik naar die tabel kijk lijkt het erop dat ik gebruik moet maken van SAX. Maar als ik dan verder zoek dan lijkt SAX juist te zijn voor de afhandeling van XML document en niet het pushen ervan. Omdat er ook niks over subscribe is gekoppeld aan de term SAX.

Hierbij dus mijn vraag: Welke technologie kan ik gebruiken om push mogelijk te maken binnen de applicatie?

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Die tabel betreft slechts de manier waarop de diverse XML-parsers werken, dat heeft dus niet te maken met webservices (behalve dan misschien op een implementatie niveau). Er zijn een aantal manieren van werken met een XML document en push in het geval SAX betekent slechts dat bij het parsen van het document events worden afgevuurd (gepushed dus) die door een handler binnen de applicatie wordt afgehandeld. Ik heb geen ervaring met StAX, maar in StAX is het juist de applicatie die de verwerking van XML 'verder' trekt.

Ik heb overigens niet echt een goed beeld met wat jij bedoelt met push en pull webservices, dat ligt aan mijn relatieve onervarenheid met webservices (alleen voor mijn studie wat met webservices gedaan), maar misschien kan je wat links met meer informatie posten?

  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Topicstarter
Wat meer uitleg over de applicatie:
Het systeem bestaat uit twee applicaties die met elkaar communiceren door middel van webservices.

Systeem 1 is de gegevens "leverancier". Dit systeem beschikt over de volgende mogelijkheden:
a) Versturen van gegevens als er nieuwe gegevens beschikbaar zijn (Push on occurrence)
b) Versturen van gegevens als er een bepaalde periode aan tijd voorbij is (Push on time)
c) Systeem 2 nieuwe gegevens aanvraagt (Pull)

Systeem 2 wil deze gegeven verkrijgen. Dit systeem beschikt over de volgende mogelijkheden:
a) Ontvangen van de Push on time & Push on occurrence.
b) Versturen van een Pull verzoek.

Wat er nu gerealiseerd is het Pull gedeelte. Hiervoor is een webservice gemaakt bij systeem 1 (1c), systeem 2 beschikt over een client / proxy (2b) die communiceert met de webservice van systeem 1.

Verder valt er weinig anders over te zeggen behalve dat er Push mogelijkheid in de applicatie erbij moet komen omdat er meer systemen zijn die dezelfde eigenschappen hebben als systeem 2. Waardoor je subscribe functionaliteit nodig heb. Al weet ik wel hoe het werkt maar binnen Java heb ik geen idee met welke technologie het kan worden gerealiseerd.

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Kortom, systeem 2 moet ook een RMI service (webservice, plain HTTP call, desnoods gewoon een open socket) aanbieden en systeem 1 moet die consumeren, als systeem 2 eerder, middels een webservice call, heeft aangegeven dat te willen.

Wie trösten wir uns, die Mörder aller Mörder?


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Confusion schreef op donderdag 24 juli 2008 @ 19:46:
Kortom, systeem 2 moet ook een RMI service (webservice, plain HTTP call, desnoods gewoon een open socket) aanbieden en systeem 1 moet die consumeren, als systeem 2 eerder, middels een webservice call, heeft aangegeven dat te willen.
Idd, iets concreter gezegd, systeem 1 heeft een web service, bijvoorbeeld is in de trant van:
getNieuweGegevens

Deze heeft geen parameters (eventueel filters of security dingen), maar returnt een lijst met alle nieuwe gegevens.

Systeem 2 heeft ook een web service, zoals:
putNieuweGegevens

Deze heeft geen returnwaarde, maar wel een parameter, namelijk (een lijst van) het nieuwe gegeven.

De web service van systeem 2 wordt aangeroepen door de client code van systeem 1. In systeem 1 draait ook een timer om periodiek de web service van systeem 2 aan te roepen.

Ik zie het push/pull niet in de TS, in mijn optiek is dit gewoon een standaard request-response WS model.

Fat Pizza's pizza, they are big and they are cheezy


  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Topicstarter
Bedankt voor jullie reacties!
Confusion schreef op donderdag 24 juli 2008 @ 19:46:
Kortom, systeem 2 moet ook een RMI service (webservice, plain HTTP call, desnoods gewoon een open socket) aanbieden en systeem 1 moet die consumeren, als systeem 2 eerder, middels een webservice call, heeft aangegeven dat te willen.
Klopt, ik zoek iets in de buurt van een RMI service. Alleen dan in een webservice vorm.
JKVA schreef op vrijdag 25 juli 2008 @ 15:51:
[...]
De web service van systeem 2 wordt aangeroepen door de client code van systeem 1. In systeem 1 draait ook een timer om periodiek de web service van systeem 2 aan te roepen.

Ik zie het push/pull niet in de TS, in mijn optiek is dit gewoon een standaard request-response WS model.
Klopt ook, maar dan heb je de subscribe / notification functionaliteit nog niet te pakken zoals in afbeelding 1 is weergegeven. Dan heb je alleen de pull functionaliteit van figuur 2 en die "draai je om".

Afbeeldingslocatie: http://img508.imageshack.us/img508/5175/pushko6.png
Figuur 1: Push

Afbeeldingslocatie: http://img367.imageshack.us/img367/5712/pulldg0.png
Figuur 2: Pull

In afbeelding 1 gebruiken ze een Push Api die een subscribe accepteerd en een notify verstuurd als er nieuwe gegevens binnen komen. De applicatie werkt met een communicatie standaard die het vereist om subscribe en notify functionaliteit in de applicatie toe te voegen.

------------------

Maar ik merk nu tijdens het typen dat ik het door elkaar aan het halen was. Zoals jullie het hierboven uitleggen moet ik de systemen "omdraaien" om push toe te voegen. Dan hoeft systeem 2 alleen nog een subscribe te sturen en hierna doet systeem 1 eigenlijk een push verzoek naar systeem 2 en stuurt hierbij gelijk de nieuwe gegevens naar systeem toe. Wordt zo push technologie toegepast in applicaties dat een push een pull is zonder response?

Afbeelding 1 & afbeelding 2 bron: http://www.waif.cs.uit.no/publications/brenna_pushWSpres.pdf

  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Facer schreef op vrijdag 25 juli 2008 @ 18:02:
Bedankt voor jullie reacties!
[...]
Klopt, ik zoek iets in de buurt van een RMI service. Alleen dan in een webservice vorm.
[...]
Dat komt goed uit, want een web service is in principe niet meer dan RMI, maar dan met XML technologieën. ;)
[...]
Klopt ook, maar dan heb je de subscribe / notification functionaliteit nog niet te pakken zoals in afbeelding 1 is weergegeven. Dan heb je alleen de pull functionaliteit van figuur 2 en die "draai je om".
In afbeelding 1 gebruiken ze een Push Api die een subscribe accepteerd en een notify verstuurd als er nieuwe gegevens binnen komen. De applicatie werkt met een communicatie standaard die het vereist om subscribe en notify functionaliteit in de applicatie toe te voegen.

Maar ik merk nu tijdens het typen dat ik het door elkaar aan het halen was. Zoals jullie het hierboven uitleggen moet ik de systemen "omdraaien" om push toe te voegen. Dan hoeft systeem 2 alleen nog een subscribe te sturen en hierna doet systeem 1 eigenlijk een push verzoek naar systeem 2 en stuurt hierbij gelijk de nieuwe gegevens naar systeem toe. Wordt zo push technologie toegepast in applicaties dat een push een pull is zonder response?
Ik begrijp niet veel van het verhaal, maar als je publish subscribe wilt, kun je volgens mij beter naar JMS kijken. Dan krijg je er gratis allemaal quality of service features bij zoals durable subscribers en guaranteed delivery. Eventueel kun je SOAP berichten over JMS versturen.

Als je ECHT met web services wilt werken, bijv. voor HTTP tunneling ofzo, kun je altijd het observer pattern implementeren.
Wikipedia: Observer pattern

Let wel op, met remote services is dit wel iets complexer dan op deze Wiki pagina staat, aangezien je niet gewoon object referenties over kunt gooien. Je zult iets van een URL mee moeten geven bij de subscribe call.

Ps. Als je dit een beetje generiek opzet, heb je een soort mini ESB. Daar kun je ook altijd naar kijken. Keuze genoeg. ;)

Fat Pizza's pizza, they are big and they are cheezy


  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Topicstarter
Inderdaad, het gaat de kant op van een mini ESB. Want de gegevens die binnen komen worden ook weer in een database opgeslagen. Alleen voor het huidige programma is een ESB "overkill"

De communicatie mag alleen via webservices waardoor de Observer pattern een geschikte methode is. Ik zal er morgen dieper induiken. Bedankt voor je hulp _/-\o_
Pagina: 1