這兩天在學習ejb,且不說ejb如何編寫,剛開始就被jndi給難住了。記得以前在Jbuilder中照著別人的方法試過,已經(jīng)成功了,沒有深研。想不到現(xiàn)在來做,又給難住了,搞了兩天終于有了結(jié)果。
首先說一說客戶端通過jndi連接weblogic,不需要把客戶端程序放到(或是布署到)weblogic中運行,客戶端用一個簡單的class文件既可,代碼下如。
/*JNDIClientTest.java*/
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
public class JDNIClientTest {
public static void main(String[] args) {
String url = "t3://localhost:7001";
Properties prop = null;
try {
prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
prop.put(Context.PROVIDER_URL, url);
Context context = new InitialContext(prop);
System.out.println("OK!");
} catch (Exception e) {
System.out.println(e.toString());
}
}
}
上面包括的包都是jre里的標準包。啟動weblogic后,運行該程序。
當然會有問題,顯示“javax.naming.NoInitialContextException: Cannot instantiate class: weblogic.jndi.WLInitialContextFactory [Root exception is java.lang.ClassNotFoundException: weblogic.jndi.WLInitialContextFactory]” 為什么編譯沒問題了,卻還是出錯呢,這是網(wǎng)絡(luò)上問得最多的問題。這是缺少"\bea\weblogic81\server\lib\wlclient.jar"文件所致。 在buildpath里加入這個包后再運行。
如果還是出錯,顯示“Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/corba/se/connection/ORBSocketFactory” 還是缺少包,這時如果你只安裝有jre1.5.*,那是沒有ORBSocketFactory這個類文件的。還是找個jre1.4.*吧,這個類在“jre/lib/rt.jar”包中。據(jù)說這個問題在weblogic9中已解決。
這時應該沒什么問題了,你可以進一步學習ejb或其它內(nèi)容了。
上面的t3:是weblogic中jndi用的協(xié)議,就和http一樣,其它服務器如jboss用iiop之類進行連接,不同的服務器連接的方式不一樣,具體要再查資料。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=659958