上面的代码输出12,就是说在执行
ConnectionPoolDataSource ds = (ConnectionPoolDataSource)ctx.lookup("java:comp/env/ejb/SS3000DB");
时出错,我觉得是JNDI字符串出错了。

解决方案 »

  1.   

    如果你在CONSOLE配置的时候JNDI填写的是SS3000DB,那么LOOKUP的时候lookup("SS3000DB");就行了啊
      

  2.   

    ConnectionPoolDataSource ds = (ConnectionPoolDataSource)ctx.lookup("SS3000DB");
      

  3.   

    对,这是weblogic里面的用法,如果在j2sdkee就应该是用你的那种用法。
      

  4.   

    SS3000DB和java:comp/env/ejb/SS3000DB我都用了,一样的不行。
      

  5.   

    java:comp/env/ejb/SS3000DB肯定是不对的,J2EE RI和weblogic对资源绑定到JNDI树的结构不一样。
    Datasource不能正确查找到的原因可能是驱动程序不对,JNDI名和查找的不符合,连接池的URL不对,如果你确定以上都正确无误的话。你在CONSOLE中选择相应的那个Datasource,在右边PANE选Targets,检查一下Targets-Server是否放到chosen了,connection pool也做一下这样的检查。
      

  6.   

    呵呵,好多星
    好久没看java
    学习中....
      

  7.   

    to xioyoo(丁鹏) 
    以上的我都已经检查过了。
      

  8.   

    我用 ctx.lookup("SS3000DB") 的时候出现这样的错误:javax.naming.CommunicationException: Can't find SerialContextProvider从字面上说就是没有找到,但是应该怎样做呢?
      

  9.   

    问题应该出在:    Context ctx = new InitialContext();这句话。应该加上参数。比如: ...
    Context ctx = getInitialContext("t3://localhost:7001", "user1", "user1Password");
    ...
    static Context getInitialContext(String url, String user, String password) { 
       Properties h = new Properties();
       h.put(Context.INITIAL_CONTEXT_FACTORY,
          "weblogic.jndi.WLInitialContextFactory");
       h.put(Context.PROVIDER_URL, url);
       h.put(Context.SECURITY_PRINCIPAL, user);
       return new InitialContext(h);
    }
      

  10.   

    你这个程序要部署在weblogic下才能测试的,因为你用的是weblogic为你提供的jndi服务.
      

  11.   

    你可以把它改成一个bean,再写个jsp测试,部署在weblogic试试啦
      

  12.   

    to worldheart(时讯技术):
    现在执行第一步就出错了,输出:1
    Cannot instantiate class: weblogic.jndi.WLInitialContextFactory
    javax.naming.NoInitialContextException: Cannot instantiate class: weblogic.jndi.WLInitialContextFactory [Root exception is java.lang.ClassNotFoundException: weblogic.jndi.WLInitialContextFactory]是否是我的Weblogic没有配置好?
      

  13.   

    以上错误原因是你没有把weblogic.jar加入CLASSPATH造成的。
      

  14.   

    我一直没看到你获取Context是直接new InitialContext();
    确实应该如worldheart(时讯技术)所说的那样,weblogic需要指定JNDI的SPI
    这个SPI的实现就是weblogic.jndi.WLInitialContextFactory
    这个类在weblogic.jar中,在weblogic安装目录的lib下面
      

  15.   

    哦,这样,我明天配一下CLASSPATH
      

  16.   

    1.你的weblogic中对Connection Pool和Data Source是怎么建立的?是否正确?
    2.如果建立成功?可以用 worldheart(时讯技术)那样来初始化上下文。
    通过初始化上下文来得到EJB home接口的对象参考和EJB Object对象参考。
    如:
    Object homeObject = ctx.lookup("ejb/YourEjbBean") ;
    "ejb/YourEjbBean"为你的ejb在部署描述符中的jndi名称。YourHome yourhome = (YourHome)PortableRemoteObject.narrow(homeObject,YourHome.class);
    得到EJB home接口的对象参考,然后得到EJB Object对象参考。
      

  17.   

    红星很好看啊,ConnectionPoolDataSource ds = (ConnectionPoolDataSource)ctx.lookup("java:comp/env/ejb/SS3000DB");的问题,应该是你没有绑定正确,所以在目录服务器上找不到,相应的资源
    你在部署时绑定"java:comp/env/ejb/SS3000DB");了吗?
      

  18.   

    我用了worldheart(时讯技术)的方法,但是出现错误:
    javax.naming.NoInitialContextException: Cannot instantiate class: weblogic.jndi.WLInitialContextFactory [Root exception is java.lang.ClassNotFoundException: weblogic.jndi.WLInitialContextFactory]说明类没有找到,但是我的确将weblogic.jar加到了CLASSPATH中的,另外我现在是做了一个简单的Java类,然后在UltraEdit中编辑运行的,希望有调通过的高手能介绍一下是如何配置的,包括具体的实现、数据源和连接池在Weblogic配置中的实现,classpath的设置等, email:[email protected]
      

  19.   

    把weblogic.jar copy到jdk_home/jre/lib/ext下面,应该没问题,指你的客户端程序
      

  20.   

    老弟,你更本就每有提供jndi的服务呀。
    你只是加入weblogic.jar到classpath是没用的。
    你需要把它做成jsp测试下