IBM BlueMIX pradmenys (aplikacijų talpinimas) (java-mysql; php-mysql atvejai) Autorius: Jonas Skendelis © 2014, Visos teisės saugomos Pastaba: prezentacija parengta 2014 m. pavasarį, tad kai kurie elementai jau pasikeitę, nes Bluemix aplinka vystosi, tačiau patys principai išlikę tie patys. Be to, prezentatacija skirta pateikti „gyvai“, tad greta jos prijungti ir visi pradiniai tekstai.
Debesis – kažkas, kažkur, kažkaip, - pateikiantis tai, ko reikia IBM BlueMIX debesis Debesis – kažkas, kažkur, kažkaip, - pateikiantis tai, ko reikia IBM BlueMIX – PaaS (Platform as a Service) cloud platforma, realizuota Open Source principais (Cloud Foundry), orientuota aplikacijų kūrimui, naudojant Open Source resursus
Šios rezentacijos dėmesio sritys: Liberty for Java, PHP Web sprendimų tipai Šios rezentacijos dėmesio sritys: Liberty for Java, PHP Kitos: Node.js, Python, Ruby ...
Prezentacijos dėmesio sritis: MySQL Leidžiami DB pasirinkimai Prezentacijos dėmesio sritis: MySQL Kitos: NoSQL, DataWorks, ClearDB, ElephantSQL, MongoDB, Postgress...
Taikomoji aplikacija, naudojanti MySQL Legenda: Sukurti aplikaciją BlueMIX terpėje; Sukurti arba prijungti servisą (MySQL); Serviso pasijungimo parametrai (VCAP_SERVICES)
Pasižiūrim „gyvai“ ! …
PHP: Labas, pasauli! Sukuriam „baisiai didelį" PHP puslapį: <!DOCTYPE html> <html><head> <title>PHP: Labas, Pasauli!</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="style.css" /> </head> <body> <?php print "<P><B>Labas, Pasauli!</B>"; ?> </body> </html>
... Ir išmetam į „debesis"! Žiūrim kas yra meniu: Start Coding > a) download cf.exe; b) download Starter code; c) Connect to BlueMIX: cf api https://api.ng.bluemix.net d) Login: cf login -u JSkendel@domenas.dm e) Panagrinėjam: manifest.yml f) Upload: cf push PHP-jonas Kiek palaukiam ir .... VISKAS! Patikrinam: http://php-jonas.mybluemix.net/ http://adm-mysql.mybluemix.net/
O dabar ... tebūnie su MySQL Pasijungimo parametrai (VCAP_SERVICES): { "mysql-5.5": [ "name": "mysql-java", "label": "mysql-5.5", "plan": "100", "credentials": { "name": "d47e8ad20fd864e7e8c05075cf643eb9d", "hostname": "75.126.23.246", "host": "75.126.23.246", "port": 3307, "user": “XXXXXX", "username": “UUUUUU", "password": “PPPPPP", "uri": "mysql://UUUUUU:PPPPPP@75.126.23.246:3307/d47e8ad20fd864e7e8c05075cf643eb9d" } ]
PHP: Parodyti MySQL versiją $key = "VCAP_SERVICES"; $value = getenv ( $key ); $vcap_services = json_decode($_ENV["VCAP_SERVICES" ]); $db = $vcap_services->{'mysql-5.5'}[0]->credentials; $mysql_database = $db->name; $mysql_port=$db->port; $mysql_server_name =$db->host . ':' . $db->port; $mysql_username = $db->username; $mysql_password = $db->password; $con = mysql_connect($mysql_server_name, $mysql_username, $mysql_password); if (!$con) { die ('connection failed' . mysql_error()); } $dbselect = mysql_select_db($mysql_database, $con); if ( ! $dbselect ) { echo "<P>ERR:" . mysql_error(); } $strsql = "SELECT VERSION() AS V"; $R = @mysql_query ( $strsql ); echo '<P>Version: '. mysql_result($R, 0, 0) ; mysql_free_result ( $R ); mysql_close();
Būtinas: MySQL Connector/J (jar file) Java sprendimų talpinimas O dabar - tebūnie JAVA ! Būtinas: MySQL Connector/J (jar file)
Java: gauti prisijungimo parametrus import java.util.Map; import java.net.URI; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; // … Map<String, String> env = System.getenv(); String usr, pwd, url; if (env.containsKey("VCAP_SERVICES")) { JSONParser parser = new JSONParser(); JSONObject vcap = (JSONObject)parser.parse(env.get("VCAP_SERVICES")); JSONObject service = null; for (Object key : vcap.keySet()) { String keyStr = (String) key; if (keyStr.toLowerCase().contains("mysql-5.5")) { service = (JSONObject) ((JSONArray) vcap.get(keyStr)).get(0); break; } if (service != null) { JSONObject creds = (JSONObject) service.get("credentials"); URI uri = URI.create((String) creds.get("uri")); url = "jdbc:mysql://" + uri.getHost() + ":" + uri.getPort() + uri.getPath(); usr = uri.getUserInfo().split(":")[0]; pwd = uri.getUserInfo().split(":")[1];
Java: Parodyti MySQL versiją import java.io.InputStream; import java.io.IOException; import java.sql.*; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; … static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; Class.forName(JDBC_DRIVER, true, this.getClass().getClassLoader()); Connection conn = DriverManager.getConnection(url, usr, pwd); Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT VERSION()"); String outputString = “<P>Labas, MySQL”; if (rs.next()) { outputString = ": version:" + rs.getString(1); } rs.close; st.close(); conn.close(); response.getWriter().println(outputString);
Ir tebūnie šviesa! Palaukiam ir .... VISKAS ! Surenkam viską į vieną vietą; Eksportuojam WAR Peržiūrim manifest.yml Kraunam „debesin“.... cf push JonasFirst -p HelloSQL.war Palaukiam ir .... VISKAS ! Patikrinam: http://jonasfirst.mybluemix.net/HelloSQL
Ačiū už dėmesį ! Pageidaujant prezentacijos „gyvai“ - kreipkitės į jonas.skendelis@yahoo.com Pradinius tekstus galite pasiimti adresu: http://www.lithuanian.net/prezentacijos/sources_bluemix.zip