From 5ebac825d99fb9b6bed2edeeb4c15ba34e8b6350 Mon Sep 17 00:00:00 2001
From: ulrich <undisclosed>
Date: Tue, 03 Apr 2018 07:34:27 +0000
Subject: [PATCH] Lesen von JNDI-Parametern hinzugefuegt

---
 src/de/uhilger/wbx/WbxUtils.java |   84 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 82 insertions(+), 2 deletions(-)

diff --git a/src/de/uhilger/wbx/WbxUtils.java b/src/de/uhilger/wbx/WbxUtils.java
index 4bf0bd8..384c1ad 100644
--- a/src/de/uhilger/wbx/WbxUtils.java
+++ b/src/de/uhilger/wbx/WbxUtils.java
@@ -19,7 +19,11 @@
 package de.uhilger.wbx;
 
 import java.io.File;
+import java.util.logging.Level;
 import java.util.logging.Logger;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import javax.servlet.ServletContext;
 
 /**
@@ -28,6 +32,44 @@
 public class WbxUtils {
   
   private static final Logger logger = Logger.getLogger(WbxUtils.class.getName());
+  
+  public static final String JNDI_CTX_NAME = "java:comp/env";
+  
+  public static final String NOT_FOUND = " nicht gefunden";
+  public static final String NO_STRING = " ist kein String";  
+  public static final String EMPTY_STRING = "";
+
+  //public static final String FILE_BASE = "filebase";
+  //public static final String DATENABLAGE = "datenAblage";  
+
+  public int getJNDIInt(String paramName, int defaultVal) {
+    String jndiStr = getJNDIParameter(paramName, Integer.toString(defaultVal));
+    try {
+      return Integer.parseInt(jndiStr);
+    } catch(NumberFormatException ex) {
+      logger.log(Level.FINE, ex.getMessage());
+      return defaultVal;
+    }
+  }
+  
+  public String getJNDIParameter(String pname, String defaultVal) {
+    try {
+      // unseren environment naming context ermitteln
+      Context initCtx = new InitialContext();
+      Context envCtx = (Context) initCtx.lookup(JNDI_CTX_NAME);
+      
+      // unseren Parameter lesen
+      Object o = envCtx.lookup(pname);
+      if(o instanceof String) {
+        return o.toString();      
+      } else {
+        return defaultVal;
+      }
+    } catch (NamingException ex) {
+      logger.log(Level.FINE, ex.getMessage());
+      return defaultVal;
+    }
+  }  
   
   /**
    * Bei der WebBox ist das Datenverzeichnis relativ zum Verzeichnis 
@@ -51,14 +93,52 @@
    * 
    * @return Verzeichnis 'daten' der WebBox
    */
+  /*
   public static File getWbxDataDir(ServletContext ctx) {
+    File file = getWbxDir(ctx);    
+    file = new File(file, "daten/");
+    logger.fine("WebBox Datenbasis: " + file.getAbsolutePath());
+    return file;
+  }
+  
+  public static File getWbxDir(ServletContext ctx) {
     String path = ctx.getRealPath("/");
     logger.fine("getRealPath: " + path); // file-cms in webapps
     File file = new File(path);
     file = file.getParentFile().getParentFile().getParentFile().getParentFile();    
-    file = new File(file, "daten/");
-    logger.fine("Basis: " + file.getAbsolutePath());
+    logger.fine("WebBox: " + file.getAbsolutePath());
     return file;
   }
+  */
+  
+  /**
+   * Die Dateiablage wird entweder auf einen absoluten Pfad gesetzt, 
+   * der im Deployment Descriptor hinterlegt werden kann oder, wenn 
+   * dort nichts eingetragen ist, auf den hart kodierten Pfad 
+   * der WebBox.
+   * 
+   * @param ctx der ServletContext, in den die Angabe eingetragen wird. Dort 
+   * ist anschliessend die Angabe unter Initialiser.FILE_BASE abrufbar
+   */
+  /*
+  public static void ablageErmitteln(ServletContext ctx) {
+    Object o = ctx.getInitParameter(DATENABLAGE);
+    try {
+      if(o instanceof String) {
+        String pfad = o.toString();
+        if(pfad.trim().length() > 0) {
+          ctx.setAttribute(FILE_BASE, pfad);
+          logger.fine("Basis: " + pfad);
+        } else {
+          ctx.setAttribute(FILE_BASE, WbxUtils.getWbxDataDir(ctx).getAbsolutePath());  
+        }
+      } else {
+        ctx.setAttribute(FILE_BASE, WbxUtils.getWbxDataDir(ctx).getAbsolutePath());      
+      }    
+    } catch(Exception ex) {
+      ctx.setAttribute(FILE_BASE, WbxUtils.getWbxDataDir(ctx).getAbsolutePath());
+    }
+  } 
+  */
 
 }

--
Gitblit v1.9.3