发布JNDI资源初始化 - 数据库连接@“DB2 on Cloud - BLUEMIX

时间:2015-11-04 16:52:05

标签: db2 jndi ibm-cloud websphere-liberty

我们无法使用Bluemix上的JNDI资源从部署在“Liberty on Java”上的Java应用程序建立DB2数据库连接。

无法初始化资源。

我的server.xml文件是

 "<dataSource id="eVotingDataSource" jdbcDriverRef="db2-driver" jndiName="jdbc/DatabaseName" type="javax.sql.DataSource">
    <properties.db2.jcc id="eVotingDataSource-props" databaseName="*******" user="db2inst1" password="******" portNumber="50001" serverName="********" sslConnection="true"/>
</dataSource>
<jdbcDriver id="db2-driver" libraryRef="db2-library"/>
<library id="db2-library">
    <fileset id="db2-fileset" dir="${server.config.dir}/lib" includes="db2jcc4.jar db2jcc_license_cu.jar"/>
</library>

Web.xml文件

<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/DatabaseName</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>

applicationContext.xml文件

<jee:jndi-lookup id="eVotingDataSource"

JNDI名称= “JDBC /数据库名”    expected-type =“javax.sql.DataSource”/&gt;

以下是messages.log的输出

  

org.springframework.beans.factory.BeanCreationException:无法自动装配字段:private org.hibernate.SessionFactory com.nl.abnamro.evoting.dao.IssuerDAOImpl.eVotingSessionFactory;嵌套异常是org.springframework.beans.factory.BeanCreationException:在类路径资源[applicationContext.xml]中定义名称为'eVotingSessionFactory'的bean时出错:在设置bean属性'dataSource'时无法解析对bean'eVotingDataSource'的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'eVotingDataSource'的bean时出错:init方法的调用失败;嵌套异常是javax.naming.NamingException:CWWKN0008E:无法获取名称为jdbc / DatabaseName的对象。

     

相关原因:org.springframework.beans.factory.BeanCreationException:创建名为'eVotingDataSource'的bean时出错:init方法的调用失败;嵌套异常是javax.naming.NamingException:CWWKN0008E:无法获取名称为jdbc / DatabaseName的对象。

     

相关原因:org.springframework.beans.factory.BeanCreationException:创建名为'eVotingMailSource'的bean时出错:init方法的调用失败;嵌套异常是javax.naming.NameNotFoundException:中间上下文不存在:mail / Session

加载应用程序时,我们收到以下错误:

  

错误500:javax.servlet.ServletException:Filter [springSecurityFilterChain]:无法初始化

你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

您收到的错误与server.xml

中的此配置有关
jndiName="**jdbc/DatabaseName**"

CWWKN0008E: An object could not be obtained for name **jdbc/DatabaseName**.

如果您使用的是使用Bluemix绑定的数据库服务,则在应用程序暂存时会自动配置运行时,因此您通常不需要在server.xml中提供自己的配置来覆盖Bluemix配置。 相反,如果您需要为自己的配置覆盖server.xml,则可以在Bluemix页面上的“环境变量”部分下的Bluemix控制台上访问数据库服务引用 enter image description here

您可以检索要在server.xml中使用的DBService名称作为JNDI / [DBNAME]

您还可以检索正确的数据源,只需在Bluemix上部署应用程序而不覆盖server.xml,并在生成的server.xml上检查Bluemix UI(在“文件”部分下)数据源的值

只是一个小问题:您是否可以在自由运行时的打包版本中确认是否正在将您的应用程序与server.xml一起推送?