Zitat von Ian Bicking <[EMAIL PROTECTED]>:
> On Wed, 2003-03-19 at 11:01, Russell von Blank wrote:
> > I do not mean to ask the question a second time, but I have looked over
> the
> > existing documentation and have not discovered any reference to
> customizing
> > the error page. I can change the code inside webkit, but then that would
> > have to be adjusted everytime there is a new release, etc. Is there a
> > "standard" way to implement a custom error page through inheritence?
>
> Sorry no one answered your question before. Disappointingly, no, there
> isn't any good way to do this. The code in question is in
> WebKit.ExceptionHandler, if that's any help.
>
> Ian
>
Hi Ian,
I think there is a way of elegance to customize Webware-core-code: by using
the function contextInitialize in the context __init__.py ;-)
Combined with the MixIn-class in MiscUtils.MixIn it's possible to reimplement
anything you want, as long as you know that it must be thread-saved.
--- start snippet __init__.py of context ---
# Necessary futures
# Necessary imports
import sys
import os
import socket
import errno
from types import *
from MiscUtils.MixIn import MixIn
from WebKit.Common import *
from WebKit.ThreadedAppServer import TASASStreamOut
# Necessary module constants
# For testing and debugging purposes:
def contextInitialize(appServer, path):
"""
"""
sys.path.append(os.path.abspath('.'))
MixIn(TASASStreamOut, TASASStreamOutMixIn)
MixIn(Application, ApplicationMixIn)
MixIn(ExceptionHandler, ExceptionHandlerMixIn)
from WebKit.ExceptionHandler import ExceptionHandler
class ExceptionHandlerMixIn(Object):
"""
"""
def writeHTML(self):
self.writeFancyTraceback()
self.writeMiscInfo()
self.writeTransaction()
self.writeEnvironment()
self.writeIds()
self.writeTraceback()
from WebKit.ASStreamOut import ASStreamOut
class TASASStreamOutMixIn(ASStreamOut):
"""
"""
def __init__(self, sock):
ASStreamOut.__init__(self)
self._socket = sock
def flush(self):
debug=0
result = ASStreamOut.flush(self)
if result: ##a true return value means we can send
reslen = len(self._buffer)
if debug: print "TASASStreamout is sending %s bytes" % reslen
sent = 0
while sent < reslen:
try:
sent = sent +
self._socket.send(self._buffer[sent:sent+8192])
#if __test__:
#traceExpression.watch('data send...')
except socket.error, e:
if e[0]==errno.EPIPE: #broken pipe
# ^ @@ 2002.01.25 ede: Necessary for client
abortion!!!
raise
#pass
else:
print "StreamOut Error: ", e
break
self.pop(sent)
from WebKit.Application import Application
class ApplicationMixIn:
"""
"""
def shutDown(self):
"""
Called by AppServer when it is shuting down. The __del__ function of
Application probably won't be called due to circular references.
"""
print "Application is Shutting Down"
self.running = 0
if hasattr(self, '_sessSweepThread'):
# We don't always have this, hence the 'if' above
self._closeEvent.set()
self._sessSweepThread.join()
del self._sessSweepThread
self._sessions.storeAllSessions()
if self._server.isPersistent():
self.taskManager().stop()
del self._sessions
del self._factoryByExt
del self._factoryList
del self._server
del self._servletCacheByPath
# @@ 2002.02.18: Close all connection to database
if getattr(self, '_dbPool', None):
self._dbPool.shutDown()
print "Application has been succesfully shutdown."
def getDbConnection(self):
"""
"""
if not getattr(self, '_dbPool', None):
from MiscUtils.DBPool import DBPool
self._dbPool = DBPool(
# our DB-API v2.0 module:
__import__('DCOracle2'),
# number of concurrent connections:
5,
# DB module connection string:
'BUGTRACK/<xxx>@<xxx>')
return self._dbPool.getConnection() # may block
--- end snippet ---
Ian, now my question: is the getDbConnection-method thread-saved? I hope so...
Greetings,
Markus
>
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: Tablet PC.
> Does your code think in ink? You could win a Tablet PC.
> Get a free Tablet PC hat just for playing. What are you waiting for?
> http://ads.sourceforge.net/cgi-bin/redirect.pl?micr5043en
> _______________________________________________
> Webware-devel mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/webware-devel
>
--
merlin.zwo InfoDesign GmbH & Co KG
Tagloehnergaerten 43
76228 Karlsruhe
Email: [EMAIL PROTECTED]
Fon: 0721 / 7907171
Fax: 0721 / 7907199
WWW: http://www.merlin-zwo.de
-------------------------------------------------
This mail sent through IMP: http://horde.org/imp/
-------------------------------------------------------
This SF.net email is sponsored by: Tablet PC.
Does your code think in ink? You could win a Tablet PC.
Get a free Tablet PC hat just for playing. What are you waiting for?
http://ads.sourceforge.net/cgi-bin/redirect.pl?micr5043en
_______________________________________________
Webware-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/webware-devel