Avatar billede claus_w Nybegynder
31. marts 2003 - 11:15 Der er 37 kommentarer

Webservice / sagsarkiv

Efter nu på fritidsbasis, at have læst på Java i et halvt år, er jeg kommet i den situation, at skulle lave en webservice, og dette emne har jeg læst en del op på java.sun.com.

Systemet er overordnet en "arkiv-styring" hvor brugerne via. en webservice har adgang til deres arkiv, som på serveren er placeret i en database (med stor sandsynlighed MySQL).

Brugeren skal på en eller anden måde autoriseres, hvorefter brugeren skal kunne søge i deres sager og hente og gemme information i sagerne. I første omgang vil en sag blot

Umiddelbart syntes jeg dette lyder overskueligt, men det er til gengæld lidt uoverskueligt at læse artikel på artikel om teknologier jeg ikke rigtig ved om jeg for brug for.

Et sådan arkiv-styrings webservice system er jeg overbevist om, må have været lavet tusinde gange før og mange andre må have udtænkt smarte lignende systemer. Mine spørgsmål er derfor:

1. Har du nogen erfaring med at lave et sådan eller lignende system? Kan jeg evt. se noget kode eller måske blot et simplificeret eksempel?
2. Hvilke teknologier bør jeg fokusere på, sætte mig ind i og bruge til dette projekt?
3. Findes der nogen patterns som i mener jeg bør bruge i forbindelse med dette projekt?

Desuden vil jeg sætte pris på en anbefaling af en Java/webservice bog og generelt gode råd.
Avatar billede bufferzone Praktikant
31. marts 2003 - 11:24 #1
Jeg har noget gammelt der er lavet i access (sikkert med et vb interface). Dette system brugtes for en del år siden, men er siden blevet udskiftet med et købt system der hedder Doculive.

Jev vil foreslå at du laver et sådant system med webinterface oven på en database, dermed får du ikke brug for java, men ASP eller PHP wamt javascript
Avatar billede arne_v Ekspert
31. marts 2003 - 11:28 #2
Det kan sagtens laves som Web Services.

Installer Tomcat JSP/servlet engine.

Installer Axis toolkit.

Lav en almindelig Java klasse som kan lave søg/hent/gem.

Deploy den til Axis.

Og du er kørende.
Avatar billede arne_v Ekspert
31. marts 2003 - 11:29 #3
Avatar billede claus_w Nybegynder
31. marts 2003 - 11:36 #4
bufferzone: Jeg tror du har misforstået mit spørgsmål lidt.

arne_v: Tak for svaret. Har du evt. et eksempel jeg må se? eller en god bog du kan anbefale?
Avatar billede arne_v Ekspert
31. marts 2003 - 11:44 #5
Axis tool kittet kommer med noget dokumentation.

Men altså grundliggende er det så nemt så nemt.

Axis installeres på Tomcat som enhver normal web app.

Den klasse du laver er bare en helt normal klasse. Som du kan teste
i en lille standalone applikation.

Så skriver du en deployment descriptor på en 20-30 linier.

Og så deployer du den til axis med en enkelt kommando.
Avatar billede arne_v Ekspert
31. marts 2003 - 11:45 #6
Hvis du tilfældigvis har JBuilder Enterprise Edition, så har den
en wizard der kan gøre det hele.
Avatar billede _darkstar_ Nybegynder
31. marts 2003 - 11:45 #7
claus_w>>> Prøv lige at kigge på standarden WebDAV, før du genopfinder den dybe tallerken.
Avatar billede arne_v Ekspert
31. marts 2003 - 11:47 #8
Jeg kan godt lave et lille eksempel, men gå til http://ws.apache.org/axis/index.html
og klik på "Users Guide" der er der små simple eksempler.
Avatar billede arne_v Ekspert
31. marts 2003 - 11:48 #9
NB: Hvis dine klasser er tilpas simple behøver du ikke engang
    lave en WSDD fil (se mere i user guide).
Avatar billede claus_w Nybegynder
31. marts 2003 - 11:52 #10
arne_v: ja, du får det til at lyde temmelig nemt :) men, jeg tror alligevel at jeg lige må finde mig en bog om emnet.

darkstar: Jo, det skal jeg gøre. Kan jeg bede dig evt. kort at fortælle om WebDAV eller give mig et link?
Avatar billede _darkstar_ Nybegynder
31. marts 2003 - 12:00 #12
Og så er der http://www.webdav.org/
Avatar billede arne_v Ekspert
31. marts 2003 - 12:09 #13
Der udkommer rigtigt mange bøger om Web Services for tiden.

En Axis specific fra Wrox:
  AXIS: Next Generation Java SOAP
  by Romin Irani, S Jeelani Basha
Avatar billede arne_v Ekspert
31. marts 2003 - 12:10 #14
Amazon giver 644 hits på "web services".

Så der er nok at vælge imellem.

Dokumentation som kommee med Axis burde dog være nok til at
få dig kørende.
Avatar billede arne_v Ekspert
31. marts 2003 - 12:11 #15
Jeg har selv:
  Java XML and Web Services Bible
  by Mike Jasnowski (Author)

Men der er formentlig bedre bøger end den.
Avatar billede claus_w Nybegynder
31. marts 2003 - 12:17 #16
darkstar: Jeg har taget mig tid til at sætte mig ind i WebDAV standarden, men jeg kan desværre slet ikke se hvad jeg skal bruge det til.

arne_v: Mange tak for anbefalingerne.

Jeg har lige noget arbejde jeg skal færdiggøre, men jeg kigger nærmere på Axis i aften.
Avatar billede _darkstar_ Nybegynder
31. marts 2003 - 12:33 #17
claus_w>>> WebDAV opfylder din krav punkt for punkt. Den er indbygget i mange operativsystemer, herunder Winodws og i serverenden findes Apache til håndteringen. Det eneste, du ikke umiddelbart kan få Apache til, er at hælde brugernes data i en database - kun filer.

Se iøvrigt også http://subversion.tigris.org/

Spar tid - brug software og standarder der findes i forvejen.
Avatar billede claus_w Nybegynder
31. marts 2003 - 13:10 #18
darkstar: Jeg tror jeg må prøve at definere mine krav til systemet lidt bedre:

Der er en række (100-300) brugere som skriver en helt speciel slags rapporter. En sag er tilknyttet én ejendom og består nogen gange af én rapport og andre gange af 3 forskellige rapporter.

I systemet skal hver sag have en række oplysninger som adresse, postnr., by, ejendomsnr, kommunenr., osv. (omkring 20 forskellige oplysninger). Disse oplysninger lagres i en database.
Desuden skal der til hver sag tilknyttes de udarbejde rapporter og liggende i form af filer. f.eks. pdf-, gif-, doc- og txt-format.

Via et simpelt interface skal det så være muligt for en bruger, at søge i sit eget arkiv af sager så han f.eks. nemt kan finde en gammel sag frem ud fra en søgning på f.eks. rekvirentens navn. Desuden skal det være muligt at søge i de andre brugeres sager så man kan hente en gammel rapport på en gammel sag frem, som en kollega har lavet.

Den klient som brugerne benytter skal desuden også kunne kommunikere med en Access-database samt txt-filer, som i nogen tilfælde ligger på brugerens computer.

Der er desuden er række andre krav til systemet som jeg ikke tror jeg behøver at komme ind på.

Mener du stadig at WebDAV er løsningen for mig? For så vil jeg da sætte mig rigtig ind i det, men jeg vil helst ikke bruge en masse tid på noget som jeg ikke kommer til at kunne bruge.
Avatar billede arne_v Ekspert
31. marts 2003 - 13:17 #19
Lille side-bemærkning: jeg har i alle mine svar kun fokuseret
på server-siden af Web Services.

Der skal selvfølgelig også laves noegt på client-siden.

Noget .NET måske. Eller noget Java (Axis kan også bruges til
client-siden).
Avatar billede claus_w Nybegynder
31. marts 2003 - 13:37 #20
arne_v: I første omgang til jeg også nøjes med at fokusere på server-siden. Til klienten overvejer jeg at bruge noget #C eller VB så jeg har mulighed for at bruge nogen af de smarte windows-relaterede features f.eks. i forbindelse med kommunikationen med Access-databasen. Det er bare æreligt jeg kun har programmeret VB (ASP) én gang. Men det er en problemstilling der må vente til senere ;)
Avatar billede _darkstar_ Nybegynder
31. marts 2003 - 20:40 #21
Om WebDAV:

Hvis du har ressourcer til at skrive en klient i et eller andet sprog, er det bestemt muligt. Data som man normalt ville anbringe i en database, kan man så nabringe i XML-filer på serveren i stedet. WebDAV giver automatisk en masse faciliteter, som det du spørger om. Rettigheder, låsning, revisionsspor, søgning og lignende. Da det blot er filer som man lagrer, kan der i sagens natur også følge alle de billeder og andre ting med.

En særlig fordel ved f. eks. at benytte subversion er at mange kan arbejde med de samme filer på en gang. Hvis f. eks. en person retter lidt i en adresse samtidig med at en anden person tilføjer en beskrivelse, finder serveren selv ud af at flette disse oplysninger sammen på en forsvarlig måde.

Derudover vil alle filerne være direkte tilgængelige via Windows-fildeling.
Avatar billede _darkstar_ Nybegynder
01. april 2003 - 00:33 #22
En lille note: med teksten "Hvis du har ressourcer til at skrive en klient" mener jeg ikke at du skal skrive en klient, der kan snakke WebDAV, men snarere en klient som benytter et bibliotek, som implementerer WebDAV - det eneste du selv skal lave er selve brugerfladen og noget forretningslogik. Der findes WebDAV-biblioteker.
Avatar billede jlau Nybegynder
01. april 2003 - 01:05 #23
Sjovt at læse denne debat. Jeg har netop skrevet et system som ligner beskrivelsen fra claus_w (kl 13:10:44). Det er udformet som en webservice kørende under Windows 2000/XP server. System anvendes til sagsstyring af byggeprojekter og kan håndtere såvel data som filer. Både client og webservice er skrevet i Delphi 6. Data lagres som XML på serveren.

darkstar: Skal der købes licens/software for at benytte WebDAV?
Avatar billede _darkstar_ Nybegynder
01. april 2003 - 01:18 #24
jlau>>> Nej. WebDAV er en standard - faktisk bare en udvidelse af HTTP.
Avatar billede claus_w Nybegynder
02. april 2003 - 20:28 #25
jlau: Det var da pudsigt. Kan det passe jeg har læst om dit projekt i et nyhedsbrev fra bygnet.dk? Det projekt jeg beskrev, er også til byggebranchen. Det er dog noget anderledes – for bygningssagkyndige (dem der laver tilstandsrapporter og energimærker).
Avatar billede jlau Nybegynder
02. april 2003 - 21:26 #26
claus_w: Jeg har ikke kendskab til en artikel på bygnet.dk. Det drejer sig om et sagsstyringssystem skræddersyet til et dansk ingeniørfirma.

Min erfaring med webservices er at det er en fantastisk fleksibel løsning. Det kører problemfrit uanset clientens netværksopsætning - firewall eller ej, så flyder objekterne gennem port 80. Filer overføres også fint, men her er der et betydeligt overhead at betale for fleksibiliteten.
Avatar billede arne_v Ekspert
13. april 2003 - 20:35 #27
claus_w>

Er du kommet videre ?
Avatar billede claus_w Nybegynder
17. april 2003 - 23:39 #28
arne_v: Jo, en smule. Jeg har læst de første 4 kapitler af "The Java Web Services Tutorial" og har købt Wrox's "Beginning Java Web Services", men hvis det er i orden holder jeg spørgsmålet åbent.

Mine 3 oprindelige spørgsmål må jeg prøve at stille igen på på et senere tidspunkt ét af gangen.

Jeg kunne dog godt tænke mig at vide helt præcist hvilke teknologier jeg skal bruge og hvorfor.

Tomcat vil blive brugt som server.

Hvad jeg ellers skal bruge er stadig uklart - og jo mere jeg læser, des mere forviret bliver jeg over alle de forskellige forkortelser.

I "The Java Web Services Tutorial" bruger de Suns "Java Web Services Developer Pack" som indeholder en masse forskellige ting - blandt andet Tomcat. http://java.sun.com/webservices/downloads/webservicespack.html

I midlertid mener du (arne_v), at jeg skal bruge "Axis toolkit" og "The Java Web Services Tutorial" bruger også Axis som SOAP engine. Den bruger desuden også Xerces2 Java Parser 2.

Forkortelser/teknologier som JAXB, JAXM, JAXP, JAXR, JAX-RPC, SAAL, WSDP, Ant, XML-RPC, WSIF, WSIL, Axis, SAX osv. roder rundt i mellem hinanden. Jeg er forviret! og alle de forskellige eksempler jeg ser bruger forskellige teknologier:(

Hvilke af disse skal jeg fokusere på? kan man overskueliggøre dem ved at gruppere dem?

Til at starte med skal min web service virke sådan: En c# applikation snakker med en java web service, som henter noget data fra en lokal MySQL database og sender det til c# applikationen. 

I øjeblikket har jeg installeret "Java Web Services Developer Pack 1.1" og jeg har prøvet at bruge Ant til at "installere" en web service på Tomcat. Men burde jeg hellere bruge Axis? Har Axis toolkit alt hvad jeg skal bruge? kan jeg kombinere de to ting?

Så, hvilke slags teknologier skal jeg bruge til mit projekt? og hvad har jeg at vælge i mellem?
Avatar billede arne_v Ekspert
18. april 2003 - 08:47 #29
SUN WSDP er en reference implementation for de forskellige
teknologier.

Apache SOAP er en implementation beregnet på production usage.

IBM, Borland etc. bruger alle Axis i deres software.

På godt almindeligt dansk, så er Axis hurtigere.
Avatar billede arne_v Ekspert
18. april 2003 - 08:50 #30
Og det er ikke så svært.

1)  Download og udpak Axis toolkit

2)  Deploy Axis web app på din servlet engine (hvis ikke du har en
    sådan kørende downloader og udpakker du  en Tomcat)

3)  Lav din klasse som er din web service

4)  Hvis du kun bruger simple datatyper (og i denne sammenhæng
    så er String også simpel), så omdøber du filen fra .java
    til .jws og deployer den til AXis

Og voila så er din Web Service klar til brug.
Avatar billede arne_v Ekspert
18. april 2003 - 08:50 #31
Teknologier brugt: XML, SOAP, SOAP-RPC, JAX-RPC, WSDL.
Avatar billede claus_w Nybegynder
18. april 2003 - 09:13 #32
Arne_v: Ville jeg så ikke kunne installere Suns "Java Web Services Developer Pack" og efterfølgende Axis toolkit?

Sun WSDP, en reference implementation?
Axis, til production usage?
Gider du forklare?

På hvilken måden mener du Axis er hurtigere?
Avatar billede arne_v Ekspert
18. april 2003 - 09:27 #33
De burde sagtens kunne sameksistere.
Avatar billede arne_v Ekspert
18. april 2003 - 09:42 #34
En reference implementation er et bevis på at det kan lade
og nogle hints til software developere om hvordan det bør gøres.

Da Axis er ældre end SUN's WSDP, så er Axis ikke specielt påvirket
af WSDP.

Hurtigere ? Hurtigere ! Bedre performance.

Det er derfor de kommercielle leverandører normalt vælger at basere
sig på Axis. Det performer bedre.

[kilde: en af IBM Europas top Web Services folk]
Avatar billede arne_v Ekspert
18. april 2003 - 09:43 #35
Bemærk at det vil være dobbelt arbejde at starte med WSDP og
så skifte til Axis.

De er for forskellige.
Avatar billede arne_v Ekspert
22. maj 2003 - 22:35 #36
Er du kommet videre ?
Avatar billede pelyja Nybegynder
19. september 2003 - 22:41 #37
Er netop startet på JWSDP og Axis, så ganske interessant læsning ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester