Running wotaskd as root not appserver
John Pollard <[email protected]> Fri, 4 Feb 2005 12:26:31 +0000
| Newsgroups | gmane.comp.web.webobjects.admin |
|---|---|
| Message-ID | <[email protected]> |
When deploying on Mac OS X Server, the WO apps are now run as the
appserver user.
I have a problem that I have read will be solved by running the WO apps
as the root user.
I thought this would be easy by editing
/System/Library/StartupItems/WebObjects to comment out the line that
supposedly runs the apps as appserver and to uncomment the line that
runs them as root. Annoyingly the apps are still run by appserver and I
just can't see how.
In the WebObjects startup file, I see:
WOSERVICE="/System/Library/WebObjects/JavaApplications/wotaskd.woa/
Contents/Resources/javawoservice.sh"
which is run like this:
"$WOSERVICE" -appPath "$WOTASKD" >/var/log/webobjects.log 2>&1 &
I know that the WebObjects startup script itself is run by root, I
checked. But javawoservice.sh is running under the appserver user; I
have no idea how or why.
The problem that causes me to want to run the apps as root is the
following error, triggered when I am using a Jasper Reports class - I
know this works when the apps are run as root:
java.lang.InternalError: Can't connect to window server - not enough
permissions.
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1473)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1389)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:832)
at
sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.loadLibraries(Toolkit.java:1401)
at java.awt.Toolkit.<clinit>(Toolkit.java:1422)
at java.awt.Color.<clinit>(Color.java:250)
at
dori.jasper.engine.base.JRBaseElement.<init>(JRBaseElement.java:109)
at
dori.jasper.engine.design.JRDesignElement.<init>(JRDesignElement.java:
83)
at
dori.jasper.engine.design.JRDesignTextElement.<init>(JRDesignTextElement
.java:108)
at
dori.jasper.engine.design.JRDesignTextField.<init>(JRDesignTextField.jav
a:85)
at
dori.jasper.engine.xml.JRTextFieldFactory.createObject(JRTextFieldFactor
y.java:98)
at
org.apache.commons.digester.FactoryCreateRule.begin(FactoryCreateRule.ja
va:291)
at org.apache.commons.digester.Rule.begin(Rule.java:200)
at
org.apache.commons.digester.Digester.startElement(Digester.java:1268)
at
org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1490)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at
org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at
org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at
org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at
org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:500)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:305)
at
org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:442)
at
org.apache.commons.digester.Digester.parse(Digester.java:1562)
at
dori.jasper.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:387)
at dori.jasper.engine.xml.JRXmlLoader.load(JRXmlLoader.java:371)
at dori.jasper.engine.xml.JRXmlLoader.load(JRXmlLoader.java:339)
at dori.jasper.engine.xml.JRXmlLoader.load(JRXmlLoader.java:323)
at
dori.jasper.engine.JasperCompileManager.compileReportToFile(JasperCompil
eManager.java:121)
at
dori.jasper.engine.JasperManager.compileReportToFile(JasperManager.java:
907)
at
mp.reports.TransactionReport.generateReport(TransactionReport.java:195)
at Session.clientSideRequestTransactionReport(Session.java:251)
Thanks
John