{{:magik-demo:magik_logo.png?nolink&500|}} ====== MAGIK Project ====== This document describes how to manipulate with MAGIK project. \\ In particular how to: * [[#Deploy MAGIK on Server or Localhost]] * [[#Import MAGIK Project in Eclipse]] * [[#MAGIK Project Description]] ===== Deploy MAGIK on Server or Localhost ===== Here we explain how to deploy compiled MAGIK application (in [[http://en.wikipedia.org/wiki/WAR_file_format_(Sun)|.WAR]] file format) on your web server or localhost. === Requirements === * [[http://tomcat.apache.org/download-70.cgi|Apache Tomcat 7.0]] installed on your web server or localhost * [[http://www.postgresql.org/download/|PostgreSQL]] installed on your web server or localhost. We recommend [[http://www.pgadmin.org/download/|pgAdmin]] as a PostgreSQL tool to manage your databases. === Steps === - First step is to set the DLV executable file path and PROLOG folder (for the code to execute for the specialization) by setting up environment variable - Detect where is located the folder magik_libs - Copy the (absolute) entire path (file name included) - Put in an __ENVIRONMENT VARIABLE__ called **MAGIK_LIBS**. An example: DLV_PATH =/Users/user/Documents/workspace/MAGIK_WEB_3/magik_libs - E.g., on Mac OS X or Linux Operating systems, one can set this environment variable the following command in terminal $export MAGIK_LIBS=aboslute_path_to_your_local_magik_libs - Deploy WAR file to Apache Tomcat server. \\ There are two ways to do it: - Using **Tomcat Web Application Manager** * Start Tomcat. * Open **Tomcat Web Application Manager** which usually can be accessed through ''http://[yourwebsiteorlocalocalhost]/manager'' . * Select WAR file to be uploaded, then click **Deploy**. - Manual copying the .WAR file using * Stop Tomcat. On Unix like systems (Linux) one can do it with shell command: ''$/etc/init.d/tomcat7 stop'' * If you have previously deployed "foo.war" in ''[TOMCAT_HOME]/webapps/'', then it has been unpacked into ''webapps/foo/''. Firstly delete this directory and all its content. On Unix, this can be done with ''rm -r $TOMCAT_HOME/webapps/foo''. * Copy WAR file to ''[TOMCAT_HOME]/webapps/''. * Start Tomcat again. On Unix like systems (Linux) one can do it with shell command: ''$/etc/init.d/tomcat7 stop'' - Create new designated PostgreSQL database for MAGIK web application. Detail explanation on how to create PostgreSQL database can be found [[http://www.postgresql.org/docs/8.1/static/manage-ag-createdb.html|here]]. - Run MAGIK web application. This also can be done in two ways: - Through **Tomcat Web Application Manager**, by clicking the chosen application - Through web browser, e.g.: ''http://[yourwebsiteorlocalocalhost]/manager'' - Specify database connection for MAGIK web application. [[magik-demo:developer:magik-project|Back to Top]] | [[magik-demo:start-here|Back to Home Page]] ===== Import MAGIK Project in Eclipse ===== === Requirements === * ''unibz'' credentials with reading rights for svn ''https://babbage.inf.unibz.it/repositories/svn/osavkovic/MAGIK-DEMO/'' === Steps === * Download Eclipse 3.x. Choose a workspace folder (not the one using for MAGIK-DEMO SVN). * Install Eclipse plugin ''subversion.tigris.org'' for SVN control (see instruction http://web.mit.edu/6.005/www/fa11/psets/ps0/subclipse.html). Alternatively, one can use any SVN control program (e.g., svn command line tool, SmartSVN, etc.) but here we provide instruction for ''subversion.tigris.org'' only. * Import MAGIK project: * ''File>Import>SVN>Check out project from SVN'' * Create new repository location, and enter in the URL field: ''https://babbage.inf.unibz.it/repositories/svn/osavkovic/MAGIK-DEMO/Implementation/MAGIK_WEB_[VERSION]''. Use your unibz credentials for the username and password. Beforehand, you need to obtain reading rights for the SVN (request by email). * Select MAGIK folder and press Next. Again Next. And Finish. Now the Eclipse should import the project and MAGIK folder (with small database icon) appears in the package explorer. === Running MAGIK from Eclipse in localhost === * To do so, one needs to link locally installed Apache Tomcat with Eclipse (see [[http://www.coreservlets.com/Apache-Tomcat-Tutorial/eclipse.html| tutorial]]). Go to ''File>New>Other''. Find ''Server'' and click ''Next''. Then choose ''Apache>Tomcat v7.0 Server'' and click ''Next''. Then go ''Browse'' and enter the local directory path where Apache Tomcat is installed. Finally, click ''Finish''. * To run your MAGIK copy within Eclipse, right-click on the main project folder and then go to ''Run As>Run on Server'' and then ''Finish''. === DLV API === * DLV is an Answer-Set Programming solver that MAGIK uses internally to reason about completeness. * DLV executable files for Win, Mac and Linux comes within the project. They are located in project directory ''/lib'' * DLV systems offers DLV Wrapper to use DLV in Java Object Environment (''http://www.dlvsystem.com/dlvsystem/index.php/DLV_WRAPPER''). * In case Eclipse is not able to find DLV using relative path, edit class ''it.unibz.inf.magik.core.DLV_engine'' and set absolute path to your DLV executable. * Wrapper Installation instructions - a remainder: * Go to ''http://www.dlvsystem.com/dlvsystem/files/DLVwrapper-v4.2.jar''. Add this file to your MAGIK libraries (RightClick on ''project>Properties>Java Build Path>Libraries>Add external JARs''). * Depending on the OS (Win, Mac, Linux) one will use different DLV executable. The committed DLV executables for major systems are in the project folder ''/lib''. * To test your DLV API, we created a ''JUnit'' class ''TestDLVAPI'', which one should run to test whether DLV API is properly installed. Finally, set a path variabile DLV_PATH to the absolute path of your DLV executable. [[magik-demo:developer:magik-project|Back to Top]] | [[magik-demo:start-here|Back to Home Page]] ===== MAGIK Project Description ===== MAGIK Web application is developed using Eclipse as a Web development platform, with the type of [[http://help.eclipse.org/indigo/topic/org.eclipse.wst.webtools.doc.user/topics/ccwebprj.html|Dynamic Web project]]. To deploy MAGIK web application in the web server, one needs to [[http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.wst.webtools.doc.user%2Ftopics%2Ftwcrewar.html|export the Eclipse project as WAR file]].\\ \\ The structure of the project is as follows: * ''**Web Deployment Descriptor**'' → the standard Web application deployment descriptor (the web.xml file). * ''**Java Resources**'' * ''**src**'' → contains the project's Java source code for classes, beans, and servlets. When these resources are added to a Web project, they are automatically compiled and the generated files are added to the ''WEB-INF/classes'' directory. * ''[[#it.unibz.inf.magik.additional|it.unibz.inf.magik.additional]]'' * ''[[#it.unibz.inf.magik.beans|it.unibz.inf.magik.beans]]'' * ''[[#it.unibz.inf.magik.core|it.unibz.inf.magik.core]]'' * ''[[#it.unibz.inf.magik.db|it.unibz.inf.magik.db]]'' * ''[[#it.unibz.inf.magik.exception|it.unibz.inf.magik.exception]]'' * ''[[#it.unibz.inf.magik.hibernate|it.unibz.inf.magik.hibernate]]'' * ''[[#it.unibz.inf.magik.test|it.unibz.inf.magik.test]]'' * ''[[#it.unibz.inf.magik.web|it.unibz.inf.magik.web]]'' * ''**[[#WebContent|WebContent]]**'' → the mandatory location of all Web resources, including HTML, JSP, graphic files, and so on. * ''**META-INF**'' → contains the MANIFEST.MF file, which is used to map class paths for dependent JAR files that exist in other projects in the same Enterprise Application project. * ''**css**'' → contains cascading style sheets. * ''**js**'' → contains JavaScript file. * ''**WEB-INF**'' → contains the supporting Web resources for a Web application, including the web.xml file and the classes and lib directories. * ''**/classes**'' → for servlets, utility classes, and the Java compiler output directory. * ''**/lib**'' → contains the supporting JAR files that the Web application references. Any classes in .jar files placed in this directory will be available for the Web application. MAGIK comes with the following libraries. * [[http://www.dlvsystem.com/dlvsystem/index.php/DLV_WRAPPER|DLV Wrapper]] * [[http://jdbc.postgresql.org/|PostgreSQL JDBC Driver]] * [[http://www.hibernate.org/|Hibernate]] * ''**Libraries**'' → contains the supporting JAR files that the Web application references, including "virtual" JAR files that do not physically reside in the Web project, but are associated with Java projects. This folder mirrors the content of the ''lib'' folder. * ''**doc**'' → contains all the documentation files related to the project. It is also possible to compile the project as standalone application to be deployed on a local machine. This is obtained by changing the line in ''[[magik-demo:developer:magik-business-logic#index.jsp|WebContent/index.jsp]]'': sessionSchemas.setWebApp(true); into sessionSchemas.setWebApp(false); [[magik-demo:developer:magik-project|Back to Top]] | [[magik-demo:start-here|Back to Home Page]]