Tomcat und Servlets im Server2Go 14.12.2015
Für die Projekte in SE ist die Integration von Servlets oder JavaServerPages nötig.
Der übliche Weg ist ein dem Apache nachgeschalteter Tomcat als Container für Servlets/JSP.
Somit liefert der Apache html, Grafiken etc. aus, welche mit php oder perl generiert werden können und der Tomcat bearbeitet Anfragen an Servlets oder jsp.
Dabei werden diese Anfragen vom Apache über einen sogenannten Connector zum Tomcat weitergeleitet.
Wichtige Hinweise
server2go.exe 127.0.0.1:4001/phpMyAdmin: Benutzername:root, ohne Kennwort.
Tomcatmanager: http://127.0.0.1:8080/ , Benutzername: root, ohne Kennwort.
16+8 Schritte, um Servlets/JSP in Server2Go zu integrieren und ein Servlet mit Datenbankabfrage zu entwickeln :O
Quelle: http://www.server2go-web.de/download/download.html
Versionshinweis:Apache 2.2.15, PHP 5.3.2, SQLite, MySQL 5.1.46, Perl 5.8
Quelle: http://tomcat.apache.org/download-80.cgi
Versionshinweis:Servlet/JSP Spec: 3.0/2.2, Apache Tomcat version: 8.0.x
Quelle: http://apache.copahost.com//tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/
Versionshinweis:mod_jk-1.2.31-httpd-2.2.3.so is for Apache 2.2.x. It has been build against version 2.2.3, but should work with Apache 2.2.0 and later.
Hinweis: Bei Server2Go befinden sich die einzelnen Applikationen (mysql,php,perl) ebenfalls in diesem Verzeichnis.
Hinweis: Servlets und Javaserverpages werden vom Tomcat aus dem webapps-Verzeichnis geladen, dieses befindet sich direkt im Tomcatordner. Um die Verzeichnisstruktur von Server2go weiterzuverwenden, wird das webapp-Verzeichnis verschoben.
Hinweis: Das Connector-Modul mod_jk leitet die jsp/Servlet-Anfragen vom Apache zum Tomcat weiter.
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">neu:
<Host name="localhost" appBase="../../htdocs/webapps" unpackWARs="true" autoDeploy="true">
Hinweis: in der Version apache-tomcat-xxx.zip meist schon vorhanden [falls nicht vorhanden - einfügen/anpassen]
<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
worker.list=myWorker worker.myWorker.port=8009 worker.myWorker.host=localhost worker.myWorker.type=ajp13
Hinweis: Die Angaben müssen mit den obigen Connectorattributen [in server.xml] übereinstimmen.
LoadModule jk_module modules/mod_jk.so JkWorkersFile ../apache-tomcat/conf/workers.properties JkLogFile ../apache-tomcat/logs/mod_jk.log JkLogLevel debug Alias /examples ../../htdocs/examples JkMount /examples/* myWorker JkMount /examples/*.jsp myWorker Alias /mywebapp ../../htdocs/mywebapp JkMount /mywebapp/* myWorker
Hinweis: Mit diesen Angaben werden die http-Anfragen mit der URI host/examples/* und host/mywebapp/* über den myWorker-Connector weitergeleitet.
"examples" enthält Beispiele für jsp/Servlets, "mywebapp" dient für obiges Beispiel eines ersten, eigenen Servlets.
<role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="root" password="" roles="manager-gui,admin-gui"/>
Hinweis: Um den Tomcat über das Webinterface administrieren zu können, müssen die Nutzer mit Rollen eingetragen werden. Login/Passwort wie bei phpMyAdmin gewählt.
@echo off set PATH=%PATH%;C:\Windows\System32; if not "%JAVA_HOME%" == "" goto gotJava For /F "tokens=1" %%i in ('dir /AD /B C:\Programme\java\jdk*^|Find /i "jdk"') Do @set JAVA_HOME=C:\Programme\java\%%i if not "%JAVA_HOME%" == "" goto gotJava if not "%JRE_HOME%" == "" goto gotJava For /F "tokens=1" %%i in ('dir /AD /B C:\Programme\java\jre*^|Find /i "jre"') Do @set JRE_HOME=C:\Programme\java\%%i :gotJava cd server/apache-tomcat/bin startup.bat
Hinweis: Das Skript versucht, den Pfad zur Javainstallation zu ermitteln, hier sind evtl. Anpassungen nötig.
@echo off set PATH=%PATH%;C:\Windows\System32; if not "%JAVA_HOME%" == "" goto gotJava For /F "tokens=1" %%i in ('dir /AD /B C:\Programme\java\jdk*^|Find /i "jdk"') Do @set JAVA_HOME=C:\Programme\java\%%i if not "%JAVA_HOME%" == "" goto gotJava if not "%JRE_HOME%" == "" goto gotJava For /F "tokens=1" %%i in ('dir /AD /B C:\Programme\java\jre*^|Find /i "jre"') Do @set JRE_HOME=C:\Programme\java\%%i :gotJava cd server/apache-tomcat/bin shutdown.bat
Hinweis: siehe 11)
Startup1=starttomcat.batund
Shutdown1=shutdowntomcat.bat
Hinweis: Somit wird der Tomcat automatisch mitgestartet und beendet. und
BrowserType=FIREFOX
Hinweis: In Win7/8 Probleme mit ie: schließt automatisch und somit wird server2go beendet.
alt:
call "%EXECUTABLE%" start %CMD_LINE_ARGS%neu:
call "%EXECUTABLE%" run %CMD_LINE_ARGS%
Hinweis: Somit wird kein Konsolenfenster für den Tomcat geöffnet.
An den entsprechenden Stellen auf die Tomcatintegration verweisen, Samples, Zugriff auf Tomcat etc.
alt:
LocalMirror=1neu:
LocalMirror=0
Hinweis: Somit können Daten in der Datenbank gespeichert werden. Nicht für Server2Go auf CD/DVD etc.
Beispielservlet mit Datenbankabfrage:
Datei: mysql-connector-java-5.1.15.zip
Quelle: http://www.mysql.com/downloads/connector/j/
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/MyServlet</url-pattern> </servlet-mapping> </web-app>
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.sql.ResultSet; public class MyServlet extends HttpServlet { public static void main(String args[]) throws Exception { System.out.println("start"); PrintWriter pw = new PrintWriter(System.out); doMysql(pw); pw.flush(); pw.close(); } protected static void doMysql(PrintWriter out) throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException { Class.forName("com.mysql.jdbc.Driver").newInstance(); out.println("stelle Verbindung her...<br>"); Connection con=null; con= DriverManager.getConnection("jdbc:mysql://localhost:7188/server2go","root",""); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery( "SELECT * FROM items" ); while ( rs.next() ) out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+"<br>"); out.println("schließe Verbindung ..."); con.close(); } @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><head><title>MyServlet</title></head><body>"); out.println("MyServlet!<br>"); try { doMysql(out); } catch(Exception ex) {out.println("Fehler bei doMysql: "+ex);}; out.println("</body></html>"); out.flush(); out.close(); } }
C:\Dokumente und Einstellungen\roeper\Desktop\server2go\htdocs\webapps\mywebapp\WEB-INF\classes>javac -classpath "C:\Dokumente und Einstellungen\roeper\Desktop\server2go\server\apache-tomcat\lib\servlet-api.jar";../lib/mysql-connector-java-5.1.15-bin.jar MyServlet.java
Hinweis: Pfade anpassen!
C:\Dokumente und Einstellungen\roeper\Desktop\server2go\htdocs\webapps\mywebapp\WEB-INF\classes>java -classpath .;"C:\Dokumente und Einstellungen\roeper\Desktop\server2go\server\apache-tomcat\lib\servlet-api.jar";../lib/mysql-connector-java-5.1.15-bin.jar MyServlet
Hinweis: Pfade anpassen!
URI:http://127.0.0.1:4001/mywebapp/MyServlet
Eventuell muß das Servlet neu geladen werden, d.h. unter Tomcatmanager einloggen und dort neu laden.
Quellen:http://www.server2go-web.de
http://tomcat.apache.org/
http://www.apache.org/
http://tomcat.apache.org/connectors-doc/generic_howto/quick.html
http://onjava.com/pub/a/onjava/2002/11/20/tomcat.html
http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html
http://openbook.galileocomputing.de/javainsel/javainsel_23_012.htm