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

Podobne dokumenty