dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak
Transkrypt
dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak
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 Kursy walut - serwer src/pl/test/Curses.java 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 import import import java.sql.Connection; java.sql.DriverManager; java.sql.ResultSet; 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