19. august 2004 - 10:48Der er
70 kommentarer og 1 løsning
webservice og læsning af xml fil
Jeg skal til at igang med et program der skal kunne kalde en webservice, få et XML svar tilbage og skrive resultatet ned i en database. Jeg har ikke så meget erfaring med XML og tænkte at jeg måske her hurtigt kunne blive sat på sporet af hvad jeg har brug for at lære noget om, og om der findes noget java der kan forstå XML format. Så er der nogle gode links der kan anbefales.
Jeg forsøger at følge det eksempel du har i artikel 159. Men når jeg laver den første fil Calc.jws og kopierer den over i din-servlet-engine/webapps/axis, og kalder den med stien http://localhost/axis/Calc.jws får jeg først beskeden, der er en webservice her, men når jeg vil se dens WSDL får jeg en fejlbesked AXIS error Sorry, something seems to have gone wrong... here are the details:
Fault - ; nested exception is: java.io.FileNotFoundException: D:\jakarta-tomcat-4.1.30\webapps\axis\WEB-INF\jwsClasses\Calc.class (The system cannot find the file specified) AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.io.FileNotFoundException: D:\jakarta-tomcat-4.1.30\webapps\axis\WEB-INF\jwsClasses\Calc.class (The system cannot find the file specified) faultActor: faultNode: faultDetail:
Ja jeg har lige downloaded Axis 1.1 Dernæst unzippede jeg og kopierede folderen axis over i min tomcat webapps. Jeg har en tomcat 4.1.30. Jeg har så lavet Calc.jws og placeret den i axis folderen i webapps på tomcat serveren. Det giver mig ovenstående resultat. Jeg er nu gået igang med næste eksempel, TestCalc, og der har jeg problemer med at min IntelliJ ikke kender pakken rpc, og namespace under javax.xml, men det er nok bare et spørgsmål om at få en ny nok version af j2EE vil jeg tro.
Nå jeg fandt ud af hvad der var galt, Jeg er bare så vandt til java, så jeg havde startet med at lave filen som javafil og så blot omdøbt til .jws. MEN jeg skulle også lige fjerne package. Så nu får jeg en fin beskrivelse
Når jeg forsøger at køre TestCalc får jeg følgende fejl: javax.xml.rpc.ServiceException at javax.xml.rpc.ServiceFactory.newInstance(ServiceFactory.java:108) at dk.md.webservice.mrgtester.test.TestCalc.mul(TestCalc.java:16) at dk.md.webservice.mrgtester.test.TestCalc.main(TestCalc.java:31) Exception in thread "main" Process terminated with exit code 1
Så nu har jeg en lille webservice, og jeg kan kalde den, fint nok. Ved det jeg skal lave, får jeg et svar i form af et xml dokument som jeg så skal have pillet informationer ud af til en database. Du skriver Ofte kan man encapsulate alt det XML og bare kalde remote metoder (ligesom RMI). Det er ikke noget jeg kender til, så hvis du kan uddybe lidt vil det være fint
Det jeg mener er at den metode jeg skal kalde har et xml dokument som returparameter. Måske har det i virkeligheden ikke så meget at gøre med den xml der anvendes til at sende med?? Jeg er ikke helt på sikker grund her endnu, så jeg tror at jeg vil adressere de næste par spørgsmål til vores makkere udi denne opgave ( dem der laver den webservice jeg skal kalde ) de må kunne give mig nogle af de informationer jeg mangler. Hvis du er interesseret i at få points så post et svar
Jeg forsøger nu det der med objektet Person Men jeg forstår ikke dette Deployment: (kopier først .class filer til classes eller .jar fil til lib som for enhver web app) java -classpath axis.jar;jaxrpc.jar;commons-logging.jar;log4j-1.2.8.jar;commons-discovery.jar;saaj.jar org.apache.axis.client.AdminClient SortService.wsdd
når man bare skriver sin classpath som ovenstående, hvordan ved java så hvor de jar filer er placeret?, skal jeg skrive stien ind til dem foran, så det kommer til at se sålede ud D:\axis-1_1\lib\*****.jar
nu ser det således ud: D:\webfragt\webservices\wsdd>java -classpath D:\axis-1_1\lib\axis.jar;D:\axis-1_1\lib\jaxrpc.jar;D:\axis-1_1\lib\commons-logging.jar;D:\axis-1_1\lib\log4j-1.2.8.jar;D:\axis-1_1\lib\commons-discovery.jar;D:\axis-1_1\lib\saaj.jar org.apache.axis.client.AdminClient SortService.wsdd Processing file SortService.wsdd Exception:: java.net.ConnectException: Connection refused: connect Det virker ikke helt endnu
Jeg syntes at det er ret uklart hvad det er jeg skal gøre for at komme videre med eksemplet.
Kan du komme med nogle kommentarer til din SortService.wsdd
>> Skal jeg her erstatte Sort med fuldgyldigt klassenavn incl package? <parameter name="className" value="Sort"/>
>> Hvad er det der genpakke for noget ?? xmlns:ns="http://genpakke" qname="ns:Person" type="java:Person" >> skal jeg her skrive hele pakken for Person ??
Hmmm nu ville jeg læse videre på artiklen, men får endnu en gang besked om at jeg skal betale 5 point for at få evig adgang til artiklen. Igår betalte jeg to gange.. Det virker ikke helt godt
Nå, jeg ved ikke hvad jeg gør galt, måske skal jeg placere den der SortService et bestemt sted? skal den placeres i tomcat/webapps/axis/??? eller et sted derunder ?
Nå, efter jeg har placeret den i tomcat/webapps/axis og processeret den der har jeg nu fået en blank side i browseren når jeg kalder http://localhost/axis/SortService.wsdd. Er det korrekt ?
Nu forstår jeg, og jeg har også fået det til at virke. Jeg havde også lige lidt problemer med at jeg fik blandet den Sort og Person jeg selv havde kodet ind i det. Så det var altså disse der er "stub". Det er sommetider lidt svært med alle de IT-begreber.
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.