Worklight 6.2,SQL Adapter(Oracle 11g)JNDI错误,Tomcat 7

时间:2014-08-14 17:51:12

标签: oracle11g tomcat7 ibm-mobilefirst

我正在运行Worklight 6.2,Oracle 11g和Tomcat 7.如果我在adapter.xml中对用户名/密码进行硬编码,它可以正常工作:

adapter.xml

<connectionPolicy xsi:type="sql:SQLConnectionPolicy">
    <dataSourceDefinition>          
        <driverClass>oracle.jdbc.OracleDriver</driverClass>
        <url>jdbc:oracle:thin:@d1chd1d3.xyz.com:1522/D1CHD</url>
        <user>MY_USER</user>
        <password>MY_PASS</password>
    </dataSourceDefinition>
 </connectionPolicy

但是,如果我在适配器中使用JNDI名称,则它在Tomcat 7上不起作用。

adapter.xml

<connectionPolicy xsi:type="sql:SQLConnectionPolicy">
        <dataSourceJNDIName>jdbc/MyDatabase</dataSourceJNDIName>
</connectionPolicy>

在适配器中使用JNDI名称时,出现以下错误:

“运行时:在jndi中找不到数据源jdbc / MyDatabase”

我不确定上面错误消息中的反斜杠是否有效。

我运行以下命令来显示Tomcat知道的JNDI条目,它似乎表明存在JNDI条目:

http://localhost:8080/manager/text/resources?type=javax.sql.DataSource

OK - Listed global resources of type javax.sql.DataSource
jdbc/MyDatabase :org.apache.tomcat.dbcp.dbcp.BasicDataSource

server.xml中

 <Resource
          name="jdbc/MyDatabase"
          auth="Container"
          type="javax.sql.DataSource"
          driverClassName="oracle.jdbc.OracleDriver"
          url="jdbc:oracle:thin:@d1chd1d3.xyz.com:1522/D1CHD"
          username="MY_USER"
          password="MY_PASS"
          maxActive="20"
          maxIdle="10"
          maxWait="-1"/>

context.xml中

<ResourceLink
name="jdbc/MyDatabase"
global="jdbc/MyDatabase"
type="javax.sql.DataSource" />

我可以使用内置的Liberty服务器从Eclipse运行适配器时使用JNDI名称。只有在Tomcat上运行时才会出现此问题。

为什么会出现这种情况?是否可以使用Tomcat 7中的JNDI名称并连接到Oracle 11g数据库?

1 个答案:

答案 0 :(得分:0)

我被告知适配器XML中dataSourceJNDIName节点中的connectionPolicy元素可能配置错误。

请尝试使用以下代码:

<connectionPolicy xsi:type="sql:SQLConnectionPolicy">
        <dataSourceJNDIName>java:comp/env/jdbc/MyDatabase</dataSourceJNDIName>
</connectionPolicy>