精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-02-24
win2k + tomcat4.x + Spring1.1.3 配置文件: web.xml <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/dataAccessContext-local.xml /WEB-INF/applicationContext.xml </param-value> </context-param> <servlet> <servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> applicationContext.xml <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>WEB-INF/jdbc.properties</value> </list> </property> </bean> dataAccessContext-local.xml <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"><value>${jdbc.driverClassName}</value></property> <property name="url"><value>${jdbc.url}</value></property> <property name="username"><value>${jdbc.username}</value></property> <property name="password"><value>${jdbc.password}</value></property> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"><ref local="dataSource"/></property> </bean> 附:以上配置基本上和Spring附带的jpetstore上的配置一样。 jdbc.properties jdbc.driverClassName=oracle.jdbc.OracleDriver ...... 错误提示信息: org.springframework.beans.factory.BeanInitializationException: Could not load properties from class path resource [WEB-INF/jdbc.properties]; nested exception is java.io.FileNotFoundException: Could no t open class path resource [WEB-INF/jdbc.properties] java.io.FileNotFoundException: Could not open class path resource [WEB-INF/jdbc.properties] 你的分析: 首先我试过无论把jdbc.properties放在web-inf还是放在classes下面都会出现错误信息。 我现在的目的就是想获取DataSource,因为在xml中配置了bean dataSource资源,于是自己写代码 ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(new String[]{"WEB-INF/applicationContext.xml, WEB-INF/dataAccessContext-local.xml"}); BeanFactory factory = (BeanFactory)appContext; DataSource dataSource = (DataSource)factory.getBean("dataSource"); 但dataSource总是null,不知何故。 另外以前一搬都是通过 DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/exmaple"); 获取,但Spring不是在beans中配置的DataSource吗?我该如何获取呢? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-02-24
我将applicationContext.xml, dataAccessContext-local.xml beans 中的内容都去掉,然后写下面的代码可以获取DataSource成功:
public DataSource test() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("oracle.jdbc.OracleDriver"); dataSource.setUrl("jdbc:oracle:thin:@192.168.1.2:1521:orcl"); dataSource.setUsername("sa"); dataSource.setPassword("111"); return dataSource; } 这会我就头昏了,到底Spring需要的这2个xml配置文件中的datasource配置的相关信息到底是做什么用的呢,我该如何用他呢? |
|
返回顶楼 | |
发表时间:2005-02-24
因为公司现在的项目严格要求必须都写成procedure,不能出现sql,所有只能放弃很多持久化机制,这样就没有必要再生成一些与table对应xml的对象文件了。
出于这样的考虑,决定在实际的项目中只使用Spring的 事务管理、DAO、JDBC、Web框架。另外以前表示层都是使用struts的tag。但看Spring的jpetstore后觉得jstl更好,因为以前用struts tag的时候在weblogic80上有问题,但在weblogic813上没有问题,到后来很不爽。看了jstl后,心想既然是sun发布的jsp标准的标签库应该在兼容性方面更好些。 不知道大家对我的看法有何意见 |
|
返回顶楼 | |
发表时间:2005-02-24
[WEB-INF/jdbc.properties] 中WEB-INF/去掉,properties文件放到web-inf/classes中。
配置文件就是不用你自己编码去构造呀,并且配置易于修改,不用修改source code。 |
|
返回顶楼 | |
发表时间:2005-02-24
rongsantang 写道 [WEB-INF/jdbc.properties] 中WEB-INF/去掉,properties文件放到web-inf/classes中。
配置文件就是不用你自己编码去构造呀,并且配置易于修改,不用修改source code。 <value>/jdbc.properties</value> <value>jdbc.properties</value> 这2种配置后都出现下面的错误 在tomcat启动的时候,出现如下错误信息: 2005-02-24 14:38:11,687 ERROR [org.springframework.web.context.ContextLoader] - <Context initializat ion failed> org.springframework.beans.factory.BeanInitializationException: Could not load properties from Servle tContext resource [/jdbc.properties]; nested exception is java.io.FileNotFoundException: Could not o pen ServletContext resource [/jdbc.properties] java.io.FileNotFoundException: Could not open ServletContext resource [/jdbc.properties] at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletCont extResource.java:89) 另外我初步估计问题不在这儿,为什么呢? 因为我在配置Spring附带的例子jpetstore中就只这样配置的,一切成功,没有任何问题。在因为jpetstore不是用的JDBC所有不知道他的datasource是如何获取的或者说他的datasource是隐含在某些API中的 |
|
返回顶楼 | |
发表时间:2005-02-24
斜杠也去掉。
|
|
返回顶楼 | |
发表时间:2005-02-25
你的jdbc.properties放到哪里了?我没看到
|
|
返回顶楼 | |
发表时间:2005-02-25
如果要以web程序方式运行的话:这段配置
<value>WEB-INF/jdbc.properties</value> 应该是<value>/WEB-INF/jdbc.properties</value> 这样的 如果做测试的话,建议你使用ClassPathXmlApplicationContext创建application,注意的是要把你的配置文件放到你工程的classpath下面 |
|
返回顶楼 | |
发表时间:2005-02-25
fsword 写道 你的jdbc.properties放到哪里了?我没看到
放在web-inf或者classes都出现问题 |
|
返回顶楼 | |
发表时间:2005-02-25
yhc0125 写道 如果要以web程序方式运行的话:这段配置
<value>WEB-INF/jdbc.properties</value> 应该是<value>/WEB-INF/jdbc.properties</value> 这样的 如果做测试的话,建议你使用ClassPathXmlApplicationContext创建application,注意的是要把你的配置文件放到你工程的classpath下面 那么我以web程序方式运行的话,我该如何用代码获取datasource呢? 也就是写个方法获取dataSource,怎么写呢?谢谢!! |
|
返回顶楼 | |