Dave,
I think there is an issue with the way this is currently working. The
new way always wants to build a parsed xml document to work on and I
think the way the validation works forces it to call out to the web for
the DTD. This is a problem for me and potentially other people who are
behind firewalls and don't want to have their hibernate DTD pulled from
the hibernate site.
For example, right now I am trying to run some unit tests and everything
is failing with this exception. Same thing happens if I startup my
webserver without any proxy settings ...
FATAL 2006-10-18 14:13:20,928 HibernateRollerImpl:<init> - Error
initializing Hibernate
org.jdom.input.JDOMParseException: Error on line 21: External entity not
found:
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd".
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:468)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:770)
at
org.apache.roller.business.hibernate.HibernatePersistenceStrategy.<init>(HibernatePersistenceStrategy.java:74)
at
org.apache.roller.business.hibernate.HibernateRollerImpl.<init>(HibernateRollerImpl.java:83)
at
org.apache.roller.business.hibernate.HibernateRollerImpl.instantiate(HibernateRollerImpl.java:101)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.apache.roller.model.RollerFactory.getRoller(RollerFactory.java:66
-- Allen
Dave wrote:
> Yes, this requires more discussion.
>
> I'm going to add what I need specifically for the standalone tasks,
> but I'm going to leave the Roller webapp database configuration alone
> for now.
>
> Anil, would bean factory allow us to have one static/startup config
> file that includes all existing properties plus database resource and
> mail resource? How would it work? Would it be a simple property file
> as it is now? Would we be able to override with a simple property file
> as we do now?
>
> - Dave
>
>
>
>
> On 10/17/06, Anil Gangolli <[EMAIL PROTECTED]> wrote:
>>
>> I added the following comment to this proposal.
>>
>> I feel this is reinventing a poor man's version of the Spring
BeanFactory
>> (
>>
http://www.springframework.org/docs/api/org/springframework/beans/factory/BeanFactory.html
>> )
>> piece by piece. Why not use it?
>>
>> This is ok as a temporary hack but please don't extend it into a
pattern.
>> I'd propose we replace the static configuration with a
>> Spring BeanFactory-based config.
>>
>> --a.
>>
>> ----- Original Message -----
>> From: "Allen Gilliland" <[EMAIL PROTECTED]>
>> To: <[email protected]>
>> Sent: Monday, October 16, 2006 10:19 PM
>> Subject: Re: Proposal_ImproveDatabaseConfig
>>
>>
>> >
>> >
>> > Dave wrote:
>> >> On 10/16/06, Allen Gilliland <[EMAIL PROTECTED]> wrote:
>> >>> I think there's 2 items mixed together here. You are basically
>> talking
>> >>> about doing 2 things ...
>> >>>
>> >>> For #1 I think what you have is fine, but I would ask if there
is any
>> >>> reason why we shouldn't just setup Roller to always define the
>> >>> connection parameters via the roller config? As I think about it
>> more
>> >>> it seems almost more complicated to have people configure their
>> database
>> >>> via a jndi datasource in their container when we could easily have
>> them
>> >>> put that same data in the roller config file, which they are
>> supposed to
>> >>> be modifying anyways. Seems like that would make the installation
>> >>> process a lot easier as well as accomplish this goal.
>> >>
>> >> I agree. Configuration consolidation is a good thing.
>> >>
>> >> How do people feel about making this change for 3.1?
>> >>
>> >> Instead of instructing folks to setup the database configuration in
>> >> their app server config (roller.xml on Tomcat for example), we
would
>> >> tell them to create a roller-custom.properties tile and define
these
>> >> parameters:
>> >>
>> >> jdbc.driverClass=
>> >> jdbc.connectionURL=
>> >> jdbc.username=
>> >> jdbc.password=
>> >>
>> >> We'd also allow the option of using a JNDI datasource.
>> >>
>> >> jdbc.jndiDataSource=
>> >
>> > I am not against this for 3.1 because I think it's a relatively
small
>> > change, but we should probably think a little bit more about exactly
>> what
>> > we want to support. Obviously using the first section of jdbc.*
>> > properties is pretty easy, but it then completely bypasses any
>> option of
>> > using a connection pool which in my mind makes it's usefulness a bit
>> > limited. Many users may not know the difference, but maybe we
>> should try
>> > and guide them?
>> >
>> > If we want to we could include our own database pooling library,
like
>> > c3p0, and manage the pool ourselves. It's probably even possible to
>> set
>> > it up so that the properties jdbc.* allow the pool to be completely
>> > defined by the user, basically the same way resource-ref works in
the
>> > web.xml. Then the user could even pick their own pooling software
>> if they
>> > really wanted to.
>> >
>> > Anyways, the main point is that it probably makes sense to think
more
>> > about how this could work. Also, if we are doing this for the db
>> > connection, maybe we should do the same for the mail session?
>> >
>> > -- Allen
>> >
>> >>
>> >>
>> >>> For #2 I think it looks good as well, I would just drop it in the
>> >>> business.runnable package. The one thing I would consider
>> changing is
>> >>> instead of forcing people to use a taskrunner.properties file
just to
>> >>> set 2 properties, why not get them as cmd line arguments? or
>> possibly
>> >>> jvm arguments? i.e.
>> >>>
>> >>> java -cp roller-planet.jar TaskRunner <task-class> <roller.dir>
>> >>> [jars.dir]
>> >>>
>> >>> java -Droller.webapp.dir=<path> -Droller.jars.dir=<path> -cp
>> >>> roller-planet.jar TaskRunner <task-class>
>> >>>
>> >>> In my mind either of those options seems a little more straight
>> forward
>> >>> than doing the taskrunner.properties file.
>> >>
>> >> Yep. I like the second option.
>> >>
>> >> - Dave
>> >>
>> >>
>> >>
>> >>
>> >>> Dave wrote:
>> >>> > To make it easier to configure standalone tasks for the Planet
>> Roller
>> >>> > webapp, I've implemented some improvements in the way that the
>> >>> > database connection is configured. I'd like to move that code
into
>> >>> > Roller proper so we can simplify the rollertask.sh script and
>> setup.
>> >>> >
>> >>> > Here's the proposal:
>> >>> >
>> >>>
>>
http://rollerweblogger.org/wiki/Wiki.jsp?page=Proposal_ImproveDatabaseConfig
>>
>> >>> >
>> >>> >
>> >>> > And if you take a look at the TaskRunner and
>> >>> > PlanetHibernatePersistenceStrategy (under sandbox/planetroller),
>> you
>> >>> > can see the code that does the work.
>> >>> >
>> >>> > - Dave
>> >>>
>> >
>>
>>