|
1 | 1 | #!/bin/bash |
| 2 | +# DukeUniversity™ — Deploy Local |
| 3 | +# Deploys JSP webapp to Tomcat with JDBC connector and compiled servlet classes. |
| 4 | +# Usage: bash modules/duke/servlets/deploy-local.sh [tomcat_home] |
2 | 5 | set -e |
| 6 | + |
3 | 7 | SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" |
4 | | -TOMCAT_WEBAPPS="${TOMCAT_HOME:-/home/mearvk/tomcat}/webapps" |
5 | | -echo "[*] Deploying DukeUniversity™ to $TOMCAT_WEBAPPS/duke" |
6 | | -rm -rf "$TOMCAT_WEBAPPS/duke"; mkdir -p "$TOMCAT_WEBAPPS/duke" |
7 | | -cp -r "$SCRIPT_DIR/servlet/src/main/webapp/"* "$TOMCAT_WEBAPPS/duke/" |
8 | | -mkdir -p "$TOMCAT_WEBAPPS/duke/WEB-INF/lib" |
| 8 | +TOMCAT_HOME="${1:-${CATALINA_HOME:-/home/mearvk/tomcat}}" |
| 9 | +CONTEXT="california-duke" |
| 10 | +DEPLOY_DIR="$TOMCAT_HOME/webapps/$CONTEXT" |
9 | 11 | NWE_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)" |
10 | | -JDBC_JAR=$(find "$NWE_ROOT/modules/black/presidential/Brarner.M.Alete/jars" "$NWE_ROOT/jars/mysql" -name "mysql-connector-j*.jar" -type f 2>/dev/null | head -1) |
11 | | -[ -n "$JDBC_JAR" ] && cp "$JDBC_JAR" "$TOMCAT_WEBAPPS/duke/WEB-INF/lib/" && echo "[*] JDBC: $(basename "$JDBC_JAR")" || echo "[!] WARNING: mysql-connector-j not found" |
12 | | -if command -v javac &>/dev/null; then |
13 | | - mkdir -p "$TOMCAT_WEBAPPS/duke/WEB-INF/classes/com/mearvk/duke" |
14 | | - javac -cp "${TOMCAT_HOME:-/home/mearvk/tomcat}/lib/*" -d "$TOMCAT_WEBAPPS/duke/WEB-INF/classes" "$SCRIPT_DIR/servlet/src/main/java/com/mearvk/duke/"*.java 2>/dev/null || true |
| 12 | +WEBAPP_SRC="$SCRIPT_DIR/servlet/src/main/webapp" |
| 13 | + |
| 14 | +echo "[*] Deploying DukeUniversity™ to $DEPLOY_DIR" |
| 15 | + |
| 16 | +# Validate Tomcat exists |
| 17 | +if [ ! -d "$TOMCAT_HOME/webapps" ]; then |
| 18 | + echo "[!] Tomcat not found at: $TOMCAT_HOME" |
| 19 | + echo " Set CATALINA_HOME or pass path as argument." |
| 20 | + exit 1 |
15 | 21 | fi |
16 | | -echo "[OK] DukeUniversity™ deployed at /duke" |
| 22 | + |
| 23 | +# Validate webapp source exists |
| 24 | +if [ ! -d "$WEBAPP_SRC" ]; then |
| 25 | + echo "[!] Webapp source not found: $WEBAPP_SRC" |
| 26 | + exit 1 |
| 27 | +fi |
| 28 | + |
| 29 | +# Deploy webapp (preserves Tomcat structure) |
| 30 | +rm -rf "$DEPLOY_DIR" |
| 31 | +mkdir -p "$DEPLOY_DIR/WEB-INF/lib" "$DEPLOY_DIR/WEB-INF/classes/com/mearvk/duke" |
| 32 | +cp -r "$WEBAPP_SRC/"* "$DEPLOY_DIR/" |
| 33 | + |
| 34 | +# JDBC connector |
| 35 | +JDBC_JAR=$(find "$NWE_ROOT/jars/mysql" -name "mysql-connector-j*.jar" -type f 2>/dev/null | head -1) |
| 36 | +[ -z "$JDBC_JAR" ] && JDBC_JAR=$(find "$TOMCAT_HOME/lib" -name "mysql-connector-j*.jar" -type f 2>/dev/null | head -1) |
| 37 | +if [ -n "$JDBC_JAR" ]; then |
| 38 | + cp "$JDBC_JAR" "$DEPLOY_DIR/WEB-INF/lib/" |
| 39 | + echo "[✓] JDBC: $(basename "$JDBC_JAR")" |
| 40 | +else |
| 41 | + echo "[!] WARNING: mysql-connector-j not found — JSP database queries will fail" |
| 42 | +fi |
| 43 | + |
| 44 | +# Compile servlets (if javac available and source exists) |
| 45 | +JAVA_SRC="$SCRIPT_DIR/servlet/src/main/java/com/mearvk/duke" |
| 46 | +if command -v javac &>/dev/null && [ -d "$JAVA_SRC" ]; then |
| 47 | + SERVLET_API=$(find "$TOMCAT_HOME/lib" -name "servlet-api.jar" -o -name "jakarta.servlet-api*.jar" 2>/dev/null | head -1) |
| 48 | + if [ -n "$SERVLET_API" ]; then |
| 49 | + find "$JAVA_SRC" -name "*.java" | xargs javac \ |
| 50 | + -cp "$SERVLET_API:$DEPLOY_DIR/WEB-INF/lib/*" \ |
| 51 | + -d "$DEPLOY_DIR/WEB-INF/classes" 2>&1 && echo "[✓] Servlets compiled" || echo "[!] Servlet compilation failed (non-fatal)" |
| 52 | + else |
| 53 | + echo "[--] No servlet-api.jar in $TOMCAT_HOME/lib — skipping compilation" |
| 54 | + fi |
| 55 | +fi |
| 56 | + |
| 57 | +# Validate WEB-INF/web.xml exists |
| 58 | +if [ ! -f "$DEPLOY_DIR/WEB-INF/web.xml" ]; then |
| 59 | + echo "[!] WARNING: No WEB-INF/web.xml — Tomcat may not recognize this webapp" |
| 60 | +fi |
| 61 | + |
| 62 | +# Validate at least one JSP exists |
| 63 | +JSP_COUNT=$(find "$DEPLOY_DIR" -name "*.jsp" 2>/dev/null | wc -l) |
| 64 | +if [ "$JSP_COUNT" -eq 0 ]; then |
| 65 | + echo "[!] WARNING: No JSP files found in deployment" |
| 66 | +else |
| 67 | + echo "[✓] JSP pages: $JSP_COUNT" |
| 68 | +fi |
| 69 | + |
| 70 | +echo "[OK] DukeUniversity™ deployed at /$CONTEXT" |
0 commit comments