我正在运行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数据库?
答案 0 :(得分:0)
我被告知适配器XML中dataSourceJNDIName
节点中的connectionPolicy
元素可能配置错误。
请尝试使用以下代码:
<connectionPolicy xsi:type="sql:SQLConnectionPolicy">
<dataSourceJNDIName>java:comp/env/jdbc/MyDatabase</dataSourceJNDIName>
</connectionPolicy>