Jeff,

I confirmed that this is a problem on my newly-installed Linux Mandrake 8.1 
also.  That is, if I start the appserver using

./AppServer daemon

Then everything works fine until I close the "Konsole" window that I used to 
start Webware.  After that point, I get failures like you mention, where any 
page that prints a lot of stuff to stdout or stderr fails, eventually 
bringing down the appserver.  The "Error" example page that comes with 
Webware is a prime example.

But, if I instead start the appserver with:

./AppServer daemon >/dev/null 2>&1

Then I can close the "Konsole" window with no problems.  All servlets work 
correctly.

Have you tried this?

I would imagine that redirecting to a file would also work properly, but I 
haven't tried it.

- Geoff


On Tuesday October 16, 2001 10:57 am, Jeff Johnson wrote:
> I'm still a little worried about Webware running as a daemon.  I assign
> a file-like class that doesn't write anything to sys.stdout and
> sys.stderr, otherwise print statements will raise exceptions and
> eventually Webware will run out of servlet threads or lose the main
> thread.  I don't know why I'm the only person that has had a problem
> with it, it should probably happen on all *nix systems.  The sys.stdout
> fix solves the main problem but I still see exceptions printed when a
> syntax error is introduced so if we are developing new servlet code we
> have to be careful not to crash Webware if it's console was closed.  I'm
> not sure why the Python import code is writing to it's own copy of
> stdout/stderr instead of my silent version.
>
> Any comments?  Can we add the silent stdout/stderr to CVS?  It works
> well except for syntax errors.  Ideally a production server shouldn't
> have syntax errors but Webware shouldn't rely on that.
>
>
>
> Index: ThreadedAppServer.py
> ===================================================================
> RCS file: /cvsroot/webware/Webware/WebKit/ThreadedAppServer.py,v
> retrieving revision 1.47
> diff -r1.47 ThreadedAppServer.py
> 627a628,635
>
> >                               class BitBucket:
> >                                       def flush(self):
> >                                               pass
> >                                       def write(self, s):
> >                                               pass # nobody watches
> >                               sys.stdout = BitBucket()
> >                               sys.stderr = BitBucket()
>
> _______________________________________________
> Webware-devel mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/webware-devel

_______________________________________________
Webware-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/webware-devel

Reply via email to