On 2013-06-27 André Warnier wrote: > honyk wrote: > > On 2013-06-26 André Warnier wrote: > >> honyk wrote: > >>> Dear All, > >>> > >>> I have a JSF2.0 app that executes (via ProcessBuilder) an external > >> script. > >>> This script opens PPTX via PowerPoint ActiveX object, manipulate it > >> and > >>> save. It runs on Windows Server 2008 R2 64-bit, 4GB RAM, JDK 7. > >>> > >>> When tomcat 7 is launched using startup.bat (with original > settings), > >> it > >>> works fine. > >>> > >>> When tomcat runs as a service, opening the PPTX in the PowerPoint > >> fails > >>> because of Out Of Memory error regardless Xmx settings > >> (tomcat7w.exe). > >>> I originally asked PowerPoint forum, but haven't get any > explanation > >> yet: > >>> http://answers.microsoft.com/thread/37cbebf6-4003-4ab0-9295- > >> 92413aaecc2e > >>> But as the entry point is Tomcat and the only difference between > >> problematic > >>> and non problematic behavior is the 'service' mode, maybe there is > >> something > >>> related in the tomcat7.exe code base. Just guessing. > >>> > >>> Has anybody an idea why both modes behave differently? > >>> > >> Hi. > >> The problem has nothing to do with Tomcat per se. > >> It is due to running a Microsoft Office program (or library modules > >> such as the "Interop" > >> series) as a sub-process of a Windows Service (and thus in the same > >> Service context) which > >> is something that is not in the design of Microsoft Office, not > >> supported by Microsoft, > >> and even actively discouraged by Microsoft. > >> See : http://support.microsoft.com/kb/257757 > >> > >> The problem is basically that a Windows Service does not run in the > >> same "environment" as > >> a "user session" environment, and as they say in that article, you > will > >> certainly > >> experience "unstable behavior and/or deadlock" somewhere, and will > get > >> no help for it. > > > > I read this article but because I do not need intraction and my code > doesn't > > run simultaneously and tomcat is launched using my credentials - I > still > > thought it could be possible. > > > > Now realizing that tomcat launched using my credentials do not > necesarily > > mean that Office use the same... > > > >> Personal experience : some things will work with one MS-Office > program, > >> and totally fail > >> with another; even simple things like opening or saving a file. It > may > >> work with one > >> file, and fail with another, for no apparent reason. > >> You get an OOM error in this case, but other cases may be "file not > >> found" (although it's > >> there) or whatever other bizarre failures. > >> Ultimately it is unpredictable, frustrating and time-consuming. > > > > I was an optimist when everything worked in the user mode... > > > >> Solutions : > >> 1) instead of MS-Office, use LibreOffice or OpenOffice. Both can > run > >> in "headless" mode, > >> and provide an API to have them "do things with documents". And both > >> can open and > >> manipulate MS-Office documents. Depending on what you do, there may > be > >> some differences > >> in the results, but it works fine for many things. > >> Or try one of the other solutions suggested in the above article. > >> (I have not tried them, I use OpenOffice/LibreOffice). > > > > I'll give it a try. I originaly tested Apache POI, but required > > functionality is not implemented yet. > > > >> 2) do not run Tomcat as a Service. Create a virtual Windows machine, > >> and run it in a user > >> console (with startup.bat). You can restrict access to the VM, and > >> since it is a VM, it > >> can run unattended, just as a service would. > >> (I am also using this scheme, when circumstances permit). > >> But in that case, also pay attention to the licensing considerations > at > >> the end of the > >> article. > > > > I am quite lost in this ;-) But I'll investigate further. > > > > Thanks a lot for your exhaustive analysis! Finally it looks my way is > no way > > :-) > > > > No problem. I went myself through the exact same issues as you > described, I did believe > that there must be a workaround, tried a number of things with great > loss of time, and > finally had to admit that the MS article was right and that there is no > good solution with > MS-Office when starting it from a Service.
I appreciate a lot your response and sharing your experience. Without it I would spend many additional hours of investigating, trial and error attempts, asking the same topic in different places, all this in heavy frustration... > About the Virtual Machine solution : usually, when you want something > to run as a Service, > it is because it has to run in the background, without a user being > logged-in, because of > security e.g. Also because otherwise, when the logged-in user logs > off, any program that > he's running get killed. > With Virtual Machines (VM in short), you can create a Windows machine > that has no real > physical console, runs all the time, and where a user session can stay > logged-in all the > time. So in that kind of machine, it is not usually a problem if a > user is logged-in and > remains logged-in, with a console window open, and Tomcat running in > it. > And in that console window, your Tomcat could be running via > startup.bat, and execute your > MS-Office commands without problems, as it is not a Service. If I understand it correctly, this would need a special care when the VM is restarted - the user should log-in again. In meantime this system is out of work. It is a rare case though. Jan --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org