Wieloplatformowe aplikacje sieciowe dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak
SOAP Serwer: Axis2 / Java Wbudowany komponent nasłuchujący, (Apache / Tomcat) Client Axis2 klient / XML Jeżyk programowania: Java, PHP / C++
Server Axis2 http://axis.apache.org/axis2/java/core/ bin axis2server.sh axis2.sh setenv.sh java2wsdl.sh wsdl2java.sh lib samples webapp conf repository modules services services.list version.aar
src/pl/test/curses.java Kursy walut - serwer package pl.test; public class Curses { private HashMap<String, Double> data = new HashMap<String, Double>(); public Curses() { data.put("usd", new Double(2.8850)); data.put("gpb", new Double(4.6407)); data.put("eur", new Double(4.0615)); data.put("pln", new Double(1.0)); public double getcourse(string symbol) { Double price = (Double) data.get(symbol); if(price!= null) return price.doublevalue(); return 0.00;
Kursy walut confgurator src/services.xml <service name="courses" scope="application" targetnamespace="http://test.pl/"> <description>courses calculator</description> <messagereceivers> <messagereceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc. receivers.rpcinonlymessagereceiver"/> <messagereceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc. receivers.rpcmessagereceiver"/> </messagereceivers> <schema schemanamespace="http://test.pl/xsd"/> <parameter name="serviceclass">pl.test.curses</parameter> </service>
Kursy walut Kompilacja mkdir build/classes cp src/services.xml build/classes/meta-inf/ javac -d build/classes/./src/pl/test/curses.java -g %AXIS2_HOME%/bin/java2wsdl.sh -cp./build/classes -cn pl.test.curses -of build/curses.wsdl jar cvf build/curses.aar -C build/classes/. cp build/curses.aar %AXIS2_HOME%/repository/services/
Kursy walut Testowanie http://was.icis.pcz.pl:8080/axis2/services/ Courses Available operations * getcourse http://was.icis.pcz.pl:8080/axis2/services/courses?wsdl http://was.icis.pcz.pl:8080/axis2/services/courses/ getcourse?symbol=pln getcourse?symbol=usd getcourse?symbol=chf
Kursy walut przeliczenie / aktualizacja public double convertcourse( String symbolfrom, double value, String symbolto) { Double pricefrom = (Double) data.get(symbolfrom); Double priceto = (Double) data.get(symbolto); if (pricefrom!= null && priceto!= null) { return (value * pricefrom.doublevalue()) / priceto.doublevalue(); return 0; public void update(string symbol, double price) { data.put(symbol, new Double(price));
Kursy walut przeliczenie / aktualizacja javac -d build/classes/./src/pl/test/curses.java -g jar cvf build/curses.aar -C build/classes/. rm %AXIS2_HOME%/repository/services/Curses.aar cp build/curses.aar %AXIS2_HOME%/repository/services/ http://.../convertcourse? symbolfrom=pln&value=10&symbolto=gpb http://.../convertcourse? symbolfrom=pln&value=10&symbolto=ibm http://.../update?symbol=ibm&price=100
Kursy walut klient ADB Axis Data Binding %AXIS2_HOME%\bin\wsdl2java.sh -uri http://was.icis.pcz.pl:8080/axis2/services/courses?wsdl -d adb -s -o build\client -uri adres / plik z opisem wepserwisu -d framework powiazania: xmlbeans, adb, jibx, and none -s połączenie synchroniczne -o katalog wyjściowy
Kursy walut klient ADB String uri = "http://was.icis.pcz.pl:8080/axis2/services/courses"; try { CoursesStub stub = new CoursesStub(uri); CoursesStub.GetCourse req = new CoursesStub.GetCourse(); req.setsymbol("usd"); CoursesStub.GetCourseResponse res = stub.getcourse(req); System.err.println(res.get_return()); catch (Exception e) { e.printstacktrace();
MySQL baza danych CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `login` varchar(50) NOT NULL, `pass` varchar(40) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Bazy danych - jdbc Do poprawnego działania MySQL'a w Java wymagany jest sterownik bazy danych. Obecnie: mysql-connector-java-5.1.15 W czasie uruchamiania należy dodać ścieżkę do tego sterownika. W axis2: %AXIS2_HOME%/lib/mysql-connector-java-5.1.15-bin.jar
Połączenie MySQL import java.sql.connection; import java.sql.drivermanager; import java.sql.resultset; import java.sql.statement; public class Test { public static void main(string[] args) { try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/test"; Connection con = DriverManager.getConnection(url,"test", "test");
Połączenie MySQL Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery("select * from users;"); while(rs.next()) { int id = rs.getint("id"); String login = rs.getstring("login"); String pass = rs.getstring("pass"); System.out.println( id + " " + login + " " + pass); stmt.close(); con.close(); catch (Exception e) { e.printstacktrace();
Połączenie MySQL - zmiany String insert = "INSERT INTO users (login, pass) " + "VALUES('ddd',MD5('ddd'))"; stmt.executeupdate(insert); Kompilacja: javac Test.java java -cp mysql.jar:./ Test