weblogic的JDNI连接

这两天在学习ejb,且不说ejb如何编写,刚开始就被jndi给难住了。记得以前在Jbuilder中照着别人的方法试过,已经成功了,没有深研。想不到现在来做,又给难住了,搞了两天终于有了结果。

首先说一说客户端通过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]” 为什么编译没问题了,却还是出错呢,这是网络上问得最多的问题。这是缺少"\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”包中。据说这个问题在weblogic9中已解决。

这时应该没什么问题了,你可以进一步学习ejb或其它内容了。

上面的t3:是weblogic中jndi用的协议,就和http一样,其它服务器如jboss用iiop之类进行连接,不同的服务器连接的方式不一样,具体要再查资料。


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=659958

你可能感兴趣的:(weblogic,jboss,网络协议,ejb,JBuilder)