在eclipse中訪問weblogic10.0的JNDI Tree
這幾天一直在處理一個問題,就是在eclipse中來訪問weblogic中的JNDI,安裝了MyEclipse之后,配置MyEclipse的服務器如下:
啟動Eclipse,選擇“Window -> Preferences”菜單,展開MyEclipse下的Application Servers節點,點擊 WebLogic 10.x,選中右邊的 Enable 單選按鈕,啟用 WebLogic 服務器。配置如下:
①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:這里不用填,空著就可以了.
然后設置JDK,這里JDK并非一定要選用weblogic自帶的JDK,因為weblogic自帶的JDK的版本相對較早,如weblogic10.0版本的JDK是JDK1.5.6版本的,而現在用的是JDK6.1或JDK6.2.然后設置Classpath,在paths接點
的右面的prepend to classpath 加入weblogic.jar文件,如:D:\bea\wlserver_10.0\server\lib\weblogic.jar這樣就
可以了.
這樣設置好環境變量之后,我在ECLIPSE中訪問weblogic的JNDI時,出現了問題,程序的代碼如下

2

3

4

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 }
運行時出現了如下問題:
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類,開始我認為是classpath環境變量設置錯誤,但是用winrar打開weblogic.jar發現這個類的確在這個JAR包中,就不知道是什么原因了.到網上找了好久沒有找到解決辦法.今天起床再來看這個問題的時候,忽然想起老師以前講過在netbeans中的項目中加入JAR包,于是在eclipse中找了一下,發現可以實現.具體步驟如下:在項目上點鼠標右鍵,選properties,然后選中左邊的Java Build Path,選中右邊的Libraries,選擇Add External JARs,找到D:\bea\wlserver_10.0\server\lib\weblogic.jar,加入后點OK,就可以了.這時再運行上面的程序,就沒有問題了.運行完成后,在weblogic的JNDI Tree里可以看到有一個接點是test,它的內容是"Hello WebLogic JNDI".
在網上找了幾天,都沒有解決掉這個問題,今天終于解決了,實在是高興.
posted on 2007-08-02 10:24 wzhongyu 閱讀(3319) 評論(10) 編輯 收藏 所屬分類: Java學習