21
Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel <[email protected]> Jiˇ rí Pospíšil <[email protected]> Aleš ˇ Cepek <[email protected]> FIG 2006 München Pytel Jan Implementation of a General Web Application Program Interface fo

General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

Embed Size (px)

Citation preview

Page 1: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

General Web Application Program Interface forGeoinformatics

Jan Pytel <[email protected]>Jirí Pospíšil <[email protected]>

Aleš Cepek <[email protected]>

FIG 2006München

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 2: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

Introduction

C++ language was used for creating web application atdepartment of Mapping and Cartography for many years

plenty of projects started to by very large–scale andcomplicated to maintain

used CGI technology

projects:

internet access to the database of GPS observation viawww

online transformations

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 3: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

CGICGI example in bashC++ CGI exampleCGI +/−

CGI - The Common Gateway Interface (CGI)

CGI technology defines standard for exchange databetween www server and program (CGI program)

programs are "normal" programs running on the serverside - input data for CGI programs are requests from aclient (data sent by web browser - HTTP header with otherinformation) from CGI program is sent back to the client(web browser)

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 4: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

CGICGI example in bashC++ CGI exampleCGI +/−

CGI example

#!/bin/bashecho ’Content-type: text/html’echoecho ’<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">’echo ’<html>’echo ’<title>Current date</title>’echo ’</head>’echo ’<body><pre>’

/bin/date -I

echo ’</pre></body>’echo ’</html>’

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 5: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

CGICGI example in bashC++ CGI exampleCGI +/−

CGI example

#include<iostream>#include<string>

int main(){

using namespace std;

string s;

cout << "Content-type: text/html\n\n";cout <<

"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML3.2//EN]\">\n";cout << "<html>\n<head>\n";cout << "<title>Input data</title>\n";cout << "</head>\n";cout << "<body>\n";cout << "<h1>Input data:</h1>\n";cout << "<pre>\n";

cin >> s;cout << s;

cout << "</pre>\n</body></html>\n";}

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 6: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

CGICGI example in bashC++ CGI exampleCGI +/−

CGI +/−

CGI programs can be written in many languages, forexample PHP, C++, Python, etc.

creating CGI programs is pretty easy

the CGI concept has some limitations:

each request is answered in a separate process by aseparate instance of CGI program (CGI program needs tobe loaded and started for each CGI request)

platform dependency

lack of scalability

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 7: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

ServletsJava andvantages over CGIServlet exampleDesign pattern — MVC

Servlets

servlet is a Java application that runs within a Web server

servlets receive and respond the requests from Web client

class extends HttpServlet class

we have to use servlet container in order to run servlets

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 8: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

ServletsJava andvantages over CGIServlet exampleDesign pattern — MVC

Java advantages over CGI

servlet does not run in a separate process, stays inmemory between requests

there is only a single instance which answers all requestsconcurrently - this saves memory and allows a servlet toeasily manage persistent data

platform independance

Java language has very rich libraries for working withHTTP request,HTTP responses, etc.

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 9: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

ServletsJava andvantages over CGIServlet exampleDesign pattern — MVC

Servlet example

public class HelloWorldServlet extends HttpServlet{

protected void doGet(HttpServletRequest req,HttpServletResponse res)

throws ServletException, IOException{res.setContentType("text/html");

PrintWriter out = res.getWriter();

out.println("<html>");out.println("<head><title>Hello</title></head>");out.println("<body>Hello world</body>");out.println("</html>");

out.close();}

}

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 10: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

ServletsJava andvantages over CGIServlet exampleDesign pattern — MVC

Design pattern — MVC

Interface is fully object–oriented and using several designpatterns. One of the main goals was selection of objectoriented model, which would separate computing core frompresentation part.

Model represents of the information on which applicationoperates

View renders model into a form suitable for users,typically a user interface element

Controller responds to events, typically user action

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 11: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

System Manala — tasksinterface ComputingTask

WWW system Manala

The general web application program interface forgeoinformatics allows adding arbitrary tasks. Those tasks areaccessible for the users using well-arranged menu. Currently ispossible to add the following three types of tasks into thesystem:

Java tasks written in Java language, implementinginterface ComputingTask

executable programs tasks distribute as standalone executableprograms

C++ tasks written in C++ language

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 12: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

System Manala — tasksinterface ComputingTask

interface ComputingTask

public interface ComputingTask {void setParametersMap(Map<String, String> i);Map getResults();OutputStream getResultStream();void compute();boolean wasComputed();

}

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 13: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

System Manala — tasksinterface ComputingTask

Screenshot — 1

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 14: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

System Manala — tasksinterface ComputingTask

Screenshot — 2

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 15: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

System Manala — tasksinterface ComputingTask

Screenshot — 3

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 16: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

System Manala — tasksinterface ComputingTask

Screenshot — 4

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 17: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

System Manala — tasksinterface ComputingTask

Screenshot — 5

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 18: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

System Manala — tasksinterface ComputingTask

Screenshot — 6

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 19: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

System Manala — tasksinterface ComputingTask

Screenshot — 7

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 20: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

Conclusion

The Java language (servlets) has significantly simplified thedevelopment of web applications. As a result, developing cyclewas cut down. Because of Java JNI (Java Native Interface) it isstill possible to use C++ libraries which are available. Switchdevelopment from "typical CGI programming" to "Java servletprogramming" is surprisingly easy with amazing benefit.

http://gama.fsv.cvut.cz/manala

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics

Page 21: General Web Application Program Interface for Geoinformatics · Introduction CGI Servlets Manala Conclusion General Web Application Program Interface for Geoinformatics Jan Pytel

IntroductionCGI

ServletsManala

Conclusion

Thank you for your attention.

Pytel Jan Implementation of a General Web Application Program Interface for Geoinformatics