John,

That looks pretty good.  I tried your patch (modified slightly since I am not using 
the latest CVS code) on Resin with no write access to appData.ser and your
appropriate message appeared in the log.  I also tried it locally with Tomcat
and the declaration of intake.xml commented out in TR.props - again a useful
message.

On Resin I have put back the "/" in the web.xml path to TR.props and everything
seems fine - not sure what was up with that.

Thanks,

Scott

----- Original Message ----- 
From: "John McNally" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, July 26, 2001 5:54 AM
Subject: Re: Intake initialisation problem


> Can you try the following patch?  And tell me if it helps?
> 
> john mcnally
> 
> Index:
> src/java/org/apache/turbine/services/intake/TurbineIntakeService.java
> ===================================================================
> RCS file:
> 
>/home/cvs/jakarta-turbine/src/java/org/apache/turbine/services/intake/TurbineIntakeService.java,v
> retrieving revision 1.17
> diff -u -r1.17 TurbineIntakeService.java
> ---
> src/java/org/apache/turbine/services/intake/TurbineIntakeService.java 
> 2001/07/14 19:36:30 1.17
> +++
> src/java/org/apache/turbine/services/intake/TurbineIntakeService.java 
> 2001/07/25 19:47:36
> @@ -140,6 +140,15 @@
>          throws InitializationException
>      {
>          String xmlPath = getConfiguration().getString(XML_PATH);
> +
> +        if ( xmlPath == null ) 
> +        {
> +            String pathError = 
> +                "Path to intake.xml was not specified.  Check that the"
> +
> +                " property exists in TR.props and was loaded.";
> +            getCategory().error(pathError);
> +            throw new InitializationException(pathError);
> +        }
>          
>          //!! need a constant
>          String appDataPath = "WEB-INF/appData.ser";
> @@ -163,11 +172,22 @@
>                  XmlToAppData xmlApp = new XmlToAppData();
>                  appData = xmlApp.parseFile(xmlPath);
>  
> -                OutputStream out = new FileOutputStream(serialAppData);
> -                ObjectOutputStream p = new ObjectOutputStream(out);
> -                p.writeObject(appData);
> -                p.flush();
> -                out.close();
> +                try
> +                {
> +                    OutputStream out = new
> FileOutputStream(serialAppData);
> +                    ObjectOutputStream p = new ObjectOutputStream(out);
> +                    p.writeObject(appData);
> +                    p.flush();
> +                    out.close();
> +                }
> +                catch (Exception e)
> +                {
> +                    getCategory().info(
> +                        "Intake initialization could not be serialized
> " +
> +                        "because writing to " + appDataPath + " was not
> " +
> +                        "allowed.  This will require that the xml file
> be " +
> +                        "parsed when restarting the application.");
> +                }
>              }
>  
>              groupNames = new String[appData.getGroups().size()];
> 
> 
> 
> Scott Eade wrote:
> > 
> > Hi,
> > 
> > Today I have been trying to get my application working on an
> > external server (i.e. one over which I have very little control).
> > 
> > The problems I have encountered so far all relate to Intake.
> > While I am using the version of intake supplied with tdk 2.1,
> > this version works fin on my development machine.
> > 
> > My first problem was that the <param-value> tag in my web.xml
> > file included a "/" at the beginning of the path to TR.props.  This
> > seemed to work fine here, but it seemed to cause problems on
> > the server I am deploying to.  Basically adding some debug
> > statements into TurbineIntakeService revealed that:
> > 
> >     String xmlPath = props.getProperty(XML_PATH);
> > 
> > was returning null.  This produces a not very helpful
> > NullPointerException.  After removing the "/" it would seem
> > that the server (Resin 1.2.5) was suddenly able to find TR.props
> > and hence xmlPath was loaded with the correct value.  The
> > odd thing about this is that on my development machine I have
> > tomcat (that came with the tdk), and Resin 2.0.0 & Resin 1.2.8
> > both of which seem to work correctly with "/" in web.xml.
> > I can only assume that this is a weird configuration at my
> > host provider.
> > 
> > Anyway, this has not solved my problem.  Now the problem is
> > that when TurbineIntakeService attempts to write to appData.ser
> > it gets a "Permission denied" error.
> > 
> > So my question now is, is there a way, say through web.xml that
> > I can give turbine the necessary permissions to write to the appropriate
> > directory or do I need to organize some special directory permissions?
> > 
> > >From turbine.log:
> > 
> > [Wed Jul 25 17:43:06 EST 2001] -- ERROR --
> >  Exception:  org.apache.turbine.services.InitializationException: 
>TurbineIntakeService failed to initialize:
> > /www/clientweb/au/b/backstagetech.com.au/./WEB-INF/appData.ser (Permission denied)
> >  Stack Trace follows:
> >  java.io.FileNotFoundException: 
>/www/clientweb/au/b/backstagetech.com.au/./WEB-INF/appData.ser (Permission denied)
> >  at java.io.FileOutputStream.open(Native Method)
> >  at java.io.FileOutputStream.<init>(FileOutputStream.java:102)
> >  at java.io.FileOutputStream.<init>(FileOutputStream.java:62)
> >  at java.io.FileOutputStream.<init>(FileOutputStream.java:132)
> >  at 
>org.apache.turbine.services.intake.TurbineIntakeService.init(TurbineIntakeService.java:183)
> > rethrown as org.apache.turbine.services.InitializationException: 
>TurbineIntakeService failed to initialize:
> > /www/clientweb/au/b/backstagetech.com.au/./WEB-INF/appData.ser (Permission denied)
> >  at 
>org.apache.turbine.services.intake.TurbineIntakeService.init(TurbineIntakeService.java:227)
> >  at 
>org.apache.turbine.services.TurbineBaseService.init(TurbineBaseService.java:108)
> >  at 
>org.apache.turbine.services.BaseInitableBroker.initClass(BaseInitableBroker.java:150)
> >  at 
>org.apache.turbine.services.BaseServiceBroker.doInitService(BaseServiceBroker.java:226)
> >  at 
>org.apache.turbine.services.BaseServiceBroker.initServices(BaseServiceBroker.java:195)
> >  at org.apache.turbine.Turbine.init(Turbine.java:185)
> >  at com.caucho.server.http.Application.createServlet(Application.java:1734)
> >  at com.caucho.server.http.Application.loadServlet(Application.java:1698)
> >  at com.caucho.server.http.Invocation.service(Invocation.java:255)
> >  at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:121)
> >  at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:333)
> >  at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:266)
> >  at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
> >  at java.lang.Thread.run(Thread.java:484)
> > 
> > If anyone knows how to deal with this I would appreciate some help.
> > 
> > Thanks,
> > 
> > Scott
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
>  
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to