Worklight 6.1,Tomcat 7.0.42 上的 SQL 适配器 (Oracle 11g) JNDI 错误

Posted

技术标签:

【中文标题】Worklight 6.1,Tomcat 7.0.42 上的 SQL 适配器 (Oracle 11g) JNDI 错误【英文标题】:Worklight 6.1, SQL Adapter (Oracle 11g) JNDI error on Tomcat 7.0.42 【发布时间】:2014-11-15 09:04:18 【问题描述】:

我们正在 Worklight 6.1、Oracle 11g 和 Tomcat 7.0.42 上部署 Worklight 应用程序。

我们按照手动程序在 Tomcat 上部署 worklight 应用程序 我们配置了以下文件: 适配器.xml

<connectivity>
        <connectionPolicy xsi:type="sql:SQLConnectionPolicy">   
         <dataSourceJNDIName>$DataSource-jndi-Local</dataSourceJNDIName>
    </connectionPolicy>

worklight.properties

DataSource-jndi-Local = jdbc/WorklightAppDS

server.xml(Tomcat 7)

<Context path="/App_Name" docBase="App_Name">
        <Resource name="jdbc/WorklightAppDS"
            auth="Container"
            type="javax.sql.DataSource"
            driverClassName="oracle.jdbc.driver.OracleDriver"
            url="jdbc:oracle:thin:@domain:1521:ORCL"
            username="DBUSER"
            password="DBPASS"/>
        <Resource name="jdbc/WorklightDS"
            auth="Container"
            type="javax.sql.DataSource"
            driverClassName="oracle.jdbc.driver.OracleDriver"
            url="jdbc:oracle:thin:@domain:1521:ORCL"
            username="DBUSERWORKLIGHT"
            password="DBUSERWORKLIGHTPASS"/>    
        <Resource name="jdbc/WorklightReportsDS"
            auth="Container"
            type="javax.sql.DataSource"
            driverClassName="oracle.jdbc.driver.OracleDriver"
            url="jdbc:oracle:thin:@domain:1521:ORCL"
            username="DBUSERWORKLIGHTREPORTS"
            password="DBUSERWORKLIGHTREPORTSPASS"/>

         <Manager pathname="" />
    </Context> 

完成上述配置后,Worklight 应用程序已部署,我们可以访问 Worklight 控制台 在上下文“/App_Name/console”上。 我们在工作灯控制台上部署了 .wlapp 和 .wladapter,当我们通过应用程序调用工作灯适配器时 它说“运行时:在 jndi 中找不到数据源 jdbc/WorklightAppDS”。

我们尝试了另外两种配置数据源的方法:

    在server.xml的&lt;GlobalNamingResources&gt;标签中添加数据源配置:

            <Resource name="UserDatabase" auth="Container"
                      type="org.apache.catalina.UserDatabase"
                      description="User database that can be updated and saved"
                      factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
                      pathname="conf/tomcat-users.xml" />
    
            <Resource name="jdbc/WorklightAppDS"
                auth="Container"
                type="javax.sql.DataSource"
                driverClassName="oracle.jdbc.driver.OracleDriver"
                url="jdbc:oracle:thin:@domain:1521:ORCL"
                username="DBUSER"
                password="DBPASS"/> 
        </GlobalNamingResources>
    

    在 context.xml 文件中添加数据源配置:

    WEB-INF/web.xml

            <Resource name="jdbc/WorklightAppDS"
                auth="Container"
                type="javax.sql.DataSource"
                driverClassName="oracle.jdbc.driver.OracleDriver"
                url="jdbc:oracle:thin:@domain:1521:ORCL"
                username="DBUSER"
                password="DBPASS"/>
    
            <!--
            <Manager pathname="" />
            -->
        </Context>
    

在这两种方法中,我们面临同样的错误。即“运行时:在 jndi 中找不到数据源 jdbc/WorklightAppDS”

【问题讨论】:

【参考方案1】:

在 dataSourceJNDIName 中尝试 java:comp/env/$DataSource-jndi-Local。

【讨论】:

以上是关于Worklight 6.1,Tomcat 7.0.42 上的 SQL 适配器 (Oracle 11g) JNDI 错误的主要内容,如果未能解决你的问题,请参考以下文章

Worklight 6.1 加密缓存错误

Worklight 6.1 中的默认推送通知声音

将 windows phone 8.0 phonegap 应用程序从 worklight 6.0 移动到 worklight 6.1

IBM Worklight 6.1 - 如何将应用程序连接到远程 Worklight 服务器?

IBM Worklight 6.1 - 无法重新生成 iPhone 本机文件夹

Worklight 6.1 并解析 MTOM soap 响应