Jim - Thanks for your reply. After some sleep, I noticed that the
BasicDataSource property is called "username", but I had written
"user" in struts-config.xml. I wrongly assumed that some logging 
statement in BeanUtils.populate() would warn of failed attempts to set
non-existent properties in the targeted instance.

On 05/14/02, I received this from [EMAIL PROTECTED]:
>It's being thrown from ActionServlet.initApplicationDataSources()
>
>The log statement is coming from a resource file.
>@see apache\struts\action\ActionResources.properties
>line 10  
>dataSource.init=Initializing application data source {0}
>
>I'm still speculating as to which line of code is the culprit from struts
>servlet initialization.
>
>Either a mis-configuration or a bug in either dbcp or beanutils.
>
>
>JM


> -----Original Message-----
> From: Mark Johnson [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, May 14, 2002 5:54 AM
> To: [EMAIL PROTECTED]
> Subject: suspected bug configuring ActionServlet for BasicDataSource
>
>
> I get a NullPointerException when attempting to configure ActionServlet
> as follows (struts nightly build 20020508, struts-config_1_1.dtd):
>   <data-sources>
>
>     <data-source
>       className="org.apache.struts.config.DataSourceConfig"
>       key="MyBasicDataSource"
>       type="org.apache.commons.dbcp.BasicDataSource"> 
>
>       <set-property property="defaultAutoCommit" value="false"/>
>       <set-property property="driverClassName"
> value="org.postgresql.Driver"/>
>       <set-property property="maxActive" value="4"/>
>       <set-property property="password" value=""/>
>       <set-property property="url" value="jdbc:postgresql:mystraw"/>
>       <set-property property="user" value="postgres"/>
>
>     </data-source>
>
>   </data-sources>
>
> I believe the above should work. Why? Because a little test application
> (Pgtest) with analogous code, ie:
>             BasicDataSource ds =  new BasicDataSource();
>             ds.setDefaultAutoCommit(false);
>       (and so forth)
> produces a valid ResultSet, when run like this:
> $ java -cp
> /opt/j2sdk1.4.0/lib:commons-collections.jar:commons-dbcp.jar:commo
> ns-pool.jar:pgjdbc2.jar:. Pgtest
>
> Running my webapp with log4j set to DEBUG, the above struts-config.xml
> fragment appears to pass through Digester just fine... but then:
>
> ...snip...
> 2886 [main] DEBUG org.apache.commons.digester.Digester.sax  -
> endDocument()
> 2902 [main] DEBUG org.apache.struts.action.ActionServlet  -
> Initializing applica
> tion path '' message resources from 'com.myblank.ApplicationResources'
> 2904 [main] DEBUG org.apache.struts.action.ActionServlet  -
> Initializing applica
> tion path '' data sources
> 2910 [main] DEBUG org.apache.struts.action.ActionServlet  -
> Initializing applica
> tion path '' data source 'MyBasicDataSource'
> 2931 [main] DEBUG org.apache.commons.beanutils.BeanUtils  -
> BeanUtils.populate(o
> rg.apache.commons.dbcp.BasicDataSource@ea48be,
> {url=jdbc:postgresql:mystraw, use
> r=postgres, password=, driverClassName=org.postgresql.Driver,
> maxActive=4, defau
> ltAutoCommit=false})
> 2932 [main] DEBUG org.apache.commons.beanutils.BeanUtils  -
> setProperty(org.ap
> ache.commons.dbcp.BasicDataSource@ea48be, url, jdbc:postgresql:mystraw)
> 2955 [main] DEBUG org.apache.commons.beanutils.ConvertUtils  -
> Convert string 'j
> dbc:postgresql:mystraw' to class 'java.lang.String'
> 2955 [main] DEBUG org.apache.commons.beanutils.ConvertUtils  -
> Using converter
>  org.apache.commons.beanutils.converters.StringConverter@d95da8
> 2955 [main] DEBUG org.apache.commons.beanutils.BeanUtils  -
> setProperty(org.ap
> ache.commons.dbcp.BasicDataSource@ea48be, user, postgres)
> 2961 [main] DEBUG org.apache.commons.beanutils.BeanUtils  -
> setProperty(org.ap
> ache.commons.dbcp.BasicDataSource@ea48be, password, )
> 2962 [main] DEBUG org.apache.commons.beanutils.ConvertUtils  -
> Convert string ''
>  to class 'java.lang.String'
> 2962 [main] DEBUG org.apache.commons.beanutils.ConvertUtils  -
> Using converter
>  org.apache.commons.beanutils.converters.StringConverter@d95da8
> 2962 [main] DEBUG org.apache.commons.beanutils.BeanUtils  -
> setProperty(org.ap
> ache.commons.dbcp.BasicDataSource@ea48be, driverClassName,
> org.postgresql.Driver
> )
> 2962 [main] DEBUG org.apache.commons.beanutils.ConvertUtils  -
> Convert string 'o
> rg.postgresql.Driver' to class 'java.lang.String'
> 2962 [main] DEBUG org.apache.commons.beanutils.ConvertUtils  -
> Using converter
>  org.apache.commons.beanutils.converters.StringConverter@d95da8
> 2962 [main] DEBUG org.apache.commons.beanutils.BeanUtils  -
> setProperty(org.ap
> ache.commons.dbcp.BasicDataSource@ea48be, maxActive, 4)
> 2962 [main] DEBUG org.apache.commons.beanutils.ConvertUtils  -
> Convert string '4
> ' to class 'int'
> 2962 [main] DEBUG org.apache.commons.beanutils.ConvertUtils  -
> Using converter
>  org.apache.commons.beanutils.converters.IntegerConverter@65c7f6
> 2963 [main] DEBUG org.apache.commons.beanutils.BeanUtils  -
> setProperty(org.ap
> ache.commons.dbcp.BasicDataSource@ea48be, defaultAutoCommit, false)
> 2963 [main] DEBUG org.apache.commons.beanutils.ConvertUtils  -
> Convert string 'f
> alse' to class 'boolean'
> 2963 [main] DEBUG org.apache.commons.beanutils.ConvertUtils  -
> Using converter
>  org.apache.commons.beanutils.converters.BooleanConverter@2aea3e
> 3044 [main] ERROR org.apache.struts.action.ActionServlet  -
> Initializing applica
> tion data source MyBasicDataSource
> java.lang.NullPointerException
>         at java.util.Hashtable.put(Hashtable.java:386)
>         at
> org.apache.commons.dbcp.BasicDataSource.createDataSource(Unknown Sour
> ce)
>         at
> org.apache.commons.dbcp.BasicDataSource.setLogWriter(Unknown Source)
>         at
> org.apache.struts.action.ActionServlet.initApplicationDataSources(Act
> ionServlet.java:884)
> ...snip...
>
> I have been unable to locate the log4j statement that produces the above
> ERROR message.
>
> If you've read this far, your comments will be most welcome.
>
> TIA,
> --
>
> Mark Johnson
> [EMAIL PROTECTED]
>
> --
-- 

Mark Johnson
[EMAIL PROTECTED]

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

Reply via email to