Dateiverwaltung für die WebBox
ulrich
2018-04-03 b12c95e1d53caed954314ed5e42f0e54730df5cd
Dateiablage als JNDI-Parameter eingebaut
3 files modified
1 files added
115 ■■■■■ changed files
README.md 15 ●●●● patch | view | raw | blame | history
src/java/de/uhilger/filecms/web/Initialiser.java 6 ●●●● patch | view | raw | blame | history
src/java/de/uhilger/filecms/web/TestServlet.java 86 ●●●●● patch | view | raw | blame | history
web/WEB-INF/web.xml 8 ●●●●● patch | view | raw | blame | history
README.md
@@ -18,11 +18,22 @@
### Konfiguration
Die Dateiverwaltung arbeitet mit relativen Pfadangaben und erhält den Ablageort von Dateien über die Angabe `de.uhilger.filecms.web.Initialiser.FILE_BASE` des Servlet-Kontext. Diese Angabe wird beim Start der Dateiverwaltung gebildet und kann im Deployment Descritor der Dateiverwaltung (Datei `WEB-INF/web.xml`) mit dem Context-Parameter `datenAblage` festgelegt werden.
Die Dateiverwaltung erhält den Ablageort von Dateien über den JNDI-Eintrag
````
<Environment
  name="wbxFileBase"
  type="java.lang.String"
  value="/pfad/zu/den/daten"
  override="false"
/>
````
Wenn die Angabe `wbxFileBase` wie oben als JNDI-Parameter angegeben wird, kann sie beispielsweise in der Datei `$CATALINA_BASE/context.xml` hinterlegt werden.
#### Automatische Ermittlung des Ablageortes
Ist die Angabe `datenAblage` im Deployment Descriptor der Dateiverwaltung leer, wird der Ablageort `../../../daten` ausgehend von `$CATALINA_BASE/webapps` verwendet. Wenn also z.B. das webapps-Verzeichnis in `/usr/local/tomcat/webapps` liegt, dann wird das Datenverzeichnis der Dateiablage in `/usr/daten` vermutet. Liegt es stattdessen in `/media/extmirror/srv/wbx/sys/base/webapps` dann lautet der Datenpfad `/media/extmirror/srv/wbx/daten`.
Ist die Angabe `wbxFileBase` nicht zu finden oder leer, wird der Ablageort `../../../daten` ausgehend von `$CATALINA_BASE/webapps` verwendet. Wenn also z.B. das webapps-Verzeichnis in `/usr/local/tomcat/webapps` liegt, dann wird das Datenverzeichnis der Dateiablage in `/usr/daten` vermutet. Liegt es stattdessen in `/media/extmirror/srv/wbx/sys/base/webapps` dann lautet der Datenpfad `/media/extmirror/srv/wbx/daten`.
## Webanwendung herstellen
src/java/de/uhilger/filecms/web/Initialiser.java
@@ -18,6 +18,7 @@
package de.uhilger.filecms.web;
import de.uhilger.wbx.WbxUtils;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
@@ -36,6 +37,7 @@
  
  public static final String FILE_BASE = "filebase";
  public static final String DATENABLAGE = "datenAblage";
  public static final String WBX_FILE_BASE = "wbxFileBase";
  
  /**
   * Bei der WebBox ist das Datenverzeichnis relativ zum Verzeichnis 
@@ -85,7 +87,9 @@
   * ist anschliessend die Angabe unter Initialiser.FILE_BASE abrufbar
   */
  protected void ablageErmitteln(ServletContext ctx) {
    Object o = ctx.getInitParameter(DATENABLAGE);
    //Object o = ctx.getInitParameter(DATENABLAGE);
    WbxUtils wu = new WbxUtils();
    Object o = wu.getJNDIParameter(WBX_FILE_BASE, WbxUtils.EMPTY_STRING);
    try {
      if(o instanceof String) {
        String pfad = o.toString();
src/java/de/uhilger/filecms/web/TestServlet.java
New file
@@ -0,0 +1,86 @@
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package de.uhilger.filecms.web;
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;
/**
 *
 * @author ulrich
 */
public class TestServlet extends HttpServlet {
  /**
   * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
   * methods.
   *
   * @param request servlet request
   * @param response servlet response
   * @throws ServletException if a servlet-specific error occurs
   * @throws IOException if an I/O error occurs
   */
  protected void processRequest(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    try (PrintWriter out = response.getWriter()) {
      /* TODO output your page here. You may use following sample code. */
      out.println("<!DOCTYPE html>");
      out.println("<html>");
      out.println("<head>");
      out.println("<title>Servlet TestServlet</title>");
      out.println("</head>");
      out.println("<body>");
      out.println("<h1>Servlet TestServlet at " + request.getContextPath() + "</h1>");
      out.println("</body>");
      out.println("</html>");
    }
  }
  // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
  /**
   * Handles the HTTP <code>GET</code> method.
   *
   * @param request servlet request
   * @param response servlet response
   * @throws ServletException if a servlet-specific error occurs
   * @throws IOException if an I/O error occurs
   */
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
    processRequest(request, response);
  }
  /**
   * Handles the HTTP <code>POST</code> method.
   *
   * @param request servlet request
   * @param response servlet response
   * @throws ServletException if a servlet-specific error occurs
   * @throws IOException if an I/O error occurs
   */
  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
    processRequest(request, response);
  }
  /**
   * Returns a short description of the servlet.
   *
   * @return a String containing servlet description
   */
  @Override
  public String getServletInfo() {
    return "Short description";
  }// </editor-fold>
}
web/WEB-INF/web.xml
@@ -45,6 +45,10 @@
        <servlet-name>Feeder</servlet-name>
        <servlet-class>de.uhilger.filecms.web.FeedServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>TestServlet</servlet-name>
        <servlet-class>de.uhilger.filecms.web.TestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TransitRS</servlet-name>
        <url-pattern>/rpc/*</url-pattern>
@@ -65,6 +69,10 @@
        <servlet-name>Feeder</servlet-name>
        <url-pattern>/feed/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>TestServlet</servlet-name>
        <url-pattern>/test/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30