was日志内容如下:J2CA0294W: 不推荐使用资源 jdbc/wfmsdatasource 的直接 JNDI 查找。使用下列缺省值:[Resource-ref settings] res-auth: 1 (APPLICATION) res-isolation-level: 0 (TRANSACTION_NONE) res-sharing-scope: true (SHAREABLE) loginConfigurationName: null loginConfigProperties: null [Other attributes] res-resolution-control: 999 (undefined) isCMP1_x: false (not CMP1.x) isJMS: false (not JMS)   
 
消息类型 
警告   
 
说明 通过 Java 命名目录接口(JNDI)查找资源时,避免使用资源的标准名称。J2EE 编程模型建议使用资源引用和本地 JNDI java:comp/env 上下文。   
 
用户操作 将应用程序修改为与资源引用和本地 JNDI java:comp/env 上下文一起使用引用的 J2EE 编程模型。   
 
-------------------------------
was6中配了名为WFMSDataSource的数据源,JNDI名为jdbc/wfmsdatasource
-------------------------------
我的代码如下:
        InitialContext initCtx = new InitialContext();
        Context envCtx = (Context) initCtx.lookup("");
        ds = (DataSource) envCtx.lookup("jdbc/wfmsdatasource");
        connection = ds.getConnection();
------------------------------
请问该如何去掉警告?

解决方案 »

  1.   

    ds = (DataSource) envCtx.lookup("java:comp/env/jdbc/wfmsdatasource");
    改成这样试试
      

  2.   

    它都已经在日志里提示得这么清楚,所以你还是应该修改一下代码城楼上那样,你写代码的 例子 肯定是以前很老的版本上 照抄的, 因为那个时候用的 J2EE 1.2 ,资源配置在应用程序中, J2EE 1.3 开始应该配置资源引用, 资源配置在服务器上,服务器独立管理,应用程序配置资源引用,服务器负责把全局资源池中的资源对应到  Web 组建或者 Ejb 组建内 (java:comp/env 的由来),  WebSphere 5.1 开始 web.xml 中配置资源引用,ibm-web-xml-bnd.xml 配置资源引用的绑定,把一个web.xml 中的引用映射到 一个全局 JNDI 上去, ejb-jar 中配置资源引用, ibm-ejb-jar-bnd.xml 也配置绑定映射。资源引用名和全局 JNDI 名因为在不同的范围内,所以可以重复,只要同一个范围内不重复就行。
    全局JNDI, Web 组件,Ejb 组件内可以给有一个 abc ,因为不同范围。
      

  3.   

    改了结果如下:
    Error 500:Name comp/env/jdbc not found in context "java:".
      

  4.   

    网上搜索一大把,这个问题没有没有影响到正常使用,也没有关心过
    http://blog.blogchina.com/siry/1657473.html
    http://www.flashempire.com/home/log_view.php?userid=7&id=12865&date=2005-11
      

  5.   

    web.xml 中配置了资源引用没有?<web-app>
      <resource-ref>
         // ... 
      
      </resource-ref></web>
      

  6.   

    一下内容是 J2EE 1.3 的。比如, 我的  ibm-web-bnd.xml 中有这段内容,这个将会再部署到 WAS 时自动被管理控制台读出来并创建资源配置,跟我们手工创建一个数据源一样。
    <?xml version="1.0" encoding="UTF-8"?>
    <webappbnd:WebAppBinding xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:webappbnd="webappbnd.xmi" xmi:id="WebAppBinding_1" virtualHostName="default_host">
      <webapp href="WEB-INF/web.xml#WebApp"/>
      <resRefBindings xmi:id="ResourceRefBinding_1129470735234" jndiName="jdbc/xa/sample">
        <bindingResourceRef href="WEB-INF/web.xml#ResourceRef_1129470735234"/>
      </resRefBindings>
    </webappbnd:WebAppBinding>下面这个是 web.xml 中的一段内容,这里 id 和上面的 ref 对应,这样就能映射一个 全局 资源到一个 web容器组件内的资源上来。 资源是配置在服务器的全局资源池中他的 JNDI 为 jdbc/xa/sample, 然后映射到 web 容器这个组件中名字为jdbc/sample.我用 ctx.lookup("java:comp/env/jdbc/sample") 来访问,因为你  ctx.lookup("java:comp/env/xxxx") 时就是在web容器内,在ejb 中调用 ctx.lookup("java:comp/env/xxxx")  则是在 ejb 容器内的,如果没有配置引用你可能找不到资源,或者导致一个上面的警告, Tomcat 5 中没有 ibm-web-bnd.xml ,但是 Tomcat 5 能在一个 context 的配置中添加一个 resource-link 来完成这个映射,方法是在 /META-INF/ 中的context.xml (如果没有这个文件,可以从 %CATALINA_HOME%/conf/Catalina/localhost/manager.xml 拷贝一个,改一下内容,并改名为 context.xml ),在其中添加一个resource-link . 具体操作也可以 jakarta.apache.org/tomcat 下载一个 jakarta-tomcat-admin-x.xx.zip 并解压,用它来完成配置。<web-app>
    <!--  ... 其他内容省略 --><resource-ref id="ResourceRef_1129470735234">
       <res-ref-name>jdbc/sample</res-ref-name>
       <res-type>java.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
       <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref></web-app>
      

  7.   

    程序改了以后,你杂web.xml中改了吗?比如说<res-ref-name>comp/env/jdbc/wfmsdatasource</res-ref-name>
      

  8.   

    感谢楼上各位,尤其是humanity。已成功。