這幾天一直在處理一個(gè)問題,就是在eclipse中來訪問weblogic中的JNDI,安裝了MyEclipse之后,配置MyEclipse的服務(wù)器如下:
啟動(dòng)Eclipse,選擇“Window -> Preferences”菜單,展開MyEclipse下的Application Servers節(jié)點(diǎn),點(diǎn)擊 WebLogic 10.x,選中右邊的 Enable 單選按鈕,啟用 WebLogic 服務(wù)器。配置如下:
①BEA home directory:D:\bea(WebLogic 安裝在D:\bea目錄中)
②WebLogic installation directory:D:\bea\wlserver_10.0
③Admin username:weblogic
④Admin password:weblogic
⑤Execution domain root:D:\bea\user_projects\domains\base_domain
⑥Execution server name:AdminServer
⑦Security policy file:D:\bea\wlserver_10.0\server\lib\weblogic.policy
⑧JAAS login configuration file:這里不用填,空著就可以了.
然后設(shè)置JDK,這里JDK并非一定要選用weblogic自帶的JDK,因?yàn)閣eblogic自帶的JDK的版本相對(duì)較早,如weblogic10.0版本的JDK是JDK1.5.6版本的,而現(xiàn)在用的是JDK6.1或JDK6.2.然后設(shè)置Classpath,在paths接點(diǎn)
的右面的prepend to classpath 加入weblogic.jar文件,如:D:\bea\wlserver_10.0\server\lib\weblogic.jar這樣就
可以了.
這樣設(shè)置好環(huán)境變量之后,我在ECLIPSE中訪問weblogic的JNDI時(shí),出現(xiàn)了問題,程序的代碼如下
1
package javaee.test1;
2
3
import javax.naming.*;
4
import java.util.Properties;
5
6 public class JNDITest {
7 public static void main(String[] args) {
8 try {
9 Properties p = new Properties();
10 p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
11 p.put(Context.PROVIDER_URL,"t3://localhost:7001");
12 Context ctx = new InitialContext(p);
13 String test = "Hello WebLogic JNDI";
14 ctx.rebind("test",test);
15 String str = (String)ctx.looku("name");
16 System.out.println(str);
17 }
18 catch (NamingException e) {
19 e.printStackTrace();
20 }
21 }
22 }
運(yùn)行時(shí)出現(xiàn)了如下問題:
javax.naming.NoInitialContextException: Cannot instantiate class: weblogic.jndi.WLInitialContextFactory [Root exception is java.lang.ClassNotFoundException: weblogic.jndi.WLInitialContextFactory]
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:657)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at javaee.test1.JNDITest.main(JNDITest.java:22)
Caused by: java.lang.ClassNotFoundException: weblogic.jndi.WLInitialContextFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:42)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:654)
... 4 more
從問題可以看出是找不到weblogic.jndi.WLInitialContextFactory類,開始我認(rèn)為是classpath環(huán)境變量設(shè)置錯(cuò)誤,但是用winrar打開weblogic.jar發(fā)現(xiàn)這個(gè)類的確在這個(gè)JAR包中,就不知道是什么原因了.到網(wǎng)上找了好久沒有找到解決辦法.今天起床再來看這個(gè)問題的時(shí)候,忽然想起老師以前講過在netbeans中的項(xiàng)目中加入JAR包,于是在eclipse中找了一下,發(fā)現(xiàn)可以實(shí)現(xiàn).具體步驟如下:在項(xiàng)目上點(diǎn)鼠標(biāo)右鍵,選properties,然后選中左邊的Java Build Path,選中右邊的Libraries,選擇Add External JARs,找到D:\bea\wlserver_10.0\server\lib\weblogic.jar,加入后點(diǎn)OK,就可以了.這時(shí)再運(yùn)行上面的程序,就沒有問題了.運(yùn)行完成后,在weblogic的JNDI Tree里可以看到有一個(gè)接點(diǎn)是test,它的內(nèi)容是"Hello WebLogic JNDI".
在網(wǎng)上找了幾天,都沒有解決掉這個(gè)問題,今天終于解決了,實(shí)在是高興.