JNDI的错误,为何会出现这个异常?

daniel7443 2006-01-11 12:20:30
我用的是weblogic,在console界面里配置好了连接池,测试成功,然后配置好了数据源,但我用JSP时,部分代码如下:

DataSource ds = null;
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
//从Context中lookup数据源。
ds = (DataSource)envCtx.lookup("jdbc/care");

在运行到这里的时候,夜面显示如下异常:

javax.naming.NameNotFoundException: While trying to look up jdbc/care in java:comp/env.; remaining name 'jdbc/care'

请教是怎么回事情?是我哪里没有配置吗?我该如何解决这个问题
...全文
475 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
humanity 2006-01-17
  • 打赏
  • 举报
回复
J2EE 1.3 开始,资源是配置在服务器范围的,要使用资源还需要为每一个使用它的 web app 或 ejb 模块配置一个资源引用,应用服务器产品都需要额外的配置文件 映射 全局资源池中的资源到 对应的 web /ejb 模块的资源引用上来,以下是 weblogic , websphere , tomcat 的配置方法:

1. Weblogic 配置资源引用:
web.xml 和 weblogic-web-jar.xml 在同一个目录下。
内容如下:
<resource-description>
<!--下面是 web.xml 中的引用名字,这是容器内的名字,容器内唯一就可以了。-->
<res-ref-name>jdbc/care</res-ref-name>
<!-- 下面是 你在 weblogic 里面配置的名字,这个是全局名字)-->
<jndi-name>DBPool</jndi-name>
</resource-description>

2. WebSphere 5.1 配置资源引用
web.xml , ibm-web-bnd.xml 在同一个目录下.
web.xml 中有这段:
<web-app id="WebApp">
<resource-ref id="ResourceRef_1137500561531">
<res-ref-name>jdbc/alpha</res-ref-name>
<res-type>java.lang.Object</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>

ibm-web-bnd.xml中有这段:
<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_1137500561531" jndiName="jdbc/oracle10g/xa/alpha"> <!-- 服务器上配的全局名 -->
<bindingResourceRef href="WEB-INF/web.xml#ResourceRef_1137500561531"/> <!-- 这个 ResourceRef_1137500561531 通过ID 对应到 web.xml 中 相应的 <res-ref-name /> -->
</resRefBindings>
</webappbnd:WebAppBinding>

3. Tomcat 4.1- 5.5 配置资源引用:
server.xml 中添加:
<GlobalNamingResources><Resource name="jdbc/global/jndi" type="..." /><ResourceParams name="jdbc/global/jndi" ><parameter> ... </parameter></ResourceParams></GlobalNamingResources>

然后在 $Tomcat/conf/Catalina/localhost/ 添加 ${context.path}.xml
Catalina 是服务名,server.xml 中有的, localhost 是 host 名,server.xml 也有,
${context.path} 是你的应用程序的 request.getContextPath 的名字。
<Context
docBase="E:/JavaEnv/Tomcat/webapps/mywebapp"
path="/mywebapp">
<ResourceLink name="jdbc/ref/name" global="jdbc/global/jndi" type="javax.sql.DataSource" />
</Context>
javalin3012 2006-01-16
  • 打赏
  • 举报
回复
改为:
Context initCtx = new InitialContext();
ds = (DataSource)initCtx.lookup("jdbc/care");
即可。
daniel7443 2006-01-15
  • 打赏
  • 举报
回复
有谁知道吗?请指点迷经
daniel7443 2006-01-12
  • 打赏
  • 举报
回复
我把获得连接的语句改写了一下,加上用户名和密码
Connection conn = ds.getConnection("root","");
它就出现
java.sql.SQLException: User: root, failed to be authenticated.
的异常

如果用Connection conn = ds.getConnection();
它就出现
java.sql.SQLException: Cannot obtain connection: driverURL = jdbc:weblogic:pool:MySQLConPool, props = {enableTwoPhaseCommit=false, connectionPoolID=MySQLConPool, jdbcTxDataSource=true, dataSourceName=MySQLDataSource}.
的异常

我用的weblogic 8.1和MySql数据库
问题出在哪里?请大家支支招,谢谢啦
grapepaul 2006-01-12
  • 打赏
  • 举报
回复
不能吧,错误信息发一下
daniel7443 2006-01-12
  • 打赏
  • 举报
回复
谢谢各位的指点
我已经获得数据源ds = (DataSource)envCtx.lookup("jdbc/care"); 成功了
但在Connection conn = ds.getConnection();抛出异常
说无法获得连接,这是怎么回事,请各位指教
daniel7443 2006-01-12
  • 打赏
  • 举报
回复
谢谢.楼上说的是Tomcat的配置,我现在用的是weblogic,会不会有什么差别?
King_Style 2006-01-11
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4398/4398477.xml?temp=.2051355
kaixin110 2006-01-11
  • 打赏
  • 举报
回复
server.xml培植了没有

67,550

社区成员

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

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