was6中提示警告:"不推荐使用jdbc/datasource JNDI的直接查找",怎么回事?-在线等

Godshow 2005-08-17 09:14:49
找到 ibm的一个页面,没看懂啥意思。高手帮忙翻译翻译。

http://www-1.ibm.com/support/docview.wss?uid=swg1PK06395
...全文
694 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Godshow 2005-10-20
  • 打赏
  • 举报
回复
感谢楼上各位,尤其是humanity。已成功。
OnlyFor_love 2005-10-20
  • 打赏
  • 举报
回复
程序改了以后,你杂web.xml中改了吗?

比如说<res-ref-name>comp/env/jdbc/wfmsdatasource</res-ref-name>
humanity 2005-10-17
  • 打赏
  • 举报
回复
一下内容是 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>
humanity 2005-10-17
  • 打赏
  • 举报
回复
web.xml 中配置了资源引用没有?

<web-app>


<resource-ref>
// ...

</resource-ref>

</web>
UPCCPU 2005-10-14
  • 打赏
  • 举报
回复
网上搜索一大把,这个问题没有没有影响到正常使用,也没有关心过
http://blog.blogchina.com/siry/1657473.html
http://www.flashempire.com/home/log_view.php?userid=7&id=12865&date=2005-11
Godshow 2005-10-13
  • 打赏
  • 举报
回复
问题仍然未解决.继续等^
Godshow 2005-09-27
  • 打赏
  • 举报
回复
改了结果如下:
Error 500:Name comp/env/jdbc not found in context "java:".
humanity 2005-09-21
  • 打赏
  • 举报
回复
它都已经在日志里提示得这么清楚,所以你还是应该修改一下代码城楼上那样,

你写代码的 例子 肯定是以前很老的版本上 照抄的, 因为那个时候用的 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 ,因为不同范围。

OnlyFor_love 2005-09-19
  • 打赏
  • 举报
回复
ds = (DataSource) envCtx.lookup("java:comp/env/jdbc/wfmsdatasource");
改成这样试试
Godshow 2005-08-17
  • 打赏
  • 举报
回复
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();
------------------------------
请问该如何去掉警告?

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧