I am having a problem using log4j inside of an EJB; I can only log to a file on the first call to the EJB. Subsequent attempts to log from other methods in the EJB fail due to an IOException on the call to flush() the log output. The environment is as follows. We are developing an Oracle-based client-server application using Oracle 8i and their JDeveloper 3.2 development environment. This also comes with its own JVM (Aurora). We have upgraded this environment to use JDK 1.3. Oracle and our server application both run on Solaris. The client (and JDeveloper 3.2) executes on a PC running Windows 2000. I think that is all the pertinent system information. As far as log4j is concerned, we have a thin wrapper class of our own that we use for logging. All of this wrapper class's methods are static and basically format messages the way want them formatted and then call log4j methods. We configure our logging environment via an XML file using the DOMConfigurator class. We use a standard FileAppender object with fairly standard formatting. In addition to logging to a file, we also log to "Standard out" via a second FileAppender. The behavior I am seeing is as follows. We create a session EJB. Inside of the "ejbCreate()" method (a standard method on the EJB interface, at least I think--I'm still kind of new to this...), I have placed several logging messages. All of the logging messages inside "ejbCreate()" work just fine. After "ejbCreate()" returns, we call another method on the EJB. Let's call it "methodA()". Inside of "methodA()", we attempt to log to the same file that we logged to back inside of "ejbCreate()". If fact, we are using the same objects we used earlier. However, this time we fail due to an IOException when attempting to flush() the output (basically, this operation gets done by the FileWriter.flush() method which simply calls "flush()" on its associated output stream object). Because of this failure, no log output from "methodA()" is ever recorded in the log file. However, this output is written to "Standard out". The IOException I am getting originates from native code and doesn't seem to tell me exactly what the problem is. My suspicion is that the file descriptor was closed somehow, but thus far I am unable to prove this (and am not sure what I would do about it if I did prove this theory). I modified a local copy of the log4j code to tell me if any "close()" method was being called, but--at least as far as I can tell--neither log4j, our Log wrapper class, nor our EJB code is intentially closing any file object. This may be some "side effect" of using EJBs (or, particularly, session EJBs); I'm not yet knowledgeable enough in this area to know for sure and none of the document that I have access to indicates that this is standard behavior for EJBs. As a work-around, we can configure our XML file to send all of our log4j output to "Standard out", which means it will wind up in some Oracle trace file and be a tad bit difficult to locate, but we can live with that for now. However, in the long run, we would really like our log output to wind up in a seperate data file like it does everywhere else we've been using it (log4j and our Log wrapper work fine everywhere else in our system). Any thoughts, comments, suggestions, or answers would be greatly appreciated.
BEGIN:VCARD VERSION:2.1 N:Collier;John;E FN:John E Collier ORG:LeadScope, Inc. TITLE:Senior Software Engineer TEL;WORK;VOICE:(614) 675-3771 TEL;WORK;FAX:(614) 675-3732 ADR;WORK:;;1275 Kinnear Rd.;Columbus;Ohio;43212-1155;United States LABEL;WORK;ENCODING=QUOTED-PRINTABLE:1275 Kinnear Rd.=0D=0AColumbus, Ohio 43212-1155=0D=0AUnited States URL: URL:http://www.leadscope.com EMAIL;PREF;INTERNET:[EMAIL PROTECTED] REV:20010125T132124Z END:VCARD
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]