001: package com.teamkonzept.web;
002:
003: import java.io.*;
004: import javax.servlet.http.*;
005:
006: import com.teamkonzept.lib.*;
007:
008: /**
009: Das Interface TKHpptInterface legt die Methoden fest, die eine
010: Implementierung einer HTTP-Server-Schnittstelle zur Verfügung stellen
011: muß.
012: <P>
013:
014: Java-Anwendungen sollten sich für die Kommunikation mit dem HTTP-Server
015: auf diese Methoden beschränken, damit
016: die Lauffähigkeit der Anwendung unter beliebigen Servern gewährleistet
017: ist.
018: <P>
019:
020: Das Interface enthält vier Methoden um die verschiedenen Bestandteile einer
021: HTTP-Response zusammen zu bauen: setStatus, addHeader, getOutputStream. Daneben gibt
022: es noch die getLogStream-Methode, über die der Zugriff auf eventuelle
023: Fehler-Logging-Mechanismen des HTTP-Servers zur Verfügung gestellt werden soll.
024: Eine Interface-Implementierung muš gewährleisten, daß der Aufruf in folgender
025: Reihenfolge gelingt:
026: <UL>
027: <LI>setStatus
028: <LI>addHeader (mehrfach)
029: <LI>Ausgabe ¸ber getLogStream-Ergebnisobjekt
030: <LI>Ausgabe über getOutStream-Ergebnisobjekt
031: </UL>
032:
033: <P>
034: * Das Interface TKHttpInterface und seine abstrakten Methoden.
035: * Die Implementierung dieser Methoden erfolgt zur Zeitin der Klasse
036: * OracleWRBInterface.
037: * Wird spaeter ein Interface fuer Servlets (Sun) benoetigt, muss das Interface
038: * ein weiters mal implementiert werden und dem Konstruktor des Thread in der
039: * Applikation uebergeben werden.
040: * Es werden die CGI-Enviroment Variablen bereitgestellt.
041: *
042: * getParams() -> Parameter eines Events und der event selbst
043: * TK_EV[EIN_EVENT]=, TK_PAR[EIN_PARAMETER]=xy, TK_PAR[SID]=20 Stellen
044: *
045: * getEnvironment() -> Die CGI-Enviroment Variablen sind im Hash abgelegt
046: * getOutputStream() -> Ergebnis z.B.: tk.web.oracle.OracleWRBOutput@ed3018c0
047: * getLogStream() -> Ergebnis z.B.: oracle.owas.wrb.services.logger.OutputLogStream@ed310af0
048: * getOwnName() -> PATH_INFO, /Name der gerade laufenden Applikation
049: * getOwnURL() -> SCRIPT_NAME+PATHNAME, /java/Applikationsname
050: * getOwnPath() -> SCRIPT_NAME, /java
051: * getDocumentRoot() -> gemeinsame Documentroot fuer verschiedene Benutzer
052: * getServerName() -> Severname
053: * getPathInfo() -> liefert extra-Pfadinformation
054: * getPathTranslated() -> liefert extra-Pfadinformation
055: * getCookies() -> liefert alle Cookies f¸r die aktuelle Domain
056: * setCookie() -> setzt ein Cookie
057:
058: * @author $Author: mischa $
059: * @version $Revision: 1.9 $
060: */
061:
062: public interface TKHttpInterface {
063: /**
064: setzt den HTTP-Response-Status
065: @param code HTTP-Status-Code
066: @param msg HTTP-Reason-Phrase (null wenn nicht benötigt)
067: */
068: void setStatus(int code, String msg);
069:
070: /**
071: setzt einen (weiteren) HTTP-Header
072: @param name HTTP-Header-Name
073: @param value HTTP-Header-Wert
074: */
075: void addHeader(String name, String value);
076:
077: /** returns the http session */
078: HttpSession getSession(boolean create);
079:
080: /** returns the htp session */
081: HttpSession getSession();
082:
083: /**
084: liefert ein OutputStream-Objekt, ¸ber das die HTTP-Daten geschickt werden können.
085: */
086: OutputStream getOutputStream();
087:
088: /**
089: liefert ein OutputStream-Objekt, über das die Fehlermeldungen
090: an den HTTP-Server geschickt werden können.
091: */
092: OutputStream getLogStream();
093:
094: /**
095: liefert den Namen der Java-Anwendungsklasse
096: */
097: String getOwnName();
098:
099: /**
100: liefert die URL der Java-Anwendung
101: */
102: String getOwnURL();
103:
104: /** liefert absolute URL - inkl. Servername + Port */
105: String getAbsoluteURL();
106:
107: /**
108: liefert den Context Pfad von Webman
109: */
110: String getContextPath();
111:
112: /**
113: liefert den (virtuellen URL-) Pfad der Java-Anwendung
114: */
115: String getOwnPath();
116:
117: /**
118: liefert den Pfad der Document-Root des Web-Servers
119: */
120: String getDocumentRoot();
121:
122: /**
123: liefert den Namen des HTTP-Servers
124: */
125: String getServerName();
126:
127: /**
128: liefert den Namen des RemoteUsers
129: */
130: String getRemoteUser();
131:
132: /**
133: liefert einen Hash in dem die Parameter der Anwendung
134: enthalten sind. Falls ein Parameter mehrmals verwendet
135: wurde, enthält der Hash als Value ein TKVector-Objekt
136: */
137: TKHashtable getParams();
138:
139: /**
140: liefert die http-Request-Header mit denen die Anwendung
141: aufgerufen wurde
142: */
143: TKHashtable getHeaders();
144:
145: /**
146: liefert einen Hash, in dem alle anderen Attribute, die der
147: HTTP-Server an die Anwendung übergeben hat, enthalten sind.
148: Da diese Attribute HTTP-Server-spezifisch sind, sollte Anwendungen
149: von diesem Hash nur in Ausnahmen gebrauch machen.
150: */
151: TKHashtable getEnvironment();
152:
153: /**
154: liefert extra-Pfadinformation, d.h. die Informationen, die
155: zwischen Servletpfad u. Query-String stehen.
156: Ist keine extra-Pfadinformation vorhanden, so wird null
157: zurückgeliefert.
158: */
159: String getPathInfo();
160:
161: /**
162: liefert extra-Pfadinformationen und übersetzt diese in
163: den realen absoluten Pfad.
164: */
165: String getPathTranslated();
166:
167: /**
168: liefert alle Cookies der aktuellen Domain
169: */
170: Cookie[] getCookies();
171:
172: /**
173: setzt ein Cookie
174: */
175: void addCookie(final Cookie cookie);
176:
177: /**
178: setzt einen (weiteren) HTTP-Header
179: @param name HTTP-Header-Name
180: @param value HTTP-Header-Wert
181: */
182: void addDateHeader(final String name, final long value);
183: }
|