_ 3.3.4 XML-RPC på klientsidan Vi ska nu titta på hur man hos en klient, via XML, kan anropa metoder som utförs på en annan maskin. Detta är likt RMI (som dock inte använder XML) men skillnaden är att: - Språk: -- RMI måste köras med Java på både klient och server -- XML-RPC och JAX-RPC kan använda olika språk och språket hos klienten behöver inte vara samma som språket hos servern - Möjligheter: -- RMI är kraftfullt eftersom man kan hantera egendefinierade godtyckliga (serialiserbara) objekt och kommunikationen kan vara tvåvägs -- XML-RPC och JAX-RPC kan enbart hantera en mindre uppsättning fördefinierade typer (som ofta räcker långt) och kommunikationen går enbart från klienten till servern (men givetvis kan klienten också ha en XML-RPC-server igång och på så sätt kan man få tvåvägskommunikation) - Utvecklarvänlighet: -- RMI kan vara krångligt (interface, stub, RMI-registry med mera) -- XML-RPC och JAX-RPC är lätt Uppgiften belyser högnivåkopplingar med XML-RPC och JAX-RPC på klientsidan. __ Uppgift På servern §atlas.dsv.su.se§ port §7777§ körs ett XML-RPC-serversidesprogram som man kan nå via anknytning §prime_handler§ och som kan anropas via metoden: § public String getPrime(String password) § Detta program försöker hela tiden hitta större och större primtal och lagrar detta primtal på en fil för att kunna fortsätta vid det vid en eventuell omstart. Metoden §getPrime§ returnerar således detta senast funna primtal men returnerar samtidigt även den tid då detta hittades. För att kunna köra metoden måste lösenordet §2isAnOddPrime§ sändas med som argument. Gör ett XML-RPC-klientsidesprogram som använder denna metod för att få senast funna primtal och den tid då det hittades. Notera att vi i denna uppgift använder [Apache: XML-RPC, http://ws.apache.org/xmlrpc/] men att man istället kan använda JAX-RPC om man vill. __ Exempel Hämta filerna: - §[xmlrpc-1.2-b1.jar, 05_ass/ip1/3/3.3.4/xmlrpc-1.2-b1.jar]§ - §[Client.class, 05_ass/ip1/3/3.3.4/Client.class]§ Kör igång XML-RPC-klientprogrammet med: - macOS/Linux: §java -classpath xmlrpc-1.2-b1.jar:. Client atlas.dsv.su.se 7777 2isAnOddPrime§ - Windows: §java -classpath xmlrpc-1.2-b1.jar;. Client atlas.dsv.su.se 7777 2isAnOddPrime§ __ Tips Man kompilerar exempelvis så här: - macOS/Linux: §javac -classpath xmlrpc-1.2-b1.jar:. Client.java§ - Windows: §javac -classpath xmlrpc-1.2-b1.jar;. Client.java§ __ Hjälp ~ 05_ass/help/01.txt > [Klicka här för hjälp, helper.dsv@gmail.com, Prog Internet: 3.3.4 XML-RPC på klientsidan: http://people.dsv.su.se/~pierre/i/i.cgi?href=05_ass/ip1/3.3.4.txt] ½===system_tutoring_message===½ < ~ 05_ass/help/02.txt