欢迎使用普元产品知识库,本知识库包含普元应用开发平台EOSPlatform,流程平台BPS,企业服务总线ESB,微服务平台Microservice,运维管理平台Devops,数据集成平台DI
欢迎使用普元文档库
EOS Platform 7.5 tomcat更换为64位,配置jndi数据源,启动报错:
Message: 没有找到名称为 'java:comp/env/default' 的数据源.
at com.primeton.common.connection.impl.datasource.JNDIDataSourceProvider.getDataSource(JNDIDataSourceProvider.java:72)
at com.primeton.ext.common.connection.datasource.DataSourceFactory.getDataSource(DataSourceFactory.java:61)
at com.eos.common.connection.mbean.DataSourceConfigHandler.toLoad(DataSourceConfigHandler.java:114)
at com.eos.common.connection.mbean.DataSourceConfigHandler.toLoad(DataSourceConfigHandler.java:54)
at com.primeton.common.config.impl.ConfigurationHelper$1.doHandler(ConfigurationHelper.java:58)
......
Caused by: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory]
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:119)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
at org.apache.naming.NamingContext.lookup(NamingContext.java:848)
at com.primeton.common.connection.impl.datasource.JNDIDataSourceProvider.getDataSource(JNDIDataSourceProvider.java:70)
... 26 more
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:171)
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:115)
... 40 more
项目中使用的解决方法分享:
解决方法共包括两步:
1.在context.xml的JNDI数据源Resource配置节点中指定factory
<Resource name="default"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
username="mdm" password="System123"
maxActive="20" maxIdle="10"
maxWait="10000"
factory ="org.apache.commons.dbcp.BasicDataSourceFactory"
/>
添加后的效果如下:
2.与context.xml同级目录下的web.xml中</web-app>标签前加入JNDI数据源配置
<resource-ref>
<res-ref-name>default</res-ref-name>
<res-ref-type>javax.sql.DataSource</res-ref-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>