上面的代码输出12,就是说在执行
ConnectionPoolDataSource ds = (ConnectionPoolDataSource)ctx.lookup("java:comp/env/ejb/SS3000DB");
时出错,我觉得是JNDI字符串出错了。
ConnectionPoolDataSource ds = (ConnectionPoolDataSource)ctx.lookup("java:comp/env/ejb/SS3000DB");
时出错,我觉得是JNDI字符串出错了。
Datasource不能正确查找到的原因可能是驱动程序不对,JNDI名和查找的不符合,连接池的URL不对,如果你确定以上都正确无误的话。你在CONSOLE中选择相应的那个Datasource,在右边PANE选Targets,检查一下Targets-Server是否放到chosen了,connection pool也做一下这样的检查。
好久没看java
学习中....
以上的我都已经检查过了。
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);
}
现在执行第一步就出错了,输出: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没有配置好?
确实应该如worldheart(时讯技术)所说的那样,weblogic需要指定JNDI的SPI
这个SPI的实现就是weblogic.jndi.WLInitialContextFactory
这个类在weblogic.jar中,在weblogic安装目录的lib下面
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对象参考。
你在部署时绑定"java:comp/env/ejb/SS3000DB");了吗?
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]
你只是加入weblogic.jar到classpath是没用的。
你需要把它做成jsp测试下