From: markt
- * NOTE - For security reasons, this application will not operate
- * when accessed via the invoker servlet. You must explicitly map this servlet
- * with a servlet mapping, and you will always want to protect it with
- * appropriate security constraints as well.
- *
* The following servlet initialization parameters are recognized:
*
- * NOTE - For security reasons, this application will not operate
- * when accessed via the invoker servlet. You must explicitly map this servlet
- * with a servlet mapping, and you will always want to protect it with
- * appropriate security constraints as well.
- *
* The following servlet initialization parameters are recognized:
* The following processing must be performed when the <jsp-file> value associated with this servlet,
* if any.
diff --git a/java/org/apache/catalina/core/ApplicationDispatcher.java b/java/org/apache/catalina/core/ApplicationDispatcher.java
index f9b4bba50..89e926165 100644
--- a/java/org/apache/catalina/core/ApplicationDispatcher.java
+++ b/java/org/apache/catalina/core/ApplicationDispatcher.java
@@ -823,9 +823,6 @@ final class ApplicationDispatcher
while (current != null) {
if(state.hrequest == null && (current instanceof HttpServletRequest))
state.hrequest = (HttpServletRequest)current;
- if ("org.apache.catalina.servlets.InvokerHttpRequest".
- equals(current.getClass().getName()))
- break; // KLUDGE - Make nested RD.forward() using invoker work
if (!(current instanceof ServletRequestWrapper))
break;
if (current instanceof ApplicationHttpRequest)
diff --git a/java/org/apache/catalina/core/RestrictedServlets.properties b/java/org/apache/catalina/core/RestrictedServlets.properties
index 17a680734..d336968d1 100644
--- a/java/org/apache/catalina/core/RestrictedServlets.properties
+++ b/java/org/apache/catalina/core/RestrictedServlets.properties
@@ -15,5 +15,4 @@
org.apache.catalina.ssi.SSIServlet=restricted
org.apache.catalina.servlets.CGIServlet=restricted
-org.apache.catalina.servlets.InvokerServlet=restricted
org.apache.catalina.manager.JMXProxyServlet=restricted
diff --git a/java/org/apache/catalina/manager/LocalStrings.properties b/java/org/apache/catalina/manager/LocalStrings.properties
index 17ddde27c..a6a95bb90 100644
--- a/java/org/apache/catalina/manager/LocalStrings.properties
+++ b/java/org/apache/catalina/manager/LocalStrings.properties
@@ -57,7 +57,6 @@ htmlManagerServlet.serverVersion=Tomcat Version
htmlManagerServlet.title=Tomcat Web Application Manager
managerServlet.alreadyContext=FAIL - Application already exists at path {0}
managerServlet.alreadyDocBase=FAIL - Directory {0} is already in use
-managerServlet.cannotInvoke=Cannot invoke manager servlet through invoker
managerServlet.configured=OK - Deployed application from context file {0}
managerServlet.deployed=OK - Deployed application at context path {0}
managerServlet.deployFailed=FAIL - Failed to deploy application at context path {0}
diff --git a/java/org/apache/catalina/manager/LocalStrings_de.properties b/java/org/apache/catalina/manager/LocalStrings_de.properties
index 029655369..59c6353fb 100644
--- a/java/org/apache/catalina/manager/LocalStrings_de.properties
+++ b/java/org/apache/catalina/manager/LocalStrings_de.properties
@@ -55,7 +55,6 @@ htmlManagerServlet.serverVersion=Tomcat Version
htmlManagerServlet.title=Tomcat Webanwendungs-Manager
managerServlet.alreadyContext=FEHLER - Anwendung existiert bereits für Kontext Pfad {0}
managerServlet.alreadyDocBase=FEHLER - Verzeichnis {0} bereits in Benutzung
-managerServlet.cannotInvoke=Kann Manager-Servlet nicht durch Invoker aufrufen
managerServlet.configured=OK - Anwendung von Kontext-Datei {0} installiert
managerServlet.deployed=OK - Anwendung mit Kontext Pfad {0} installiert
managerServlet.exception=FEHLER - Ausnahme aufgetreten {0}
diff --git a/java/org/apache/catalina/manager/LocalStrings_fr.properties b/java/org/apache/catalina/manager/LocalStrings_fr.properties
index 903667d42..023e937a1 100644
--- a/java/org/apache/catalina/manager/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/manager/LocalStrings_fr.properties
@@ -38,7 +38,6 @@ htmlManagerServlet.serverVersion=Version de serveur
htmlManagerServlet.title=Gestionnaire d''applications WEB Tomcat
managerServlet.alreadyContext=ECHEC - l''application existe déjà dans le chemin {0}
managerServlet.alreadyDocBase=ECHEC - Le répertoire {0} est déjà utilisé
-managerServlet.cannotInvoke=Impossible d''utiliser le gestionnaire de servlet au travers du délégué (invoker)
managerServlet.configured=OK - Application configurée depuis le fichier contexte {0}
managerServlet.deployed=OK - Application déployée pour le chemin de contexte {0}
managerServlet.exception=ECHEC - L''exception {0} a été rencontrée
diff --git a/java/org/apache/catalina/manager/ManagerServlet.java b/java/org/apache/catalina/manager/ManagerServlet.java
index 948793228..2a5f1293f 100644
--- a/java/org/apache/catalina/manager/ManagerServlet.java
+++ b/java/org/apache/catalina/manager/ManagerServlet.java
@@ -144,11 +144,6 @@ import org.apache.tomcat.util.modeler.Registry;
* generally be deployed as a separate web application within the virtual host
* to be managed.
*
*
*
javax.servlet.http.HttpServletRequest
- * utilized when InvokerServlet processes the initial request
- * for an invoked servlet. Subsequent requests will be mapped directly
- * to the servlet, because a new servlet mapping will have been created.
- *
- * @author Craig R. McClanahan
- * @version $Revision$ $Date$
- */
-
-class InvokerHttpRequest extends HttpServletRequestWrapper {
-
-
- // ----------------------------------------------------------- Constructors
-
-
- /**
- * Construct a new wrapped request around the specified servlet request.
- *
- * @param request The servlet request being wrapped
- */
- public InvokerHttpRequest(HttpServletRequest request) {
-
- super(request);
- this.pathInfo = request.getPathInfo();
- this.pathTranslated = request.getPathTranslated();
- this.requestURI = request.getRequestURI();
- this.servletPath = request.getServletPath();
-
- }
-
-
- // ----------------------------------------------------- Instance Variables
-
-
- /**
- * Descriptive information about this implementation.
- */
- protected static final String info =
- "org.apache.catalina.servlets.InvokerHttpRequest/1.0";
-
-
- /**
- * The path information for this request.
- */
- protected String pathInfo = null;
-
-
- /**
- * The translated path information for this request.
- */
- protected String pathTranslated = null;
-
-
- /**
- * The request URI for this request.
- */
- protected String requestURI = null;
-
-
- /**
- * The servlet path for this request.
- */
- protected String servletPath = null;
-
-
- // --------------------------------------------- HttpServletRequest Methods
-
-
- /**
- * Override the getPathInfo() method of the wrapped request.
- */
- public String getPathInfo() {
-
- return (this.pathInfo);
-
- }
-
-
- /**
- * Override the getPathTranslated() method of the
- * wrapped request.
- */
- public String getPathTranslated() {
-
- return (this.pathTranslated);
-
- }
-
-
- /**
- * Override the getRequestURI() method of the wrapped request.
- */
- public String getRequestURI() {
-
- return (this.requestURI);
-
- }
-
-
- /**
- * Override the getServletPath() method of the wrapped
- * request.
- */
- public String getServletPath() {
-
- return (this.servletPath);
-
- }
-
-
- // -------------------------------------------------------- Package Methods
-
-
-
- /**
- * Return descriptive information about this implementation.
- */
- public String getInfo() {
-
- return (info);
-
- }
-
-
- /**
- * Set the path information for this request.
- *
- * @param pathInfo The new path info
- */
- void setPathInfo(String pathInfo) {
-
- this.pathInfo = pathInfo;
-
- }
-
-
- /**
- * Set the translated path info for this request.
- *
- * @param pathTranslated The new translated path info
- */
- void setPathTranslated(String pathTranslated) {
-
- this.pathTranslated = pathTranslated;
-
- }
-
-
- /**
- * Set the request URI for this request.
- *
- * @param requestURI The new request URI
- */
- void setRequestURI(String requestURI) {
-
- this.requestURI = requestURI;
-
- }
-
-
- /**
- * Set the servlet path for this request.
- *
- * @param servletPath The new servlet path
- */
- void setServletPath(String servletPath) {
-
- this.servletPath = servletPath;
-
- }
-
-
-}
diff --git a/java/org/apache/catalina/servlets/InvokerServlet.java b/java/org/apache/catalina/servlets/InvokerServlet.java
deleted file mode 100644
index de498ef48..000000000
--- a/java/org/apache/catalina/servlets/InvokerServlet.java
+++ /dev/null
@@ -1,421 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package org.apache.catalina.servlets;
-
-
-import java.io.IOException;
-
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.UnavailableException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.catalina.ContainerServlet;
-import org.apache.catalina.Context;
-import org.apache.catalina.Globals;
-import org.apache.catalina.Wrapper;
-import org.apache.catalina.util.StringManager;
-
-
-/**
- * The default servlet-invoking servlet for most web applications,
- * used to serve requests to servlets that have not been registered
- * in the web application deployment descriptor.
- *
- * @author Craig R. McClanahan
- * @version $Revision$ $Date$
- */
-
-public final class InvokerServlet
- extends HttpServlet implements ContainerServlet {
-
-
- // ----------------------------------------------------- Instance Variables
-
-
- /**
- * The Context container associated with our web application.
- */
- private Context context = null;
-
-
- /**
- * The debugging detail level for this servlet.
- */
- private int debug = 0;
-
-
- /**
- * The string manager for this package.
- */
- private static StringManager sm =
- StringManager.getManager(Constants.Package);
-
-
- /**
- * The Wrapper container associated with this servlet.
- */
- private Wrapper wrapper = null;
-
-
- // ----------------------------------------------- ContainerServlet Methods
-
-
- /**
- * Return the Wrapper with which we are associated.
- */
- public Wrapper getWrapper() {
-
- return (this.wrapper);
-
- }
-
-
- /**
- * Set the Wrapper with which we are associated.
- *
- * @param wrapper The new wrapper
- */
- public void setWrapper(Wrapper wrapper) {
-
- this.wrapper = wrapper;
- if (wrapper == null)
- context = null;
- else
- context = (Context) wrapper.getParent();
-
- }
-
-
- // --------------------------------------------------------- Public Methods
-
-
- /**
- * Finalize this servlet.
- */
- public void destroy() {
-
- ; // No actions necessary
-
- }
-
-
- /**
- * Process a GET request for the specified resource.
- *
- * @param request The servlet request we are processing
- * @param response The servlet response we are creating
- *
- * @exception IOException if an input/output error occurs
- * @exception ServletException if a servlet-specified error occurs
- */
- public void doGet(HttpServletRequest request,
- HttpServletResponse response)
- throws IOException, ServletException {
-
- serveRequest(request, response);
-
- }
-
-
- /**
- * Process a HEAD request for the specified resource.
- *
- * @param request The servlet request we are processing
- * @param response The servlet response we are creating
- *
- * @exception IOException if an input/output error occurs
- * @exception ServletException if a servlet-specified error occurs
- */
- public void doHead(HttpServletRequest request,
- HttpServletResponse response)
- throws IOException, ServletException {
-
- serveRequest(request, response);
-
- }
-
-
- /**
- * Process a POST request for the specified resource.
- *
- * @param request The servlet request we are processing
- * @param response The servlet response we are creating
- *
- * @exception IOException if an input/output error occurs
- * @exception ServletException if a servlet-specified error occurs
- */
- public void doPost(HttpServletRequest request,
- HttpServletResponse response)
- throws IOException, ServletException {
-
- serveRequest(request, response);
-
- }
-
-
- /**
- * Initialize this servlet.
- */
- public void init() throws ServletException {
-
- // Ensure that our ContainerServlet properties have been set
- if ((wrapper == null) || (context == null))
- throw new UnavailableException
- (sm.getString("invokerServlet.noWrapper"));
-
- // Set our properties from the initialization parameters
- if (getServletConfig().getInitParameter("debug") != null)
- debug = Integer.parseInt(getServletConfig().getInitParameter("debug"));
-
- if (debug >= 1)
- log("init: Associated with Context '" + context.getPath() + "'");
-
- }
-
-
-
- // -------------------------------------------------------- Private Methods
-
-
- /**
- * Serve the specified request, creating the corresponding response.
- * After the first time a particular servlet class is requested, it will
- * be served directly (like any registered servlet) because it will have
- * been registered and mapped in our associated Context.
- *
- * @param request The servlet request we are processing
- * @param response The servlet response we are creating
- *
- * @exception IOException if an input/output error occurs
- * @exception ServletException if a servlet-specified error occurs
- */
- public void serveRequest(HttpServletRequest request,
- HttpServletResponse response)
- throws IOException, ServletException {
-
- // Disallow calling this servlet via a named dispatcher
- if (request.getAttribute(Globals.NAMED_DISPATCHER_ATTR) != null)
- throw new ServletException
- (sm.getString("invokerServlet.notNamed"));
-
- // Identify the input parameters and our "included" state
- String inRequestURI = null;
- String inServletPath = null;
- String inPathInfo = null;
- boolean included =
- (request.getAttribute(Globals.INCLUDE_REQUEST_URI_ATTR) != null);
-
- if (included) {
- inRequestURI =
- (String) request.getAttribute(Globals.INCLUDE_REQUEST_URI_ATTR);
- inServletPath =
- (String) request.getAttribute(Globals.INCLUDE_SERVLET_PATH_ATTR);
- inPathInfo =
- (String) request.getAttribute(Globals.INCLUDE_PATH_INFO_ATTR);
- } else {
- inRequestURI = request.getRequestURI();
- inServletPath = request.getServletPath();
- inPathInfo = request.getPathInfo();
- }
- if (debug >= 1) {
- log("included='" + included + "', requestURI='" +
- inRequestURI + "'");
- log(" servletPath='" + inServletPath + "', pathInfo='" +
- inPathInfo + "'");
- }
-
- // Make sure a servlet name or class name was specified
- if (inPathInfo == null) {
- if (debug >= 1)
- log("Invalid pathInfo '" + inPathInfo + "'");
- if (included)
- throw new ServletException
- (sm.getString("invokerServlet.invalidPath", inRequestURI));
- else {
- response.sendError(HttpServletResponse.SC_NOT_FOUND,
- inRequestURI);
- return;
- }
- }
-
- // Identify the outgoing servlet name or class, and outgoing path info
- String pathInfo = inPathInfo;
- String servletClass = pathInfo.substring(1);
- int slash = servletClass.indexOf('/');
- if (slash >= 0) {
- pathInfo = servletClass.substring(slash);
- servletClass = servletClass.substring(0, slash);
- } else {
- pathInfo = "";
- }
-
- if (servletClass.startsWith("org.apache.catalina")) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND,
- inRequestURI);
- return;
- }
-
- if (debug >= 1)
- log("Processing servlet '" + servletClass +
- "' with path info '" + pathInfo + "'");
- String name = "org.apache.catalina.INVOKER." + servletClass;
- String pattern = inServletPath + "/" + servletClass + "/*";
- Wrapper wrapper = null;
-
- // Synchronize to avoid race conditions when multiple requests
- // try to initialize the same servlet at the same time
- synchronized (this) {
-
- // Are we referencing an existing servlet class or name?
- wrapper = (Wrapper) context.findChild(servletClass);
- if (wrapper == null)
- wrapper = (Wrapper) context.findChild(name);
- if (wrapper != null) {
- String actualServletClass = wrapper.getServletClass();
- if ((actualServletClass != null)
- && (actualServletClass.startsWith
- ("org.apache.catalina"))) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND,
- inRequestURI);
- return;
- }
- if (debug >= 1)
- log("Using wrapper for servlet '" +
- wrapper.getName() + "' with mapping '" +
- pattern + "'");
- context.addServletMapping(pattern, wrapper.getName());
- }
-
- // No, create a new wrapper for the specified servlet class
- else {
-
- if (debug >= 1)
- log("Creating wrapper for '" + servletClass +
- "' with mapping '" + pattern + "'");
-
- try {
- wrapper = context.createWrapper();
- wrapper.setName(name);
- wrapper.setLoadOnStartup(1);
- wrapper.setServletClass(servletClass);
- context.addChild(wrapper);
- context.addServletMapping(pattern, name);
- } catch (Exception e) {
- log(sm.getString("invokerServlet.cannotCreate",
- inRequestURI), e);
- context.removeServletMapping(pattern);
- context.removeChild(wrapper);
- if (included)
- throw new ServletException
- (sm.getString("invokerServlet.cannotCreate",
- inRequestURI), e);
- else {
- response.sendError(HttpServletResponse.SC_NOT_FOUND,
- inRequestURI);
- return;
- }
- }
- }
-
- }
-
- // Create a request wrapper to pass on to the invoked servlet
- InvokerHttpRequest wrequest =
- new InvokerHttpRequest(request);
- wrequest.setRequestURI(inRequestURI);
- StringBuffer sb = new StringBuffer(inServletPath);
- sb.append("/");
- sb.append(servletClass);
- wrequest.setServletPath(sb.toString());
- if ((pathInfo == null) || (pathInfo.length() < 1)) {
- wrequest.setPathInfo(null);
- wrequest.setPathTranslated(null);
- } else {
- wrequest.setPathInfo(pathInfo);
- wrequest.setPathTranslated
- (getServletContext().getRealPath(pathInfo));
- }
-
- // Allocate a servlet instance to perform this request
- Servlet instance = null;
- try {
- instance = wrapper.allocate();
- } catch (ServletException e) {
- log(sm.getString("invokerServlet.allocate", inRequestURI), e);
- context.removeServletMapping(pattern);
- context.removeChild(wrapper);
- Throwable rootCause = e.getRootCause();
- if (rootCause == null)
- rootCause = e;
- if (rootCause instanceof ClassNotFoundException) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND,
- inRequestURI);
- return;
- } else if (rootCause instanceof IOException) {
- throw (IOException) rootCause;
- } else if (rootCause instanceof RuntimeException) {
- throw (RuntimeException) rootCause;
- } else if (rootCause instanceof ServletException) {
- throw (ServletException) rootCause;
- } else {
- throw new ServletException
- (sm.getString("invokerServlet.allocate", inRequestURI),
- rootCause);
- }
- }
-
- // After loading the wrapper, restore some of the fields when including
- if (included) {
- wrequest.setRequestURI(request.getRequestURI());
- wrequest.setPathInfo(request.getPathInfo());
- wrequest.setServletPath(request.getServletPath());
- }
-
- // Invoke the service() method of the allocated servlet
- try {
- String jspFile = wrapper.getJspFile();
- if (jspFile != null)
- request.setAttribute(Globals.JSP_FILE_ATTR, jspFile);
- else
- request.removeAttribute(Globals.JSP_FILE_ATTR);
- request.setAttribute(Globals.INVOKED_ATTR,
- request.getServletPath());
- instance.service(wrequest, response);
- } catch (UnavailableException e) {
- context.removeServletMapping(pattern);
- throw e;
- } finally {
- request.removeAttribute(Globals.INVOKED_ATTR);
- request.removeAttribute(Globals.JSP_FILE_ATTR);
- // Deallocate the allocated servlet instance
- try {
- wrapper.deallocate(instance);
- } catch (ServletException e) {
- log(sm.getString("invokerServlet.deallocate", inRequestURI), e);
- throw e;
- }
- }
-
- }
-
-
-}
diff --git a/java/org/apache/catalina/servlets/LocalStrings.properties b/java/org/apache/catalina/servlets/LocalStrings.properties
index a97b32ce1..3fdf50554 100644
--- a/java/org/apache/catalina/servlets/LocalStrings.properties
+++ b/java/org/apache/catalina/servlets/LocalStrings.properties
@@ -18,12 +18,6 @@ defaultservlet.directorylistingfor=Directory Listing for:
defaultservlet.upto=Up to:
defaultservlet.subdirectories=Subdirectories:
defaultservlet.files=Files:
-invokerServlet.allocate=Cannot allocate servlet instance for path {0}
-invokerServlet.cannotCreate=Cannot create servlet wrapper for path {0}
-invokerServlet.deallocate=Cannot deallocate servlet instance for path {0}
-invokerServlet.invalidPath=No servlet name or class was specified in path {0}
-invokerServlet.notNamed=Cannot call invoker servlet with a named dispatcher
-invokerServlet.noWrapper=Container has not called setWrapper() for this servlet
webdavservlet.jaxpfailed=JAXP initialization failed
webdavservlet.enternalEntityIgnored=The request included a reference to an external entity with PublicID {0} and SystemID {1} which was ignored
directory.filename=Filename
diff --git a/java/org/apache/catalina/servlets/LocalStrings_es.properties b/java/org/apache/catalina/servlets/LocalStrings_es.properties
index 373c290ba..c125c285b 100644
--- a/java/org/apache/catalina/servlets/LocalStrings_es.properties
+++ b/java/org/apache/catalina/servlets/LocalStrings_es.properties
@@ -17,12 +17,6 @@ defaultservlet.directorylistingfor = Listado de Directorio para\:
defaultservlet.upto = Atr\u00E1s a\:
defaultservlet.subdirectories = Subdirectorios\:
defaultservlet.files = Archivos\:
-invokerServlet.allocate = No puedo reservar espacio para instancia de servlet para trayectoria {0}
-invokerServlet.cannotCreate = No puedo crear arropador (wrapper) de servlet para trayectoria {0}
-invokerServlet.deallocate = No puedo recuperar instancia de servlet para trayectoria {0}
-invokerServlet.invalidPath = No se ha especificado nombre de servlet o clase en trayectoria {0}
-invokerServlet.notNamed = No puedo llamar a servlet invocador mediante un despachador nombrado (named)
-invokerServlet.noWrapper = El Contenedor no ha llamado a setWrapper() para este servlet
webdavservlet.jaxpfailed = Fall\u00F3 la inicializaci\u00F3n de JAXP
webdavservlet.enternalEntityIgnored = El requerimiento inclu\u00EDa una referencia a una entidad externa con PublicID {0} y SystemID {1} que fue ignorada
directory.filename = Nombre de Archivo
diff --git a/java/org/apache/catalina/servlets/LocalStrings_fr.properties b/java/org/apache/catalina/servlets/LocalStrings_fr.properties
index bda921700..1ed30b1a3 100644
--- a/java/org/apache/catalina/servlets/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/servlets/LocalStrings_fr.properties
@@ -17,12 +17,6 @@ defaultservlet.directorylistingfor=Liste du r
defaultservlet.upto=Jusqu''à:
defaultservlet.subdirectories=Sous-répertoires:
defaultservlet.files=Fichiers:
-invokerServlet.allocate=Impossible d''allouer une instance de servlet pour le chemin {0}
-invokerServlet.cannotCreate=Impossible de créer un enrobeur (wrapper) de servlet pour le chemin {0}
-invokerServlet.deallocate=Impossible de désallouer une instance de servlet pour le chemin {0}
-invokerServlet.invalidPath=Aucun nom de servlet ou de classe n''a été spécifié pour le chemin {0}
-invokerServlet.notNamed=Impossible d''appeler le délégué (invoker) de servlet avec un aiguilleur (dispatcher) nommé
-invokerServlet.noWrapper=Le conteneur n''a pas appelé "setWrapper()" pour cette servlet
webdavservlet.jaxpfailed=Erreur d''initialisation de JAXP
directory.filename=Nom de fichier
directory.lastModified=Dernière modification
diff --git a/java/org/apache/catalina/servlets/LocalStrings_ja.properties b/java/org/apache/catalina/servlets/LocalStrings_ja.properties
index 1369672ed..5772ae528 100644
--- a/java/org/apache/catalina/servlets/LocalStrings_ja.properties
+++ b/java/org/apache/catalina/servlets/LocalStrings_ja.properties
@@ -17,12 +17,6 @@ defaultservlet.directorylistingfor=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4
defaultservlet.upto=\u89aa\u30c7\u30a3\u30ec\u30af\u30c8\u30ea:
defaultservlet.subdirectories=\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea:
defaultservlet.files=\u30d5\u30a1\u30a4\u30eb:
-invokerServlet.allocate=\u30d1\u30b9 {0} \u306b\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u305b\u3093
-invokerServlet.cannotCreate=\u30d1\u30b9 {0} \u306b\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30e9\u30c3\u30d1\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093
-invokerServlet.deallocate=\u30d1\u30b9 {0} \u306e\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u5272\u308a\u5f53\u3066\u3092\u89e3\u9664\u3067\u304d\u307e\u305b\u3093
-invokerServlet.invalidPath=\u30d1\u30b9 {0} \u306b\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u540d\u53c8\u306f\u30af\u30e9\u30b9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093
-invokerServlet.notNamed=\u305d\u306e\u540d\u524d\u306e\u30c7\u30a3\u30b9\u30d1\u30c3\u30c1\u30e3\u3067\u30a4\u30f3\u30dc\u30fc\u30ab\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u3092\u547c\u3073\u51fa\u305b\u307e\u305b\u3093
-invokerServlet.noWrapper=\u30b3\u30f3\u30c6\u30ca\u306f\u3053\u306e\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u306b\u5bfe\u3057\u3066\u547c\u3073\u51fa\u3055\u308c\u305fsetWrapper()\u3092\u6301\u3063\u3066\u3044\u307e\u305b\u3093
webdavservlet.jaxpfailed=JAXP\u306e\u521d\u671f\u5316\u306b\u5931\u6557\u3057\u307e\u3057\u305f
directory.filename=\u30d5\u30a1\u30a4\u30eb\u540d
directory.lastModified=\u6700\u7d42\u66f4\u65b0
diff --git a/webapps/docs/funcspecs/fs-default.xml b/webapps/docs/funcspecs/fs-default.xml
index bb5e20a96..71856b3c2 100644
--- a/webapps/docs/funcspecs/fs-default.xml
+++ b/webapps/docs/funcspecs/fs-default.xml
@@ -123,7 +123,7 @@
init()
- method of the invoker servlet is called:
In addition the the assertions implied by the functionality requirements listed above, the following additional assertions shall be tested to - validate the behavior of the invoker servlet:
+ validate the behavior of the default servlet:The purpose of the Invoker Servlet is to allow a
- web application to dynamically register new servlet definitions
- that correspond with a <servlet> element in the
- /WEB-INF/web.xml deployment descriptor, and execute
- requests utilizing the new servlet definitions. From the perspective
- of the newly registered servlets, all servlet lifecycle requirements
- of the Servlet Specification (such as calling init() and
- destroy() at the correct times) will be respected.
I do not know of any formal specification of the behavior of an - invoker servlet that is publicly available. Anyone know of one?
- -The implementation of this functionality shall conform to the - following requirements:
-org.apache.catalina.servlets package
- so that it can be loaded by the Catalina class loader.org.apache.catalina.ContainerServlet
- interface, so that it gains knowledge of the Wrapper
- that is responsible for itself and, therefore, access to other
- internal Catalina components.getServletContext().log() method.The following environmental dependencies must be met in order for - the Invoker servlet to operate correctly:
-$CATALINA_BASE/conf/web.xml) using a "path mapped"
- servlet mapping. The historical default mapping is to URL pattern
- "/servlet/*", although the invoker servlet must operate
- correctly with an arbitrary mapping.Correct operation of the invoker servlet depends on the following - specific features of the surrounding container:
-ContainerServlet interface,
- including calling setWrapper() before
- the init() method of the invoker servlet is called.The following processing must be performed when the init()
- method of the invoker servlet is called:
setWrapper(). If
- not, throw a permanent UnavailableException.Context that corresponds to our
- Wrapper. This is the component with which new servlet
- definitions and mappings will be registered.On each request, the following processing shall be performed:
-{ServletPath} for this request, either from
- request attribute javax.servlet.include.servlet_path or
- by calling request.getServletPath().{PathInfo} for this request, either from
- request attribute javax.servlet.include.path_info or
- by calling request.getPathInfo(). If the calculated
- {PathInfo} is null, return HTTP status 400
- (bad request).{PathInfo} value as follows:
- {ServletSelector}.{PathRemainder}. If no slash was encountered,
- set {PathRemainder} to a zero-length string.{ServletSelector} is the name of an
- existing servlet definition, and process it as follows:
- Context to find and return a
- child Wrapper named {ServletSelector}.
- Wrapper,
- using a URL pattern calculated as follows:
- {ServletPath} + "/" + {ServletSelector}
- + "/*"{ServletPath} + "/" + {ServletSelector}
- + {PathRemainder}{ServletSelector} is the fully qualified
- name of a Java class that implements javax.servlet.Servlet
- and process it as follows:
- {ServletName} for the servlet
- definition that will be created.Wrapper associated with
- this name, return HTTP status 500 (internal server error), because
- a mapping should have already been created for this servlet.{ServletSelector} from
- the web application class loader (i.e. the context class loader
- for our current thread). If this fails, return HTTP status 404
- (not found).javax.servlet.Servlet interface, return HTTP status
- 404 (not found).Wrapper child with our
- Context, under name {ServletName}.Wrapper,
- using a URL pattern calculated as follows:
- {ServletPath} + "/" + {ServletSelector}
- + "/*"{ServletPath} + "/" + {ServletSelector}
- + {PathRemainder}No specific processing is required when the destroy()
- method is called:
In addition the the assertions implied by the functionality requirements - listed above, the following additional assertions shall be tested to - validate the behavior of the invoker servlet:
-<servlet-class> or
- <jsp-file> subelement.ServletConfig instance with no servlet initialization
- parameters.RequestDispatcher.forward(), or the corresponding
- <jsp:forward> tag in a JSP page.RequestDispatcher.include(), or the corresponding
- <jsp:include> tag in a JSP page.{ServletSelector} (because
- it will have registered an appropriate servlet mapping.