這兩天在學(xué)習ejb,且不說(shuō)ejb如何編寫(xiě),剛開(kāi)始就被jndi給難住了。記得以前在Jbuilder中照著(zhù)別人的方法試過(guò),已經(jīng)成功了,沒(méi)有深研。想不到現在來(lái)做,又給難住了,搞了兩天終于有了結果。
首先說(shuō)一說(shuō)客戶(hù)端通過(guò)jndi連接weblogic,不需要把客戶(hù)端程序放到(或是布署到)weblogic中運行,客戶(hù)端用一個(gè)簡(jiǎn)單的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里的標準包。啟動(dòng)weblogic后,運行該程序。
當然會(huì )有問(wèn)題,顯示“javax.naming.NoInitialContextException: Cannot instantiate class: weblogic.jndi.WLInitialContextFactory [Root exception is java.lang.ClassNotFoundException: weblogic.jndi.WLInitialContextFactory]” 為什么編譯沒(méi)問(wèn)題了,卻還是出錯呢,這是網(wǎng)絡(luò )上問(wèn)得最多的問(wèn)題。這是缺少"\bea\weblogic81\server\lib\wlclient.jar"文件所致。 在buildpath里加入這個(gè)包后再運行。
如果還是出錯,顯示“Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/corba/se/connection/ORBSocketFactory” 還是缺少包,這時(shí)如果你只安裝有jre1.5.*,那是沒(méi)有ORBSocketFactory這個(gè)類(lèi)文件的。還是找個(gè)jre1.4.*吧,這個(gè)類(lèi)在“jre/lib/rt.jar”包中。據說(shuō)這個(gè)問(wèn)題在weblogic9中已解決。
這時(shí)應該沒(méi)什么問(wèn)題了,你可以進(jìn)一步學(xué)習ejb或其它內容了。
上面的t3:是weblogic中jndi用的協(xié)議,就和http一樣,其它服務(wù)器如jboss用iiop之類(lèi)進(jìn)行連接,不同的服務(wù)器連接的方式不一樣,具體要再查資料。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=659958
聯(lián)系客服